Commit b092f3fff1f for php
commit b092f3fff1fe6c53cdc684ea59fed77a3c8b4564
Author: Peter Kokot <peterkokot@gmail.com>
Date: Fri Sep 25 10:34:27 2026 +0200
Require Autoconf 2.71 or newer (#21159)
This updates the minimum required Autoconf version to 2.71.
- Autoconf versions 2.70 started supporting C11 standards.
- Autoconf 2.71 was released soon after 2.70 providing some bugfixes.
Changes:
- Removed obsolete AC_PROG_CC_C99 macro. In Autoconf 2.70 and later this
is done by the AC_PROG_CC macro.
- m4_normalize is not needed for AC_CHECK_HEADERS and AC_CHECK_FUNCTIONS
macros anymore, as the argument is normalized internally by Autoconf
in these newer versions.
- Adjusted C11 check in configure.ac and added check also in phpize
mode. Extensions using PHP headers should be also built with some
C11-compliant compiler.
- Removed ac_cv_header_sys_types_h_makedev hack for AC_HEADER_MAJOR
macro when using Autoconf versions prior to 2.70.
- Replaced AC_CONFIG_MACRO_DIR with preferred AC_CONFIG_MACRO_DIRS.
This also enables using --runstatedir configure option in the future.
diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS
index b2aa21986ef..57e1ab63be8 100644
--- a/UPGRADING.INTERNALS
+++ b/UPGRADING.INTERNALS
@@ -21,6 +21,9 @@ PHP 8.7 INTERNALS UPGRADE NOTES
2. Build system changes
========================
+- Unix build system changes:
+ . Autoconf minimum required version upgraded to 2.71.
+
========================
3. Module changes
========================
diff --git a/Zend/Zend.m4 b/Zend/Zend.m4
index 1f4e5e26f00..377cf40b12b 100644
--- a/Zend/Zend.m4
+++ b/Zend/Zend.m4
@@ -133,13 +133,13 @@ dnl
AC_DEFUN([ZEND_INIT], [dnl
AC_REQUIRE([AC_PROG_CC])
-AC_CHECK_HEADERS(m4_normalize([
+AC_CHECK_HEADERS([
cpuid.h
libproc.h
-]))
+])
dnl Check for library functions.
-AC_CHECK_FUNCS(m4_normalize([
+AC_CHECK_FUNCS([
getpid
gettid
kill
@@ -151,7 +151,7 @@ AC_CHECK_FUNCS(m4_normalize([
pthread_getthrds_np
pthread_stackseg_np
strnlen
-]))
+])
AC_CHECK_DECL([clock_gettime_nsec_np],
[AC_DEFINE([HAVE_CLOCK_GETTIME_NSEC_NP], [1],
diff --git a/configure.ac b/configure.ac
index 5a62f91848f..50df06a6b47 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,10 +22,10 @@ m4_include([Zend/Zend.m4])
dnl Basic autoconf initialization, generation of config.nice.
dnl ----------------------------------------------------------------------------
-AC_PREREQ([2.68])
+AC_PREREQ([2.71])
AC_INIT([PHP],[8.7.0-dev],[https://github.com/php/php-src/issues],[php],[https://www.php.net])
AC_CONFIG_SRCDIR([main/php_version.h])
-AC_CONFIG_MACRO_DIR([build])
+AC_CONFIG_MACRO_DIRS([build])
AC_CONFIG_AUX_DIR([build])
AC_PRESERVE_HELP_ORDER
@@ -120,11 +120,14 @@ dnl ----------------------------------------------------------------------------
PKG_PROG_PKG_CONFIG
AC_PROG_CC([cc gcc])
+
+dnl Check if C compiler accepts C11.
+AS_CASE([$ac_prog_cc_stdc], [c99|c89|no],
+ [AC_MSG_ERROR([C compiler would not accept C11 code.])])
+
PHP_DETECT_ICC
PHP_DETECT_SUNCC
-dnl AC_PROG_CC_C99 is obsolete with autoconf >= 2.70 yet necessary for <= 2.69.
-m4_version_prereq([2.70],,[AC_PROG_CC_C99])
AC_PROG_CPP
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_LN_S
@@ -135,17 +138,6 @@ AS_VAR_IF([cross_compiling], [yes],
AC_MSG_RESULT([$BUILD_CC])],
[BUILD_CC=$CC])
-dnl The macro AC_PROG_CC_C99 sets the shell variable ac_cv_prog_cc_c99 to 'no'
-dnl if the compiler does not support C99.i.e. does not support any of _Bool,
-dnl flexible arrays, inline, long long int, mixed code and declarations,
-dnl named initialization of structs, restrict, varargs macros, variable
-dnl declarations in for loops and variable length arrays.
-dnl
-dnl https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/C-Compiler.html
-if test "$ac_cv_prog_cc_c99" = no; then
- AC_MSG_ERROR([C compiler would not accept C99 code])
-fi
-
dnl Support systems with system libraries in e.g. /usr/lib64.
PHP_ARG_WITH([libdir],
[for system library directory],
@@ -380,7 +372,7 @@ dnl Then headers.
dnl ----------------------------------------------------------------------------
dnl QNX requires unix.h to allow functions in libunix to work properly.
-AC_CHECK_HEADERS(m4_normalize([
+AC_CHECK_HEADERS([
dirent.h
sys/param.h
sys/types.h
@@ -428,7 +420,7 @@ AC_CHECK_HEADERS(m4_normalize([
nmmintrin.h
wmmintrin.h
immintrin.h
-]),,, [dnl
+],,, [dnl
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#endif
@@ -452,8 +444,6 @@ PHP_BROKEN_GETCWD
AS_VAR_IF([GCC], [yes], [PHP_BROKEN_GCC_STRLEN_OPT])
dnl Detect the headers required to use makedev, major, and minor.
-dnl Autoconf <= 2.69 didn't check glibc 2.25 deprecated macros in sys/types.h.
-m4_version_prereq([2.70],,[ac_cv_header_sys_types_h_makedev=no])
AC_HEADER_MAJOR
dnl Checks for typedefs, structures, and compiler characteristics.
@@ -546,7 +536,7 @@ PHP_CHECK_VARIABLE_ATTRIBUTE([aligned])
dnl Checks for library functions.
dnl ----------------------------------------------------------------------------
-AC_CHECK_FUNCS(m4_normalize([
+AC_CHECK_FUNCS([
alphasort
asctime_r
asprintf
@@ -609,7 +599,7 @@ AC_CHECK_FUNCS(m4_normalize([
usleep
utime
vasprintf
-]))
+])
PHP_ARG_ENABLE([system-glob],
[whether to use the system glob function],
diff --git a/ext/ldap/config.m4 b/ext/ldap/config.m4
index 65a3d3b90ee..fd56d2d0c36 100644
--- a/ext/ldap/config.m4
+++ b/ext/ldap/config.m4
@@ -132,7 +132,7 @@ if test "$PHP_LDAP" != "no"; then
dnl Solaris 2.8 claims to be 2004 API, but doesn't have ldap_parse_reference()
dnl nor ldap_start_tls_s()
- AC_CHECK_FUNCS(m4_normalize([
+ AC_CHECK_FUNCS([
ldap_control_find
ldap_extended_operation_s
ldap_parse_extended_result
@@ -142,7 +142,7 @@ if test "$PHP_LDAP" != "no"; then
ldap_refresh_s
ldap_start_tls_s
ldap_whoami_s
- ]))
+ ])
dnl Sanity check
AC_CHECK_FUNC([ldap_sasl_bind_s],,
diff --git a/ext/pcntl/config.m4 b/ext/pcntl/config.m4
index 553419114fd..d0fffb45037 100644
--- a/ext/pcntl/config.m4
+++ b/ext/pcntl/config.m4
@@ -9,7 +9,7 @@ if test "$PHP_PCNTL" != "no"; then
[AC_MSG_FAILURE([ext/pcntl: required function $function() not found.])])
done
- AC_CHECK_FUNCS(m4_normalize([
+ AC_CHECK_FUNCS([
forkx
getcpuid
getpriority
@@ -26,7 +26,7 @@ if test "$PHP_PCNTL" != "no"; then
waitid
wait6
syscall
- ]))
+ ])
AC_CHECK_FUNCS([WIFCONTINUED],,
[AC_CHECK_DECL([WIFCONTINUED], [AC_DEFINE([HAVE_WIFCONTINUED], [1])],,
diff --git a/ext/posix/config.m4 b/ext/posix/config.m4
index 86554635695..b0f6b187959 100644
--- a/ext/posix/config.m4
+++ b/ext/posix/config.m4
@@ -12,7 +12,7 @@ if test "$PHP_POSIX" = "yes"; then
[$ext_shared],,
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
- AC_CHECK_FUNCS(m4_normalize([
+ AC_CHECK_FUNCS([
ctermid
eaccess
getgrgid_r
@@ -28,7 +28,7 @@ if test "$PHP_POSIX" = "yes"; then
seteuid
setrlimit
setsid
- ]))
+ ])
dnl Check for makedev. If it's defined as a macro, AC_CHECK_FUNCS won't work.
dnl Required headers are included by the AC_HEADER_MAJOR logic.
diff --git a/scripts/phpize.m4 b/scripts/phpize.m4
index 6bfad384659..21b5a856344 100644
--- a/scripts/phpize.m4
+++ b/scripts/phpize.m4
@@ -15,7 +15,7 @@ m4_include([build/php_cxx_compile_stdcxx.m4])
m4_include([build/php.m4])
m4_include([build/pkg.m4])
-AC_PREREQ([2.68])
+AC_PREREQ([2.71])
AC_INIT
AC_CONFIG_SRCDIR([config.m4])
AC_CONFIG_AUX_DIR([build])
@@ -36,6 +36,11 @@ PHP_INIT_BUILD_SYSTEM
PKG_PROG_PKG_CONFIG
AC_PROG_CC([cc gcc])
+
+dnl Check if C compiler accepts C11.
+AS_CASE([$ac_prog_cc_stdc], [c99|c89|no],
+ [AC_MSG_ERROR([C compiler would not accept C11 code.])])
+
PHP_DETECT_ICC
PHP_DETECT_SUNCC