1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/scripts/phpize.in
Calvin Buckley 13b83a46cf Bump libtool to serial 63 from 2.5.4 (#21067)
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>
2026-03-11 12:37:56 -03:00

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