From 4e7064d173d2b5b22e159fcf52d22b10213b67b8 Mon Sep 17 00:00:00 2001 From: Peter Kokot Date: Wed, 13 Mar 2019 00:25:07 +0100 Subject: [PATCH] Move acinclude.m4 to build/php.m4 The acinclude.m4 file is in a usual Autotools build processed with Automake's aclocal tool. Since PHP currently doesn't use Automake and aclocal this file can be moved into the build directory. PHP build system currently generates a combined aclocal.m4 file that Autoconf can processes automatically. However, a newer practice is writing all local macros in separate dedicated files prefixed with package name, in PHP's case PHP_MACRO_NAME and putting them in a common `m4` directory. PHP uses currently `build` directory for this purpose. Name `php.m4` probably most resembles such file for PHP's case. PHP manually created the aclocal.m4 file from acinclude.m4 and build/libtool.m4. Which is also not a particularly good practice [1], so this patch also removes the generated alocal.m4 usage and uses m4_include() calls manually in the configure.ac and phpize.m4 files manually. - sort order is not important but can be alphabetical - list of *.m4 files prerequisites for configure script generation updated - Moving m4_include() before AC_INIT also removes all comments starting with hash character (`#`) in the included files. [1] https://autotools.io/autoconf/macros.html --- .gitignore | 4 ---- build/build.mk | 6 +----- acinclude.m4 => build/php.m4 | 10 ---------- buildconf | 14 +++++++------- configure.ac | 10 ++++++++++ docs/unix-build-system.md | 4 ++-- scripts/Makefile.frag | 2 +- scripts/phpize.in | 7 +++---- scripts/phpize.m4 | 9 +++++++++ 9 files changed, 33 insertions(+), 33 deletions(-) rename acinclude.m4 => build/php.m4 (99%) diff --git a/.gitignore b/.gitignore index 52ab256ba30..d0aa3b394a9 100644 --- a/.gitignore +++ b/.gitignore @@ -38,9 +38,6 @@ # Standard object files generated during build process *.o -# Generated by `./buildconf` or `phpize` -aclocal.m4 - # Cache directories generated by Autoconf tools - autoconf, autoreconf... autom4te.cache/ @@ -174,7 +171,6 @@ php # ------------------------------------------------------------------------------ # Extensions files additionally generated by `cd ext/name && phpize && ./configure` # ------------------------------------------------------------------------------ -/ext/*/acinclude.m4 /ext/*/build/ /ext/*/configure.ac /ext/*/run-tests.php diff --git a/build/build.mk b/build/build.mk index 46cb0c3360a..2e261b7824f 100644 --- a/build/build.mk +++ b/build/build.mk @@ -30,15 +30,11 @@ all: $(stamp) configure $(config_h_in) $(stamp): build/buildcheck.sh @build/buildcheck.sh $@ -configure: aclocal.m4 configure.ac $(PHP_M4_FILES) +configure: configure.ac $(PHP_M4_FILES) @echo rebuilding $@ @rm -f $@ @$(PHP_AUTOCONF) $(PHP_AUTOCONF_FLAGS) -aclocal.m4: configure.ac acinclude.m4 - @echo rebuilding $@ - @cat acinclude.m4 ./build/libtool.m4 > $@ - $(config_h_in): configure # Explicitly remove target since autoheader does not seem to work correctly # otherwise (timestamps are not updated). Also disable PACKAGE_* symbols in the diff --git a/acinclude.m4 b/build/php.m4 similarity index 99% rename from acinclude.m4 rename to build/php.m4 index 6987056185e..dbc8c88006b 100644 --- a/acinclude.m4 +++ b/build/php.m4 @@ -2751,13 +2751,3 @@ int main() { AC_DEFINE_UNQUOTED(AS_TR_CPP([PHP_HAVE_$1_INSTRUCTIONS]), [$have_ext_instructions], [Whether the compiler supports $1 instructions]) ]) - -dnl Load the AX_CHECK_COMPILE_FLAG macro from the autoconf archive. -m4_include([build/ax_check_compile_flag.m4]) - -m4_include([build/ax_gcc_func_attribute.m4]) - -m4_include([build/php_cxx_compile_stdcxx.m4]) - -dnl Load pkg-config macros -m4_include([build/pkg.m4]) diff --git a/buildconf b/buildconf index 6e644df4b80..4c0fe37a7e4 100755 --- a/buildconf +++ b/buildconf @@ -27,12 +27,12 @@ while test $# -gt 0; do PHP buildconf A wrapper around the autoconf and autoheader that generate files for building -PHP on *nix systems (configure, main/php_config.h.in, aclocal.m4...). 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. +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 [] @@ -103,4 +103,4 @@ $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 ext/*/config*.m4 sapi/*/config*.m4)" + PHP_M4_FILES="$(echo TSRM/*.m4 Zend/Zend.m4 build/*.m4 ext/*/config*.m4 sapi/*/config*.m4)" diff --git a/configure.ac b/configure.ac index ec3f28c7681..43a4fa95934 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,15 @@ dnl ## Process this file with autoconf to produce a configure script. +dnl Include external macro definitions before the AC_INIT to also remove +dnl comments starting with # and empty newlines from the included files. +dnl ------------------------------------------------------------------------- +m4_include([build/ax_check_compile_flag.m4]) +m4_include([build/ax_gcc_func_attribute.m4]) +m4_include([build/libtool.m4]) +m4_include([build/php_cxx_compile_stdcxx.m4]) +m4_include([build/php.m4]) +m4_include([build/pkg.m4]) + dnl Basic autoconf initialization, generation of config.nice. dnl ------------------------------------------------------------------------- diff --git a/docs/unix-build-system.md b/docs/unix-build-system.md index bdb8d4d146d..c576b5e0756 100644 --- a/docs/unix-build-system.md +++ b/docs/unix-build-system.md @@ -53,7 +53,7 @@ The full syntax: PHP_NEW_EXTENSION(extname, sources [, shared [,sapi_class[, extra-cflags]]]) ``` -Please have a look at `acinclude.m4` for the gory details and meanings of the +Please have a look at `build/php.m4` for the gory details and meanings of the other parameters. And that's basically it for the extension side. @@ -118,4 +118,4 @@ contexts. With the help of macros you can define special flags for each source-file, where it is located, in which target context it can work, etc. Have a look at the well documented macros `PHP_ADD_SOURCES(_X)` in -`acinclude.m4`. +`build/php.m4`. diff --git a/scripts/Makefile.frag b/scripts/Makefile.frag index db8ff60c06d..bfbac62ab3d 100644 --- a/scripts/Makefile.frag +++ b/scripts/Makefile.frag @@ -14,7 +14,7 @@ BUILD_FILES = \ build/php_cxx_compile_stdcxx.m4 \ build/pkg.m4 \ build/Makefile.global \ - acinclude.m4 \ + build/php.m4 \ run-tests.php BUILD_FILES_EXEC = \ diff --git a/scripts/phpize.in b/scripts/phpize.in index ccb93575744..7a10a369bf8 100644 --- a/scripts/phpize.in +++ b/scripts/phpize.in @@ -9,11 +9,11 @@ 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" +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 Makefile.global" +FILES="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.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" @@ -146,7 +146,6 @@ phpize_copy_files() (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() diff --git a/scripts/phpize.m4 b/scripts/phpize.m4 index d3b471b5cd3..61af6c2b74f 100644 --- a/scripts/phpize.m4 +++ b/scripts/phpize.m4 @@ -1,5 +1,14 @@ dnl This file becomes configure.ac for self-contained extensions. +dnl Include external macro definitions before the AC_INIT to also remove +dnl comments starting with # and empty newlines from the included files. +m4_include([build/ax_check_compile_flag.m4]) +m4_include([build/ax_gcc_func_attribute.m4]) +m4_include([build/libtool.m4]) +m4_include([build/php_cxx_compile_stdcxx.m4]) +m4_include([build/php.m4]) +m4_include([build/pkg.m4]) + AC_PREREQ([2.68]) AC_INIT AC_CONFIG_SRCDIR([config.m4])