Re: OS X, enable embed problem, patch
| From: | Alexey Zakhlestin | Date: | Wed, 30 Apr 2008 07:02:51 +0000 |
| Subject: | Re: OS X, enable embed problem, patch | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-37336@lists.php.net to get a copy of this message | ||
shouldn't autotools take care about these differences?
On 4/30/08, Christopher Thompson <cthompson@nexopia.com> wrote:
> 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
> ;;
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
Alexey Zakhlestin
http://blog.milkfarmsoft.com/