123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- #!/bin/sh
- # Here are 3 steps in configuration of extensions
- # before_configure
- # in_configure
- # after_configure
- self_dir=$(cd "$(dirname "$0")";pwd)
- php_dir=$(find $self_dir/source -name "php-*" -type d | tail -n1)
- test -f "$self_dir/extensions_install.txt" && EXT_LIST_FILE="$self_dir/extensions_install.txt" || EXT_LIST_FILE="$self_dir/extensions.txt"
- function do_copy_extension() {
- ext_dir=$(find $self_dir/source -name "*$1-*" -type d | tail -n1)
- mv $ext_dir $php_dir/ext/$1
- if [ $? != 0 ]; then
- echo "Compile error! ext: $1, ext_dir=$ext_dir"
- exit 1
- fi
- }
- function check_before_configure() {
- list=$(cat "$EXT_LIST_FILE" | grep -v "^#" | grep -v "^$" | grep -v "^\^")
- xml_sign="no"
- for loop in $list
- do
- case $loop in
- bcmath) ;;
- calendar) ;;
- ctype) ;;
- exif) ;;
- filter) ;;
- fileinfo) ;;
- gd) ;;
- hash) ;;
- iconv) ;;
- json) ;;
- mbstring) ;;
- mysqlnd) ;;
- openssl) ;;
- pcntl) ;;
- pdo) ;;
- pdo_mysql) ;;
- pdo_sqlite) ;;
- phar) ;;
- posix) ;;
- protobuf)
- do_copy_extension protobuf
- echo '#ifndef PHP_PROTOBUF_H' >> $php_dir/ext/protobuf/php_protobuf.h && \
- echo '# define PHP_PROTOBUF_H' >> $php_dir/ext/protobuf/php_protobuf.h && \
- echo '#ifdef HAVE_CONFIG_H' >> $php_dir/ext/protobuf/php_protobuf.h && \
- echo '# include "config.h"' >> $php_dir/ext/protobuf/php_protobuf.h && \
- echo '#endif' >> $php_dir/ext/protobuf/php_protobuf.h && \
- echo 'extern zend_module_entry protobuf_module_entry;' >> $php_dir/ext/protobuf/php_protobuf.h && \
- echo '# define phpext_protobuf_ptr &protobuf_module_entry' >> $php_dir/ext/protobuf/php_protobuf.h && \
- echo '#endif' >> $php_dir/ext/protobuf/php_protobuf.h
- ;;
- readline)
- if [ ! -d "/nom" ]; then
- mkdir /nom
- fi
- mv /usr/lib/libreadline.so* /nom/ && \
- mv /usr/lib/libncurses*.so* /nom
- ;;
- shmop) ;;
- sockets) ;;
- sqlite3) ;;
- tokenizer) ;;
- zlib) ;;
- zip) ;;
- curl) cat "$self_dir/ac_override_1" "$php_dir/ext/curl/config.m4" "$self_dir/ac_override_2" > /tmp/aa && mv /tmp/aa "$php_dir/ext/curl/config.m4" ;;
- dom|xml|libxml|xmlreader|xmlwriter|simplexml|soap) ;;
- inotify) do_copy_extension inotify ;;
- redis) do_copy_extension redis ;;
- swoole) do_copy_extension swoole ;;
- mongodb) do_copy_extension mongodb ;;
- event) do_copy_extension event ;;
- esac
- done
- case $1 in
- 8.*)
- mv $self_dir/source/phpmicro $php_dir/sapi/micro && \
- sed -ie 's/#include "php.h"/#include "php.h"\n#define PHP_MICRO_FAKE_CLI 1/g' $php_dir/sapi/micro/php_micro.c
- ;;
- esac
- }
- function check_in_configure() {
- php_configure=""
- list=$(cat "$EXT_LIST_FILE" | sed 's/#.*//g' | sed 's/\^.*//g' | sed -e 's/[ ]*$//g' | grep -v "^\s*$")
- for loop in $list
- do
- case $loop in
- bcmath) php_configure="$php_configure --enable-bcmath" ;;
- calendar) php_configure="$php_configure --enable-calendar" ;;
- ctype) php_configure="$php_configure --enable-ctype" ;;
- curl) php_configure="$php_configure --with-curl" ;;
- dom) php_configure="$php_configure --enable-dom" ;;
- exif) php_configure="$php_configure --enable-exif" ;;
- event) php_configure="$php_configure --with-event-libevent-dir=/usr --with-event-core --with-event-extra --with-event-openssl" ;;
- filter) php_configure="$php_configure --enable-filter" ;;
- fileinfo) php_configure="$php_configure --enable-fileinfo" ;;
- gd)
- case $1 in
- 7.3.*|7.2.*) php_configure="$php_configure --with-gd" ;;
- 7.4.*|8.*) php_configure="$php_configure --enable-gd" ;;
- esac
- ;;
- hash)
- case $1 in
- 7.3.*|7.2.*) php_configure="$php_configure --enable-hash" ;;
- esac
- ;;
- iconv) php_configure="$php_configure --with-iconv=/usr" ;;
- inotify) php_configure="$php_configure --enable-inotify" ;;
- json)
- case $1 in
- 7.*) php_configure="$php_configure --enable-json" ;;
- esac
- ;;
- libxml)
- case $1 in
- 7.3.*|7.2.*) php_configure="$php_configure --enable-libxml" ;;
- 7.4.*|8.*) php_configure="$php_configure --with-libxml" ;;
- esac
- ;;
- mbstring) php_configure="$php_configure --enable-mbstring" ;;
- mongodb) php_configure="$php_configure --enable-mongodb" ;;
- mysqlnd) php_configure="$php_configure --enable-mysqlnd" ;;
- openssl) php_configure="$php_configure --with-openssl --with-openssl-dir=/usr" ;;
- pcntl) php_configure="$php_configure --enable-pcntl" ;;
- pdo) php_configure="$php_configure --enable-pdo" ;;
- pdo_mysql) php_configure="$php_configure --with-pdo-mysql=mysqlnd" ;;
- phar) php_configure="$php_configure --enable-phar" ;;
- posix) php_configure="$php_configure --enable-posix" ;;
- protobuf) php_configure="$php_configure --enable-protobuf" ;;
- readline) php_configure="$php_configure --with-readline" ;;
- redis) php_configure="$php_configure --enable-redis --disable-redis-session" ;;
- shmop) php_configure="$php_configure --enable-shmop" ;;
- simplexml) php_configure="$php_configure --enable-simplexml" ;;
- sockets) php_configure="$php_configure --enable-sockets" ;;
- soap) php_configure="$php_configure --enable-soap" ;;
- sqlite3) php_configure="$php_configure --with-sqlite3" ;;
- pdo_sqlite) php_configure="$php_configure --with-pdo-sqlite" ;;
-
- swoole)
- php_configure="$php_configure --enable-swoole"
- have_openssl=$(echo $list | grep openssl)
- if [ "$have_openssl" != "" ]; then
- php_configure="$php_configure --enable-openssl --with-openssl --with-openssl-dir=/usr"
- fi
- have_hash=$(echo $list | grep hash)
- if [ "$have_hash" = "" ]; then
- case $1 in
- 7.3.*|7.2.*) php_configure="$php_configure --enable-hash" ;;
- esac
- fi
- ;;
- tokenizer) php_configure="$php_configure --enable-tokenizer" ;;
- xml) php_configure="$php_configure --enable-xml" ;;
- xmlreader) php_configure="$php_configure --enable-xmlreader" ;;
- xmlwriter) php_configure="$php_configure --enable-xmlwriter" ;;
- zlib) php_configure="$php_configure --with-zlib" ;;
- zip) php_configure="$php_configure --with-zip" ;;
- *)
- echo "Unsupported extension '$loop' !" >&2
- exit 1
- ;;
- esac
- done
- case $1 in
- 8.*) php_configure="$php_configure --with-ffi --enable-micro=all-static" ;;
- esac
- echo $php_configure
- }
- function check_after_configure() {
- list=$(cat "$EXT_LIST_FILE" | grep -v "^#" | grep -v "^$")
- for loop in $list
- do
- case $loop in
- swoole)
- sed -ie 's/swoole_clock_gettime(CLOCK_REALTIME/clock_gettime(CLOCK_REALTIME/g' "$php_dir/ext/swoole/include/swoole.h"
- sed -ie 's/strcmp("cli", sapi_module.name) == 0/strcmp("cli", sapi_module.name) == 0 || strcmp("micro", sapi_module.name) == 0/g' "$php_dir/ext/swoole/ext-src/php_swoole.cc"
- ;;
- esac
- done
- case $1 in
- 8.*) sed -ie 's/$(EXTRA_LIBS:-lresolv=-Wl,-Bstatic,-lresolv,-Bdynamic)/$(EXTRA_LIBS)/g' "$php_dir/Makefile" ;;
- esac
- }
- function finish_compile() {
- if [ -d "/nom" ]; then
- mv /nom/* /usr/lib/ || echo "Empty directory"
- rm -rf /nom/
- fi
- }
- $1 $2
|