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 $@
[EMAIL PROTECTED](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 $@
+ [EMAIL PROTECTED](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
;;
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php