#!/bin/bash
#

EXT=php7
TCZ=/tmp/$EXT/TCZ

sudo rm -rf /tmp/$EXT

for a in compiletc bash file squashfs-tools \
		apache2.4-dev apache2.4 apr-dev apr apr-util-dev apr-util \
		openldap-dev openldap libxml2-dev recode-dev recode net-snmp-dev net-snmp \
		libgd-dev libgd libmcrypt-dev libmcrypt curl-dev curl db-dev \
		enchant-dev mariadb-10.1-dev libwebp libwebp-dev mariadb-10.1 \
		libXpm-dev libXpm libgd-dev libgd libvpx-dev gmp-dev gmp \
		icu-dev cyrus-sasl-dev cyrus-sasl libxslt-dev libxslt \
		fontconfig-dev libXft-dev xorg-server-dev libltdl \
		postgresql-9.5 postgresql-9.5-dev perl5 unixODBC unixODBC-dev \
		tzdata
	do tce-load -i $a
done

# configure will fail if Apache httpd throws an error when trying to start
# make sure that /usr/local/etc/httpc/httpd.conf is correct

# Oracle and LDAP have name conflicts in their header files
# Compile with LDAP first, then make a second pass adding OCI
# don't bother compiling executables on first pass

# apply fixes:
# support Berkeley DB 6
# busybox expr lack of support for -- meaning no more options
# phpdbg libraries are not added passed to the linker

# patch -Np0 -i ../php-configure.patch

for a in $(grep -r -l 'DB_VERSION_MAJOR == 5')
	do sed -i 's/DB_VERSION_MAJOR == 5/DB_VERSION_MAJOR >= 5/' $a
done
sed -i 's/Berkeley DB (4|5)/Berkeley DB (4|5|6)/' ext/dba/tests/dba_db4_handlers.phpt
sed -i 's/expr -- /expr /g' configure
grep -q 'PHPDBG_EXTRA_LIBS -lreadline -lncurses' configure || \
sed -i '\#BUILD_BINARY="sapi/phpdbg/phpdbg"#i \
 PHPDBG_EXTRA_LIBS="$PHPDBG_EXTRA_LIBS -lreadline -lncurses"\
' configure

export CC="gcc -mtune=generic -Os -pipe"
export CXX="g++ -mtune=generic -Os -pipe -fno-exceptions" 
echo $PATH | grep -q mysql || export PATH=$PATH:/usr/local/mysql/bin:/usr/local/pgsql95/bin:/usr/local/oracle/client/12.1

./configure \
	--prefix=/usr/local \
	--sysconfdir=/usr/local/etc \
	--localstatedir=/var \
	--mandir=/usr/local/share/man \
	--with-config-file-path=/usr/local/etc/httpd/php7/ \
	--with-config-file-scan-dir=/usr/local/etc/httpd/php7/extensions/ \
	--enable-shared \
	--with-apxs2=/usr/local/bin/apxs \
	--enable-dmalloc=shared \
	--enable-libgcc \
	--disable-cgi \
	--disable-cli \
	--disable-phpdbg \
	--disable-fpm \
	--without-pear \
	--with-system-ciphers \
	--enable-pdo=shared \
	--disable-embed \
	--disable-inline-optimization \
	--disable-mysqlnd \
	--disable-rpath \
	--disable-static \
	--enable-bcmath=shared \
	--with-bz2=shared,/usr/local \
	--enable-calendar=shared \
	--enable-ctype=shared \
	--with-curl=shared,/usr/local \
	--enable-dba=shared \
	--with-db4=shared,/usr/local \
	--without-cdb \
	--enable-dom=shared \
	--with-enchant=shared,/usr/local \
	--enable-exif=shared \
	--enable-fileinfo=shared \
	--enable-filter \
	--with-freetype-dir=/usr/local \
	--enable-ftp=shared \
	--with-gd=shared,/usr/local \
	--enable-gd-jis-conv \
	--enable-gd-native-ttf \
	--with-gdbm=shared,/usr/local \
	--with-gettext=shared,/usr/local \
	--with-gmp=shared,/usr/local \
	--enable-hash=shared \
	--with-iconv=shared \
	--with-icu-dir=/usr/local \
	--enable-intl=shared \
	--with-jpeg-dir=/usr/local \
	--enable-json=shared \
	--with-ldap-sasl=/usr/local \
	--with-ldap=shared,/usr/local \
	--with-libxml-dir=/usr/local \
	--enable-libxml \
	--enable-mbstring=shared \
	--with-mcrypt=shared,/usr/local \
	--with-mhash=shared,/usr/local \
	--with-mysqli=shared,/usr/local/mysql/bin/mysql_config \
	--with-pdo-mysql=shared,/usr/local/mysql \
	--enable-opcache=shared \
	--disable-opcache-file \
	--with-openssl-dir=/usr/local \
	--with-openssl=shared,/usr/local \
	--enable-pcntl=shared \
	--with-pcre-regex=/usr/local \
	--with-unixODBC=shared,/usr/local \
	--with-pdo-odbc=shared,unixODBC \
	--with-pgsql=shared,/usr/local/pgsql95 \
	--with-pdo-pgsql=shared,/usr/local/pgsql95 \
	--enable-phar=shared \
	--enable-phpdbg-webhelper=shared \
	--with-png-dir=/usr/local \
	--enable-posix=shared \
	--with-readline=shared,/usr/local \
	--with-recode=shared,/usr/local \
	--enable-session=shared \
	--enable-shmop=shared \
	--enable-simplexml=shared \
	--with-snmp=shared,/usr/local \
	--enable-soap=shared \
	--enable-sockets=shared \
	--with-sqlite3=shared,/usr/local \
	--with-pdo-sqlite=shared,/usr/local \
	--enable-sysvmsg=shared \
	--enable-sysvsem=shared \
	--enable-sysvshm=shared \
	--enable-tokenizer=shared \
	--with-tsrm-pthreads \
	--enable-wddx=shared \
	--with-webp-dir=/usr/local \
	--enable-xml \
	--enable-xmlreader=shared \
	--with-xmlrpc=shared \
	--enable-xmlwriter=shared \
	--with-xpm-dir=/usr/local \
	--with-xsl=shared,/usr/local \
	--enable-zend-signals \
	--enable-zip=shared \
	--with-zlib-dir=/usr \
	--with-zlib=shared,/usr \
	|| exit

make || exit

./configure \
	--prefix=/usr/local \
	--sysconfdir=/usr/local/etc \
	--localstatedir=/var \
	--mandir=/usr/local/share/man \
	--with-config-file-path=/usr/local/etc/httpd/php7/ \
	--with-config-file-scan-dir=/usr/local/etc/httpd/php7/extensions/ \
	--enable-shared \
	--with-apxs2=/usr/local/bin/apxs \
	--enable-dmalloc=shared \
	--enable-libgcc \
	--enable-cgi \
	--enable-cli \
	--enable-phpdbg \
	--enable-fpm \
	--with-pear=shared,/usr/local/lib/php/pear \
	--with-system-ciphers \
	--enable-pdo=shared \
	--disable-embed \
	--disable-inline-optimization \
	--disable-mysqlnd \
	--disable-rpath \
	--disable-static \
	--enable-bcmath=shared \
	--with-bz2=shared,/usr/local \
	--enable-calendar=shared \
	--enable-ctype=shared \
	--with-curl=shared,/usr/local \
	--enable-dba=shared \
	--with-db4=shared,/usr/local \
	--without-cdb \
	--enable-dom=shared \
	--with-enchant=shared,/usr/local \
	--enable-exif=shared \
	--enable-fileinfo=shared \
	--enable-filter \
	--with-freetype-dir=/usr/local \
	--enable-ftp=shared \
	--with-gd=shared,/usr/local \
	--enable-gd-jis-conv \
	--enable-gd-native-ttf \
	--with-gdbm=shared,/usr/local \
	--with-gettext=shared,/usr/local \
	--with-gmp=shared,/usr/local \
	--enable-hash=shared \
	--with-iconv=shared \
	--with-icu-dir=/usr/local \
	--enable-intl=shared \
	--with-jpeg-dir=/usr/local \
	--enable-json=shared \
	--with-ldap-sasl=/usr/local \
	--with-ldap=shared,/usr/local \
	--with-libxml-dir=/usr/local \
	--enable-libxml \
	--enable-mbstring=shared \
	--with-mcrypt=shared,/usr/local \
	--with-mhash=shared,/usr/local \
	--with-mysqli=shared,/usr/local/mysql/bin/mysql_config \
	--with-pdo-mysql=shared,/usr/local/mysql \
	--enable-opcache=shared \
	--disable-opcache-file \
	--with-openssl-dir=/usr/local \
	--with-openssl=shared,/usr/local \
	--enable-pcntl=shared \
	--with-pcre-dir=/usr/local \
	--with-pcre-regex=/usr/local \
	--with-oci8=shared,instantclient,/usr/local/oracle/client/12.1 \
	--with-pdo-oci=shared,/usr/local/oracle/client/12.1 \
	--with-unixODBC=shared,/usr/local \
	--with-pdo-odbc=shared,unixODBC \
	--with-pgsql=shared,/usr/local/pgsql95 \
	--with-pdo-pgsql=shared,/usr/local/pgsql95 \
	--enable-phar=shared \
	--enable-phpdbg-webhelper=shared \
	--with-png-dir=/usr/local \
	--enable-posix=shared \
	--with-pspell=shared,/usr/local \
	--with-readline=shared,/usr/local \
	--with-recode=shared,/usr/local \
	--enable-session=shared \
	--enable-shmop=shared \
	--enable-simplexml=shared \
	--with-snmp=shared,/usr/local \
	--enable-soap=shared \
	--enable-sockets=shared \
	--with-sqlite3=shared,/usr/local \
	--with-pdo-sqlite=shared,/usr/local \
	--enable-sysvmsg=shared \
	--enable-sysvsem=shared \
	--enable-sysvshm=shared \
	--enable-tokenizer=shared \
	--with-tsrm-pthreads \
	--enable-wddx=shared \
	--with-webp-dir=/usr/local \
	--enable-xml \
	--enable-xmlreader=shared \
	--with-xmlrpc=shared \
	--enable-xmlwriter=shared \
	--with-xpm-dir=/usr/local \
	--with-xsl=shared,/usr/local \
	--enable-zend-signals \
	--enable-zip=shared \
	--with-zlib-dir=/usr \
	--with-zlib=shared,/usr \
	|| exit

make || exit

# make install will complain and die if a copy of the current httpd.conf
# file isn't in the install tree in the right place
mkdir -p $TCZ-dev/usr/local/etc/httpd
cp /usr/local/etc/httpd/httpd.conf $TCZ-dev/usr/local/etc/httpd

make install INSTALL_ROOT=$TCZ-dev
for a in $(find $TCZ-dev -type f); do file -b $a | grep -q '^ELF .*not stripped$' && strip $a; done
rm -rf $TCZ-dev/var
rm -rf $TCZ-dev/.[a-z]*
rm $TCZ-dev/usr/local/etc/httpd/httpd.conf.bak

mkdir -p $TCZ-cli/usr/local/bin
mv $TCZ-dev/usr/local/bin/php $TCZ-cli/usr/local/bin

mkdir -p $TCZ-cgi/usr/local/bin
mv $TCZ-dev/usr/local/bin/php-cgi $TCZ-cgi/usr/local/bin

mkdir -p $TCZ-fpm/usr/local/etc
mv $TCZ-dev/usr/local/etc/php-fpm* $TCZ-fpm/usr/local/etc
mv $TCZ-dev/usr/local/php $TCZ-fpm/usr/local
mv $TCZ-dev/usr/local/sbin $TCZ-fpm/usr/local

mkdir -p $TCZ-mod/usr/local
mv $TCZ-dev/usr/local/etc $TCZ-mod/usr/local
mkdir -p $TCZ-mod/usr/local/etc/httpd/php7/extensions
cp ~/php.ini-sample $TCZ-mod/usr/local/etc/httpd/php7
mkdir -p $TCZ-mod/usr/local/etc/httpd/original/conf.d
cp ~/mod_php7.conf $TCZ-mod/usr/local/etc/httpd/original/conf.d
mv $TCZ-dev/usr/local/apache2 $TCZ-mod/usr/local
mv $TCZ-mod/usr/local/apache2/modules/libphp7.so $TCZ-mod/usr/local/apache2/modules/mod_php7.so

mkdir -p $TCZ-ext/usr/local/lib/php
mv $TCZ-dev/usr/local/lib/php/extensions $TCZ-ext/usr/local/lib/php

sudo chown -R root.root $TCZ*

mksquashfs $TCZ-cli /tmp/$EXT/$EXT-cli.tcz -noappend
mksquashfs $TCZ-cgi /tmp/$EXT/$EXT-cgi.tcz -noappend
mksquashfs $TCZ-fpm /tmp/$EXT/$EXT-fpm.tcz -noappend
mksquashfs $TCZ-mod /tmp/$EXT/$EXT-mod.tcz -noappend
mksquashfs $TCZ-ext /tmp/$EXT/$EXT-ext.tcz -noappend
mksquashfs $TCZ-dev /tmp/$EXT/$EXT-dev.tcz -noappend

