# Template file for 'php'
pkgname=php
version=7.4.14
revision=1
hostmakedepends="bison pkg-config apache-devel"
makedepends="apache-devel enchant-devel freetds-devel freetype-devel gdbm-devel
 gmp-devel libcurl-devel libjpeg-turbo-devel libmysqlclient-devel
 libsodium-devel libtidy5-devel libxslt-devel libzip-devel net-snmp-devel
 postgresql-libs-devel readline-devel sqlite-devel unixodbc-devel pcre2-devel
 libffi-devel oniguruma-devel gd-devel"
short_desc="HTML-embedded scripting language"
maintainer="Steve Prybylski <sa.prybylx@gmail.com>"
license="PHP-3.01"
homepage="https://www.php.net"
distfiles="http://www.php.net/distributions/php-${version}.tar.xz"
checksum=f9f3c37969fcd9006c1dbb1dd76ab53f28c698a1646fa2dde8547c3f45e02886

conf_files="/etc/php/php.ini"

lib32disabled=yes
replaces="php-mcrypt<7.2.0"

if [ -n "$CROSS_BUILD" ]; then
	# php-pear needs php to build
	hostmakedepends+=" php"
	CFLAGS+=" -DHAVE_LIBDL -DHAVE_DLOPEN -DHAVE_DLSYM"
fi

do_build() {
	local _phpconfig="--srcdir=.. \
		--config-cache \
		--prefix=/usr \
		--sbindir=/usr/bin \
		--sysconfdir=/etc/php \
		--localstatedir=/var \
		--with-layout=GNU \
		--with-config-file-path=/etc/php \
		--with-config-file-scan-dir=/etc/php/conf.d \
		--disable-rpath \
		--mandir=/usr/share/man \
		--with-pear=/usr/share/pear \
		"

	local _phpextensions="--enable-bcmath=shared \
		--enable-calendar=shared \
		--enable-exif=shared \
		--enable-ftp=shared \
		--enable-intl=shared \
		--enable-mbstring \
		--enable-opcache \
		--enable-pcntl \
		--enable-phar=shared \
		--enable-posix=shared \
		--enable-shmop=shared \
		--enable-soap=shared \
		--enable-sockets=shared \
		--enable-sysvmsg=shared \
		--enable-sysvsem=shared \
		--enable-sysvshm=shared \
		--enable-mysqlnd \
		--enable-gd=shared \
		--with-external-gd \
		--with-zip=shared \
		--with-ffi=shared \
		--with-bz2=shared,$XBPS_CROSS_BASE/usr/ \
		--with-curl=shared \
		--with-db4=$XBPS_CROSS_BASE/usr \
		--with-enchant=shared,$XBPS_CROSS_BASE/usr \
		--with-freetype-dir=$XBPS_CROSS_BASE/usr \
		--with-gdbm=$XBPS_CROSS_BASE/usr \
		--with-gettext=shared \
		--with-gmp=shared \
		--with-iconv=shared \
		--with-icu-dir=$XBPS_CROSS_BASE/usr \
		--with-jpeg-dir=$XBPS_CROSS_BASE/usr \
		--with-ldap=shared,$XBPS_CROSS_BASE/usr \
		--with-ldap-sasl \
		--with-libzip \
		--with-sodium=shared \
		--with-mhash \
		--with-mysql-sock=/run/mysqld/mysqld.sock \
		--with-mysqli=shared,mysqlnd \
		--with-openssl=shared \
		--with-pcre-regex=$XBPS_CROSS_BASE/usr \
		--with-pdo-mysql=shared,mysqlnd \
		--with-pdo-odbc=shared,unixODBC,$XBPS_CROSS_BASE/usr \
		--with-pdo-pgsql=shared,$XBPS_CROSS_BASE/usr \
		--with-pdo-sqlite=shared,$XBPS_CROSS_BASE/usr \
		--with-pgsql=shared,$XBPS_CROSS_BASE/usr \
		--with-png-dir=$XBPS_CROSS_BASE/usr \
		--with-readline=$XBPS_CROSS_BASE/usr \
		--with-snmp=shared,$XBPS_CROSS_BASE/usr \
		--with-sqlite3=shared,$XBPS_CROSS_BASE/usr \
		--with-unixODBC=shared,$XBPS_CROSS_BASE/usr \
		--with-xsl=shared,$XBPS_CROSS_BASE/usr \
		--with-tidy=shared,$XBPS_CROSS_BASE/usr \
		--with-zlib \
		${configure_args} \
		"
	if [ -n "$CROSS_BUILD" ]; then
		local _make_env="PHAR_PHP=/usr/bin/php PHAR_PHP_MODULES=/usr/lib/php/modules"
	fi

	EXTENSION_DIR=/usr/lib/php/modules
	export EXTENSION_DIR
	PEAR_INSTALLDIR=/usr/share/pear
	export PEAR_INSTALLDIR
	EXTRA_LIBS="-ldl"
	export EXTRA_LIBS

	# cgi,cli,embed,fcgi,fpm
	mkdir -p build
	cd build
	ln -s ${wrksrc}/configure
	./configure ${_phpconfig} \
		--host=${XBPS_CROSS_TRIPLET} \
		--enable-cgi \
		--enable-fpm \
		--with-fpm-user=http \
		--with-fpm-group=http \
		--enable-embed=shared \
		${_phpextensions}
	make ${makejobs} ${_make_env}

	# apache
	# reuse the previous run; this will save us a lot of time
	cp -a ${wrksrc}/build ${wrksrc}/build-apache
	cd ${wrksrc}/build-apache
	./configure ${_phpconfig} \
		--host=${XBPS_CROSS_TRIPLET} \
		--with-apxs2 \
		${_phpextensions}
	make ${makejobs} ${_make_env}
}

do_install() {
	cd ${wrksrc}/build
	local _env="INSTALL_ROOT=${DESTDIR}"
	if [ -n "$CROSS_BUILD" ]; then
		_env+=" PHAR_PHP=/usr/bin/php"
	fi
	make ${_env} install-{modules,cli,build,headers,programs,pharcmd}

	# install php.ini
	vinstall ${wrksrc}/php.ini-production 644 etc/php php.ini
	# remove static modules
	rm -f ${DESTDIR}/usr/lib/php/modules/*.a
}

php-devel_package() {
	short_desc+=" - development files"
	pkg_install() {
		vmove usr/include
		vmove usr/lib/php/build
		vmove usr/bin/php-config
		vmove usr/bin/phpize
		vmove usr/share/man/man1/phpize.1
		vmove usr/share/man/man1/php-config.1
	}
}

php-phpdbg_package() {
	short_desc+=" - interactive debugger"
	depends="php-${version}_${revision}"
	pkg_install() {
		cd ${wrksrc}/build
		make INSTALL_ROOT=${PKGDESTDIR} install-phpdbg
	}
}

php-cgi_package() {
	short_desc+=' - CGI and FCGI SAPI'
	depends="php-${version}_${revision}"
	pkg_install() {
		cd ${wrksrc}/build
		make INSTALL_ROOT=${PKGDESTDIR} install-cgi
	}
}

php-apache_package() {
	short_desc+=' - Apache SAPI'
	depends="php-${version}_${revision}"
	conf_files="/etc/apache/extra/php7_module.conf"
	pkg_install() {
		vinstall ${wrksrc}/build-apache/libs/libphp7.so 755 usr/libexec/httpd/modules
		vinstall ${FILESDIR}/apache.conf 644 etc/apache/extra php7_module.conf
	}
}

php-fpm_package() {
	short_desc+=' - FastCGI Process Manager'
	depends="php-${version}_${revision}"
	conf_files="/etc/php/php-fpm.conf /etc/php/php-fpm.d/*"
	pkg_install() {
		cd ${wrksrc}/build
		make INSTALL_ROOT=${PKGDESTDIR} install-fpm
		vsv php-fpm
	}
}

php-embed_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - Embed SAPI'
	pkg_install() {
		cd ${wrksrc}/build
		make INSTALL_ROOT=${PKGDESTDIR} PHP_SAPI=embed install-sapi
	}
}

php-pear_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - PHP Extension and Application Repository'
	conf_files="/etc/php/pear.conf"
	pkg_install() {
		cd ${wrksrc}/build
		local _env="INSTALL_ROOT=${PKGDESTDIR}"
		if [ -n "$CROSS_BUILD" ]; then
			_env+=" PEAR_PHP=/usr/bin/php"
		fi
		make install-pear ${_env}
		rm -rf ${PKGDESTDIR}/.{channels,depdb,depdblock,filemap,lock,registry}
		rm -rf ${PKGDESTDIR}/usr/share/pear/.{channels,depdb,depdblock,filemap,lock,registry}
	}
}

php-enchant_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - enchant module'
	pkg_install() {
		vmove usr/lib/php/modules/enchant.so
	}
}

php-gd_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - gd module'
	pkg_install() {
		vmove usr/lib/php/modules/gd.so
	}
}

php-intl_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - Internationalization module'
	pkg_install() {
		vmove usr/lib/php/modules/intl.so
	}
}

php-ldap_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - LDAP module'
	pkg_install() {
		vmove usr/lib/php/modules/ldap.so
	}
}

php-mysql_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - MySQL modules'
	pkg_install() {
		vmove "usr/lib/php/modules/*mysql*.so"
	}
}

php-odbc_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - ODBC modules'
	pkg_install() {
		vmove "usr/lib/php/modules/*odbc.so"
	}
}

php-pgsql_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - PostgreSQL modules'
	pkg_install() {
		vmove "usr/lib/php/modules/*pgsql.so"
	}
}

php-snmp_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - snmp module'
	pkg_install() {
		vmove usr/lib/php/modules/snmp.so
	}
}

php-sqlite_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - sqlite module'
	pkg_install() {
		vmove "usr/lib/php/modules/*sqlite*.so"
	}
}

php-tidy_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - tidy HTML module'
	pkg_install() {
		vmove "usr/lib/php/modules/*tidy*.so"
	}
}

php-xsl_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - XSL module'
	pkg_install() {
		vmove usr/lib/php/modules/xsl.so
	}
}

php-sodium_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - sodium module'
	pkg_install() {
		vmove usr/lib/php/modules/sodium.so
	}
}

php-ffi_package() {
	lib32disabled=yes
	depends="php-${version}_${revision}"
	short_desc+=' - FFI module'
	pkg_install() {
		vmove usr/lib/php/modules/ffi.so
	}
}
