php: fix for external extensions
Adjust phpize and php-config to make them work for cross-compiled external extensions. While at it also fix dl* issues that prevent said extensions from loading. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
parent
24bb549098
commit
3f8b513384
25
package/php/php-02-dlopen.patch
Normal file
25
package/php/php-02-dlopen.patch
Normal file
@ -0,0 +1,25 @@
|
||||
PHP can't be AUTORECONF with any modern autotools and the dl tests are
|
||||
pretty bad for cross-compilation, so just kill the needed ac_cv value unsets
|
||||
so they can flow through from the package makefile.
|
||||
|
||||
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
||||
|
||||
diff -Nura php-5.5.8.orig/configure php-5.5.8/configure
|
||||
--- php-5.5.8.orig/configure 2014-01-28 17:41:33.943851727 -0300
|
||||
+++ php-5.5.8/configure 2014-01-28 17:42:53.785493795 -0300
|
||||
@@ -16985,7 +16985,6 @@
|
||||
|
||||
|
||||
|
||||
- unset ac_cv_func_dlopen
|
||||
unset ac_cv_func___dlopen
|
||||
unset found
|
||||
|
||||
@@ -17013,7 +17012,6 @@
|
||||
|
||||
*)
|
||||
|
||||
- unset ac_cv_lib_dl_dlopen
|
||||
unset ac_cv_lib_dl___dlopen
|
||||
unset found
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
|
@ -19,15 +19,25 @@ PHP_CONF_OPT = --mandir=/usr/share/man \
|
||||
--with-config-file-path=/etc \
|
||||
--localstatedir=/var \
|
||||
--disable-rpath
|
||||
PHP_CONF_ENV = EXTRA_LIBS="$(PHP_EXTRA_LIBS)"
|
||||
|
||||
ifeq ($(BR2_ENDIAN),"BIG")
|
||||
PHP_CONF_ENV = ac_cv_c_bigendian_php=yes
|
||||
PHP_CONF_ENV += ac_cv_c_bigendian_php=yes
|
||||
else
|
||||
PHP_CONF_ENV = ac_cv_c_bigendian_php=no
|
||||
PHP_CONF_ENV += ac_cv_c_bigendian_php=no
|
||||
endif
|
||||
PHP_CONFIG_SCRIPTS = php-config
|
||||
|
||||
PHP_CFLAGS = $(TARGET_CFLAGS)
|
||||
|
||||
# We need to force dl "detection"
|
||||
ifeq ($(BR2_PREFER_STATIC_LIB),)
|
||||
PHP_CONF_ENV += ac_cv_func_dlopen=yes ac_cv_lib_dl_dlopen=yes
|
||||
PHP_EXTRA_LIBS += -ldl
|
||||
else
|
||||
PHP_CONF_ENV += ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=no
|
||||
endif
|
||||
|
||||
# Workaround for non-IPv6 uClibc toolchain
|
||||
ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
|
||||
ifneq ($(BR2_INET_IPV6),y)
|
||||
@ -116,7 +126,7 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y)
|
||||
# The intl module is implemented in C++, but PHP fails to use
|
||||
# g++ as the compiler for the final link. As a workaround,
|
||||
# tell it to link libstdc++.
|
||||
PHP_CONF_ENV += EXTRA_LIBS="-lstdc++"
|
||||
PHP_EXTRA_LIBS + = -lstdc++
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)
|
||||
@ -200,6 +210,15 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y)
|
||||
PHP_DEPENDENCIES += netsnmp
|
||||
endif
|
||||
|
||||
define PHP_EXTENSIONS_FIXUP
|
||||
$(SED) "/prefix/ s:/usr:$(STAGING_DIR)/usr:" \
|
||||
$(STAGING_DIR)/usr/bin/phpize
|
||||
$(SED) "/extension_dir/ s:/usr:$(TARGET_DIR)/usr:" \
|
||||
$(STAGING_DIR)/usr/bin/php-config
|
||||
endef
|
||||
|
||||
PHP_POST_INSTALL_TARGET_HOOKS += PHP_EXTENSIONS_FIXUP
|
||||
|
||||
define PHP_INSTALL_FIXUP
|
||||
rm -rf $(TARGET_DIR)/usr/lib/php
|
||||
rm -f $(TARGET_DIR)/usr/bin/phpize
|
||||
|
Loading…
Reference in New Issue
Block a user