mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
The libtool 1.5.26 is bundled with PHP since the very early days of the
Autotools build system to ease the building process and avoid additional
dependency on the system Libtool. This updates the bundled libtool to
2.5.4 version.
Fixes and implementations:
- Fixed race conditions when building PHP in parallel ("cannot create
.libs" warnings).
- Implements request https://bugs.php.net/70374 (Update libtool.m4)
- Fixes libtool eating -flto flags.
- Fixes GH-17310 (configure producing errors on macOS)
- Fixes GH-15946 (./configure error when building with NixOS)
Changes:
- Add a script to update autotools files.
- libtool is spread across multiple files; phpize is updated to handle
this.
- Remove outdated hacks, i.e. for `ar`.
- Remove documentation references to external libtool, as we vendor it.
- `--with-pic` is now `--enable-pic`. Error out on the old flag.
- On macOS linker now uses -undefined dynamic_lookup flag for shared
extensions and shared embed SAPI (libphp) instead of older
'-undefined suppress -flat_namespace' combination.
Co-authored-by: Peter Kokot <peterkokot@gmail.com>
215 lines
4.8 KiB
Bash
215 lines
4.8 KiB
Bash
#!/bin/sh
|
|
|
|
# Variable declaration
|
|
prefix='@prefix@'
|
|
datarootdir='@datarootdir@'
|
|
exec_prefix="`eval echo @exec_prefix@`"
|
|
phpdir="`eval echo @libdir@`/build"
|
|
includedir="`eval echo @includedir@`/php"
|
|
builddir="`pwd`"
|
|
SED="@SED@"
|
|
|
|
FILES_BUILD="php.m4 shtool libtool.m4 ax_check_compile_flag.m4 ax_gcc_func_attribute.m4 php_cxx_compile_stdcxx.m4 pkg.m4 \
|
|
config.guess config.sub ltmain.sh lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 Makefile.global gen_stub.php"
|
|
FILES="run-tests*.php"
|
|
CLEAN_FILES="$FILES *.o *.lo *.la .libs/ build/ modules/ \
|
|
config.nice configure configure.ac \
|
|
config.h config.h.in conftest* libtool config.cache autom4te.cache/ \
|
|
config.log config.status Makefile Makefile.fragments Makefile.objects confdefs.h \
|
|
run-tests*.php tests/*.diff tests/*.exp tests/*.log tests/*.out tests/*.php"
|
|
|
|
# function declaration
|
|
phpize_usage()
|
|
{
|
|
echo "Usage: $0 [--clean|--help|--version|-v]"
|
|
}
|
|
|
|
phpize_no_configm4()
|
|
{
|
|
if test $@ -eq 1; then
|
|
clean=" --clean"
|
|
fi
|
|
|
|
echo "Cannot find config.m4. "
|
|
echo "Make sure that you run '$0$clean' in the top level source directory of the module"
|
|
echo
|
|
}
|
|
|
|
phpize_clean()
|
|
{
|
|
echo "Cleaning.."
|
|
for i in $CLEAN_FILES; do
|
|
if test -f "$i"; then
|
|
rm -f $i
|
|
elif test -d "$i"; then
|
|
rm -rf $i
|
|
fi
|
|
done
|
|
}
|
|
|
|
phpize_check_configm4()
|
|
{
|
|
if test ! -r config.m4; then
|
|
phpize_no_configm4 $@
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
phpize_get_api_numbers()
|
|
{
|
|
# extracting API NOs:
|
|
PHP_MINOR_VERSION=`grep '#define PHP_MINOR_VERSION' $includedir/main/php_version.h|$SED 's/#define PHP_MINOR_VERSION //'`
|
|
PHP_MAJOR_VERSION=`grep '#define PHP_MAJOR_VERSION' $includedir/main/php_version.h|$SED 's/#define PHP_MAJOR_VERSION//'`
|
|
PHP_API_VERSION=`grep '#define PHP_API_VERSION' $includedir/main/php.h|$SED 's/#define PHP_API_VERSION//'`
|
|
ZEND_MODULE_API_NO=`grep '#define ZEND_MODULE_API_NO' $includedir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO//'`
|
|
ZEND_EXTENSION_API_NO=`grep '#define ZEND_EXTENSION_API_NO' $includedir/Zend/zend_extensions.h|$SED 's/#define ZEND_EXTENSION_API_NO//'`
|
|
}
|
|
|
|
phpize_print_api_numbers()
|
|
{
|
|
phpize_get_api_numbers
|
|
echo "Configuring for:"
|
|
echo "PHP Version: ${PHP_MAJOR_VERSION}.${PHP_MINOR_VERSION}"
|
|
echo "PHP Api Version: "$PHP_API_VERSION
|
|
echo "Zend Module Api No: "$ZEND_MODULE_API_NO
|
|
echo "Zend Extension Api No: "$ZEND_EXTENSION_API_NO
|
|
}
|
|
|
|
phpize_check_build_files()
|
|
{
|
|
if test ! -d "$phpdir"; then
|
|
cat <<EOF
|
|
Cannot find build files at '$phpdir'. Please check your PHP installation.
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
case "$phpdir" in
|
|
*\ * | *\ *)
|
|
cat <<EOF
|
|
Invalid source path '$phpdir'. Whitespace is not allowed in source path.
|
|
|
|
EOF
|
|
exit 1;;
|
|
esac
|
|
|
|
case "$builddir" in
|
|
*\ * | *\ *)
|
|
cat <<EOF
|
|
Invalid build path '$builddir'. Whitespace is not allowed in build path.
|
|
|
|
EOF
|
|
exit 1;;
|
|
esac
|
|
}
|
|
|
|
phpize_check_shtool()
|
|
{
|
|
test -x "$builddir/build/shtool" || chmod +x "$builddir/build/shtool"
|
|
|
|
if test ! -x "$builddir/build/shtool"; then
|
|
cat <<EOF
|
|
shtool at '$builddir/build/shtool' does not exist or is not executable.
|
|
Make sure that the file exists and is executable and then rerun this script.
|
|
|
|
EOF
|
|
exit 1
|
|
else
|
|
php_shtool=$builddir/build/shtool
|
|
fi
|
|
}
|
|
|
|
phpize_check_autotools()
|
|
{
|
|
test -z "$PHP_AUTOCONF" && PHP_AUTOCONF=autoconf
|
|
test -z "$PHP_AUTOHEADER" && PHP_AUTOHEADER=autoheader
|
|
|
|
if test ! -x "$PHP_AUTOCONF" && test ! -x "`$php_shtool path $PHP_AUTOCONF`"; then
|
|
cat <<EOF
|
|
Cannot find autoconf. Please check your autoconf installation and the
|
|
\$PHP_AUTOCONF environment variable. Then, rerun this script.
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
if test ! -x "$PHP_AUTOHEADER" && test ! -x "`$php_shtool path $PHP_AUTOHEADER`"; then
|
|
cat <<EOF
|
|
Cannot find autoheader. Please check your autoconf installation and the
|
|
\$PHP_AUTOHEADER environment variable. Then, rerun this script.
|
|
|
|
EOF
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
phpize_copy_files()
|
|
{
|
|
test -d build || mkdir build
|
|
|
|
(cd "$phpdir" && cp $FILES_BUILD "$builddir"/build)
|
|
(cd "$phpdir" && cp $FILES "$builddir")
|
|
}
|
|
|
|
phpize_replace_prefix()
|
|
{
|
|
$SED \
|
|
-e "s#@prefix@#$prefix#" \
|
|
< "$phpdir/phpize.m4" > configure.ac
|
|
}
|
|
|
|
phpize_autotools()
|
|
{
|
|
# Remove aclocal.m4 if present. It is automatically included by autoconf but
|
|
# not used by the PHP build system since PHP 7.4.
|
|
rm -f aclocal.m4
|
|
|
|
$PHP_AUTOCONF || exit 1
|
|
$PHP_AUTOHEADER || exit 1
|
|
}
|
|
|
|
# Main script
|
|
|
|
case "$1" in
|
|
# Cleanup
|
|
--clean)
|
|
phpize_check_configm4 1
|
|
phpize_clean
|
|
exit 0
|
|
;;
|
|
|
|
# Usage
|
|
--help)
|
|
phpize_usage
|
|
exit 0
|
|
;;
|
|
|
|
# Version
|
|
--version|-v)
|
|
phpize_print_api_numbers
|
|
exit 0
|
|
;;
|
|
|
|
# Default
|
|
*)
|
|
phpize_check_configm4 0
|
|
|
|
phpize_check_build_files
|
|
|
|
phpize_print_api_numbers
|
|
|
|
phpize_copy_files
|
|
|
|
phpize_replace_prefix
|
|
|
|
phpize_check_shtool
|
|
|
|
phpize_check_autotools
|
|
|
|
phpize_autotools
|
|
;;
|
|
esac
|
|
|
|
exit 0
|