mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
c79eb107a0
The buildmk.stamp file has been created by the *nix build checking step to run the check step only once. Instead of poluting the project root directory, the stamp file can be also omitted. Performance difference is very minimal to not justify having the stamp check at all today anymore. This patch integrates the buildcheck.sh to buildconf script directly.
137 lines
3.9 KiB
Bash
Executable File
137 lines
3.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# A wrapper around Autoconf that generates files to build PHP on *nix systems.
|
|
|
|
MAKE=${MAKE:-make}
|
|
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 Clean cache and overwrite configure files.
|
|
--debug Display warnings emitted by Autoconf.
|
|
-h, --help Display this help.
|
|
|
|
ENVIRONMENT:
|
|
The following optional variables are supported:
|
|
|
|
MAKE Overrides the path to make tool.
|
|
MAKE=/path/to/make ./buildconf
|
|
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" -a "$force" = "0"; then
|
|
if test -f "configure"; then
|
|
echo "The configure script has already been built for you. All done."
|
|
echo "Run ./configure to proceed with customizing the PHP build."
|
|
exit 0
|
|
else
|
|
echo "Configure script is missing." >&2
|
|
echo "Run ./buildconf --force to create a configure script." >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if test "$force" = "1"; then
|
|
echo "buildconf: Forcing buildconf"
|
|
echo "buildconf: Removing configure caches and files"
|
|
rm -rf autom4te.cache config.cache configure
|
|
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
|
|
|
|
# Check if make exists.
|
|
if ! test -x "$(command -v $MAKE)"; then
|
|
echo "buildconf: make not found." >&2
|
|
echo " You need to have make installed to build PHP." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "buildconf: Building configure files"
|
|
|
|
if test "$debug" = "1"; then
|
|
autoconf_flags="-f -Wall"
|
|
else
|
|
autoconf_flags="-f"
|
|
fi
|
|
|
|
$MAKE -s -f build/build.mk \
|
|
PHP_AUTOCONF="$PHP_AUTOCONF" \
|
|
PHP_AUTOHEADER="$PHP_AUTOHEADER" \
|
|
PHP_AUTOCONF_FLAGS="$autoconf_flags" \
|
|
PHP_M4_FILES="$(echo TSRM/*.m4 Zend/Zend.m4 build/*.m4 ext/*/config*.m4 sapi/*/config*.m4)"
|