OS X, enable embed problem, patch
| From: | Christopher Thompson | Date: | Tue, 29 Apr 2008 23:14:03 +0000 |
| Subject: | OS X, enable embed problem, patch | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-37315@lists.php.net to get a copy of this message | ||
Please be gentle, I have very little experience developing on OS X. To be honest, the whole dylib thing seems messy and confusing to me, compared to the fairly straight-forward Linux style .so approach.
Expected behavior:
Able to configure and build on OS X with:
./configure --enable-embed
Actual behavior:
http://bugs.php.net/bug.php?id=44462
Suspected problem:
Trying to build .so instead of .dylib on OS X.
Suggested solution:
See patch below. This makes it possible to do:
./configure --enable-embed=dylib
I did this instead of fixing --enable-embed=shared because the build process appears to be fundamentally different.
NOTE! Once applying the patch, you need to do:
aclocal
autoconf
./configure --enable-embed=dylib
If you don't do aclocal to regenerate the necessary files, things break.
diff -urN php-5.2.5.clean/Makefile.global php-5.2.5/Makefile.global
--- php-5.2.5.clean/Makefile.global 2007-08-03 08:01:56.000000000 -0600
+++ php-5.2.5/Makefile.global 2008-04-29 16:44:36.000000000 -0600
@@ -17,6 +17,10 @@
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
-@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@
/dev/null 2>&1+libphp$(PHP_MAJOR_VERSION).dylib: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) + $(LIBTOOL) --mode=link $(CC) -dynamiclib -install_name $(INSTALL_ROOT)$(prefix)/lib/$@ -current_version $(PHP_VERSION) -compatibility_version $(PHP_MAJOR_VERSION) -undefined dynamic_lookup $(PHP_RPATHS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ + -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1 + libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so diff -urN php-5.2.5.clean/acinclude.m4 php-5.2.5/acinclude.m4 --- php-5.2.5.clean/acinclude.m4 2007-08-20 08:28:45.000000000 -0600 +++ php-5.2.5/acinclude.m4 2008-04-29 16:44:44.000000000 -0600 @@ -799,6 +799,15 @@ ]) dnl +dnl PHP_BUILD_DYLIB +dnl +AC_DEFUN([PHP_BUILD_DYLIB],[ + PHP_BUILD_PROGRAM + OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.dylib] + php_build_target=static +]) + +dnl dnl PHP_BUILD_BUNDLE dnl AC_DEFUN([PHP_BUILD_BUNDLE],[ @@ -885,6 +894,7 @@ case "$2" in static[)] PHP_BUILD_STATIC;; shared[)] PHP_BUILD_SHARED;; + dylib[)] PHP_BUILD_DYLIB;; bundle[)] PHP_BUILD_BUNDLE;; program[)] PHP_BUILD_PROGRAM($5);; esac diff -urN php-5.2.5.clean/configure.in php-5.2.5/configure.in --- php-5.2.5.clean/configure.in 2007-11-08 07:44:11.000000000 -0600 +++ php-5.2.5/configure.in 2008-04-29 16:44:52.000000000 -0600 @@ -252,6 +252,7 @@ dnl paths to the targets are relative to the build directory SAPI_SHARED=libs/libphp[]$PHP_MAJOR_VERSION[.]$SHLIB_DL_SUFFIX_NAME SAPI_STATIC=libs/libphp[]$PHP_MAJOR_VERSION[.a] +SAPI_DYLIB=libs/libphp[]$PHP_MAJOR_VERSION[.]$SHLIB_SUFFIX_NAME SAPI_LIBTOOL=libphp[]$PHP_MAJOR_VERSION[.la] PHP_CONFIGURE_PART(Configuring SAPI modules) diff -urN php-5.2.5.clean/sapi/embed/config.m4 php-5.2.5/sapi/embed/config.m4 --- php-5.2.5.clean/sapi/embed/config.m4 2007-07-11 17:20:36.000000000 -0600 +++ php-5.2.5/sapi/embed/config.m4 2008-04-29 16:45:06.000000000 -0600 @@ -4,7 +4,7 @@ PHP_ARG_ENABLE(embed,, [ --enable-embed[=TYPE] EXPERIMENTAL: Enable building of embedded SAPI library
- TYPE is either 'shared' or 'static'. [TYPE=shared]], no, no) + TYPE is 'shared', 'static', or 'dylib'. [TYPE=shared]], no, no)AC_MSG_CHECKING([for embedded SAPI library support]) @@ -18,6 +18,10 @@
PHP_EMBED_TYPE=static
INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(prefix)/lib; \$(INSTALL) -m 0644 $SAPI_STATIC \$(INSTALL_ROOT)\$(prefix)/lib"
;;
+ dylib)
+ PHP_EMBED_TYPE=dylib
+ INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(prefix)/lib; \$(INSTALL) -m 0644 $SAPI_DYLIB \$(INSTALL_ROOT)\$(prefix)/lib"
+ ;;
*)
PHP_EMBED_TYPE=no
;;