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

Reply via email to