1 ################################################################################
5 ################################################################################
8 PHP_SITE = http://www.php.net/distributions
9 PHP_SOURCE = php-$(PHP_VERSION).tar.xz
10 PHP_INSTALL_STAGING = YES
11 PHP_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install
12 PHP_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install
13 PHP_DEPENDENCIES = host-pkgconf
15 PHP_LICENSE_FILES = LICENSE
16 PHP_CONF_OPTS = --mandir=/usr/share/man \
17 --infodir=/usr/share/info \
20 --with-config-file-path=/etc \
22 PHP_CONF_ENV = EXTRA_LIBS="$(PHP_EXTRA_LIBS)"
24 ifeq ($(BR2_ENDIAN),"BIG")
25 PHP_CONF_ENV += ac_cv_c_bigendian_php=yes
27 PHP_CONF_ENV += ac_cv_c_bigendian_php=no
29 PHP_CONFIG_SCRIPTS = php-config
31 PHP_CFLAGS = $(TARGET_CFLAGS)
33 # We need to force dl "detection"
34 ifeq ($(BR2_STATIC_LIBS),)
35 PHP_CONF_ENV += ac_cv_func_dlopen=yes ac_cv_lib_dl_dlopen=yes
36 PHP_EXTRA_LIBS += -ldl
38 PHP_CONF_ENV += ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=no
41 # Workaround for non-IPv6 uClibc toolchain
42 ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
43 ifneq ($(BR2_INET_IPV6),y)
44 PHP_CFLAGS += -DHAVE_DEPRECATED_DNS_FUNCS
48 PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_CLI),,--disable-cli)
49 PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_CGI),,--disable-cgi)
50 PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_FPM),--enable-fpm,--disable-fpm)
53 PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_EXT_SOCKETS),--enable-sockets) \
54 $(if $(BR2_PACKAGE_PHP_EXT_POSIX),--enable-posix) \
55 $(if $(BR2_PACKAGE_PHP_EXT_SESSION),--enable-session) \
56 $(if $(BR2_PACKAGE_PHP_EXT_HASH),--enable-hash) \
57 $(if $(BR2_PACKAGE_PHP_EXT_DOM),--enable-dom) \
58 $(if $(BR2_PACKAGE_PHP_EXT_SIMPLEXML),--enable-simplexml) \
59 $(if $(BR2_PACKAGE_PHP_EXT_SOAP),--enable-soap) \
60 $(if $(BR2_PACKAGE_PHP_EXT_XML),--enable-xml) \
61 $(if $(BR2_PACKAGE_PHP_EXT_XMLREADER),--enable-xmlreader) \
62 $(if $(BR2_PACKAGE_PHP_EXT_XMLWRITER),--enable-xmlwriter) \
63 $(if $(BR2_PACKAGE_PHP_EXT_EXIF),--enable-exif) \
64 $(if $(BR2_PACKAGE_PHP_EXT_FTP),--enable-ftp) \
65 $(if $(BR2_PACKAGE_PHP_EXT_JSON),--enable-json) \
66 $(if $(BR2_PACKAGE_PHP_EXT_TOKENIZER),--enable-tokenizer) \
67 $(if $(BR2_PACKAGE_PHP_EXT_PCNTL),--enable-pcntl) \
68 $(if $(BR2_PACKAGE_PHP_EXT_SHMOP),--enable-shmop) \
69 $(if $(BR2_PACKAGE_PHP_EXT_SYSVMSG),--enable-sysvmsg) \
70 $(if $(BR2_PACKAGE_PHP_EXT_SYSVSEM),--enable-sysvsem) \
71 $(if $(BR2_PACKAGE_PHP_EXT_SYSVSHM),--enable-sysvshm) \
72 $(if $(BR2_PACKAGE_PHP_EXT_ZIP),--enable-zip) \
73 $(if $(BR2_PACKAGE_PHP_EXT_CTYPE),--enable-ctype) \
74 $(if $(BR2_PACKAGE_PHP_EXT_FILTER),--enable-filter) \
75 $(if $(BR2_PACKAGE_PHP_EXT_CALENDAR),--enable-calendar) \
76 $(if $(BR2_PACKAGE_PHP_EXT_FILEINFO),--enable-fileinfo) \
77 $(if $(BR2_PACKAGE_PHP_EXT_BCMATH),--enable-bcmath) \
78 $(if $(BR2_PACKAGE_PHP_EXT_MBSTRING),--enable-mbstring) \
79 $(if $(BR2_PACKAGE_PHP_EXT_PHAR),--enable-phar)
81 ifeq ($(BR2_PACKAGE_PHP_EXT_MCRYPT),y)
82 PHP_CONF_OPTS += --with-mcrypt=$(STAGING_DIR)/usr
83 PHP_DEPENDENCIES += libmcrypt
86 ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y)
87 PHP_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr
88 PHP_DEPENDENCIES += openssl
91 ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y)
92 PHP_CONF_ENV += php_cv_libxml_build_works=yes
93 PHP_CONF_OPTS += --enable-libxml --with-libxml-dir=${STAGING_DIR}/usr
94 PHP_DEPENDENCIES += libxml2
97 ifeq ($(BR2_PACKAGE_PHP_EXT_WDDX),y)
98 PHP_CONF_OPTS += --enable-wddx --with-libexpat-dir=$(STAGING_DIR)/usr
99 PHP_DEPENDENCIES += expat
102 ifeq ($(BR2_PACKAGE_PHP_EXT_XMLRPC),y)
103 PHP_CONF_OPTS += --with-xmlrpc \
104 $(if $(BR2_PACKAGE_LIBICONV),--with-iconv-dir=$(STAGING_DIR)/usr)
105 PHP_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)
108 ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),)
109 PHP_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr
110 PHP_DEPENDENCIES += zlib
113 ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y)
114 PHP_CONF_OPTS += --with-gettext=$(STAGING_DIR)/usr
115 PHP_DEPENDENCIES += $(if $(BR2_NEEDS_GETTEXT),gettext)
118 ifeq ($(BR2_PACKAGE_PHP_EXT_ICONV),y)
119 ifeq ($(BR2_PACKAGE_LIBICONV),y)
120 PHP_CONF_OPTS += --with-iconv=$(STAGING_DIR)/usr
121 PHP_DEPENDENCIES += libiconv
123 PHP_CONF_OPTS += --with-iconv
127 ifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y)
128 PHP_CONF_OPTS += --enable-intl --with-icu-dir=$(STAGING_DIR)/usr
129 PHP_DEPENDENCIES += icu
130 # The intl module is implemented in C++, but PHP fails to use
131 # g++ as the compiler for the final link. As a workaround,
132 # tell it to link libstdc++.
133 PHP_EXTRA_LIBS += -lstdc++
136 ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y)
137 PHP_CONF_OPTS += --with-gmp=$(STAGING_DIR)/usr
138 PHP_DEPENDENCIES += gmp
141 ifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y)
142 PHP_CONF_OPTS += --with-readline=$(STAGING_DIR)/usr
143 PHP_DEPENDENCIES += readline
146 ### Native MySQL extensions
147 ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQL),y)
148 PHP_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr
149 PHP_DEPENDENCIES += mysql
151 ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y)
152 PHP_CONF_OPTS += --with-mysqli=$(STAGING_DIR)/usr/bin/mysql_config
153 PHP_DEPENDENCIES += mysql
157 ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y)
158 PHP_CONF_OPTS += --enable-pdo
159 ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y)
160 PHP_CONF_OPTS += --with-pdo-sqlite=$(STAGING_DIR)/usr
161 PHP_DEPENDENCIES += sqlite
162 PHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION
163 ifneq ($(BR2_LARGEFILE),y)
164 PHP_CFLAGS += -DSQLITE_DISABLE_LFS
167 ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y)
168 PHP_CONF_OPTS += --with-pdo-mysql=$(STAGING_DIR)/usr
169 PHP_DEPENDENCIES += mysql
171 ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL),y)
172 PHP_CONF_OPTS += --with-pdo-pgsql=$(STAGING_DIR)/usr
173 PHP_DEPENDENCIES += postgresql
177 ### Use external PCRE if it's available
178 ifeq ($(BR2_PACKAGE_PCRE),y)
179 PHP_CONF_OPTS += --with-pcre-regex=$(STAGING_DIR)/usr
180 PHP_DEPENDENCIES += pcre
183 ifeq ($(BR2_PACKAGE_PHP_EXT_CURL),y)
184 PHP_CONF_OPTS += --with-curl=$(STAGING_DIR)/usr
185 PHP_DEPENDENCIES += libcurl
188 ifeq ($(BR2_PACKAGE_PHP_EXT_XSL),y)
189 PHP_CONF_OPTS += --with-xsl=$(STAGING_DIR)/usr
190 PHP_DEPENDENCIES += libxslt
193 ifeq ($(BR2_PACKAGE_PHP_EXT_BZIP2),y)
194 PHP_CONF_OPTS += --with-bz2=$(STAGING_DIR)/usr
195 PHP_DEPENDENCIES += bzip2
199 ifeq ($(BR2_PACKAGE_PHP_EXT_DBA),y)
200 PHP_CONF_OPTS += --enable-dba
201 ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_CDB),y)
202 PHP_CONF_OPTS += --without-cdb
204 ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_FLAT),y)
205 PHP_CONF_OPTS += --without-flatfile
207 ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_INI),y)
208 PHP_CONF_OPTS += --without-inifile
210 ifeq ($(BR2_PACKAGE_PHP_EXT_DBA_DB4),y)
211 PHP_CONF_OPTS += --with-db4=$(STAGING_DIR)/usr
212 PHP_DEPENDENCIES += berkeleydb
216 ifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y)
217 PHP_CONF_OPTS += --with-snmp=$(STAGING_DIR)/usr
218 PHP_DEPENDENCIES += netsnmp
221 ifeq ($(BR2_PACKAGE_PHP_EXT_GD),y)
222 PHP_CONF_OPTS += --with-gd --with-jpeg-dir=$(STAGING_DIR)/usr \
223 --with-png-dir=$(STAGING_DIR)/usr \
224 --with-zlib-dir=$(STAGING_DIR)/usr \
225 --with-freetype-dir=$(STAGING_DIR)/usr
226 PHP_DEPENDENCIES += jpeg libpng freetype
229 define PHP_EXTENSIONS_FIXUP
230 $(SED) "/prefix/ s:/usr:$(STAGING_DIR)/usr:" \
231 $(STAGING_DIR)/usr/bin/phpize
232 $(SED) "/extension_dir/ s:/usr:$(TARGET_DIR)/usr:" \
233 $(STAGING_DIR)/usr/bin/php-config
236 PHP_POST_INSTALL_TARGET_HOOKS += PHP_EXTENSIONS_FIXUP
238 define PHP_INSTALL_FIXUP
239 rm -rf $(TARGET_DIR)/usr/lib/php
240 rm -f $(TARGET_DIR)/usr/bin/phpize
241 $(INSTALL) -D -m 0755 $(PHP_DIR)/php.ini-production \
242 $(TARGET_DIR)/etc/php.ini
245 PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FIXUP
247 PHP_CONF_ENV += CFLAGS="$(PHP_CFLAGS)"
249 $(eval $(autotools-package))