2 # Copyright (C) 2006-2014 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 include $(TOPDIR)/rules.mk
14 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
15 PKG_SOURCE_URL:=http://www.php.net/distributions/
16 PKG_MD5SUM:=1c6e99187d25023411b663ea09f145ee
18 PKG_FIXUP:=libtool no-autoreconf
32 mbstring mcrypt mysql mysqli \
34 pcntl pdo pdo-mysql pdo-pgsql pdo-sqlite pgsql \
35 session shmop simplexml soap sockets sqlite sqlite3 sysvmsg sysvsem sysvshm \
37 xml xmlreader xmlwriter zip \
39 PKG_CONFIG_DEPENDS:= \
40 $(patsubst %,CONFIG_PACKAGE_php5-mod-%,$(PHP5_MODULES)) \
41 CONFIG_PHP5_FILTER CONFIG_PHP5_LIBXML CONFIG_PHP5_SYSTEMTZDATA
43 include $(INCLUDE_DIR)/package.mk
44 include $(INCLUDE_DIR)/nls.mk
46 define Package/php5/Default
50 TITLE:=PHP5 Hypertext preprocessor
51 URL:=http://www.php.net/
52 MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
56 define Package/php5/Default/description
57 PHP is a widely-used general-purpose scripting language that is especially
58 suited for Web development and can be embedded into HTML.
61 define Package/php5/config
63 bool "PHP5 Filter support"
64 depends on PACKAGE_php5-cli || PACKAGE_php5-cgi
67 bool "PHP5 LIBXML support"
68 depends on PACKAGE_php5-cli || PACKAGE_php5-cgi
70 config PHP5_SYSTEMTZDATA
71 bool "Use system timezone data instead of php's built-in database"
72 depends on PACKAGE_php5-cli || PACKAGE_php5-cgi
73 select PACKAGE_zoneinfo-core
76 Enabling this feature automatically selects the zoneinfo-core package
77 which contains data for UTC timezone. To use other timezones you have
78 to install the corresponding zoneinfo-... package(s).
82 $(call Package/php5/Default)
84 DEPENDS:=+libpcre +zlib \
88 define Package/php5/description
89 $(call Package/php5/Default/description)
90 This package contains only the PHP config file. You must actually choose
91 your PHP flavour (cli, cgi or fastcgi).
94 define Package/php5-cli
95 $(call Package/php5/Default)
99 define Package/php5-cli/description
100 $(call Package/php5/Default/description)
101 This package contains the CLI version of the PHP5 interpreter.
104 define Package/php5-cgi
105 $(call Package/php5/Default)
106 TITLE+= (CGI & FastCGI)
109 define Package/php5-cgi/description
110 $(call Package/php5/Default/description)
111 This package contains the CGI version of the PHP5 interpreter.
114 define Package/php5-fastcgi
115 $(call Package/php5/Default)
117 TITLE:=FastCGI startup script
120 define Package/php5-fastcgi/description
121 As FastCGI support is now a core feature the php5-fastcgi package now depends
122 on the php5-cgi package, containing just the startup script.
134 --with-config-file-path=/etc \
135 --with-config-file-scan-dir=/etc/php5 \
136 --disable-short-tags \
138 --with-zlib="$(STAGING_DIR)/usr" \
139 --with-zlib-dir="$(STAGING_DIR)/usr" \
140 --with-pcre-regex="$(STAGING_DIR)/usr" \
143 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-calendar),)
144 CONFIGURE_ARGS+= --enable-calendar=shared
146 CONFIGURE_ARGS+= --disable-calendar
149 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-ctype),)
150 CONFIGURE_ARGS+= --enable-ctype=shared
152 CONFIGURE_ARGS+= --disable-ctype
155 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-curl),)
156 CONFIGURE_ARGS+= --with-curl=shared,"$(STAGING_DIR)/usr"
158 CONFIGURE_ARGS+= --without-curl
161 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-fileinfo),)
162 CONFIGURE_ARGS+= --enable-fileinfo=shared
164 CONFIGURE_ARGS+= --disable-fileinfo
167 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-gettext),)
168 CONFIGURE_ARGS+= --with-gettext=shared,"$(STAGING_DIR)/usr/lib/libintl-full"
170 CONFIGURE_ARGS+= --without-gettext
173 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-dom),)
174 CONFIGURE_ARGS+= --enable-dom=shared
176 CONFIGURE_ARGS+= --disable-dom
179 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-exif),)
180 CONFIGURE_ARGS+= --enable-exif=shared
182 CONFIGURE_ARGS+= --disable-exif
185 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-ftp),)
186 CONFIGURE_ARGS+= --enable-ftp=shared
188 CONFIGURE_ARGS+= --disable-ftp
191 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-gd),)
194 --without-freetype-dir \
195 --with-jpeg-dir="$(STAGING_DIR)/usr" \
196 --with-png-dir="$(STAGING_DIR)/usr" \
199 --enable-gd-native-ttf \
200 --disable-gd-jis-conv
202 CONFIGURE_ARGS+= --without-gd
205 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-gmp),)
206 CONFIGURE_ARGS+= --with-gmp=shared,"$(STAGING_DIR)/usr"
208 CONFIGURE_ARGS+= --without-gmp
211 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-hash),)
212 CONFIGURE_ARGS+= --enable-hash=shared
214 CONFIGURE_ARGS+= --disable-hash
217 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-iconv),)
218 CONFIGURE_ARGS+= --with-iconv=shared,"$(ICONV_PREFIX)"
220 CONFIGURE_ARGS+= --without-iconv
223 ifneq ($(CONFIG_PACKAGE_php5-mod-json),)
224 CONFIGURE_ARGS+= --enable-json=shared
226 CONFIGURE_ARGS+= --disable-json
229 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-ldap),)
231 --with-ldap=shared,"$(STAGING_DIR)/usr" \
232 --with-ldap-sasl="$(STAGING_DIR)/usr"
234 CONFIGURE_ARGS+= --without-ldap
237 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-mbstring),)
238 CONFIGURE_ARGS+= --enable-mbstring=shared --enable-mbregex
240 CONFIGURE_ARGS+= --disable-mbstring
243 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-mcrypt),)
244 CONFIGURE_ARGS+= --with-mcrypt=shared,"$(STAGING_DIR)/usr"
246 CONFIGURE_ARGS+= --without-mcrypt
249 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-mysql),)
250 CONFIGURE_ARGS+= --with-mysql=shared,"$(STAGING_DIR)/usr"
252 CONFIGURE_ARGS+= --without-mysql
255 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-mysqli),)
256 CONFIGURE_ARGS+= --with-mysqli=shared,"$(STAGING_DIR)/usr/bin/mysql_config"
258 CONFIGURE_ARGS+= --without-mysqli
261 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-openssl),)
263 --with-openssl=shared,"$(STAGING_DIR)/usr" \
265 --with-openssl-dir="$(STAGING_DIR)/usr"
267 CONFIGURE_ARGS+= --without-openssl
270 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-pcntl),)
271 CONFIGURE_ARGS+= --enable-pcntl=shared
273 CONFIGURE_ARGS+= --disable-pcntl
276 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-pdo),)
277 CONFIGURE_ARGS+= --enable-pdo=shared
278 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-pdo-mysql),)
279 CONFIGURE_ARGS+= --with-pdo-mysql=shared,"$(STAGING_DIR)/usr"
281 CONFIGURE_ARGS+= --without-pdo-mysql
283 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-pdo-pgsql),)
284 CONFIGURE_ARGS+= --with-pdo-pgsql=shared,"$(STAGING_DIR)/usr"
286 CONFIGURE_ARGS+= --without-pdo-pgsql
288 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-pdo-sqlite),)
289 CONFIGURE_ARGS+= --with-pdo-sqlite=shared,"$(STAGING_DIR)/usr"
291 CONFIGURE_ARGS+= --without-pdo-sqlite
294 CONFIGURE_ARGS+= --disable-pdo
297 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-pgsql),)
298 CONFIGURE_ARGS+= --with-pgsql=shared,"$(STAGING_DIR)/usr"
300 CONFIGURE_ARGS+= --without-pgsql
303 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-session),)
304 CONFIGURE_ARGS+= --enable-session=shared
306 CONFIGURE_ARGS+= --disable-session
309 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-shmop),)
310 CONFIGURE_ARGS+= --enable-shmop=shared
312 CONFIGURE_ARGS+= --disable-shmop
315 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-simplexml),)
316 CONFIGURE_ARGS+= --enable-simplexml=shared
318 CONFIGURE_ARGS+= --disable-simplexml
321 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-soap),)
322 CONFIGURE_ARGS+= --enable-soap=shared
324 CONFIGURE_ARGS+= --disable-soap
327 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-sockets),)
328 CONFIGURE_ARGS+= --enable-sockets=shared
330 CONFIGURE_ARGS+= --disable-sockets
333 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-sqlite),)
334 CONFIGURE_ARGS+= --with-sqlite=shared,"$(STAGING_DIR)/usr"
336 CONFIGURE_ARGS+= --without-sqlite
339 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-sqlite3),)
340 CONFIGURE_ARGS+= --with-sqlite3=shared,"$(STAGING_DIR)/usr"
342 CONFIGURE_ARGS+= --without-sqlite3
345 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-sysvmsg),)
346 CONFIGURE_ARGS+= --enable-sysvmsg=shared
348 CONFIGURE_ARGS+= --disable-sysvmsg
351 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-sysvsem),)
352 CONFIGURE_ARGS+= --enable-sysvsem=shared
354 CONFIGURE_ARGS+= --disable-sysvsem
357 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-sysvshm),)
358 CONFIGURE_ARGS+= --enable-sysvshm=shared
360 CONFIGURE_ARGS+= --disable-sysvshm
363 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-tokenizer),)
364 CONFIGURE_ARGS+= --enable-tokenizer=shared
366 CONFIGURE_ARGS+= --disable-tokenizer
369 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-xml),)
370 CONFIGURE_ARGS+= --enable-xml=shared,"$(STAGING_DIR)/usr"
371 ifneq ($(CONFIG_PHP5_LIBXML),)
372 CONFIGURE_ARGS+= --with-libxml-dir="$(STAGING_DIR)/usr/include/libxml2"
374 CONFIGURE_ARGS+= --with-libexpat-dir="$(STAGING_DIR)/usr"
377 CONFIGURE_ARGS+= --disable-xml
380 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-xmlreader),)
381 CONFIGURE_ARGS+= --enable-xmlreader=shared,"$(STAGING_DIR)/usr"
383 CONFIGURE_ARGS+= --disable-xmlreader
386 ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-xmlwriter),)
387 CONFIGURE_ARGS+= --enable-xmlwriter=shared,"$(STAGING_DIR)/usr"
389 CONFIGURE_ARGS+= --disable-xmlwriter
392 ifneq ($(CONFIG_PACKAGE_php5-mod-zip),)
393 CONFIGURE_ARGS+= --enable-zip=shared
395 CONFIGURE_ARGS+= --disable-zip
398 ifneq ($(SDK)$(CONFIG_PHP5_FILTER),)
399 CONFIGURE_ARGS+= --enable-filter
401 CONFIGURE_ARGS+= --disable-filter
404 ifneq ($(SDK)$(CONFIG_PHP5_LIBXML),)
405 CONFIGURE_ARGS+= --enable-libxml
406 CONFIGURE_ARGS+= --with-libxml-dir="$(STAGING_DIR)/usr/include/libxml2"
408 CONFIGURE_ARGS+= --disable-libxml
411 ifneq ($(CONFIG_PHP5_SYSTEMTZDATA),)
412 CONFIGURE_ARGS+= --with-system-tzdata
414 CONFIGURE_ARGS+= --without-system-tzdata
418 ac_cv_c_bigendian_php=$(if $(CONFIG_BIG_ENDIAN),yes,no) \
419 php_cv_cc_rpath="no" \
420 iconv_impl_name="gnu_libiconv" \
421 ac_cv_php_xml2_config_path="$(STAGING_DIR)/host/bin/xml2-config" \
423 define Package/php5/conffiles
427 define Package/php5/install
428 $(INSTALL_DIR) $(1)/etc
429 $(INSTALL_DATA) ./files/php.ini $(1)/etc/
432 define Package/php5-cli/install
433 $(INSTALL_DIR) $(1)/usr/bin
434 $(CP) $(PKG_BUILD_DIR)/sapi/cli/php $(1)/usr/bin/php-cli
437 define Package/php5-cgi/install
438 $(INSTALL_DIR) $(1)/usr/bin
439 $(CP) $(PKG_BUILD_DIR)/sapi/cgi/php-cgi $(1)/usr/bin/php-cgi
440 ln -sf php-cgi $(1)/usr/bin/php-fcgi
443 define Package/php5-fastcgi/install
444 $(INSTALL_DIR) $(1)/etc/config
445 $(INSTALL_DATA) ./files/php5-fastcgi.config $(1)/etc/config/php5-fastcgi
447 $(INSTALL_DIR) $(1)/etc/init.d
448 $(INSTALL_BIN) ./files/php5-fastcgi.init $(1)/etc/init.d/php5-fastcgi
452 $(call Build/Prepare/Default)
453 ( cd $(PKG_BUILD_DIR); touch configure.in; ./buildconf --force )
456 define Build/InstallDev
457 mkdir -p $(PKG_BUILD_DIR)/staging/usr/bin
458 make -C $(PKG_BUILD_DIR) install INSTALL_ROOT=$(PKG_BUILD_DIR)/staging
459 rm -f $(PKG_BUILD_DIR)/staging/usr/bin/php
460 $(CP) $(PKG_BUILD_DIR)/staging/* $(STAGING_DIR_HOST)
461 sed -i -e "s#prefix='/usr'#prefix='$(STAGING_DIR_HOST)/usr'#" $(STAGING_DIR_HOST)/usr/bin/phpize
462 sed -i -e "s#exec_prefix=\"\`eval echo /usr\`\"#exec_prefix='$(STAGING_DIR_HOST)/usr'#" $(STAGING_DIR_HOST)/usr/bin/phpize
463 sed -i -e "s#prefix=\"/usr\"#prefix=\"$(STAGING_DIR_HOST)/usr\"#" $(STAGING_DIR_HOST)/usr/bin/php-config
468 define Package/php5-mod-$(1)
469 $(call Package/php5/Default)
475 TITLE:=$(2) shared module
478 define Package/php5-mod-$(1)/install
479 $(INSTALL_DIR) $$(1)/usr/lib/php
480 $(INSTALL_BIN) $(PKG_BUILD_DIR)/modules/$(subst -,_,$(1)).so $$(1)/usr/lib/php/
481 $(INSTALL_DIR) $$(1)/etc/php5
482 echo "extension=$(subst -,_,$(1)).so" > $$(1)/etc/php5/$(subst -,_,$(1)).ini
485 $$(eval $$(call BuildPackage,php5-mod-$(1)))
489 $(eval $(call BuildPackage,php5))
490 $(eval $(call BuildPackage,php5-cli))
491 $(eval $(call BuildPackage,php5-cgi))
492 $(eval $(call BuildPackage,php5-fastcgi))
494 #$(eval $(call BuildModule,NAME,TITLE[,PKG DEPENDS]))
495 $(eval $(call BuildModule,calendar,Calendar))
496 $(eval $(call BuildModule,ctype,Ctype))
497 $(eval $(call BuildModule,curl,cURL,+PACKAGE_php5-mod-curl:libcurl))
498 $(eval $(call BuildModule,fileinfo,Fileinfo,+PACKAGE_php5-mod-fileinfo:libmagic))
499 $(eval $(call BuildModule,dom,DOM,+@PHP5_LIBXML +PACKAGE_php5-mod-dom:libxml2))
500 $(eval $(call BuildModule,exif,EXIF))
501 $(eval $(call BuildModule,ftp,FTP,+PACKAGE_php5-mod-ftp:libopenssl))
502 $(eval $(call BuildModule,gettext,Gettext,+PACKAGE_php5-mod-gettext:libintl-full))
503 $(eval $(call BuildModule,gd,GD graphics,+PACKAGE_php5-mod-gd:libjpeg +PACKAGE_php5-mod-gd:libpng))
504 $(eval $(call BuildModule,gmp,GMP,+PACKAGE_php5-mod-gmp:libgmp))
505 $(eval $(call BuildModule,hash,Hash))
506 $(eval $(call BuildModule,iconv,iConv,+PACKAGE_php5-mod-iconv:libiconv))
507 $(eval $(call BuildModule,json,JSON))
508 $(eval $(call BuildModule,ldap,LDAP,+PACKAGE_php5-mod-ldap:libopenldap +PACKAGE_php5-mod-ldap:libsasl2))
509 $(eval $(call BuildModule,mbstring,MBString))
510 $(eval $(call BuildModule,mcrypt,Mcrypt,+PACKAGE_php5-mod-mcrypt:libmcrypt +PACKAGE_php5-mod-mcrypt:libltdl))
511 $(eval $(call BuildModule,mysql,MySQL,+PACKAGE_php5-mod-mysql:libmysqlclient))
512 $(eval $(call BuildModule,mysqli,MySQL Improved Extension,+PACKAGE_php5-mod-mysqli:libmysqlclient))
513 $(eval $(call BuildModule,openssl,OpenSSL,+PACKAGE_php5-mod-openssl:libopenssl))
514 $(eval $(call BuildModule,pcntl,PCNTL))
515 $(eval $(call BuildModule,pdo,PHP Data Objects))
516 $(eval $(call BuildModule,pdo-mysql,PDO driver for MySQL,+php5-mod-pdo +PACKAGE_php5-mod-pdo-mysql:libmysqlclient))
517 $(eval $(call BuildModule,pdo-pgsql,PDO driver for PostgreSQL,+php5-mod-pdo +PACKAGE_php5-mod-pdo-pgsql:libpq))
518 $(eval $(call BuildModule,pdo-sqlite,PDO driver for SQLite 3.x,+php5-mod-pdo +PACKAGE_php5-mod-pdo-sqlite:libsqlite3 +PACKAGE_php5-mod-pdo-sqlite:libpthread +PACKAGE_php5-mod-pdo-sqlite:librt))
519 $(eval $(call BuildModule,pgsql,PostgreSQL,+PACKAGE_php5-mod-pgsql:libpq))
520 $(eval $(call BuildModule,session,Session))
521 $(eval $(call BuildModule,shmop,Shared Memory))
522 $(eval $(call BuildModule,simplexml,SimpleXML,+@PHP5_LIBXML +PACKAGE_php5-mod-simplexml:libxml2))
523 $(eval $(call BuildModule,soap,SOAP,+@PHP5_LIBXML +PACKAGE_php5-mod-soap:libxml2))
524 $(eval $(call BuildModule,sockets,Sockets))
525 $(eval $(call BuildModule,sqlite,SQLite 2.x,+PACKAGE_php5-mod-sqlite:libsqlite2))
526 $(eval $(call BuildModule,sqlite3,SQLite3,+PACKAGE_php5-mod-sqlite3:libsqlite3 +PACKAGE_php5-mod-sqlite3:libpthread))
527 $(eval $(call BuildModule,sysvmsg,System V messages))
528 $(eval $(call BuildModule,sysvsem,System V shared memory))
529 $(eval $(call BuildModule,sysvshm,System V semaphore))
530 $(eval $(call BuildModule,tokenizer,Tokenizer))
531 $(eval $(call BuildModule,xml,XML,+PHP5_LIBXML:libxml2 +!PHP5_LIBXML:libexpat))
532 $(eval $(call BuildModule,xmlreader,XMLReader,+@PHP5_LIBXML +PACKAGE_php5-mod-xmlreader:libxml2 +PACKAGE_php5-mod-xmlreader:libiconv))
533 $(eval $(call BuildModule,xmlwriter,XMLWriter,+@PHP5_LIBXML +PACKAGE_php5-mod-xmlwriter:libxml2 +PACKAGE_php5-mod-xmlwriter:libiconv))
534 $(eval $(call BuildModule,zip,ZIP,+PACKAGE_php5-mod-zip:zlib))