Commit aeb9350c authored by Gustavo Zacarias's avatar Gustavo Zacarias Committed by Peter Korsgaard
Browse files

php: security bump to version 5.3.13 and enhance



Bump php to version 5.3.13 to solve multiple CVEs.
The 5.2 series is no longer maintained.

The PCRE and SPL extensions are no longer optional.
Reflection is no longer optional either.

Ncurses was spun out to PECL.

Add a ton of new extensions and give more granular options on others
(like the libxml2-based ones).

The FastCGI option no longer exists, it's always on as long as CGI is.

Signed-off-by: default avatarGustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent 360f0e40
Loading
Loading
Loading
Loading
+256 −99
Original line number Diff line number Diff line
menu "PHP Extensions"
menu "Extensions"

config BR2_PACKAGE_PHP_CONFIG
	string "PHP configuration file to use"
	default "$(PHP_DIR)/php.ini-dist"
config BR2_PACKAGE_PHP_EXT_CALENDAR
	bool "Calendar"
	help
	  If you want to use a different php.ini file define it here.
	  Otherwise it'll just copy the default php.ini-dist from PHP.
	  Calendar and event support

config BR2_PACKAGE_PHP_EXT_SOCKETS
	bool "socket"
config BR2_PACKAGE_PHP_EXT_FILEINFO
	bool "Fileinfo"
	help
	  Sockets support
	  File Information support

config BR2_PACKAGE_PHP_EXT_POSIX
	bool "posix"
	default y
	help
	  POSIX support

config BR2_PACKAGE_PHP_EXT_SPL
	bool "SPL"
	default y
config BR2_PACKAGE_PHP_EXT_READLINE
	bool "Readline"
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_READLINE
	help
	  Standard PHP library support
	  Readline support

config BR2_PACKAGE_PHP_EXT_SESSION
	bool "Session"
@@ -30,156 +23,320 @@ config BR2_PACKAGE_PHP_EXT_SESSION
	help
	  Session support

comment "Compression extensions"

config BR2_PACKAGE_PHP_EXT_BZIP2
	bool "bzip2"
	select BR2_PACKAGE_BZIP2
	help
	  bzip2 read/write support

config BR2_PACKAGE_PHP_EXT_ZIP
	bool "zip"
	select BR2_PACKAGE_ZLIB
	help
	  Zip read/write support

config BR2_PACKAGE_PHP_EXT_ZLIB
	bool "zlib"
	select BR2_PACKAGE_ZLIB
	default y
	help
	  zlib support

comment "Cryptography extensions"

config BR2_PACKAGE_PHP_EXT_HASH
	bool "hash"
	help
	  HASH message digest framework

config BR2_PACKAGE_PHP_EXT_OPENSSL
	bool "openssl"
	select BR2_PACKAGE_OPENSSL
	help
	  openssl support

config BR2_PACKAGE_PHP_EXT_LIBXML2
	bool "xml2"
	select BR2_PACKAGE_LIBXML2
comment "Database extensions"

config BR2_PACKAGE_PHP_EXT_DBA
	bool "DBA"
	help
	  libxml2 support
	  Database Abstraction Layer

config BR2_PACKAGE_PHP_EXT_SIMPLEXML
	bool "simplexml"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
if BR2_PACKAGE_PHP_EXT_DBA

config BR2_PACKAGE_PHP_EXT_DBA_CDB
	bool "cdb"
	help
	  SimpleXML support
	  CDB handler

config BR2_PACKAGE_PHP_EXT_ZLIB
        bool "zlib"
        select BR2_PACKAGE_ZLIB
config BR2_PACKAGE_PHP_EXT_DBA_DB4
	bool "db4/5"
	select BR2_PACKAGE_BERKELEYDB
	help
	  BerkeleyDB version 4/5 handler

config BR2_PACKAGE_PHP_EXT_DBA_FLAT
	bool "flat"
	default y
	help
          zlib support
	  Flat file handler

config BR2_PACKAGE_PHP_EXT_EXIF
	bool "EXIF"
config BR2_PACKAGE_PHP_EXT_DBA_INI
	bool "ini"
	default y
	help
	  EXIF support
	  INI file handler

config BR2_PACKAGE_PHP_EXT_FTP
	bool "FTP"
endif

config BR2_PACKAGE_PHP_EXT_SQLITE
	bool "SQLite"
	help
	  Legacy SQLite2 support

config BR2_PACKAGE_PHP_EXT_SQLITE_UTF8
	bool "sqlite UTF8 support"
	depends on BR2_PACKAGE_PHP_EXT_SQLITE
	help
	  FTP Support
	  UTF8 support for sqlite

config BR2_PACKAGE_PHP_EXT_MYSQL
	bool "Mysql"
	depends on BR2_INSTALL_LIBSTDCPP
	select BR2_PACKAGE_MYSQL_CLIENT
	help
	  MySQL support

config BR2_PACKAGE_PHP_EXT_MYSQLI
	bool "Mysqli"
	depends on BR2_INSTALL_LIBSTDCPP
	select BR2_PACKAGE_MYSQL_CLIENT
	select BR2_PACKAGE_PHP_EXT_MYSQL
	help
	  MySQL Improved extension support

config BR2_PACKAGE_PHP_EXT_PDO
	bool "PDO"
	help
	  PHP Data Objects support

if BR2_PACKAGE_PHP_EXT_PDO

config BR2_PACKAGE_PHP_EXT_PDO_MYSQL
	bool "MySQL"
	depends on BR2_INSTALL_LIBSTDCPP
	select BR2_PACKAGE_MYSQL_CLIENT
	help
	  PDO driver for MySQL

comment "MySQL drivers require a toolchain with C++ support"
	depends on !BR2_INSTALL_LIBSTDCPP

config BR2_PACKAGE_PHP_EXT_PDO_SQLITE
	bool "SQLite3"
	select BR2_PACKAGE_SQLITE
	help
	  SQLite3 driver for PDO

endif

comment "Human language and character encoding support"

config BR2_PACKAGE_PHP_EXT_GETTEXT
	bool "gettext"
	bool "Gettext"
	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT
	depends on BR2_USE_WCHAR
	help
	  gettext support
	  Gettext support

comment "gettext support requires a toolchain with WCHAR support"
comment "Gettext support requires a toolchain with WCHAR support"
	depends on !BR2_USE_WCHAR

config BR2_PACKAGE_PHP_EXT_ICONV
	bool "iconv"
	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
	help
	  iconv character set conversion support

config BR2_PACKAGE_PHP_EXT_INTL
	bool "intl"
	select BR2_PACKAGE_ICU
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR
	help
	  Internationalization support

comment "intl support requires a toolchain with C++ and WCHAR support"
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR

comment "Image processing"

config BR2_PACKAGE_PHP_EXT_EXIF
	bool "EXIF"
	help
	  EXIF support

comment "Mathematical extensions"

config BR2_PACKAGE_PHP_EXT_BCMATH
	bool "BC math"
	help
	  BCMath arbitrary precision mathematics support

config BR2_PACKAGE_PHP_EXT_GMP
	bool "gmp"
	bool "GMP"
	select BR2_PACKAGE_GMP
	help
	  GMP support
	  GNU Multiple Precision support

comment "Other basic extensions"

config BR2_PACKAGE_PHP_EXT_JSON
	bool "JSON"
	help
	  JavaScript Object Serialization support

config BR2_PACKAGE_PHP_EXT_READLINE
	bool "readline"
	depends on (BR2_PACKAGE_PHP_CLI || BR2_PACKAGE_PHP_CGI) && BR2_PACKAGE_READLINE
config BR2_PACKAGE_PHP_EXT_TOKENIZER
	bool "Tokenizer"
	help
	  Tokenizer functions support

comment "Other services"

config BR2_PACKAGE_PHP_EXT_CURL
	bool "cURL"
	select BR2_PACKAGE_LIBCURL
	help
	  cURL for URL streams

config BR2_PACKAGE_PHP_EXT_FTP
	bool "FTP"
	help
	  readline support
	  FTP support

config BR2_PACKAGE_PHP_EXT_NCURSES
	bool "ncurses"
	depends on (BR2_PACKAGE_PHP_CLI || BR2_PACKAGE_PHP_CGI) && BR2_PACKAGE_NCURSES
config BR2_PACKAGE_PHP_EXT_SNMP
	bool "SNMP"
	select BR2_PACKAGE_NETSNMP
	help
	  ncurses support
	  SNMP support

config BR2_PACKAGE_PHP_EXT_PCRE
	bool "PCRE"
config BR2_PACKAGE_PHP_EXT_SOCKETS
	bool "sockets"
	help
	  Perl Compatible Regular Expressions support
	  Sockets support

comment "Process Control"

config BR2_PACKAGE_PHP_EXT_PCNTL
	bool "PCNTL"
	help
	  Process Control Support
	  Process control support

config BR2_PACKAGE_PHP_EXT_POSIX
	bool "Posix"
	default y
	help
	  POSIX.1 (IEEE 1003.1) function support

config BR2_PACKAGE_PHP_EXT_SHMOP
	bool "shmop"
	help
	  Shared memory support

config BR2_PACKAGE_PHP_EXT_SYSVMSG
	bool "sysvmsg - System V Message queue"
	bool "sysvmsg"
	help
	  System V Message queue support
	  System V message queue support

config BR2_PACKAGE_PHP_EXT_SYSVSEM
	bool "sysvsem - System V Semaphores"
	bool "sysvsem"
	help
	  System V Sempahore support
	  System V semaphore support

config BR2_PACKAGE_PHP_EXT_SYSVSHM
	bool "sysvshm - System V Shared memory"
	bool "sysvshm"
	help
	  System V Shared memory support
	  System V shared memory support

config BR2_PACKAGE_PHP_EXT_ZIP
	bool "zip"
	select BR2_PACKAGE_ZLIB
comment "Variable and Type related"

config BR2_PACKAGE_PHP_EXT_CTYPE
	bool "Ctype"
	help
	  Zip read/write support
	  Character type checking support

config BR2_PACKAGE_PHP_EXT_FILTER
	bool "filter"
	select BR2_PACKAGE_PHP_EXT_PCRE
	bool "Filter"
	help
	  Input filter support

config BR2_PACKAGE_PHP_EXT_CALENDAR
	bool "calendar"
comment "Web services"

config BR2_PACKAGE_PHP_EXT_SOAP
	bool "SOAP"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	help
	  Calendar and event support
	  SOAP support

comment "Database extensions"
config BR2_PACKAGE_PHP_EXT_XMLRPC
	bool "XML-RPC"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
	help
	  XML-RPC support

config BR2_PACKAGE_PHP_EXT_SQLITE
	bool "SQLite"
comment "XML manipulation"

config BR2_PACKAGE_PHP_EXT_DOM
	bool "DOM"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	help
	  Legacy SQLite2 support
	  Document Object Model support

config BR2_PACKAGE_PHP_EXT_SQLITE_UTF8
	bool "sqlite UTF8 support"
	depends on BR2_PACKAGE_PHP_EXT_SQLITE
config BR2_PACKAGE_PHP_EXT_LIBXML2
	bool "libxml"
	select BR2_PACKAGE_LIBXML2
	help
	  libxml2 support

config BR2_PACKAGE_PHP_EXT_SIMPLEXML
	bool "SimpleXML"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	help
	  UTF8 Support for sqlite
	  SimpleXML support

config BR2_PACKAGE_PHP_EXT_PDO
	bool "PDO"
config BR2_PACKAGE_PHP_EXT_WDDX
	bool "WDDX"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	help
	  PHP Data Objects support
	  WDDX support

config BR2_PACKAGE_PHP_EXT_PDO_SQLITE
	bool "PDO_SQLite"
	depends on BR2_PACKAGE_PHP_EXT_PDO
config BR2_PACKAGE_PHP_EXT_XML
	bool "XML Parser"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	help
	  SQLite driver for PDO
	  XML Parser support

config BR2_PACKAGE_PHP_EXT_PDO_SQLITE_EXTERNAL
	bool "PDO_SQLite external"
	depends on BR2_PACKAGE_PHP_EXT_PDO_SQLITE
	select BR2_PACKAGE_SQLITE
config BR2_PACKAGE_PHP_EXT_XMLREADER
	bool "XMLReader"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	help
	  Use external sqlite3 library
	  XMLReader support

config BR2_PACKAGE_PHP_EXT_PDO_MYSQL
	bool "PDO_MySQL"
	depends on BR2_PACKAGE_PHP_EXT_PDO
	depends on BR2_INSTALL_LIBSTDCPP
	select BR2_PACKAGE_MYSQL_CLIENT
config BR2_PACKAGE_PHP_EXT_XMLWRITER
	bool "XMLWriter"
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	help
	  PDO driver for MySQL
	  XMLWriter support

comment "PDO_MySQL requires a toolchain with C++ support"
	depends on !BR2_INSTALL_LIBSTDCPP && BR2_PACKAGE_PHP_EXT_PDO
config BR2_PACKAGE_PHP_EXT_XSL
	bool "XSL"
	select BR2_PACKAGE_PHP_EXT_DOM
	select BR2_PACKAGE_PHP_EXT_LIBXML2
	select BR2_PACKAGE_LIBXSLT
	help
	  XSL transformation support

endmenu
+13 −19
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ config BR2_PACKAGE_PHP

if BR2_PACKAGE_PHP

source "package/php/Config.ext"

config BR2_PACKAGE_PHP_CLI
       bool

@@ -16,38 +18,30 @@ config BR2_PACKAGE_PHP_CGI
       bool

choice
        prompt "PHP interface"
        prompt "Interface"
        default BR2_PACKAGE_PHP_SAPI_CGI
        help
          Select the PHP interface(s).

config BR2_PACKAGE_PHP_SAPI_CLI
        bool "cli interface"
	select BR2_PACKAGE_PHP_CLI
        help
          Command line interface for PHP.

config BR2_PACKAGE_PHP_SAPI_CGI
        bool "cgi interface"
	bool "CGI"
	select BR2_PACKAGE_PHP_CGI
	help
          CGI interface for PHP.
	  Common Gateway Interface

config BR2_PACKAGE_PHP_SAPI_CLI
        bool "CLI"
	select BR2_PACKAGE_PHP_CLI
        help
          Command Line Interface

config BR2_PACKAGE_PHP_SAPI_CLI_CGI
        bool "cli and cgi interfaces"
        bool "CGI and CLI"
	select BR2_PACKAGE_PHP_CLI
	select BR2_PACKAGE_PHP_CGI
	help
	  Command line and CGI interfaces for PHP.
	  Command line and Common gateway interfaces

endchoice

config BR2_PACKAGE_PHP_FASTCGI
        bool "fastcgi"
        depends on BR2_PACKAGE_PHP_CGI
        default y
        help
          fast cgi interface for php

source "package/php/Config.ext"
endif
+0 −30
Original line number Diff line number Diff line
From e814fcac0599dbaae50ede1f9f78e20941e27877 Mon Sep 17 00:00:00 2001
From: pajoye <pajoye@c90b9560-bf6c-de11-be94-00142212c4b1>
Date: Tue, 23 Feb 2010 11:07:39 +0000
Subject: [PATCH] - fix build when __GMP_BITS_PER_MP_LIMB is not defined but GMP_LIMB_BITS (no trace of this change in gmp's changelog...)

git-svn-id: http://svn.php.net/repository/php/php-src/branches/PHP_5_3@295402 c90b9560-bf6c-de11-be94-00142212c4b1
---
 ext/gmp/gmp.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c
index a54ffe9..f53dcd6 100644
--- a/ext/gmp/gmp.c
+++ b/ext/gmp/gmp.c
@@ -1374,8 +1374,11 @@ ZEND_FUNCTION(gmp_random)
 
 		GMPG(rand_initialized) = 1;
 	}
+#ifdef GMP_LIMB_BITS
+	mpz_urandomb(*gmpnum_result, GMPG(rand_state), GMP_ABS (limiter) * GMP_LIMB_BITS);
+#else
 	mpz_urandomb(*gmpnum_result, GMPG(rand_state), GMP_ABS (limiter) * __GMP_BITS_PER_MP_LIMB);
-
+#endif
 	ZEND_REGISTER_RESOURCE(return_value, gmpnum_result, le_gmp);
 }
 /* }}} */
-- 
1.7.1
+21 −0
Original line number Diff line number Diff line
Don't push LDFLAGS/CFLAGS for iconv.
Just assume they're covered somewhere else.
Otherwise we get -L/usr/lib and -I/usr/include search paths with uClibc
internal iconv support, which breaks things.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

diff -Nura php-5.3.13/configure php-5.3.13-iconv/configure
--- php-5.3.13/configure	2012-05-08 06:41:23.000000000 -0300
+++ php-5.3.13-iconv/configure	2012-05-18 22:18:21.313975849 -0300
@@ -47885,8 +47885,8 @@
       PHP_ICONV_PREFIX="$ICONV_DIR"
     fi
 
-    CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS"
-    LDFLAGS="-L$PHP_ICONV_PREFIX/$PHP_LIBDIR $LDFLAGS"
+    #CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS"
+    #LDFLAGS="-L$PHP_ICONV_PREFIX/$PHP_LIBDIR $LDFLAGS"
 
     if test -r "$PHP_ICONV_PREFIX/include/giconv.h"; then
       PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/giconv.h"
+110 −89
Original line number Diff line number Diff line
@@ -4,53 +4,59 @@
#
#############################################################

PHP_VERSION = 5.2.17
PHP_VERSION = 5.3.13
PHP_SOURCE = php-$(PHP_VERSION).tar.bz2
PHP_SITE = http://www.php.net/distributions
PHP_INSTALL_STAGING = YES
PHP_INSTALL_STAGING_OPT = INSTALL_ROOT=$(STAGING_DIR) install
PHP_INSTALL_TARGET_OPT = INSTALL_ROOT=$(TARGET_DIR) install
PHP_LIBTOOL_PATCH = NO
PHP_CONF_OPT =  --mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--disable-all \
		--without-pear \
		--with-config-file-path=/etc \
		--localstatedir=/var \
		--disable-rpath

PHP_CFLAGS = $(TARGET_CFLAGS)

ifneq ($(BR2_PACKAGE_PHP_CLI),y)
	PHP_CONF_OPT += --disable-cli
else
	PHP_CONF_OPT += --enable-cli
endif

ifneq ($(BR2_PACKAGE_PHP_CGI),y)
	PHP_CONF_OPT += --disable-cgi
else
	PHP_CONF_OPT += --enable-cgi
	ifeq ($(BR2_PACKAGE_PHP_FASTCGI),y)
		PHP_CONF_OPT += --enable-fastcgi
	endif
endif

### Extensions
ifeq ($(BR2_PACKAGE_PHP_EXT_SOCKETS),y)
	PHP_CONF_OPT += --enable-sockets
# Workaround for non-IPv6 uClibc toolchain
ifeq ($(BR2_TOOLCHAIN_BUILDROOT)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_CTNG_uClibc),y)
ifneq ($(BR2_INET_IPV6),y)
	PHP_CFLAGS += -DHAVE_DEPRECATED_DNS_FUNCS
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_POSIX),y)
	PHP_CONF_OPT += --enable-posix
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_SPL),y)
	PHP_CONF_OPT += --enable-spl
endif
PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_CLI),,--disable-cli)
PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_CGI),,--disable-cgi)

ifeq ($(BR2_PACKAGE_PHP_EXT_SESSION),y)
	PHP_CONF_OPT += --enable-session
endif
### Extensions
PHP_CONF_OPT += $(if $(BR2_PACKAGE_PHP_EXT_SOCKETS),--enable-sockets) \
		$(if $(BR2_PACKAGE_PHP_EXT_POSIX),--enable-posix) \
		$(if $(BR2_PACKAGE_PHP_EXT_SESSION),--enable-session) \
		$(if $(BR2_PACKAGE_PHP_EXT_HASH),--enable-hash) \
		$(if $(BR2_PACKAGE_PHP_EXT_DOM),--enable-dom) \
		$(if $(BR2_PACKAGE_PHP_EXT_SIMPLEXML),--enable-simplexml) \
		$(if $(BR2_PACKAGE_PHP_EXT_SOAP),--enable-soap) \
		$(if $(BR2_PACKAGE_PHP_EXT_WDDX),--enable-wddx) \
		$(if $(BR2_PACKAGE_PHP_EXT_XML),--enable-xml) \
		$(if $(BR2_PACKAGE_PHP_EXT_XMLREADER),--enable-xmlreader) \
		$(if $(BR2_PACKAGE_PHP_EXT_XMLWRITER),--enable-xmlwriter) \
		$(if $(BR2_PACKAGE_PHP_EXT_EXIF),--enable-exif) \
		$(if $(BR2_PACKAGE_PHP_EXT_FTP),--enable-ftp) \
		$(if $(BR2_PACKAGE_PHP_EXT_JSON),--enable-json) \
		$(if $(BR2_PACKAGE_PHP_EXT_TOKENIZER),--enable-tokenizer) \
		$(if $(BR2_PACKAGE_PHP_EXT_PCNTL),--enable-pcntl) \
		$(if $(BR2_PACKAGE_PHP_EXT_SHMOP),--enable-shmop) \
		$(if $(BR2_PACKAGE_PHP_EXT_SYSVMSG),--enable-sysvmsg) \
		$(if $(BR2_PACKAGE_PHP_EXT_SYSVSEM),--enable-sysvsem) \
		$(if $(BR2_PACKAGE_PHP_EXT_SYSVSHM),--enable-sysvshm) \
		$(if $(BR2_PACKAGE_PHP_EXT_ZIP),--enable-zip) \
		$(if $(BR2_PACKAGE_PHP_EXT_CTYPE),--enable-ctype) \
		$(if $(BR2_PACKAGE_PHP_EXT_FILTER),--enable-filter) \
		$(if $(BR2_PACKAGE_PHP_EXT_CALENDAR),--enable-calendar) \
		$(if $(BR2_PACKAGE_PHP_EXT_FILENIFO),--enable-fileinfo) \
		$(if $(BR2_PACKAGE_PHP_EXT_BCMATH),--enable-bcmath)

ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y)
	PHP_CONF_OPT += --with-openssl=$(STAGING_DIR)/usr
@@ -58,16 +64,14 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y)
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y)
	PHP_CONF_OPT += --enable-libxml \
		--with-libxml-dir=${STAGING_DIR}/usr \
		 --enable-xml \
		 --enable-xmlreader \
		 --enable-xmlwriter
	PHP_CONF_OPT += --enable-libxml --with-libxml-dir=${STAGING_DIR}/usr
	PHP_DEPENDENCIES += libxml2
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_SIMPLEXML),y)
	PHP_CONF_OPT += --enable-simplexml
ifeq ($(BR2_PACKAGE_PHP_EXT_XMLRPC),y)
	PHP_CONF_OPT += --with-xmlrpc \
		$(if $(BR2_PACKAGE_LIBICONV),--with-iconv-dir=$(STAGING_DIR)/usr)
	PHP_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)
endif

ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),)
@@ -75,17 +79,23 @@ ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),)
	PHP_DEPENDENCIES += zlib
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_EXIF),y)
	PHP_CONF_OPT += --enable-exif
ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y)
	PHP_CONF_OPT += --with-gettext=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += $(if $(BR2_NEEDS_GETTEXT),gettext)
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_FTP),y)
	PHP_CONF_OPT += --enable-ftp
ifeq ($(BR2_PACKAGE_PHP_EXT_ICONV),y)
ifeq ($(BR2_PACKAGE_LIBICONV),y)
	PHP_CONF_OPT += --with-iconv=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += libiconv
else
	PHP_CONF_OPT += --with-iconv
endif
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y)
	PHP_CONF_OPT += --with-gettext=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += $(if $(BR2_NEEDS_GETTEXT),gettext)
ifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y)
	PHP_CONF_OPT += --enable-intl --with-icu-dir=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += icu
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)
@@ -93,52 +103,11 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)
	PHP_DEPENDENCIES += gmp
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_JSON),y)
	PHP_CONF_OPT += --enable-json
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y)
	PHP_CONF_OPT += --with-readline=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += readline
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_NCURSES),y)
	PHP_CONF_OPT += --with-ncurses=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += ncurses
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_PCNTL),y)
	PHP_CONF_OPT += --enable-pcntl
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVMSG),y)
	PHP_CONF_OPT += --enable-sysvmsg
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSEM),y)
	PHP_CONF_OPT += --enable-sysvsem
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSHM),y)
	PHP_CONF_OPT += --enable-sysvshm
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_ZIP),y)
	PHP_CONF_OPT += --enable-zip
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_FILTER),y)
	PHP_CONF_OPT += --enable-filter
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_CALENDAR),y)
	PHP_CONF_OPT += --enable-calendar
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_PCRE),y)
	PHP_CONF_OPT += --with-pcre-regex
endif

### Legacy sqlite2 support
ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y)
	PHP_CONF_OPT += --with-sqlite
@@ -150,16 +119,22 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE_UTF8),y)
endif
endif

### Native MySQL extensions
ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQL),y)
	PHP_CONF_OPT += --with-mysql=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += mysql_client
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y)
	PHP_CONF_OPT += --with-mysqli=$(STAGING_DIR)/usr/bin/mysql_config
	PHP_DEPENDENCIES += mysql_client
endif

### PDO
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y)
	PHP_CONF_OPT += --enable-pdo
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y)
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE_EXTERNAL),y)
	PHP_CONF_OPT += --with-pdo-sqlite=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += sqlite
else
	PHP_CONF_OPT += --with-pdo-sqlite
endif
	PHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION
ifneq ($(BR2_LARGEFILE),y)
	PHP_CFLAGS += -DSQLITE_DISABLE_LFS
@@ -171,6 +146,50 @@ ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y)
endif
endif

### Use external PCRE if it's available
ifeq ($(BR2_PACKAGE_PCRE),y)
	PHP_CONF_OPT += --with-pcre-regex=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += pcre
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_CURL),y)
	PHP_CONF_OPT += --with-curl=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += libcurl
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_XSL),y)
	PHP_CONF_OPT += --with-xsl=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += libxslt
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_BZIP2),y)
	PHP_CONF_OPT += --with-bz2=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += bzip2
endif

### DBA
ifeq ($(BR2_PACKAGE_PHP_EXT_DBA),y)
	PHP_CONF_OPT += --enable-dba
ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_CDB),y)
	PHP_CONF_OPT += --without-cdb
endif
ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_FLAT),y)
	PHP_CONF_OPT += --without-flatfile
endif
ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_INI),y)
	PHP_CONF_OPT += --without-inifile
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_DBA_DB4),y)
	PHP_CONF_OPT += --with-db4=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += berkeleydb
endif
endif

ifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y)
	PHP_CONF_OPT += --with-snmp=$(STAGING_DIR)/usr
	PHP_DEPENDENCIES += netsnmp
endif

# Fixup prefix= and exec_prefix= in php-config
define PHP_FIXUP_PHP_CONFIG
	$(SED) 's%^prefix="/usr"%prefix="$(STAGING_DIR)/usr"%' \
@@ -185,7 +204,9 @@ define PHP_INSTALL_FIXUP
	rm -f $(TARGET_DIR)/usr/bin/phpize
	rm -f $(TARGET_DIR)/usr/bin/php-config
	if [ ! -f $(TARGET_DIR)/etc/php.ini ]; then \
		$(INSTALL) -m 0755 $(BR2_PACKAGE_PHP_CONFIG) $(TARGET_DIR)/etc/php.ini; fi
		$(INSTALL) -m 0755  $(PHP_DIR)/php.ini-production \
			$(TARGET_DIR)/etc/php.ini; \
	fi
endef

PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FIXUP