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
This commit is contained in:
Peter Kokot 2019-03-13 00:25:07 +01:00
parent 96a9fb2052
commit 4e7064d173
9 changed files with 33 additions and 33 deletions

4
.gitignore vendored
View file

@ -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

View file

@ -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

View file

@ -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])

View file

@ -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 [<options>]
@ -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)"

View file

@ -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 -------------------------------------------------------------------------

View file

@ -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`.

View file

@ -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 = \

View file

@ -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()

View file

@ -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])