mirror of
https://github.com/php/php-src.git
synced 2024-12-14 12:26:19 +08:00
ef165b4422
First step when creating the `configure` script is currently using make. This is helpful when developing buildsystem to only rebuild `configure` and `main/php_config.h.in` files when one of the *.m4 or configure.ac file changes and saves the developer time a little. Realistically however, it is not needed that much considering the times of several seconds to fully rebuild the configure script and configuration header. The next step when running the `configure` script is much more time consuming so performance on buildconf level is a bit questionable and won't be noticed on today's systems. Additionally: - buildconf now removes cache and all targets and uses -f option on the first step i.e. autoconf. The autoheader does not need the -f option in this case. Closes GH-4437
138 lines
3.9 KiB
Bash
Executable File
138 lines
3.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# A wrapper around Autoconf that generates files to build PHP on *nix systems.
|
|
|
|
PHP_AUTOCONF=${PHP_AUTOCONF:-autoconf}
|
|
PHP_AUTOHEADER=${PHP_AUTOHEADER:-autoheader}
|
|
force=0
|
|
debug=0
|
|
|
|
# Go to project root.
|
|
cd $(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P)
|
|
|
|
php_extra_version=$(grep '^AC_INIT(' configure.ac)
|
|
case "$php_extra_version" in
|
|
*-dev*)
|
|
dev=1
|
|
;;
|
|
*)
|
|
dev=0
|
|
;;
|
|
esac
|
|
|
|
while test $# -gt 0; do
|
|
if test "$1" = "-h" || test "$1" = "--help"; then
|
|
cat << HELP
|
|
PHP buildconf
|
|
|
|
A wrapper around the autoconf and autoheader that generate files for building
|
|
PHP on *nix systems (configure and main/php_config.h.in). The configure script
|
|
is used to customize the PHP build based on the provided options and system. PHP
|
|
releases downloaded from PHP.net already include the configure script so
|
|
installing Autoconf and running buildconf is not needed. For the PHP sources
|
|
from the Git repository, buildconf is used for generating a new configure script
|
|
and required files.
|
|
|
|
SYNOPSIS:
|
|
buildconf [<options>]
|
|
|
|
OPTIONS:
|
|
-f, --force Regenerate configure files in PHP release packages.
|
|
--debug Display warnings emitted by Autoconf.
|
|
-h, --help Display this help.
|
|
|
|
ENVIRONMENT:
|
|
The following optional variables are supported:
|
|
|
|
PHP_AUTOCONF Overrides the path to autoconf tool.
|
|
PHP_AUTOCONF=/path/to/autoconf ./buildconf
|
|
PHP_AUTOHEADER Overrides the path to autoheader tool.
|
|
PHP_AUTOHEADER=/path/to/autoheader ./buildconf
|
|
HELP
|
|
exit 0
|
|
fi
|
|
|
|
if test "$1" = "-f" || test "$1" = "--force"; then
|
|
force=1
|
|
fi
|
|
|
|
if test "$1" = "--debug"; then
|
|
debug=1
|
|
fi
|
|
|
|
shift
|
|
done
|
|
|
|
if test "$dev" = "0" && test "$force" = "0"; then
|
|
if test -f "configure" && test -f "main/php_config.h.in"; then
|
|
echo "buildconf: The configure script is already built. All done."
|
|
echo " Run ./configure to proceed with customizing the PHP build."
|
|
exit 0
|
|
else
|
|
echo "buildconf: Configure files are missing." >&2
|
|
echo " Run ./buildconf --force to create a configure script." >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "buildconf: Checking installation"
|
|
|
|
# Get minimum required autoconf version from the configure.ac file.
|
|
min_version=$(sed -n 's/AC_PREREQ(\[\(.*\)\])/\1/p' configure.ac)
|
|
|
|
# Check if autoconf exists.
|
|
ac_version=$($PHP_AUTOCONF --version 2>/dev/null|head -n 1|sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//')
|
|
|
|
if test -z "$ac_version"; then
|
|
echo "buildconf: autoconf not found." >&2
|
|
echo " You need autoconf version $min_version or newer installed" >&2
|
|
echo " to build PHP from Git." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Check autoconf version.
|
|
set -f; IFS='.'; set -- $ac_version; set +f; IFS=' '
|
|
ac_version_num="$(expr ${1} \* 10000 + ${2} \* 100)"
|
|
set -f; IFS='.'; set -- $min_version; set +f; IFS=' '
|
|
min_version_num="$(expr ${1} \* 10000 + ${2} \* 100)"
|
|
|
|
if test "$ac_version_num" -lt "$min_version_num"; then
|
|
echo "buildconf: autoconf version $ac_version found." >&2
|
|
echo " You need autoconf version $min_version or newer installed" >&2
|
|
echo " to build PHP from Git." >&2
|
|
exit 1
|
|
else
|
|
echo "buildconf: autoconf version $ac_version (ok)"
|
|
fi
|
|
|
|
if test "$force" = "1"; then
|
|
echo "buildconf: Forcing buildconf. The configure files will be regenerated."
|
|
fi
|
|
|
|
# Clean cache and explicitly remove all targets if present. Remove also
|
|
# aclocal.m4 if present. It is automatically included by autoconf but not used
|
|
# by the PHP build system since PHP 7.4.
|
|
echo "buildconf: Cleaning cache and configure files"
|
|
rm -rf \
|
|
aclocal.m4 \
|
|
autom4te.cache \
|
|
config.cache \
|
|
configure \
|
|
main/php_config.h.in
|
|
|
|
if test "$debug" = "1"; then
|
|
autoconf_flags="-f -Wall"
|
|
autoheader_flags="-Wall"
|
|
else
|
|
autoconf_flags="-f"
|
|
autoheader_flags=""
|
|
fi
|
|
|
|
echo "buildconf: Rebuilding configure"
|
|
$PHP_AUTOCONF $autoconf_flags
|
|
|
|
echo "buildconf: Rebuilding main/php_config.h.in"
|
|
$PHP_AUTOHEADER $autoheader_flags
|
|
|
|
echo "buildconf: Run ./configure to proceed with customizing the PHP build."
|