php: convert to Makefile.autotools.in and other improvements

Patch by Gustavo Zacarias <gustavo@zacarias.com.ar>

Closes #5, #77, #141 and #143.

* Migrate php package to Makefile.autotools.in

* Make PCRE regex an option (previously forced on)

* Add calendar option from bug #77

* Add external sqlite3 option from bug #141
New option BR2_PACKAGE_PHP_PDO_SQLITE_EXTERNAL

* Add alternate php.ini configuration option from bug #5
Named BR2_PACKAGE_PHP_CONFIG and defaults to shipped config.
In most scenarios the shipped config isn't good enough, it has
a high memory limit for embedded for example.

* Changed some options from depends to select
Namely openssl, libxml2, zlib, gettext, gmp.

* Disabled some 'y' defaults to make things lighter by default
Namely libxml2, sqlite, pdo and pdo_sqlite.

* Made some of the extensions help text more verbose
This commit is contained in:
Peter Korsgaard 2009-03-04 20:58:08 +00:00
parent 4617e1d080
commit 7685dd41e1
2 changed files with 170 additions and 178 deletions

View File

@ -1,5 +1,12 @@
menu "PHP Extensions" menu "PHP Extensions"
config BR2_PACKAGE_PHP_CONFIG
string "PHP configuration file to use"
default "$(PHP_DIR)/php.ini-dist"
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.
config BR2_PACKAGE_PHP_EXT_SOCKETS config BR2_PACKAGE_PHP_EXT_SOCKETS
bool "socket" bool "socket"
help help
@ -15,7 +22,7 @@ config BR2_PACKAGE_PHP_EXT_SPL
bool "SPL" bool "SPL"
default y default y
help help
SPL support Standard PHP library support
config BR2_PACKAGE_PHP_EXT_SESSION config BR2_PACKAGE_PHP_EXT_SESSION
bool "Session" bool "Session"
@ -25,16 +32,15 @@ config BR2_PACKAGE_PHP_EXT_SESSION
config BR2_PACKAGE_PHP_EXT_OPENSSL config BR2_PACKAGE_PHP_EXT_OPENSSL
bool "openssl" bool "openssl"
depends on BR2_PACKAGE_OPENSSL select BR2_PACKAGE_OPENSSL
help help
openssl support openssl support
config BR2_PACKAGE_PHP_EXT_LIBXML2 config BR2_PACKAGE_PHP_EXT_LIBXML2
bool "xml2" bool "xml2"
depends on BR2_PACKAGE_LIBXML2 select BR2_PACKAGE_LIBXML2
default y
help help
xml support libxml2 support
config BR2_PACKAGE_PHP_EXT_SIMPLEXML config BR2_PACKAGE_PHP_EXT_SIMPLEXML
bool "simplexml" bool "simplexml"
@ -44,7 +50,7 @@ config BR2_PACKAGE_PHP_EXT_SIMPLEXML
config BR2_PACKAGE_PHP_EXT_ZLIB config BR2_PACKAGE_PHP_EXT_ZLIB
bool "zlib" bool "zlib"
depends on BR2_PACKAGE_ZLIB select BR2_PACKAGE_ZLIB
default y default y
help help
zlib support zlib support
@ -61,20 +67,20 @@ config BR2_PACKAGE_PHP_EXT_FTP
config BR2_PACKAGE_PHP_EXT_GETTEXT config BR2_PACKAGE_PHP_EXT_GETTEXT
bool "gettext" bool "gettext"
depends on BR2_PACKAGE_GETTEXT select BR2_PACKAGE_GETTEXT
help help
gettext support gettext support
config BR2_PACKAGE_PHP_EXT_GMP config BR2_PACKAGE_PHP_EXT_GMP
bool "gmp" bool "gmp"
depends on BR2_PACKAGE_LIBGMP select BR2_PACKAGE_LIBGMP
help help
GMP support GMP support
config BR2_PACKAGE_PHP_EXT_JSON config BR2_PACKAGE_PHP_EXT_JSON
bool "JSON" bool "JSON"
help help
JSON support JavaScript Object Serialization support
config BR2_PACKAGE_PHP_EXT_READLINE config BR2_PACKAGE_PHP_EXT_READLINE
bool "readline" bool "readline"
@ -88,6 +94,11 @@ config BR2_PACKAGE_PHP_EXT_NCURSES
help help
ncurses support ncurses support
config BR2_PACKAGE_PHP_EXT_PCRE
bool "PCRE"
help
Perl Compatible Regular Expressions support
config BR2_PACKAGE_PHP_EXT_SYSVMSG config BR2_PACKAGE_PHP_EXT_SYSVMSG
bool "sysvmsg - System V Message queue" bool "sysvmsg - System V Message queue"
help help
@ -106,20 +117,24 @@ config BR2_PACKAGE_PHP_EXT_SYSVSHM
config BR2_PACKAGE_PHP_EXT_ZIP config BR2_PACKAGE_PHP_EXT_ZIP
bool "zip" bool "zip"
help help
Zip Support Zip read/write support
config BR2_PACKAGE_PHP_EXT_FILTER config BR2_PACKAGE_PHP_EXT_FILTER
bool "filter" bool "filter"
help help
Input filter support Input filter support
config BR2_PACKAGE_PHP_EXT_CALENDAR
bool "calendar"
help
Calendar and event support
comment "Database extensions" comment "Database extensions"
config BR2_PACKAGE_PHP_EXT_SQLITE config BR2_PACKAGE_PHP_EXT_SQLITE
bool "sqlite" bool "SQLite"
default y
help help
SQLite Legacy SQLite2 support
config BR2_PACKAGE_PHP_EXT_SQLITE_UTF8 config BR2_PACKAGE_PHP_EXT_SQLITE_UTF8
bool "sqlite UTF8 support" bool "sqlite UTF8 support"
@ -129,22 +144,27 @@ config BR2_PACKAGE_PHP_EXT_SQLITE_UTF8
config BR2_PACKAGE_PHP_EXT_PDO config BR2_PACKAGE_PHP_EXT_PDO
bool "PDO" bool "PDO"
default y
help help
PDO support PHP Data Objects support
config BR2_PACKAGE_PHP_EXT_PDO_SQLITE config BR2_PACKAGE_PHP_EXT_PDO_SQLITE
bool "PDO_SQLite" bool "PDO_SQLite"
depends on BR2_PACKAGE_PHP_EXT_PDO depends on BR2_PACKAGE_PHP_EXT_PDO
default y
help help
SQLite support for PDO SQLite driver for PDO
config BR2_PACKAGE_PHP_EXT_PDO_SQLITE_EXTERNAL
bool "PDO_SQLite external"
depends on BR2_PACKAGE_PHP_EXT_PDO_SQLITE
select BR2_PACKAGE_SQLITE
help
Use external sqlite3 library
config BR2_PACKAGE_PHP_EXT_PDO_MYSQL config BR2_PACKAGE_PHP_EXT_PDO_MYSQL
bool "PDO_MySQL" bool "PDO_MySQL"
depends on BR2_PACKAGE_PHP_EXT_PDO depends on BR2_PACKAGE_PHP_EXT_PDO
select BR2_PACKAGE_MYSQL_CLIENT select BR2_PACKAGE_MYSQL_CLIENT
help help
MySQL support for PDO PDO driver for MySQL
endmenu endmenu

View File

@ -3,209 +3,181 @@
# php # php
# #
############################################################# #############################################################
PHP_VER:=5.2.9
PHP_SOURCE:=php-$(PHP_VER).tar.bz2 PHP_VERSION = 5.2.9
PHP_SITE:=http://www.php.net/distributions PHP_SOURCE = php-$(PHP_VERSION).tar.bz2
PHP_DIR:=$(BUILD_DIR)/php-$(PHP_VER) PHP_SITE = http://www.php.net/distributions
PHP_CAT=$(BZCAT) PHP_INSTALL_STAGING = YES
PHP_DEPS= PHP_INSTALL_STAGING_OPT = INSTALL_ROOT=$(STAGING_DIR) install
PHP_TARGET_DEPS= PHP_INSTALL_TARGET_OPT = INSTALL_ROOT=$(TARGET_DIR) install
PHP_CONFIGURE = $(ENABLE_DEBUG) PHP_LIBTOOL_PATCH = NO
PHP_DEPENDENCIES = uclibc
PHP_CONF_OPT = $(DISABLE_IPV6) \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--disable-all \
--without-pear \
--with-config-file-path=/etc \
--localstatedir=/var \
ifneq ($(BR2_PACKAGE_PHP_CLI),y) ifneq ($(BR2_PACKAGE_PHP_CLI),y)
PHP_CONFIGURE+=--disable-cli PHP_CONF_OPT += --disable-cli
else else
PHP_CONFIGURE+=--enable-cli PHP_CONF_OPT += --enable-cli
PHP_TARGET_DEPS+=$(TARGET_DIR)/usr/bin/php
endif endif
ifneq ($(BR2_PACKAGE_PHP_CGI),y) ifneq ($(BR2_PACKAGE_PHP_CGI),y)
PHP_CONFIGURE+=--disable-cgi PHP_CONF_OPT += --disable-cgi
else else
PHP_CONFIGURE=--enable-cgi PHP_CONF_OPT += --enable-cgi
PHP_TARGET_DEPS+=$(TARGET_DIR)/usr/bin/php-cgi
ifeq ($(BR2_PACKAGE_PHP_FASTCGI),y) ifeq ($(BR2_PACKAGE_PHP_FASTCGI),y)
PHP_CONFIGURE+=--enable-fastcgi PHP_CONF_OPT += --enable-fastcgi
endif endif
endif endif
ifneq ($(BR2_INET_IPV6),y)
PHP_CONFIGURE+=--disable-ipv6
endif
### Extensions ### Extensions
ifeq ($(BR2_PACKAGE_PHP_EXT_SOCKETS),y) ifeq ($(BR2_PACKAGE_PHP_EXT_SOCKETS),y)
PHP_CONFIGURE+=--enable-sockets PHP_CONF_OPT += --enable-sockets
endif endif
ifeq ($(BR2_PACKAGE_PHP_EXT_POSIX),y) ifeq ($(BR2_PACKAGE_PHP_EXT_POSIX),y)
PHP_CONFIGURE+=--enable-posix PHP_CONF_OPT += --enable-posix
endif endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SPL),y) ifeq ($(BR2_PACKAGE_PHP_EXT_SPL),y)
PHP_CONFIGURE+=--enable-spl PHP_CONF_OPT += --enable-spl
endif endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SESSION),y) ifeq ($(BR2_PACKAGE_PHP_EXT_SESSION),y)
PHP_CONFIGURE+=--enable-session PHP_CONF_OPT += --enable-session
endif endif
ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y) ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y)
PHP_CONFIGURE+=--with-openssl=$(STAGING_DIR)/usr PHP_CONF_OPT += --with-openssl=$(STAGING_DIR)/usr
PHP_DEPS+=openssl PHP_DEPENDENCIES += openssl
endif endif
ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y) ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y)
PHP_CONFIGURE+=--enable-libxml \ PHP_CONF_OPT += --enable-libxml \
--with-libxml-dir=${STAGING_DIR}/usr \ --with-libxml-dir=${STAGING_DIR}/usr \
--enable-xml \ --enable-xml \
--enable-xmlreader \ --enable-xmlreader \
--enable-xmlwriter --enable-xmlwriter
PHP_DEPS+=libxml2 PHP_DEPENDENCIES += libxml2
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SIMPLEXML),y)
PHP_CONFIGURE+=--enable-simplexml
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_ZLIB),y)
PHP_CONFIGURE+=--with-zlib=$(STAGING_DIR)/usr
PHP_DEPS+=zlib
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_EXIF),y)
PHP_CONFIGURE+=--enable-exif
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_FTP),y)
PHP_CONFIGURE+=--enable-ftp
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y)
PHP_CONFIGURE+=--with-gettext=$(STAGING_DIR)/usr
PHP_DEPS+=gettext
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)
PHP_CONFIGURE+=--with-gmp=$(STAGING_DIR)/usr
PHP_DEPS+=libgmp
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_JSON),y)
PHP_CONFIGURE+=--enable-json
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y)
PHP_CONFIGURE+=--with-readline=$(STAGING_DIR)/usr
PHP_DEPS+=readline
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_NCURSES),y)
PHP_CONFIGURE+=--with-ncurses=$(STAGING_DIR)/usr
PHP_DEPS+=ncurses
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVMSG),y)
PHP_CONFIGURE+=--enable-sysvmsg
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSEM),y)
PHP_CONFIGURE+=--enable-sysvsem
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SYSVSHM),y)
PHP_CONFIGURE+=--enable-sysvshm
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_ZIP),y)
PHP_CONFIGURE+=--enable-zip
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_FILTER),y)
PHP_CONFIGURE+=--enable-filter
endif endif
### Database extensions ifeq ($(BR2_PACKAGE_PHP_EXT_SIMPLEXML),y)
PHP_CONF_OPT += --enable-simplexml
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_ZLIB),y)
PHP_CONF_OPT += --with-zlib=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += zlib
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_EXIF),y)
PHP_CONF_OPT += --enable-exif
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_FTP),y)
PHP_CONF_OPT += --enable-ftp
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y)
PHP_CONF_OPT += --with-gettext=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += gettext
endif
ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)
PHP_CONF_OPT += --with-gmp=$(STAGING_DIR)/usr
PHP_DEPENDENCIES += libgmp
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_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) ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y)
PHP_CONFIGURE+=--with-sqlite PHP_CONF_OPT += --with-sqlite
ifneq ($(BR2_LARGEFILE),y) ifneq ($(BR2_LARGEFILE),y)
PHP_CFLAGS+= -DSQLITE_DISABLE_LFS PHP_CONF_ENV += CFLAGS+=" -DSQLITE_DISABLE_LFS"
endif endif
ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE_UTF8),y) ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE_UTF8),y)
PHP_CONFIGURE+=--enable-sqlite-utf8 PHP_CONF_OPT += --enable-sqlite-utf8
endif endif
endif endif
### PDO
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y) ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y)
PHP_CONFIGURE+=--enable-pdo PHP_CONF_OPT += --enable-pdo
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y) ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y)
PHP_CONFIGURE+=--with-pdo-sqlite ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE_EXTERNAL),y)
PHP_CFLAGS+= -DSQLITE_OMIT_LOAD_EXTENSION PHP_CONF_OPT += --with-pdo-sqlite=$(STAGING_DIR)/usr
else
PHP_CONF_OPT += --with-pdo-sqlite
endif
PHP_CONF_ENV += CFLAGS+=" -DSQLITE_OMIT_LOAD_EXTENSION"
endif endif
ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y) ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y)
PHP_CONFIGURE+=--with-pdo-mysql=$(STAGING_DIR)/usr PHP_CONF_OPT += --with-pdo-mysql=$(STAGING_DIR)/usr
PHP_DEPS+=mysql_client PHP_DEPENDENCIES += mysql_client
endif endif
endif endif
$(DL_DIR)/$(PHP_SOURCE): $(eval $(call AUTOTARGETS,package,php))
$(call DOWNLOAD,$(PHP_SITE),$(PHP_SOURCE))
php-source: $(DL_DIR)/$(PHP_SOURCE) $(PHP_HOOK_POST_INSTALL):
rm -rf $(TARGET_DIR)/usr/lib/php
rm -f $(TARGET_DIR)/usr/bin/phpize
rm -f $(TARGET_DIR)/usr/bin/php-config
$(INSTALL) -m 0755 $(BR2_PACKAGE_PHP_CONFIG) $(TARGET_DIR)/etc/php.ini
$(PHP_DIR)/.unpacked: $(DL_DIR)/$(PHP_SOURCE) $(PHP_TARGET_UNINSTALL):
$(PHP_CAT) $(DL_DIR)/$(PHP_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - $(call MESSAGE,"Uninstalling")
toolchain/patch-kernel.sh $(PHP_DIR) package/php/ php\*.patch
toolchain/patch-kernel.sh $(PHP_DIR) package/php/ php\*.patch.$(ARCH)
touch $@
$(PHP_DIR)/.configured: $(PHP_DIR)/.unpacked
(cd $(PHP_DIR); rm -rf config.cache; \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_CONFIGURE_ARGS) \
CC=$(TARGET_CC) \
./configure \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
--build=$(GNU_HOST_NAME) \
--prefix=/usr \
--exec-prefix=/ \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/lib \
--sysconfdir=/etc \
--with-config-file-path=/etc \
--datadir=/usr/share/misc \
--localstatedir=/var \
--mandir=/usr/man \
--infodir=/usr/info \
--disable-all \
--with-pcre-regex \
--without-pear \
$(PHP_CONFIGURE) \
)
touch $@
$(PHP_DIR)/.built: $(PHP_DIR)/.configured
$(MAKE) CC="$(TARGET_CC) $(PHP_CFLAGS)" -C $(PHP_DIR)
touch $@
$(PHP_DIR)/.staged: $(PHP_DIR)/.built
$(MAKE) DESTDIR=$(STAGING_DIR) INSTALL_ROOT=$(STAGING_DIR) CC=$(TARGET_CC) -C $(PHP_DIR) install
touch $@
$(TARGET_DIR)/usr/bin/php: $(PHP_DIR)/.staged
cp -dpf $(STAGING_DIR)/usr/bin/php $(TARGET_DIR)/usr/bin/php
chmod 755 $(TARGET_DIR)/usr/bin/php
$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/php
$(TARGET_DIR)/usr/bin/php-cgi: $(PHP_DIR)/.staged
cp -dpf $(STAGING_DIR)/usr/bin/php-cgi $(TARGET_DIR)/usr/bin/php-cgi
chmod 755 $(TARGET_DIR)/usr/bin/php-cgi
$(STRIPCMD) $(STRIP_STRIP_UNNEEDED) $(TARGET_DIR)/usr/bin/php-cgi
$(TARGET_DIR)/etc/php.ini: $(PHP_DIR)/.staged
cp -f $(PHP_DIR)/php.ini-dist $(TARGET_DIR)/etc/php.ini
php: uclibc $(PHP_DEPS) $(PHP_TARGET_DEPS) $(TARGET_DIR)/etc/php.ini
php-unpacked: $(PHP_DIR)/.unpacked
php-clean:
rm -f $(PHP_DIR)/.configured $(PHP_DIR)/.built $(PHP_DIR)/.staged
rm -f $(PHP_TARGET_DEPS)
rm -f $(STAGING_DIR)/usr/bin/php* $(STAGING_DIR)/usr/man/man1/php*
rm -rf $(STAGING_DIR)/usr/include/php rm -rf $(STAGING_DIR)/usr/include/php
-$(MAKE) -C $(PHP_DIR) clean rm -rf $(STAGING_DIR)/usr/lib/php
rm -f $(STAGING_DIR)/usr/bin/php*
rm -f $(STAGING_DIR)/usr/share/man/man1/php*.1
rm -f $(TARGET_DIR)/etc/php.ini
rm -f $(TARGET_DIR)/usr/bin/php*
rm -f $(PHP_TARGET_INSTALL_TARGET) $(PHP_HOOK_POST_INSTALL)
php-dirclean:
rm -rf $(PHP_DIR)
#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(BR2_PACKAGE_PHP),y)
TARGETS+=php
endif