mirror of
https://github.com/php/php-src.git
synced 2025-01-12 22:14:41 +08:00
69b20f51e1
Autoconf defines PACKAGE_* symbols:
- PACKAGE_NAME
- PACKAGE_VERSION
- PACKAGE_TARNAME
- PACKAGE_STRING
- PACKAGE_BUGREPORT
- PACKAGE_URL
and appends them to the generated config.h.in files. With AC_INIT change
via afd52f9d99
where package version, URL,
bug report location and similar meta data are defined, these
preprocessor macros are then non empty strings in the generated
configuration header file. When using phpize, PHP shares the config
files in extensions, warnings of redefined macros appear, such as:
- `warning: 'PACKAGE_NAME' macro redefined`
This patch now disables these non utilized symbols in the generated
config header files.
Better practice would be to include only API specific headers where
needed but this would require even more refactorings. Some extensions
such as pcre, pgsql, and pdo_pgsql solve this issue by undefining some
of these symbols before including the library configuration headers in
the code also. Because these symbols can be defined by any library which
uses Autotools.
Additionally, the unused PACKAGE_* symbols were cleaned for the bundled
libmbfl library and with this patch not needed undef code removed.
212 lines
4.5 KiB
Bash
212 lines
4.5 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="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 Makefile.global"
|
|
FILES="acinclude.m4 run-tests*.php"
|
|
CLEAN_FILES="$FILES *.o *.lo *.la .libs/ build/ modules/ \
|
|
config.nice configure configure.ac \
|
|
aclocal.m4 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_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 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")
|
|
(cd "$builddir" && cat acinclude.m4 ./build/libtool.m4 > aclocal.m4)
|
|
}
|
|
|
|
phpize_replace_prefix()
|
|
{
|
|
$SED \
|
|
-e "s#@prefix@#$prefix#" \
|
|
< "$phpdir/phpize.m4" > configure.ac
|
|
}
|
|
|
|
phpize_autotools()
|
|
{
|
|
$PHP_AUTOCONF || exit 1
|
|
$PHP_AUTOHEADER || exit 1
|
|
|
|
# Disable PACKAGE_* symbols in config.h.in
|
|
$SED -e 's/^#undef PACKAGE_[^ ]*/\/\* & \*\//g' < config.h.in > config.h.in.tmp
|
|
mv config.h.in.tmp config.h.in
|
|
}
|
|
|
|
# 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
|