2019-05-13 00:43:03 +08:00
|
|
|
dnl Process this file with autoconf to produce a configure script.
|
1999-04-17 08:37:12 +08:00
|
|
|
|
2019-03-13 07:25:07 +08:00
|
|
|
dnl Include external macro definitions before the AC_INIT to also remove
|
|
|
|
dnl comments starting with # and empty newlines from the included files.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2019-03-13 07:25:07 +08:00
|
|
|
m4_include([build/ax_check_compile_flag.m4])
|
2019-04-24 02:37:31 +08:00
|
|
|
m4_include([build/ax_func_which_gethostbyname_r.m4])
|
2019-03-13 07:25:07 +08:00
|
|
|
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])
|
2019-07-02 07:00:14 +08:00
|
|
|
m4_include([TSRM/threads.m4])
|
2024-06-29 04:50:22 +08:00
|
|
|
m4_include([Zend/Zend.m4])
|
2019-03-13 07:25:07 +08:00
|
|
|
|
2018-10-21 19:06:58 +08:00
|
|
|
dnl Basic autoconf initialization, generation of config.nice.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2018-10-10 03:06:10 +08:00
|
|
|
AC_PREREQ([2.68])
|
2024-09-24 23:03:39 +08:00
|
|
|
AC_INIT([PHP],[8.5.0-dev],[https://github.com/php/php-src/issues],[php],[https://www.php.net])
|
2019-03-20 06:49:26 +08:00
|
|
|
AC_CONFIG_SRCDIR([main/php_version.h])
|
2018-12-02 17:39:43 +08:00
|
|
|
AC_CONFIG_AUX_DIR([build])
|
2018-10-11 18:58:41 +08:00
|
|
|
AC_PRESERVE_HELP_ORDER
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2024-07-26 15:58:59 +08:00
|
|
|
PHP_CONFIG_NICE([config.nice])
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2005-01-07 14:12:42 +08:00
|
|
|
PHP_CANONICAL_HOST_TARGET
|
2004-11-04 07:05:18 +08:00
|
|
|
|
2018-07-05 09:06:06 +08:00
|
|
|
AC_CONFIG_HEADERS([main/php_config.h])
|
2019-07-11 08:00:51 +08:00
|
|
|
|
2011-05-16 08:14:47 +08:00
|
|
|
AH_TOP([
|
2017-06-09 15:29:30 +08:00
|
|
|
#ifndef PHP_CONFIG_H
|
|
|
|
#define PHP_CONFIG_H
|
|
|
|
|
2011-05-16 08:14:47 +08:00
|
|
|
#if defined(__GNUC__) && __GNUC__ >= 4
|
|
|
|
# define ZEND_API __attribute__ ((visibility("default")))
|
|
|
|
# define ZEND_DLEXPORT __attribute__ ((visibility("default")))
|
|
|
|
#else
|
|
|
|
# define ZEND_API
|
|
|
|
# define ZEND_DLEXPORT
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define ZEND_DLIMPORT
|
|
|
|
])
|
|
|
|
AH_BOTTOM([
|
2018-09-16 05:59:45 +08:00
|
|
|
#include <stdlib.h>
|
2011-05-16 08:14:47 +08:00
|
|
|
|
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
|
|
# include <sys/types.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_SYS_SELECT_H
|
|
|
|
#include <sys/select.h>
|
|
|
|
#endif
|
|
|
|
|
2018-09-16 07:14:08 +08:00
|
|
|
#include <string.h>
|
2011-05-16 08:14:47 +08:00
|
|
|
|
2017-06-09 15:29:30 +08:00
|
|
|
#endif /* PHP_CONFIG_H */
|
2011-05-16 08:14:47 +08:00
|
|
|
])
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2019-03-20 06:49:26 +08:00
|
|
|
ac_IFS=$IFS; IFS="."
|
2019-11-07 14:45:55 +08:00
|
|
|
set $(echo AC_PACKAGE_VERSION | "${SED}" 's/\([[0-9\.]]*\)\(.*\)/\1\.\2/')
|
2019-03-20 06:49:26 +08:00
|
|
|
IFS=$ac_IFS
|
|
|
|
PHP_MAJOR_VERSION=[$]1
|
|
|
|
PHP_MINOR_VERSION=[$]2
|
|
|
|
PHP_RELEASE_VERSION=[$]3
|
2023-07-19 18:14:42 +08:00
|
|
|
dnl Allow overriding PHP_EXTRA_VERSION through the homonymous env var
|
2024-09-03 01:00:58 +08:00
|
|
|
AC_ARG_VAR([PHP_EXTRA_VERSION],
|
|
|
|
[Extra PHP version label suffix, e.g. '-dev', 'rc1', '-acme'])dnl
|
|
|
|
AS_VAR_IF([PHP_EXTRA_VERSION],, [PHP_EXTRA_VERSION=[$]4])
|
2007-07-27 06:45:59 +08:00
|
|
|
PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION"
|
2024-08-30 06:40:49 +08:00
|
|
|
PHP_VERSION_ID=$(expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION)
|
2007-07-27 06:45:59 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Allow version values to be used in Makefile.
|
2024-07-02 11:44:45 +08:00
|
|
|
PHP_SUBST([PHP_MAJOR_VERSION])
|
|
|
|
PHP_SUBST([PHP_MINOR_VERSION])
|
|
|
|
PHP_SUBST([PHP_RELEASE_VERSION])
|
|
|
|
PHP_SUBST([PHP_EXTRA_VERSION])
|
2002-01-27 07:57:17 +08:00
|
|
|
|
|
|
|
dnl Setting up the PHP version based on the information above.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
1999-04-17 08:37:12 +08:00
|
|
|
|
1999-07-22 05:56:25 +08:00
|
|
|
echo "/* automatically generated by configure */" > php_version.h.new
|
2015-11-12 04:08:15 +08:00
|
|
|
echo "/* edit configure.ac to change version number */" >> php_version.h.new
|
2007-07-27 06:45:59 +08:00
|
|
|
echo "#define PHP_MAJOR_VERSION $PHP_MAJOR_VERSION" >> php_version.h.new
|
|
|
|
echo "#define PHP_MINOR_VERSION $PHP_MINOR_VERSION" >> php_version.h.new
|
|
|
|
echo "#define PHP_RELEASE_VERSION $PHP_RELEASE_VERSION" >> php_version.h.new
|
|
|
|
echo "#define PHP_EXTRA_VERSION \"$PHP_EXTRA_VERSION\"" >> php_version.h.new
|
1999-07-22 05:56:25 +08:00
|
|
|
echo "#define PHP_VERSION \"$PHP_VERSION\"" >> php_version.h.new
|
2006-07-27 16:53:16 +08:00
|
|
|
echo "#define PHP_VERSION_ID $PHP_VERSION_ID" >> php_version.h.new
|
2003-03-07 14:18:17 +08:00
|
|
|
cmp php_version.h.new $srcdir/main/php_version.h >/dev/null 2>&1
|
1999-04-25 05:21:35 +08:00
|
|
|
if test $? -ne 0 ; then
|
2008-07-21 18:17:36 +08:00
|
|
|
rm -f $srcdir/main/php_version.h && mv php_version.h.new $srcdir/main/php_version.h && \
|
|
|
|
echo 'Updated main/php_version.h'
|
1999-04-17 08:37:12 +08:00
|
|
|
else
|
2008-07-21 18:17:36 +08:00
|
|
|
rm -f php_version.h.new
|
1999-04-17 08:37:12 +08:00
|
|
|
fi
|
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl Settings we want to make before the checks.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2024-07-11 03:15:02 +08:00
|
|
|
PHP_INIT_BUILD_SYSTEM
|
|
|
|
|
2024-08-30 06:40:49 +08:00
|
|
|
dnl Because 'make install' is often performed by the superuser, we create the
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl libs subdirectory as the user who configures PHP. Otherwise, the current
|
|
|
|
dnl user will not be able to delete libs or the contents of libs.
|
2002-01-27 07:57:17 +08:00
|
|
|
|
|
|
|
$php_shtool mkdir -p libs
|
|
|
|
rm -f libs/*
|
|
|
|
|
|
|
|
dnl Checks for programs.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2018-05-15 05:25:37 +08:00
|
|
|
PKG_PROG_PKG_CONFIG
|
2008-11-17 23:17:49 +08:00
|
|
|
AC_PROG_CC([cc gcc])
|
2006-12-05 02:28:49 +08:00
|
|
|
PHP_DETECT_ICC
|
2008-11-07 04:42:11 +08:00
|
|
|
PHP_DETECT_SUNCC
|
2023-01-23 21:39:41 +08:00
|
|
|
|
|
|
|
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])
|
2002-01-27 07:57:17 +08:00
|
|
|
AC_PROG_CPP
|
2018-07-25 15:34:25 +08:00
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
2005-02-25 02:11:36 +08:00
|
|
|
AC_PROG_LN_S
|
2002-07-18 05:56:40 +08:00
|
|
|
|
2024-06-26 00:58:53 +08:00
|
|
|
AS_VAR_IF([cross_compiling], [yes],
|
|
|
|
[AC_CHECK_PROGS([BUILD_CC], [gcc clang c99 c89 cc cl], [none])
|
|
|
|
AC_MSG_CHECKING([for native build C compiler])
|
|
|
|
AC_MSG_RESULT([$BUILD_CC])],
|
|
|
|
[BUILD_CC=$CC])
|
2021-04-16 22:28:54 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Support systems with system libraries in e.g. /usr/lib64.
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_WITH([libdir],
|
|
|
|
[for system library directory],
|
|
|
|
[AS_HELP_STRING([--with-libdir=NAME],
|
|
|
|
[Look for libraries in .../NAME rather than .../lib])],
|
|
|
|
[lib],
|
|
|
|
[no])
|
|
|
|
|
|
|
|
PHP_ARG_ENABLE([rpath],
|
|
|
|
[whether to enable runpaths],
|
|
|
|
[AS_HELP_STRING([--disable-rpath],
|
|
|
|
[Disable passing additional runtime library search paths])],
|
|
|
|
[yes],
|
|
|
|
[no])
|
2007-08-20 22:28:45 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check for -R, etc. switch.
|
2002-07-18 05:56:40 +08:00
|
|
|
PHP_RUNPATH_SWITCH
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Checks for some support/generator progs.
|
2019-03-17 23:22:02 +08:00
|
|
|
PHP_PROG_BISON([3.0.0])
|
2024-06-25 04:09:04 +08:00
|
|
|
PHP_PROG_RE2C([1.0.3], [--no-generation-date])
|
2024-08-22 23:30:08 +08:00
|
|
|
dnl Find installed PHP. Minimum supported version for gen_stub.php is PHP 7.4.
|
|
|
|
PHP_PROG_PHP([7.4])
|
2008-07-17 00:22:43 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([re2c-cgoto],
|
2024-06-25 22:10:10 +08:00
|
|
|
[whether to enable computed goto extension with re2c],
|
2019-03-03 23:44:16 +08:00
|
|
|
[AS_HELP_STRING([--enable-re2c-cgoto],
|
2024-06-25 22:10:10 +08:00
|
|
|
[Enable re2c -g flag to optimize conditional jumps using computed goto
|
|
|
|
extension, if supported by the compiler])],
|
2019-03-03 23:44:16 +08:00
|
|
|
[no],
|
|
|
|
[no])
|
2008-03-17 05:06:55 +08:00
|
|
|
|
2024-06-25 22:10:10 +08:00
|
|
|
AS_VAR_IF([PHP_RE2C_CGOTO], [no],,
|
|
|
|
[AC_CACHE_CHECK([whether re2c -g works], [php_cv_have_re2c_cgoto],
|
|
|
|
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
|
|
|
|
int main(void)
|
2008-07-21 18:17:36 +08:00
|
|
|
{
|
2008-03-17 05:06:55 +08:00
|
|
|
label1:
|
2024-06-25 22:10:10 +08:00
|
|
|
;
|
2008-03-17 05:06:55 +08:00
|
|
|
label2:
|
2024-06-25 22:10:10 +08:00
|
|
|
;
|
|
|
|
static void *adr[] = { &&label1, &&label2 };
|
2008-07-21 18:17:36 +08:00
|
|
|
goto *adr[0];
|
|
|
|
return 0;
|
2024-06-25 22:10:10 +08:00
|
|
|
}]])],
|
|
|
|
[php_cv_have_re2c_cgoto=yes],
|
|
|
|
[php_cv_have_re2c_cgoto=no])])
|
|
|
|
AS_VAR_IF([php_cv_have_re2c_cgoto], [yes],
|
|
|
|
[AS_VAR_APPEND([RE2C_FLAGS], [" -g"])])
|
2024-06-25 04:09:04 +08:00
|
|
|
])
|
2004-12-21 04:37:45 +08:00
|
|
|
|
2002-07-23 09:58:02 +08:00
|
|
|
dnl Platform-specific compile settings.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-07-23 09:58:02 +08:00
|
|
|
|
2005-06-03 05:29:24 +08:00
|
|
|
dnl See bug #28605
|
|
|
|
case $host_cpu in
|
2008-07-21 18:17:36 +08:00
|
|
|
alpha*)
|
2005-06-03 05:29:24 +08:00
|
|
|
if test "$GCC" = "yes"; then
|
|
|
|
CFLAGS="$CFLAGS -mieee"
|
|
|
|
else
|
|
|
|
CFLAGS="$CFLAGS -ieee"
|
|
|
|
fi
|
|
|
|
;;
|
2008-11-07 04:42:11 +08:00
|
|
|
sparc*)
|
|
|
|
if test "$SUNCC" = "yes"; then
|
2010-01-12 17:28:02 +08:00
|
|
|
CFLAGS="$CFLAGS -xmemalign=8s"
|
2008-11-07 04:42:11 +08:00
|
|
|
fi
|
2009-06-26 23:42:11 +08:00
|
|
|
;;
|
2005-06-03 05:29:24 +08:00
|
|
|
esac
|
|
|
|
|
2024-05-07 16:34:50 +08:00
|
|
|
dnl See https://github.com/php/php-src/issues/14140
|
|
|
|
AX_CHECK_COMPILE_FLAG([-ffp-contract=off], [CFLAGS="$CFLAGS -ffp-contract=off"])
|
|
|
|
|
Use AX_CHECK_COMPILE_FLAG macro to check for -fvisibility=hidden support.
The existing check for -fvisibility=hidden support came from a time
when only GCC had it. The test for it used a regular expression to
parse the GCC major version from the output of `$CC --version`, and
would look for version 4 or greater.
The regular expression used to accomplish this is doomed, however,
since GCC can be built with a custom version string
(--with-pkgversion). Moreover, the $CC variable can be set to
something that confuses it but is otherwise valid. For example, it
would fail with CC=x86_64-pc-linux-gnu-gcc.
This commit fixes two aspects of the feature test. First, it no longer
limits the test to GCC. At least clang now supports the flag, and can
make use of it when GCC is its backend. Second, support for the flag
is tested directly, by attempting to pass it to the compiler, rather
than by parsing its version string. The latter is accomplished with a
new macro, AX_CHECK_COMPILE_FLAG, taken from the autoconf archive.
The new macro has been added to acinclude.m4, and the test stanza in
configure.in has been replaced with a single call to the new macro.
Note that the new macro calls AC_PREREQ(2.64) -- a more stringent
requirement than the existing AC_PREREQ(2.59) in configure.in. The
difference represents about six years of autoconf releases, from v2.59
in December of 2003 to v2.64 in July of 2009.
This problem was noticed by Brian Evans, who also suggested the fix.
PHP-Bug: 73062
2016-09-10 23:20:50 +08:00
|
|
|
dnl Mark symbols hidden by default if the compiler (for example, gcc >= 4)
|
|
|
|
dnl supports it. This can help reduce the binary size and startup time.
|
2018-01-15 21:30:56 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],
|
|
|
|
[CFLAGS="$CFLAGS -fvisibility=hidden"])
|
2008-01-30 17:41:12 +08:00
|
|
|
|
2002-07-23 09:58:02 +08:00
|
|
|
case $host_alias in
|
2008-07-21 18:17:36 +08:00
|
|
|
*solaris*)
|
2002-07-23 09:58:02 +08:00
|
|
|
CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
|
|
|
|
;;
|
2008-07-21 18:17:36 +08:00
|
|
|
*hpux*)
|
2004-12-16 19:49:48 +08:00
|
|
|
if test "$GCC" = "yes"; then
|
2005-02-25 03:27:10 +08:00
|
|
|
CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
|
|
|
|
fi
|
|
|
|
;;
|
2002-07-23 09:58:02 +08:00
|
|
|
esac
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Disable PIC mode by default where it is known to be safe to do so, to avoid
|
|
|
|
dnl the performance hit from the lost register.
|
2005-01-10 09:11:09 +08:00
|
|
|
AC_MSG_CHECKING([whether to force non-PIC code in shared modules])
|
|
|
|
case $host_alias in
|
2008-07-21 18:17:36 +08:00
|
|
|
i?86-*-linux*|i?86-*-freebsd*)
|
2005-01-20 01:35:55 +08:00
|
|
|
if test "${with_pic+set}" != "set" || test "$with_pic" = "no"; then
|
2005-01-10 09:11:09 +08:00
|
|
|
with_pic=no
|
2024-07-21 07:52:17 +08:00
|
|
|
AC_MSG_RESULT([yes])
|
2005-01-10 09:11:09 +08:00
|
|
|
else
|
2024-07-21 07:52:17 +08:00
|
|
|
AC_MSG_RESULT([no])
|
2005-01-10 09:11:09 +08:00
|
|
|
fi
|
|
|
|
;;
|
2008-07-21 18:17:36 +08:00
|
|
|
*)
|
2024-07-21 07:52:17 +08:00
|
|
|
AC_MSG_RESULT([no])
|
2008-07-21 18:17:36 +08:00
|
|
|
;;
|
2005-01-10 09:11:09 +08:00
|
|
|
esac
|
|
|
|
|
2021-05-20 19:10:30 +08:00
|
|
|
dnl Detect musl libc
|
|
|
|
AC_MSG_CHECKING([whether we are using musl libc])
|
2024-08-21 21:51:27 +08:00
|
|
|
if command -v ldd >/dev/null && ldd --version 2>&1 | grep ^musl >/dev/null 2>&1
|
2021-05-20 19:10:30 +08:00
|
|
|
then
|
2024-07-21 07:52:17 +08:00
|
|
|
AC_MSG_RESULT([yes])
|
2024-08-02 07:14:48 +08:00
|
|
|
AC_DEFINE([__MUSL__], [1], [Define to 1 when using musl libc.])
|
2021-05-20 19:10:30 +08:00
|
|
|
else
|
2024-07-21 07:52:17 +08:00
|
|
|
AC_MSG_RESULT([no])
|
2021-05-20 19:10:30 +08:00
|
|
|
fi
|
|
|
|
|
2024-06-26 02:07:42 +08:00
|
|
|
dnl Add _GNU_SOURCE compile definition because the php_config.h with definitions
|
|
|
|
dnl by AC_USE_SYSTEM_EXTENSIONS might be included after the system headers which
|
|
|
|
dnl require extensions to C and POSIX.
|
|
|
|
AS_VAR_APPEND([CPPFLAGS], [" -D_GNU_SOURCE"])
|
2021-05-20 19:10:30 +08:00
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
PTHREADS_CHECK
|
|
|
|
PHP_HELP_SEPARATOR([SAPI modules:])
|
2006-04-10 20:16:17 +08:00
|
|
|
PHP_SHLIB_SUFFIX_NAMES
|
2000-05-04 17:42:27 +08:00
|
|
|
PHP_BUILD_PROGRAM
|
2010-11-14 07:13:07 +08:00
|
|
|
PHP_SAPI=none
|
2002-01-27 07:57:17 +08:00
|
|
|
|
|
|
|
dnl SAPI configuration.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Paths to the targets are relative to the build directory.
|
2023-10-09 08:42:31 +08:00
|
|
|
SAPI_LIBNAME=libphp
|
|
|
|
SAPI_LIBNAME_SHARED=$SAPI_LIBNAME.[]$SHLIB_DL_SUFFIX_NAME
|
|
|
|
SAPI_LIBNAME_STATIC=$SAPI_LIBNAME.a
|
|
|
|
SAPI_SHARED=libs/$SAPI_LIBNAME_SHARED
|
|
|
|
SAPI_STATIC=libs/$SAPI_LIBNAME_STATIC
|
2019-10-29 23:01:59 +08:00
|
|
|
SAPI_LIBTOOL=libphp.la
|
2000-05-04 17:42:27 +08:00
|
|
|
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([Configuring SAPI modules])
|
2000-05-04 17:42:27 +08:00
|
|
|
|
2003-01-28 18:59:12 +08:00
|
|
|
esyscmd(./build/config-stubs sapi)
|
2000-05-04 17:42:27 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Show which main SAPI was selected.
|
2001-09-07 04:55:24 +08:00
|
|
|
AC_MSG_CHECKING([for chosen SAPI module])
|
|
|
|
AC_MSG_RESULT([$PHP_SAPI])
|
2000-05-04 17:42:27 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Show which binaries were selected.
|
2010-11-14 07:13:07 +08:00
|
|
|
AC_MSG_CHECKING([for executable SAPI binaries])
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_BINARIES],,
|
|
|
|
[AC_MSG_RESULT([none])],
|
|
|
|
[AC_MSG_RESULT([$PHP_BINARIES])])
|
2010-11-14 07:13:07 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Exit early.
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_INSTALLED_SAPIS],, [AC_MSG_ERROR([Nothing to build.])])
|
2010-11-14 07:13:07 +08:00
|
|
|
|
2024-08-06 04:30:10 +08:00
|
|
|
dnl Add POSIX threads compilation and linker flags when thread safety is enabled
|
|
|
|
dnl with either the '--enable-zts' configure option or automatically enabled by
|
|
|
|
dnl PHP SAPIs. For example, Apache SAPI.
|
|
|
|
AS_VAR_IF([enable_zts], [yes], [
|
2019-07-02 07:00:14 +08:00
|
|
|
if test -n "$ac_cv_pthreads_lib"; then
|
|
|
|
LIBS="$LIBS -l$ac_cv_pthreads_lib"
|
|
|
|
fi
|
|
|
|
if test -n "$ac_cv_pthreads_cflags"; then
|
|
|
|
CFLAGS="$CFLAGS $ac_cv_pthreads_cflags"
|
|
|
|
fi
|
|
|
|
|
2000-05-04 17:42:27 +08:00
|
|
|
PTHREADS_FLAGS
|
2024-08-06 04:30:10 +08:00
|
|
|
])
|
2000-05-04 17:42:27 +08:00
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl Starting system checks.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
1999-04-17 08:37:12 +08:00
|
|
|
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([Running system checks])
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Find sendmail binary.
|
2002-01-27 07:57:17 +08:00
|
|
|
PHP_PROG_SENDMAIL
|
2005-02-25 02:11:36 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check whether the system uses EBCDIC (not ASCII) as its native codeset.
|
2000-04-13 20:24:28 +08:00
|
|
|
PHP_EBCDIC
|
2005-02-25 02:11:36 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check whether the system byte ordering is bigendian.
|
2005-02-25 02:11:36 +08:00
|
|
|
PHP_C_BIGENDIAN
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check whether writing to stdout works.
|
2007-02-21 04:11:11 +08:00
|
|
|
PHP_TEST_WRITE_STDOUT
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check for /usr/pkg/{lib,include} which is where NetBSD puts binary and
|
|
|
|
dnl source packages. This should be harmless on other OSs.
|
2024-03-02 03:40:16 +08:00
|
|
|
if test -d /usr/pkg/include && test -d /usr/pkg/lib; then
|
2008-07-21 18:17:36 +08:00
|
|
|
CPPFLAGS="$CPPFLAGS -I/usr/pkg/include"
|
|
|
|
LDFLAGS="$LDFLAGS -L/usr/pkg/lib"
|
1999-04-17 08:37:12 +08:00
|
|
|
fi
|
2024-07-27 05:26:55 +08:00
|
|
|
test -d /usr/ucblib && PHP_ADD_LIBPATH([/usr/ucblib])
|
1999-04-17 08:37:12 +08:00
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl First, library checks.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2024-03-10 13:53:39 +08:00
|
|
|
AC_SEARCH_LIBS([socket], [socket network])
|
2024-05-04 01:55:24 +08:00
|
|
|
|
|
|
|
AC_CHECK_FUNCS([socketpair],,
|
|
|
|
[AC_SEARCH_LIBS([socketpair], [socket network],
|
|
|
|
[AC_DEFINE([HAVE_SOCKETPAIR], [1])])])
|
|
|
|
|
|
|
|
AC_SEARCH_LIBS([gethostbyaddr], [nsl network])
|
|
|
|
|
2024-02-24 03:44:06 +08:00
|
|
|
AC_SEARCH_LIBS([dlopen], [dl],
|
2024-08-02 07:14:48 +08:00
|
|
|
[AC_DEFINE([HAVE_LIBDL], [1],
|
|
|
|
[Define to 1 if you have the 'dl' library (-ldl).])])
|
2024-05-04 01:55:24 +08:00
|
|
|
|
2024-02-24 03:48:10 +08:00
|
|
|
AC_SEARCH_LIBS([sin], [m])
|
1999-04-17 08:37:12 +08:00
|
|
|
|
2023-05-26 02:26:28 +08:00
|
|
|
case $host_alias in
|
|
|
|
riscv64*)
|
2023-08-29 01:47:19 +08:00
|
|
|
PHP_CHECK_FUNC(__atomic_exchange_1, atomic)
|
2023-05-26 02:26:28 +08:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2024-02-29 01:41:51 +08:00
|
|
|
dnl Solaris/Illumos for process mapping.
|
|
|
|
AC_SEARCH_LIBS([Pgrab], [proc])
|
|
|
|
|
2024-03-01 05:04:13 +08:00
|
|
|
dnl Haiku does not have network api in libc.
|
|
|
|
AC_SEARCH_LIBS([setsockopt], [network])
|
|
|
|
|
2024-07-02 11:41:13 +08:00
|
|
|
dnl Check for openpty. It may require linking against libutil or libbsd.
|
|
|
|
AC_CHECK_FUNCS([openpty],,
|
|
|
|
[AC_SEARCH_LIBS([openpty], [util bsd], [AC_DEFINE([HAVE_OPENPTY], [1])])])
|
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl Then headers.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl QNX requires unix.h to allow functions in libunix to work properly.
|
2024-06-30 01:49:12 +08:00
|
|
|
AC_CHECK_HEADERS(m4_normalize([
|
|
|
|
dirent.h
|
|
|
|
sys/param.h
|
|
|
|
sys/types.h
|
|
|
|
sys/time.h
|
|
|
|
netinet/in.h
|
|
|
|
alloca.h
|
|
|
|
arpa/inet.h
|
|
|
|
arpa/nameser.h
|
|
|
|
dns.h
|
|
|
|
fcntl.h
|
|
|
|
grp.h
|
|
|
|
ieeefp.h
|
|
|
|
langinfo.h
|
|
|
|
linux/sock_diag.h
|
|
|
|
poll.h
|
|
|
|
pty.h
|
|
|
|
pwd.h
|
|
|
|
resolv.h
|
|
|
|
strings.h
|
|
|
|
syslog.h
|
|
|
|
sysexits.h
|
|
|
|
sys/ioctl.h
|
|
|
|
sys/file.h
|
|
|
|
sys/mman.h
|
|
|
|
sys/mount.h
|
|
|
|
sys/poll.h
|
|
|
|
sys/resource.h
|
|
|
|
sys/select.h
|
|
|
|
sys/socket.h
|
|
|
|
sys/stat.h
|
|
|
|
sys/statfs.h
|
|
|
|
sys/statvfs.h
|
|
|
|
sys/vfs.h
|
|
|
|
sys/sysexits.h
|
|
|
|
sys/uio.h
|
|
|
|
sys/wait.h
|
|
|
|
sys/loadavg.h
|
|
|
|
unistd.h
|
|
|
|
unix.h
|
|
|
|
utime.h
|
|
|
|
sys/utsname.h
|
|
|
|
sys/ipc.h
|
|
|
|
dlfcn.h
|
|
|
|
tmmintrin.h
|
|
|
|
nmmintrin.h
|
|
|
|
wmmintrin.h
|
|
|
|
immintrin.h
|
|
|
|
]),,, [dnl
|
2003-08-21 14:24:17 +08:00
|
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
|
|
#include <sys/param.h>
|
|
|
|
#endif
|
1. PHP_CHECK_FUNC(func, lib1, lib2, ..., libn) searches for
func and __func using LIBS, and if unsuccessful, searches
each specified lib. Defines HAVE_FUNC, if found. If func/__func is
found in library foo, HAVE_LIBFOO is defined.
(Jani, me)
2. Autoconf 2.5x is more pedantic regarding locating header files.
We include the proper header files now in the check. (me)
3. The nsl/bind/socket/etc checks have been rewritten using PHP_CHECK_FUNC.
This ensures that no extra library is used, if the symbol is
available in libc which avoids issues on BSD/OS, OpenBSD and others.
(Jani)
2002-07-05 05:07:08 +08:00
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
|
|
#include <sys/types.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_TIME_H
|
|
|
|
#include <sys/time.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_NETINET_IN_H
|
|
|
|
#include <netinet/in.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
|
|
#include <arpa/nameser.h>
|
|
|
|
#endif
|
|
|
|
])
|
1999-04-17 08:37:12 +08:00
|
|
|
|
2002-12-10 02:29:07 +08:00
|
|
|
PHP_FOPENCOOKIE
|
2003-03-17 21:40:45 +08:00
|
|
|
PHP_BROKEN_GETCWD
|
2024-07-05 16:37:49 +08:00
|
|
|
AS_VAR_IF([GCC], [yes], [PHP_BROKEN_GCC_STRLEN_OPT])
|
2002-01-27 07:57:17 +08:00
|
|
|
|
Check major, minor and makedev with Autoconf's AC_HEADER_MAJOR (#13706)
The non-standard major(), minor(), and makedev() can be defined as
macros. These are usually used together with the Autoconf macro
AC_HEADER_MAJOR, which defines the MAJOR_IN_MKDEV if sys/mkdev.h is
available, or MAJOR_IN_SYSMACROS if sys/sysmacros.h is available.
On Solaris/illumos they are in the sys/mkdev.h header (macro defined to
libc implementation) and in sys/sysmacros.h (macro defined with binary
operators and bits shifting). On systems with musl and glibc 2.28 or
later they are defined in sys/sysmacros.h, in glibc 2.27 and earlier
they were in sys/types.h. On BSD-based systems and macOS they are in the
sys/types.h.
Autoconf 2.70 has fixed the AC_HEADER_MAJOR macro, so it detects the
headers properly due to glibc 2.25 throwing deprecation warnings when
using the macros from sys/types.h. With Autoconf 2.69 and earlier the
ac_cv_header_sys_types_h_makedev cache variable can skip the
improper sys/types.h check in the macro.
This change syncs the usage within the ext/fileinfo/libmagic bundled
library and ext/posix.
When sys/mkdev.h header is available, code includes that, otherwise
it conditionally includes the sys/sysmacros.h. The ext/posix has
additional check whether linker sees the makedev, otherwise it checks
if makedev is declared within the given set of headers accoring to the
AC_HEADER_MAJOR logic. Previously the AC_CHECK_FUNCS didn't detect it.
2024-03-16 04:18:05 +08:00
|
|
|
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
|
|
|
|
|
1999-04-17 08:37:12 +08:00
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
1999-04-17 08:37:12 +08:00
|
|
|
AC_STRUCT_TIMEZONE
|
|
|
|
|
2005-02-25 02:11:36 +08:00
|
|
|
PHP_MISSING_TIME_R_DECL
|
2019-07-18 18:11:19 +08:00
|
|
|
|
2024-02-16 02:17:01 +08:00
|
|
|
AC_CHECK_TYPES([struct flock],,,[#include <fcntl.h>])
|
2024-07-27 17:22:28 +08:00
|
|
|
AC_CHECK_TYPES([socklen_t], [], [], [
|
2019-07-18 18:11:19 +08:00
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
|
|
# include <sys/types.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
|
|
# include <sys/socket.h>
|
|
|
|
#endif
|
|
|
|
])
|
1999-04-25 04:43:58 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl These are defined elsewhere than stdio.h.
|
2024-08-10 22:01:22 +08:00
|
|
|
PHP_CHECK_SIZEOF([intmax_t], [0])
|
|
|
|
PHP_CHECK_SIZEOF([ssize_t], [8])
|
|
|
|
PHP_CHECK_SIZEOF([ptrdiff_t], [8])
|
2007-06-27 22:40:08 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check stdint types (must be after header check).
|
2013-08-07 04:45:35 +08:00
|
|
|
PHP_CHECK_STDINT_TYPES
|
|
|
|
|
2024-07-09 03:25:16 +08:00
|
|
|
dnl Check GNU C builtins.
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_clz])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_clzl])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_clzll])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_cpu_init])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_cpu_supports])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_ctzl])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_ctzll])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_expect])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_frame_address])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_saddl_overflow])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_saddll_overflow])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_smull_overflow])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_smulll_overflow])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_ssubl_overflow])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_ssubll_overflow])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_unreachable])
|
|
|
|
PHP_CHECK_BUILTIN([__builtin_usub_overflow])
|
|
|
|
|
2023-02-13 11:30:47 +08:00
|
|
|
dnl Check AVX512
|
|
|
|
PHP_CHECK_AVX512_SUPPORTS
|
|
|
|
dnl Check AVX512 VBMI
|
|
|
|
PHP_CHECK_AVX512_VBMI_SUPPORTS
|
2015-03-21 01:58:58 +08:00
|
|
|
|
2020-06-27 21:01:06 +08:00
|
|
|
dnl Check for __alignof__ support in the compiler
|
2024-07-04 03:57:51 +08:00
|
|
|
AC_CACHE_CHECK([whether the compiler supports __alignof__],
|
|
|
|
[php_cv_have_alignof],
|
|
|
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
|
2020-06-27 21:01:06 +08:00
|
|
|
int align = __alignof__(int);
|
2024-05-19 00:28:20 +08:00
|
|
|
(void)align;
|
2024-07-04 03:57:51 +08:00
|
|
|
])],
|
|
|
|
[php_cv_have_alignof=yes],
|
|
|
|
[php_cv_have_alignof=no])])
|
|
|
|
AS_VAR_IF([php_cv_have_alignof], [yes],
|
|
|
|
[AC_DEFINE([HAVE_ALIGNOF], [1],
|
|
|
|
[Define to 1 if the compiler supports '__alignof__'.])])
|
2020-06-27 21:01:06 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check for structure members.
|
2019-03-03 09:54:03 +08:00
|
|
|
AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include <time.h>])
|
2018-07-29 19:12:33 +08:00
|
|
|
AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev])
|
2019-07-13 20:39:29 +08:00
|
|
|
dnl AC_STRUCT_ST_BLOCKS will screw QNX because fileblocks.o does not exist.
|
2024-08-30 06:40:49 +08:00
|
|
|
if test "$(uname -s 2>/dev/null)" != "QNX"; then
|
2002-04-24 06:45:51 +08:00
|
|
|
AC_STRUCT_ST_BLOCKS
|
1999-04-17 08:37:12 +08:00
|
|
|
fi
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Checks for types.
|
1999-04-17 08:37:12 +08:00
|
|
|
AC_TYPE_UID_T
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Checks for sockaddr_storage and sockaddr.sa_len.
|
2024-02-16 20:29:20 +08:00
|
|
|
AC_CHECK_TYPES([struct sockaddr_storage],,,[#include <sys/socket.h>])
|
|
|
|
AC_CHECK_MEMBERS([struct sockaddr.sa_len],,,[#include <sys/socket.h>])
|
2002-10-29 22:57:12 +08:00
|
|
|
|
2018-06-28 21:26:45 +08:00
|
|
|
dnl Checks for GCC function attributes on all systems except ones without glibc
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Fix for these systems is already included in GCC 7, but not on GCC 6.
|
2019-01-02 19:59:22 +08:00
|
|
|
dnl
|
|
|
|
dnl At least some versions of FreeBSD seem to have buggy ifunc support, see
|
2023-09-24 02:42:24 +08:00
|
|
|
dnl bug #77284. Conservatively don't use ifuncs on FreeBSD prior to version 12.
|
|
|
|
AS_CASE([$host_alias], [*-*-*android*|*-*-*uclibc*|*-*-*musl*|*openbsd*], [true], [
|
2024-08-30 06:40:49 +08:00
|
|
|
if test "$(uname -s 2>/dev/null)" != "FreeBSD" || test "$(uname -U 2>/dev/null)" -ge 1200000; then
|
2023-09-24 02:42:24 +08:00
|
|
|
AX_GCC_FUNC_ATTRIBUTE([ifunc])
|
|
|
|
AX_GCC_FUNC_ATTRIBUTE([target])
|
|
|
|
fi
|
2018-06-28 21:26:45 +08:00
|
|
|
])
|
2018-01-15 21:01:27 +08:00
|
|
|
|
2024-05-19 18:18:59 +08:00
|
|
|
dnl Check for __attribute__ ((__aligned__)) support in the compiler.
|
|
|
|
PHP_CHECK_VARIABLE_ATTRIBUTE([aligned])
|
|
|
|
|
1999-04-17 08:37:12 +08:00
|
|
|
dnl Checks for library functions.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2024-06-29 04:40:24 +08:00
|
|
|
AC_CHECK_FUNCS(m4_normalize([
|
|
|
|
alphasort
|
|
|
|
asctime_r
|
|
|
|
asprintf
|
|
|
|
chroot
|
|
|
|
ctime_r
|
|
|
|
explicit_memset
|
|
|
|
fdatasync
|
|
|
|
flock
|
|
|
|
ftok
|
|
|
|
funopen
|
|
|
|
gai_strerror
|
|
|
|
getcwd
|
|
|
|
getgrnam_r
|
|
|
|
gethostname
|
|
|
|
getloadavg
|
|
|
|
getlogin
|
|
|
|
getprotobyname
|
|
|
|
getprotobynumber
|
|
|
|
getpwnam_r
|
|
|
|
getpwuid_r
|
|
|
|
getrusage
|
|
|
|
getservbyname
|
|
|
|
getservbyport
|
|
|
|
gettimeofday
|
|
|
|
getwd
|
|
|
|
glob
|
|
|
|
gmtime_r
|
|
|
|
lchown
|
|
|
|
localtime_r
|
|
|
|
memcntl
|
|
|
|
memfd_create
|
|
|
|
memmem
|
|
|
|
mempcpy
|
|
|
|
memrchr
|
|
|
|
mkstemp
|
|
|
|
mmap
|
|
|
|
nice
|
|
|
|
nl_langinfo
|
|
|
|
poll
|
|
|
|
pthread_jit_write_protect_np
|
|
|
|
putenv
|
|
|
|
scandir
|
|
|
|
setenv
|
|
|
|
setitimer
|
|
|
|
shutdown
|
|
|
|
sigprocmask
|
|
|
|
statfs
|
|
|
|
statvfs
|
|
|
|
std_syslog
|
|
|
|
strcasecmp
|
|
|
|
strnlen
|
|
|
|
strptime
|
|
|
|
strtok_r
|
|
|
|
symlink
|
|
|
|
tzset
|
|
|
|
unsetenv
|
|
|
|
usleep
|
|
|
|
utime
|
|
|
|
vasprintf
|
|
|
|
]))
|
1999-09-21 22:51:24 +08:00
|
|
|
|
2024-08-04 13:36:37 +08:00
|
|
|
AC_CHECK_FUNC([inet_ntop],, [AC_MSG_FAILURE([Required inet_ntop not found.])])
|
|
|
|
AC_CHECK_FUNC([inet_pton],, [AC_MSG_FAILURE([Required inet_pton not found.])])
|
2023-11-18 00:01:46 +08:00
|
|
|
|
2023-08-06 00:03:46 +08:00
|
|
|
dnl Check for strerror_r, and if its a POSIX-compatible or a GNU specific version.
|
|
|
|
AC_FUNC_STRERROR_R
|
|
|
|
|
2024-02-21 16:04:37 +08:00
|
|
|
dnl Check for functions inside their belonging headers.
|
|
|
|
AC_CHECK_HEADER([sys/prctl.h], [AC_CHECK_FUNCS([prctl])])
|
|
|
|
AC_CHECK_HEADER([sys/procctl.h], [AC_CHECK_FUNCS([procctl])])
|
|
|
|
|
2019-04-24 02:37:31 +08:00
|
|
|
AX_FUNC_WHICH_GETHOSTBYNAME_R
|
|
|
|
|
2024-02-26 01:28:33 +08:00
|
|
|
dnl Some systems (Solaris 10) do not have nanosleep in libc.
|
|
|
|
AC_CHECK_FUNCS([nanosleep],,
|
|
|
|
[AC_SEARCH_LIBS([nanosleep], [rt], [AC_DEFINE([HAVE_NANOSLEEP], [1])])])
|
2009-12-02 16:54:50 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check for getaddrinfo, should be a better way, but... Also check for working
|
|
|
|
dnl getaddrinfo.
|
2024-07-04 03:54:13 +08:00
|
|
|
AC_CACHE_CHECK([for getaddrinfo], [php_cv_func_getaddrinfo],
|
|
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <netdb.h>],
|
|
|
|
[struct addrinfo *g,h;g=&h;getaddrinfo("","",g,&g);])],
|
|
|
|
[AC_RUN_IFELSE([AC_LANG_SOURCE([
|
2004-03-13 05:45:55 +08:00
|
|
|
#include <netdb.h>
|
|
|
|
#include <sys/types.h>
|
2019-09-10 03:29:03 +08:00
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
2004-09-17 20:44:56 +08:00
|
|
|
#ifndef AF_INET
|
|
|
|
# include <sys/socket.h>
|
|
|
|
#endif
|
2004-03-13 05:45:55 +08:00
|
|
|
int main(void) {
|
|
|
|
struct addrinfo *ai, *pai, hints;
|
|
|
|
|
|
|
|
memset(&hints, 0, sizeof(hints));
|
|
|
|
hints.ai_flags = AI_NUMERICHOST;
|
|
|
|
|
2004-09-26 09:10:05 +08:00
|
|
|
if (getaddrinfo("127.0.0.1", 0, &hints, &ai) < 0) {
|
2020-10-05 16:43:58 +08:00
|
|
|
return 1;
|
2004-03-13 05:45:55 +08:00
|
|
|
}
|
|
|
|
|
2004-09-26 09:10:05 +08:00
|
|
|
if (ai == 0) {
|
2020-10-05 16:43:58 +08:00
|
|
|
return 1;
|
2004-03-13 05:45:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
pai = ai;
|
2018-07-29 09:43:45 +08:00
|
|
|
|
2004-03-13 05:45:55 +08:00
|
|
|
while (pai) {
|
|
|
|
if (pai->ai_family != AF_INET) {
|
|
|
|
/* 127.0.0.1/NUMERICHOST should only resolve ONE way */
|
2020-10-05 16:43:58 +08:00
|
|
|
return 1;
|
2004-03-13 05:45:55 +08:00
|
|
|
}
|
|
|
|
if (pai->ai_addr->sa_family != AF_INET) {
|
|
|
|
/* 127.0.0.1/NUMERICHOST should only resolve ONE way */
|
2020-10-05 16:43:58 +08:00
|
|
|
return 1;
|
2004-03-13 05:45:55 +08:00
|
|
|
}
|
|
|
|
pai = pai->ai_next;
|
|
|
|
}
|
|
|
|
freeaddrinfo(ai);
|
2020-10-05 16:43:58 +08:00
|
|
|
return 0;
|
2004-03-13 05:45:55 +08:00
|
|
|
}
|
2021-04-16 22:28:54 +08:00
|
|
|
])],
|
2024-07-04 03:54:13 +08:00
|
|
|
[php_cv_func_getaddrinfo=yes],
|
|
|
|
[php_cv_func_getaddrinfo=no],
|
|
|
|
[AS_CASE([$host_alias],
|
|
|
|
[*linux*|*midipix], [php_cv_func_getaddrinfo=yes],
|
|
|
|
[php_cv_func_getaddrinfo=no])])],
|
|
|
|
[php_cv_func_getaddrinfo=no])])
|
|
|
|
AS_VAR_IF([php_cv_func_getaddrinfo], [yes],
|
|
|
|
[AC_DEFINE([HAVE_GETADDRINFO], [1],
|
|
|
|
[Define to 1 if you have the 'getaddrinfo' function.])])
|
2000-09-09 20:09:43 +08:00
|
|
|
|
2022-10-22 19:30:32 +08:00
|
|
|
dnl on FreeBSD, copy_file_range() works only with the undocumented flag 0x01000000;
|
|
|
|
dnl until the problem is fixed properly, copy_file_range() is used only on Linux
|
2024-07-04 03:57:51 +08:00
|
|
|
AC_CACHE_CHECK([for copy_file_range], [php_cv_func_copy_file_range],
|
2024-09-13 02:56:56 +08:00
|
|
|
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([
|
|
|
|
#ifndef __linux__
|
|
|
|
# error "unsupported platform"
|
|
|
|
#endif
|
2022-10-02 19:55:00 +08:00
|
|
|
#ifndef _GNU_SOURCE
|
2024-09-13 02:56:56 +08:00
|
|
|
# define _GNU_SOURCE
|
2022-10-02 19:55:00 +08:00
|
|
|
#endif
|
|
|
|
#include <linux/version.h>
|
|
|
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,3,0)
|
2024-09-13 02:56:56 +08:00
|
|
|
# error "kernel too old"
|
2022-10-02 19:55:00 +08:00
|
|
|
#endif
|
2024-09-13 02:56:56 +08:00
|
|
|
#include <unistd.h>
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
(void)copy_file_range(-1, 0, -1, 0, 0, 0);
|
|
|
|
return 0;
|
2022-10-02 19:55:00 +08:00
|
|
|
}
|
2024-07-04 03:57:51 +08:00
|
|
|
])],
|
|
|
|
[php_cv_func_copy_file_range=yes],
|
|
|
|
[php_cv_func_copy_file_range=no])
|
2022-10-02 19:55:00 +08:00
|
|
|
])
|
2024-07-04 03:57:51 +08:00
|
|
|
AS_VAR_IF([php_cv_func_copy_file_range], [yes],
|
|
|
|
[AC_DEFINE([HAVE_COPY_FILE_RANGE], [1],
|
|
|
|
[Define to 1 if you have the 'copy_file_range' function.])])
|
2022-10-02 19:55:00 +08:00
|
|
|
|
2024-07-27 17:22:28 +08:00
|
|
|
AC_REPLACE_FUNCS([strlcat strlcpy explicit_bzero getopt])
|
1999-04-17 08:37:12 +08:00
|
|
|
AC_FUNC_ALLOCA
|
2000-03-04 00:10:38 +08:00
|
|
|
PHP_TIME_R_TYPE
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2024-07-04 03:57:51 +08:00
|
|
|
AC_CACHE_CHECK([for aarch64 CRC32 API], [php_cv_func___crc32d],
|
2024-08-26 00:00:29 +08:00
|
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([
|
|
|
|
#include <arm_acle.h>
|
|
|
|
# if defined(__GNUC__)
|
|
|
|
# if!defined(__clang__)
|
|
|
|
# pragma GCC push_options
|
|
|
|
# pragma GCC target ("+nothing+crc")
|
|
|
|
# elif defined(__APPLE__)
|
|
|
|
# pragma clang attribute push(__attribute__((target("crc"))), apply_to=function)
|
|
|
|
# else
|
|
|
|
# pragma clang attribute push(__attribute__((target("+nothing+crc"))), apply_to=function)
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
], [__crc32d(0, 0);])],
|
2024-07-04 03:57:51 +08:00
|
|
|
[php_cv_func___crc32d=yes],
|
|
|
|
[php_cv_func___crc32d=no])])
|
|
|
|
AS_VAR_IF([php_cv_func___crc32d], [yes],
|
|
|
|
[AC_DEFINE([HAVE_AARCH64_CRC32], [1],
|
|
|
|
[Define to 1 when aarch64 CRC32 API is available.])])
|
2020-05-13 14:22:29 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check for asm goto support.
|
2024-07-04 03:57:51 +08:00
|
|
|
AC_CACHE_CHECK([for asm goto], [php_cv_have__asm_goto],
|
|
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [
|
2021-04-16 22:28:54 +08:00
|
|
|
#if defined(__x86_64__) || defined(__i386__)
|
2024-07-04 03:57:51 +08:00
|
|
|
__asm__ goto("jmp %l0\n" :::: end);
|
2021-04-16 22:28:54 +08:00
|
|
|
#elif defined(__aarch64__)
|
2024-07-04 03:57:51 +08:00
|
|
|
__asm__ goto("b %l0\n" :::: end);
|
2021-04-16 22:28:54 +08:00
|
|
|
#endif
|
|
|
|
end:
|
2024-07-04 03:57:51 +08:00
|
|
|
return 0;
|
|
|
|
])],
|
|
|
|
[php_cv_have__asm_goto=yes],
|
|
|
|
[php_cv_have__asm_goto=no])])
|
|
|
|
AS_VAR_IF([php_cv_have__asm_goto], [yes],
|
|
|
|
[AC_DEFINE([HAVE_ASM_GOTO], [1],
|
|
|
|
[Define to 1 if asm goto support is available.])])
|
2017-11-29 04:37:53 +08:00
|
|
|
|
2024-07-01 06:29:44 +08:00
|
|
|
dnl Check Valgrind support.
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_WITH([valgrind],
|
2024-07-01 06:29:44 +08:00
|
|
|
[whether to enable Valgrind support],
|
2019-05-23 21:01:04 +08:00
|
|
|
[AS_HELP_STRING([--with-valgrind],
|
2024-07-01 06:29:44 +08:00
|
|
|
[Enable Valgrind support])],
|
2023-03-26 01:10:14 +08:00
|
|
|
[no],
|
2019-03-03 23:44:16 +08:00
|
|
|
[no])
|
2018-02-14 21:46:17 +08:00
|
|
|
|
2024-07-15 01:53:16 +08:00
|
|
|
AS_VAR_IF([PHP_VALGRIND], [no],, [
|
|
|
|
PKG_CHECK_MODULES([VALGRIND], [valgrind],
|
|
|
|
[PHP_EVAL_INCLINE([$VALGRIND_CFLAGS])
|
|
|
|
AC_DEFINE([HAVE_VALGRIND], [1],
|
|
|
|
[Define to 1 if Valgrind is enabled and supported.])])
|
|
|
|
save_CFLAGS=$CFLAGS
|
|
|
|
CFLAGS="$CFLAGS $VALGRIND_CFLAGS"
|
|
|
|
AC_CHECK_HEADERS([valgrind/cachegrind.h])
|
|
|
|
CFLAGS=$save_CFLAGS
|
|
|
|
])
|
2017-05-31 21:16:56 +08:00
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl General settings.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([General settings])
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2001-12-01 08:59:43 +08:00
|
|
|
PHP_HELP_SEPARATOR([General settings:])
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([gcov],
|
|
|
|
[whether to include gcov symbols],
|
|
|
|
[AS_HELP_STRING([--enable-gcov],
|
2019-10-11 22:44:31 +08:00
|
|
|
[Enable GCOV code coverage - FOR DEVELOPERS ONLY!!])],
|
2019-03-03 23:44:16 +08:00
|
|
|
[no],
|
|
|
|
[no])
|
2005-11-30 07:20:01 +08:00
|
|
|
|
2024-09-03 01:00:58 +08:00
|
|
|
AS_VAR_IF([PHP_GCOV], [yes], [
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([GCC], [yes],,
|
|
|
|
[AC_MSG_ERROR([GNU C compatible compiler is required for --enable-gcov])])
|
2018-07-29 09:43:45 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check if ccache is being used.
|
2024-08-30 06:40:49 +08:00
|
|
|
AS_CASE([$($php_shtool path $CC)],
|
|
|
|
[*ccache*], [gcc_ccache=yes],
|
|
|
|
[gcc_ccache=no])
|
2005-11-30 23:01:34 +08:00
|
|
|
|
|
|
|
if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
|
2024-08-13 16:33:17 +08:00
|
|
|
AC_MSG_ERROR(m4_text_wrap([
|
|
|
|
ccache must be disabled when --enable-gcov option is used. You can disable
|
|
|
|
ccache by setting environment variable CCACHE_DISABLE=1.
|
|
|
|
]))
|
2005-11-30 07:20:01 +08:00
|
|
|
fi
|
2018-07-29 09:43:45 +08:00
|
|
|
|
2024-08-02 07:14:48 +08:00
|
|
|
AC_DEFINE([HAVE_GCOV], [1], [Define to 1 if GCOV code coverage is enabled.])
|
2024-07-03 19:15:13 +08:00
|
|
|
PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/build/Makefile.gcov], [$abs_srcdir])
|
2005-11-30 07:20:01 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Remove all optimization flags from CFLAGS.
|
2024-09-11 00:40:49 +08:00
|
|
|
PHP_REMOVE_OPTIMIZATION_FLAGS
|
2005-11-30 07:20:01 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Add the special gcc flags.
|
2005-11-30 07:20:01 +08:00
|
|
|
CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
|
2006-09-25 19:05:49 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS -O0 -fprofile-arcs -ftest-coverage"
|
2024-09-03 01:00:58 +08:00
|
|
|
])
|
2005-11-30 07:20:01 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([debug],
|
|
|
|
[whether to include debugging symbols],
|
|
|
|
[AS_HELP_STRING([--enable-debug],
|
|
|
|
[Compile with debugging symbols])],
|
|
|
|
[no],
|
|
|
|
[no])
|
1999-12-17 22:28:35 +08:00
|
|
|
|
2024-08-05 03:59:58 +08:00
|
|
|
AS_VAR_IF([PHP_DEBUG], [yes], [
|
1999-07-18 00:43:11 +08:00
|
|
|
PHP_DEBUG=1
|
1999-12-17 22:28:35 +08:00
|
|
|
ZEND_DEBUG=yes
|
2024-10-28 01:20:59 +08:00
|
|
|
CFLAGS="$CFLAGS -UNDEBUG"
|
|
|
|
CXXFLAGS="$CXXFLAGS -UNDEBUG"
|
2024-09-11 00:40:49 +08:00
|
|
|
PHP_REMOVE_OPTIMIZATION_FLAGS
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Add -O0 only if GCC or ICC is used.
|
2006-12-05 02:28:49 +08:00
|
|
|
if test "$GCC" = "yes" || test "$ICC" = "yes"; then
|
2010-11-02 17:58:08 +08:00
|
|
|
CFLAGS="$CFLAGS -O0"
|
2009-09-01 23:13:02 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS -g -O0"
|
2006-12-05 02:28:49 +08:00
|
|
|
fi
|
2008-11-07 04:42:11 +08:00
|
|
|
if test "$SUNCC" = "yes"; then
|
2008-12-04 03:53:45 +08:00
|
|
|
if test -n "$auto_cflags"; then
|
2008-11-07 04:42:11 +08:00
|
|
|
CFLAGS="-g"
|
|
|
|
CXXFLAGS="-g"
|
|
|
|
else
|
|
|
|
CFLAGS="$CFLAGS -g"
|
|
|
|
CXXFLAGS="$CFLAGS -g"
|
|
|
|
fi
|
|
|
|
fi
|
2024-08-05 03:59:58 +08:00
|
|
|
], [
|
1999-12-17 22:28:35 +08:00
|
|
|
PHP_DEBUG=0
|
|
|
|
ZEND_DEBUG=no
|
2024-10-28 01:20:59 +08:00
|
|
|
CFLAGS="$CFLAGS -DNDEBUG"
|
|
|
|
CXXFLAGS="$CXXFLAGS -DNDEBUG"
|
2024-08-05 03:59:58 +08:00
|
|
|
])
|
1999-12-17 22:28:35 +08:00
|
|
|
|
2019-09-13 21:15:46 +08:00
|
|
|
PHP_ARG_ENABLE([debug-assertions],
|
|
|
|
[whether to enable debug assertions in release mode],
|
|
|
|
[AS_HELP_STRING([--enable-debug-assertions],
|
|
|
|
[Compile with debug assertions even in release mode])],
|
|
|
|
[no],
|
|
|
|
[no])
|
|
|
|
|
2024-08-05 03:59:58 +08:00
|
|
|
AS_VAR_IF([PHP_DEBUG_ASSERTIONS], [yes], [
|
2019-09-13 21:15:46 +08:00
|
|
|
PHP_DEBUG=1
|
|
|
|
ZEND_DEBUG=yes
|
2024-10-28 01:20:59 +08:00
|
|
|
CFLAGS="$CFLAGS -UNDEBUG"
|
|
|
|
CXXFLAGS="$CXXFLAGS -UNDEBUG"
|
2024-08-05 03:59:58 +08:00
|
|
|
])
|
2019-09-13 21:15:46 +08:00
|
|
|
|
2020-11-24 22:52:41 +08:00
|
|
|
AC_ARG_ENABLE([zts],
|
|
|
|
[AS_HELP_STRING([--enable-zts],
|
|
|
|
[Enable thread safety])],
|
|
|
|
[ZEND_ZTS=$enableval],
|
|
|
|
[ZEND_ZTS=no])
|
|
|
|
|
2024-08-06 04:30:10 +08:00
|
|
|
AS_VAR_IF([ZEND_ZTS], [yes], [PHP_THREAD_SAFETY=yes], [PHP_THREAD_SAFETY=no])
|
2020-11-24 22:52:41 +08:00
|
|
|
|
2024-07-08 04:44:44 +08:00
|
|
|
AS_VAR_IF([PHP_THREAD_SAFETY], [yes], [
|
|
|
|
AS_VAR_IF([pthreads_working], [yes], [],
|
2024-08-13 16:33:17 +08:00
|
|
|
[AC_MSG_FAILURE(m4_text_wrap([
|
2024-07-08 04:44:44 +08:00
|
|
|
Unable to verify system support for POSIX Threads, which are required for
|
|
|
|
PHP thread safety (ZTS) build.
|
2024-07-19 21:20:04 +08:00
|
|
|
]))])
|
2024-07-08 04:44:44 +08:00
|
|
|
|
|
|
|
AC_MSG_CHECKING([for POSIX threads])
|
|
|
|
AC_MSG_RESULT([yes])
|
|
|
|
])
|
|
|
|
|
2019-03-11 20:38:58 +08:00
|
|
|
PHP_ARG_ENABLE([rtld-now],
|
|
|
|
[whether to dlopen extensions with RTLD_NOW instead of RTLD_LAZY],
|
|
|
|
[AS_HELP_STRING([--enable-rtld-now],
|
|
|
|
[Use dlopen with RTLD_NOW instead of RTLD_LAZY])],
|
|
|
|
[no],
|
|
|
|
[no])
|
|
|
|
|
2024-08-02 07:14:48 +08:00
|
|
|
AS_VAR_IF([PHP_RTLD_NOW], [yes],
|
|
|
|
[AC_DEFINE([PHP_USE_RTLD_NOW], [1],
|
|
|
|
[Define to 1 if 'dlopen()' uses the 'RTLD_NOW' mode flag instead of
|
|
|
|
'RTLD_LAZY'.])])
|
2019-03-11 20:38:58 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_WITH([layout],
|
|
|
|
[layout of installed files],
|
|
|
|
[AS_HELP_STRING([--with-layout=TYPE],
|
|
|
|
[Set how installed files will be laid out. Type can be either PHP or GNU [PHP]])],
|
|
|
|
[PHP],
|
|
|
|
[no])
|
2001-05-07 07:11:58 +08:00
|
|
|
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_CASE([$PHP_LAYOUT], [GNU], [oldstyleextdir=no], [oldstyleextdir=yes])
|
2002-02-05 09:27:00 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_WITH([config-file-path],
|
|
|
|
[path to configuration file],
|
|
|
|
[AS_HELP_STRING([--with-config-file-path=PATH],
|
|
|
|
[Set the path in which to look for php.ini [PREFIX/lib]])],
|
|
|
|
[DEFAULT],
|
|
|
|
[no])
|
2001-05-07 07:11:58 +08:00
|
|
|
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_CONFIG_FILE_PATH], [DEFAULT],
|
|
|
|
[AS_CASE([$PHP_LAYOUT],
|
|
|
|
[GNU], [PHP_CONFIG_FILE_PATH=$sysconfdir],
|
|
|
|
[PHP_CONFIG_FILE_PATH=$libdir])])
|
2001-05-07 07:11:58 +08:00
|
|
|
|
2007-07-12 07:20:37 +08:00
|
|
|
AC_MSG_CHECKING([where to scan for configuration files])
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_WITH([config-file-scan-dir],,
|
|
|
|
[AS_HELP_STRING([--with-config-file-scan-dir=PATH],
|
|
|
|
[Set the path where to scan for configuration files])],
|
|
|
|
[DEFAULT],
|
|
|
|
[no])
|
|
|
|
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_CONFIG_FILE_SCAN_DIR], [DEFAULT], [PHP_CONFIG_FILE_SCAN_DIR=])
|
2007-07-12 07:20:37 +08:00
|
|
|
AC_MSG_RESULT([$PHP_CONFIG_FILE_SCAN_DIR])
|
2002-10-04 12:47:35 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([sigchild],
|
|
|
|
[whether to enable PHP's own SIGCHLD handler],
|
|
|
|
[AS_HELP_STRING([--enable-sigchild],
|
|
|
|
[Enable PHP's own SIGCHLD handler])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2000-05-19 03:45:34 +08:00
|
|
|
|
2024-08-02 07:14:48 +08:00
|
|
|
AH_TEMPLATE([PHP_SIGCHILD],
|
|
|
|
[Define to 1 if PHP uses its own SIGCHLD handler, and to 0 if not.])
|
|
|
|
AS_VAR_IF([PHP_SIGCHILD], [yes],
|
|
|
|
[AC_DEFINE([PHP_SIGCHILD], [1])],
|
|
|
|
[AC_DEFINE([PHP_SIGCHILD], [0])])
|
2000-05-19 03:45:34 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([libgcc],
|
|
|
|
[whether to explicitly link against libgcc],
|
|
|
|
[AS_HELP_STRING([--enable-libgcc],
|
|
|
|
[Enable explicitly linking against libgcc])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2000-03-30 23:00:30 +08:00
|
|
|
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_LIBGCC], [yes], [
|
2024-07-27 11:26:32 +08:00
|
|
|
PHP_LIBGCC_LIBPATH([gcc])
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([libgcc_libpath],,
|
|
|
|
[AC_MSG_ERROR([Cannot locate libgcc. Make sure that gcc is in your path])])
|
2024-07-27 05:26:55 +08:00
|
|
|
PHP_ADD_LIBPATH([$libgcc_libpath])
|
|
|
|
PHP_ADD_LIBRARY([gcc], [yes])
|
2024-08-11 04:13:50 +08:00
|
|
|
])
|
1999-09-26 17:05:56 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([short-tags],
|
|
|
|
[whether to enable short tags by default],
|
|
|
|
[AS_HELP_STRING([--disable-short-tags],
|
|
|
|
[Disable the short-form <? start tag by default])],
|
|
|
|
[yes],
|
|
|
|
[no])
|
1999-04-17 08:37:12 +08:00
|
|
|
|
2024-08-02 07:14:48 +08:00
|
|
|
AH_TEMPLATE([DEFAULT_SHORT_OPEN_TAG],
|
|
|
|
[Define to string "1" if PHP short open tags '<?' are enabled by default, and
|
|
|
|
to string "0" if they are not.])
|
|
|
|
AS_VAR_IF([PHP_SHORT_TAGS], [yes],
|
|
|
|
[AC_DEFINE([DEFAULT_SHORT_OPEN_TAG], ["1"])],
|
|
|
|
[AC_DEFINE([DEFAULT_SHORT_OPEN_TAG], ["0"])])
|
2000-06-08 14:14:58 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([dmalloc],
|
|
|
|
[whether to enable dmalloc],
|
|
|
|
[AS_HELP_STRING([--enable-dmalloc],
|
|
|
|
[Enable dmalloc])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2000-06-08 14:14:58 +08:00
|
|
|
|
2024-07-08 05:35:50 +08:00
|
|
|
AS_VAR_IF([PHP_DMALLOC], [yes],
|
|
|
|
[AC_CHECK_LIB([dmalloc], [dmalloc_error],
|
|
|
|
[PHP_ADD_LIBRARY([dmalloc])
|
|
|
|
AC_DEFINE([HAVE_DMALLOC], [1], [Define to 1 if you have dmalloc.])
|
|
|
|
AS_VAR_APPEND([CPPFLAGS], [" -DDMALLOC_FUNC_CHECK"])],
|
2024-08-04 13:36:37 +08:00
|
|
|
[AC_MSG_FAILURE([The dmalloc check failed. Cannot enable dmalloc.])])])
|
2000-06-08 14:14:58 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([ipv6],
|
|
|
|
[whether to enable IPv6 support],
|
|
|
|
[AS_HELP_STRING([--disable-ipv6],
|
|
|
|
[Disable IPv6 support])],
|
|
|
|
[yes],
|
|
|
|
[no])
|
2002-08-17 21:56:39 +08:00
|
|
|
|
2024-07-03 20:51:50 +08:00
|
|
|
AS_VAR_IF([PHP_IPV6], [yes],
|
|
|
|
[AC_CACHE_CHECK([for IPv6 support], [php_cv_have_ipv6],
|
|
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <netinet/in.h>
|
|
|
|
], [[
|
|
|
|
struct sockaddr_in6 s;
|
|
|
|
struct in6_addr t = in6addr_any;
|
|
|
|
int i = AF_INET6;
|
|
|
|
(void)s;
|
|
|
|
t.s6_addr[0] = 0;
|
|
|
|
(void)i;
|
|
|
|
]])],
|
|
|
|
[php_cv_have_ipv6=yes],
|
|
|
|
[php_cv_have_ipv6=no])])
|
|
|
|
])
|
|
|
|
AS_VAR_IF([php_cv_have_ipv6], [yes],
|
|
|
|
[AC_DEFINE([HAVE_IPV6], [1],
|
|
|
|
[Define to 1 if IPv6 is enabled and supported.])])
|
2002-08-17 21:56:39 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl DTRACE checks. Note: this has to be done after SAPI configuration.
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([dtrace],
|
|
|
|
[whether to enable DTrace support],
|
|
|
|
[AS_HELP_STRING([--enable-dtrace],
|
|
|
|
[Enable DTrace support])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2010-04-24 21:32:30 +08:00
|
|
|
|
2024-07-30 13:47:11 +08:00
|
|
|
AS_VAR_IF([PHP_DTRACE], [yes], [
|
|
|
|
PHP_INIT_DTRACE([Zend/zend_dtrace.d], [Zend/zend_dtrace_gen.h], [
|
2024-07-27 05:30:20 +08:00
|
|
|
main/main.c
|
|
|
|
Zend/zend_API.c
|
|
|
|
Zend/zend_dtrace.c
|
|
|
|
Zend/zend_exceptions.c
|
|
|
|
Zend/zend_execute.c
|
|
|
|
Zend/zend.c
|
2024-07-30 13:47:11 +08:00
|
|
|
])
|
|
|
|
AC_DEFINE([HAVE_DTRACE], [1], [Define to 1 if DTrace support is enabled.])
|
|
|
|
])
|
2010-04-24 21:32:30 +08:00
|
|
|
|
2004-09-17 20:44:56 +08:00
|
|
|
AC_MSG_CHECKING([how big to make fd sets])
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_ENABLE([fd-setsize],,
|
|
|
|
[AS_HELP_STRING([--enable-fd-setsize],
|
|
|
|
[Set size of descriptor sets])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2007-07-12 07:20:37 +08:00
|
|
|
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_FD_SETSIZE], [no], [AC_MSG_RESULT([using system default])], [
|
2007-07-12 19:33:37 +08:00
|
|
|
if test "0$PHP_FD_SETSIZE" -gt 0 2>/dev/null; then
|
|
|
|
CPPFLAGS="$CPPFLAGS -DFD_SETSIZE=$PHP_FD_SETSIZE"
|
|
|
|
AC_MSG_RESULT([using $PHP_FD_SETSIZE])
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([Invalid value passed to --enable-fd-setsize!])
|
|
|
|
fi
|
2024-08-11 04:13:50 +08:00
|
|
|
])
|
2004-09-17 20:44:56 +08:00
|
|
|
|
2019-04-23 19:24:29 +08:00
|
|
|
PHP_ARG_ENABLE([werror],,
|
|
|
|
[AS_HELP_STRING([--enable-werror],
|
|
|
|
[Enable -Werror])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2020-05-20 21:21:01 +08:00
|
|
|
PHP_ARG_ENABLE([memory-sanitizer],,
|
|
|
|
[AS_HELP_STRING([--enable-memory-sanitizer],
|
|
|
|
[Enable memory sanitizer (clang only)])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2021-04-16 12:41:25 +08:00
|
|
|
PHP_ARG_ENABLE([address-sanitizer],,
|
|
|
|
[AS_HELP_STRING([--enable-address-sanitizer],
|
|
|
|
[Enable address sanitizer])],
|
|
|
|
[no],
|
|
|
|
[no])
|
|
|
|
PHP_ARG_ENABLE([undefined-sanitizer],,
|
|
|
|
[AS_HELP_STRING([--enable-undefined-sanitizer],
|
|
|
|
[Enable undefined sanitizer])],
|
|
|
|
[no],
|
|
|
|
[no])
|
2019-04-23 19:24:29 +08:00
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl Extension configuration.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2024-07-27 17:22:28 +08:00
|
|
|
PHP_HELP_SEPARATOR([[Extensions:
|
2001-12-01 08:59:43 +08:00
|
|
|
--with-EXTENSION=[shared[,PATH]]
|
2018-07-29 09:43:45 +08:00
|
|
|
|
2022-09-07 22:35:50 +08:00
|
|
|
NOTE: Not all extensions can be built as 'shared'.
|
2001-12-01 08:59:43 +08:00
|
|
|
|
|
|
|
Example: --with-foobar=shared,/usr/local/foobar/
|
|
|
|
|
|
|
|
o Builds the foobar extension as shared extension.
|
|
|
|
o foobar package install prefix is /usr/local/foobar/
|
2024-07-27 17:22:28 +08:00
|
|
|
]])
|
1999-04-17 10:01:20 +08:00
|
|
|
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([Configuring extensions])
|
2001-05-10 08:57:36 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check if all enabled by default extensions should be disabled.
|
2019-03-03 23:44:16 +08:00
|
|
|
AC_ARG_ENABLE([all],
|
|
|
|
[AS_HELP_STRING([--disable-all],
|
|
|
|
[Disable all extensions which are enabled by default])],
|
|
|
|
[PHP_ENABLE_ALL=$enableval])
|
2002-09-05 02:47:28 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Reading config stubs.
|
2003-01-28 18:59:12 +08:00
|
|
|
esyscmd(./build/config-stubs ext)
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Extensions post-config.
|
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2020-01-29 17:15:03 +08:00
|
|
|
dnl Align segments on huge page boundary
|
2024-06-03 21:22:15 +08:00
|
|
|
AS_CASE([$host_alias], [[i[3456]86-*-linux-* | x86_64-*-linux-*]],
|
|
|
|
[AC_CACHE_CHECK([linker support for -zcommon-page-size=2097152],
|
|
|
|
[php_cv_have_common_page_size], [
|
2020-01-29 17:15:03 +08:00
|
|
|
save_LDFLAGS=$LDFLAGS
|
|
|
|
LDFLAGS="$LDFLAGS -Wl,-zcommon-page-size=2097152 -Wl,-zmax-page-size=2097152"
|
2024-06-03 21:22:15 +08:00
|
|
|
AC_RUN_IFELSE([AC_LANG_PROGRAM()],
|
|
|
|
[php_cv_have_common_page_size=yes],
|
|
|
|
[php_cv_have_common_page_size=no],
|
|
|
|
[php_cv_have_common_page_size=no])
|
|
|
|
LDFLAGS=$save_LDFLAGS])
|
|
|
|
AS_VAR_IF([php_cv_have_common_page_size], [yes],
|
|
|
|
[EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM -Wl,-zcommon-page-size=2097152 -Wl,-zmax-page-size=2097152"],
|
|
|
|
[AC_CACHE_CHECK([linker support for -zmax-page-size=2097152],
|
|
|
|
[php_cv_have_max_page_size], [
|
|
|
|
save_LDFLAGS=$LDFLAGS
|
|
|
|
LDFLAGS="$LDFLAGS -Wl,-zmax-page-size=2097152"
|
|
|
|
AC_RUN_IFELSE([AC_LANG_PROGRAM()],
|
|
|
|
[php_cv_have_max_page_size=yes],
|
|
|
|
[php_cv_have_max_page_size=no],
|
|
|
|
[php_cv_have_max_page_size=no])
|
|
|
|
LDFLAGS=$save_LDFLAGS])
|
|
|
|
AS_VAR_IF([php_cv_have_max_page_size], [yes],
|
|
|
|
[EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM -Wl,-zmax-page-size=2097152"])
|
|
|
|
])
|
|
|
|
])
|
2020-01-29 17:15:03 +08:00
|
|
|
|
1999-10-04 23:18:26 +08:00
|
|
|
enable_shared=yes
|
|
|
|
enable_static=yes
|
|
|
|
|
2010-11-14 07:13:07 +08:00
|
|
|
case $php_sapi_module in
|
|
|
|
shared[)]
|
2019-09-17 20:43:00 +08:00
|
|
|
if test "$PHP_CGI" = "no" && test "$PHP_CLI" = "no" && test "$PHP_FPM" = "no" && test "$PHP_LITESPEED" = "no" && test "$PHP_PHPDBG" = "no"; then
|
|
|
|
enable_static=no
|
|
|
|
fi
|
2005-01-20 01:35:55 +08:00
|
|
|
case $with_pic in
|
2008-07-21 18:17:36 +08:00
|
|
|
yes)
|
|
|
|
standard_libtool_flag='-prefer-pic'
|
|
|
|
;;
|
|
|
|
no)
|
|
|
|
standard_libtool_flag='-prefer-non-pic'
|
|
|
|
;;
|
2005-01-20 01:35:55 +08:00
|
|
|
esac
|
2002-03-08 03:21:02 +08:00
|
|
|
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -avoid-version -module"
|
2008-07-21 18:17:36 +08:00
|
|
|
;;
|
2010-11-14 07:13:07 +08:00
|
|
|
*[)]
|
|
|
|
standard_libtool_flag='-prefer-non-pic -static'
|
|
|
|
if test -z "$PHP_MODULES" && test -z "$PHP_ZEND_EX"; then
|
|
|
|
enable_shared=no
|
|
|
|
fi
|
|
|
|
;;
|
1999-10-04 23:18:26 +08:00
|
|
|
esac
|
|
|
|
|
2002-02-04 04:00:27 +08:00
|
|
|
EXTRA_LIBS="$EXTRA_LIBS $DLIBS $LIBS"
|
2023-07-07 10:30:56 +08:00
|
|
|
unset LIBS
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2003-07-01 00:33:50 +08:00
|
|
|
dnl PEAR
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2003-07-01 00:33:50 +08:00
|
|
|
|
|
|
|
PHP_HELP_SEPARATOR([PEAR:])
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([Configuring PEAR])
|
2003-07-01 00:33:50 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl If CLI is disabled disable PEAR.
|
2024-07-02 18:38:09 +08:00
|
|
|
AS_VAR_IF([PHP_CLI], [no], [with_pear=no])
|
2005-02-07 20:48:11 +08:00
|
|
|
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_WITH([pear],
|
|
|
|
[whether to install PEAR],
|
|
|
|
[AS_HELP_STRING([[--with-pear[=DIR]]],
|
|
|
|
[Install PEAR in DIR [PREFIX/lib/php]])],
|
|
|
|
[no],
|
|
|
|
[yes])
|
2003-07-01 00:33:50 +08:00
|
|
|
|
2024-07-02 18:38:09 +08:00
|
|
|
AS_VAR_IF([PHP_PEAR], [no],, [
|
|
|
|
AC_MSG_WARN([The --with-pear option is deprecated])
|
2003-07-01 00:33:50 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl PEAR dependencies.
|
2024-08-13 16:33:17 +08:00
|
|
|
AS_VAR_IF([PHP_XML], [no], [AC_MSG_ERROR(m4_text_wrap([
|
2024-07-02 18:38:09 +08:00
|
|
|
PEAR requires XML to be enabled. Add '--enable-xml' to the configure line,
|
|
|
|
or disable PEAR (--without-pear).
|
2024-07-19 21:20:04 +08:00
|
|
|
]))])
|
2005-08-28 09:10:00 +08:00
|
|
|
|
2024-07-02 18:38:09 +08:00
|
|
|
install_pear=install-pear
|
2019-02-01 19:09:29 +08:00
|
|
|
|
2024-07-02 18:38:09 +08:00
|
|
|
AS_VAR_IF([PHP_PEAR], [yes],
|
|
|
|
[AS_CASE([$PHP_LAYOUT],
|
|
|
|
[GNU], [PEAR_INSTALLDIR=$datadir/pear],
|
|
|
|
[PEAR_INSTALLDIR=$libdir/php])],
|
|
|
|
[PEAR_INSTALLDIR=$PHP_PEAR])
|
2005-02-07 20:48:11 +08:00
|
|
|
|
2024-04-19 05:05:46 +08:00
|
|
|
PHP_SUBST([PEAR_INSTALLDIR])
|
2024-03-27 23:20:03 +08:00
|
|
|
PHP_ADD_BUILD_DIR([pear])
|
2024-07-02 18:38:09 +08:00
|
|
|
PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/pear/Makefile.frag],
|
|
|
|
[$abs_srcdir/pear],
|
|
|
|
[pear])
|
|
|
|
])
|
2003-07-01 00:33:50 +08:00
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl Configuring Zend and TSRM.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2002-01-27 07:57:17 +08:00
|
|
|
|
2023-07-31 22:29:14 +08:00
|
|
|
PHP_HELP_SEPARATOR([Zend:])
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([Configuring Zend])
|
2023-07-31 22:29:14 +08:00
|
|
|
|
2021-07-12 04:40:11 +08:00
|
|
|
AC_ARG_ENABLE([fiber-asm],
|
|
|
|
[AS_HELP_STRING([--disable-fiber-asm],
|
|
|
|
[Disable the use of boost fiber assembly files])],
|
|
|
|
[fiber_asm=$enableval], [fiber_asm='yes'])
|
|
|
|
|
2021-04-27 00:07:06 +08:00
|
|
|
AS_CASE([$host_cpu],
|
|
|
|
[x86_64*|amd64*], [fiber_cpu="x86_64"],
|
|
|
|
[x86*|amd*|i?86*|pentium], [fiber_cpu="i386"],
|
|
|
|
[aarch64*|arm64*], [fiber_cpu="arm64"],
|
|
|
|
[arm*], [fiber_cpu="arm32"],
|
2021-06-26 16:16:25 +08:00
|
|
|
[ppc64*|powerpc64*], [fiber_cpu="ppc64"],
|
|
|
|
[ppc*|powerpc*], [fiber_cpu="ppc32"],
|
2022-01-03 18:57:29 +08:00
|
|
|
[riscv64*], [fiber_cpu="riscv64"],
|
2024-02-13 17:37:20 +08:00
|
|
|
[sparc64], [fiber_cpu="sparc64"],
|
2021-04-27 00:07:06 +08:00
|
|
|
[s390x*], [fiber_cpu="s390x"],
|
2024-04-01 15:16:47 +08:00
|
|
|
[loongarch64*], [fiber_cpu="loongarch64"],
|
2021-04-27 00:07:06 +08:00
|
|
|
[mips64*], [fiber_cpu="mips64"],
|
|
|
|
[mips*], [fiber_cpu="mips32"],
|
|
|
|
[fiber_cpu="unknown"]
|
|
|
|
)
|
|
|
|
|
|
|
|
AS_CASE([$host_os],
|
|
|
|
[darwin*], [fiber_os="mac"],
|
2021-08-17 06:05:58 +08:00
|
|
|
[aix*|os400*], [fiber_os="aix"],
|
2022-09-18 14:59:14 +08:00
|
|
|
[freebsd*], [fiber_os="freebsd"],
|
2024-04-18 14:19:44 +08:00
|
|
|
[midipix], [fiber_os="midipix"],
|
2021-04-27 00:07:06 +08:00
|
|
|
[fiber_os="other"]
|
|
|
|
)
|
|
|
|
|
|
|
|
AS_CASE([$fiber_cpu],
|
|
|
|
[x86_64], [fiber_asm_file_prefix="x86_64_sysv"],
|
|
|
|
[i386], [fiber_asm_file_prefix="i386_sysv"],
|
|
|
|
[arm64], [fiber_asm_file_prefix="arm64_aapcs"],
|
|
|
|
[arm32], [fiber_asm_file_prefix="arm_aapcs"],
|
|
|
|
[ppc64], [fiber_asm_file_prefix="ppc64_sysv"],
|
2021-06-26 16:16:25 +08:00
|
|
|
[ppc32], [fiber_asm_file_prefix="ppc32_sysv"],
|
2022-01-03 18:57:29 +08:00
|
|
|
[riscv64], [fiber_asm_file_prefix="riscv64_sysv"],
|
2024-02-13 17:37:20 +08:00
|
|
|
[sparc64], [fiber_asm_file_prefix="sparc64_sysv"],
|
2021-04-27 00:07:06 +08:00
|
|
|
[s390x], [fiber_asm_file_prefix="s390x_sysv"],
|
2024-04-01 15:16:47 +08:00
|
|
|
[loongarch64], [fiber_asm_file_prefix="loongarch64_sysv"],
|
2021-04-27 00:07:06 +08:00
|
|
|
[mips64], [fiber_asm_file_prefix="mips64_n64"],
|
|
|
|
[mips32], [fiber_asm_file_prefix="mips32_o32"],
|
|
|
|
[fiber_asm_file_prefix="unknown"]
|
|
|
|
)
|
|
|
|
|
|
|
|
if test "$fiber_os" = 'mac'; then
|
2021-04-30 23:08:01 +08:00
|
|
|
fiber_asm_file="combined_sysv_macho_gas"
|
2021-08-17 06:05:58 +08:00
|
|
|
elif test "$fiber_os" = 'aix'; then
|
|
|
|
# AIX uses a different calling convention (shared with non-_CALL_ELF Linux).
|
|
|
|
# The AIX assembler isn't GNU, but the file is compatible.
|
|
|
|
fiber_asm_file="${fiber_asm_file_prefix}_xcoff_gas"
|
2022-09-18 14:59:14 +08:00
|
|
|
elif test "$fiber_os" = 'freebsd'; then
|
|
|
|
case $fiber_cpu in
|
|
|
|
i386*)
|
|
|
|
fiber_asm="no"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
fiber_asm_file="${fiber_asm_file_prefix}_elf_gas"
|
|
|
|
;;
|
|
|
|
esac
|
2024-04-18 14:19:44 +08:00
|
|
|
elif test "$fiber_os" = 'midipix'; then
|
|
|
|
case $fiber_cpu in
|
|
|
|
i386*)
|
|
|
|
fiber_asm="no"
|
|
|
|
;;
|
|
|
|
x86_64)
|
|
|
|
fiber_asm_file="x86_64_ms_pe_gas"
|
|
|
|
;;
|
|
|
|
esac
|
2021-04-27 00:07:06 +08:00
|
|
|
elif test "$fiber_asm_file_prefix" != 'unknown'; then
|
2021-04-30 23:08:01 +08:00
|
|
|
fiber_asm_file="${fiber_asm_file_prefix}_elf_gas"
|
2021-04-27 00:07:06 +08:00
|
|
|
else
|
2021-07-12 04:40:11 +08:00
|
|
|
fiber_asm="no"
|
2021-04-27 00:07:06 +08:00
|
|
|
fi
|
|
|
|
|
2024-06-15 23:00:56 +08:00
|
|
|
AC_CACHE_CHECK([whether syscall to create shadow stack exists],
|
|
|
|
[php_cv_have_shadow_stack_syscall],
|
|
|
|
[AC_RUN_IFELSE([AC_LANG_SOURCE([
|
2022-07-26 18:52:48 +08:00
|
|
|
#include <unistd.h>
|
|
|
|
#include <sys/mman.h>
|
|
|
|
int main(void) {
|
|
|
|
/* test if syscall 451, i.e., map_shadow_stack is available */
|
|
|
|
void* base = (void *)syscall(451, 0, 0x20000, 0x1);
|
|
|
|
if (base != (void*)-1) {
|
|
|
|
munmap(base, 0x20000);
|
|
|
|
return 0;
|
|
|
|
}
|
2024-06-15 23:00:56 +08:00
|
|
|
return 1;
|
2022-07-26 18:52:48 +08:00
|
|
|
}
|
2024-06-15 23:00:56 +08:00
|
|
|
])],
|
|
|
|
[php_cv_have_shadow_stack_syscall=yes],
|
|
|
|
[php_cv_have_shadow_stack_syscall=no],
|
|
|
|
[php_cv_have_shadow_stack_syscall=no])
|
2022-07-26 18:52:48 +08:00
|
|
|
])
|
2024-06-15 23:00:56 +08:00
|
|
|
dnl The asm files can't see macro from AC_DEFINE, workaround this via cflag. If
|
|
|
|
dnl the syscall doesn't exist, we may block the final ELF from __PROPERTY_SHSTK
|
|
|
|
dnl via redefine macro as "-D__CET__=1".
|
|
|
|
AS_VAR_IF([php_cv_have_shadow_stack_syscall], [yes],
|
|
|
|
[fiber_asm_cflag="-DSHADOW_STACK_SYSCALL=1"],
|
|
|
|
[fiber_asm_cflag="-DSHADOW_STACK_SYSCALL=0"])
|
2022-07-26 18:52:48 +08:00
|
|
|
|
2021-07-12 04:40:11 +08:00
|
|
|
if test "$fiber_asm" = 'yes'; then
|
|
|
|
AC_MSG_CHECKING([for fiber switching context])
|
2024-07-29 16:08:48 +08:00
|
|
|
PHP_ADD_SOURCES([Zend/asm],
|
|
|
|
[make_${fiber_asm_file}.S jump_${fiber_asm_file}.S],
|
|
|
|
[$fiber_asm_cflag])
|
2021-04-27 00:07:06 +08:00
|
|
|
AC_MSG_RESULT([$fiber_asm_file])
|
|
|
|
else
|
2024-09-03 01:00:58 +08:00
|
|
|
AS_VAR_IF([fiber_os], [mac], [AC_DEFINE([_XOPEN_SOURCE], [1], [ ])])
|
2024-06-30 01:49:12 +08:00
|
|
|
AC_CHECK_HEADER([ucontext.h],
|
2024-08-02 07:14:48 +08:00
|
|
|
[AC_DEFINE([ZEND_FIBER_UCONTEXT], [1],
|
|
|
|
[Define to 1 if Zend fiber uses ucontext instead of boost context.])],
|
2024-08-04 13:36:37 +08:00
|
|
|
[AC_MSG_FAILURE([fibers not available on this platform])])
|
2021-04-27 00:07:06 +08:00
|
|
|
fi
|
|
|
|
|
2024-06-27 04:57:01 +08:00
|
|
|
ZEND_INIT
|
1999-12-17 22:28:35 +08:00
|
|
|
|
2024-07-15 18:16:53 +08:00
|
|
|
ZEND_EXTRA_LIBS=$LIBS
|
|
|
|
unset LIBS
|
|
|
|
|
2024-06-26 06:26:43 +08:00
|
|
|
PHP_ADD_INCLUDE([$abs_srcdir], [1])
|
|
|
|
PHP_ADD_INCLUDE([$abs_srcdir/main], [1])
|
|
|
|
PHP_ADD_INCLUDE([$abs_builddir], [1])
|
|
|
|
PHP_ADD_INCLUDE([$abs_builddir/main], [1])
|
|
|
|
PHP_ADD_INCLUDE([$abs_builddir/TSRM])
|
|
|
|
PHP_ADD_INCLUDE([$abs_builddir/Zend])
|
|
|
|
PHP_ADD_INCLUDE([$abs_srcdir/Zend])
|
|
|
|
PHP_ADD_INCLUDE([$abs_srcdir/TSRM])
|
1999-12-21 10:35:07 +08:00
|
|
|
|
2000-09-01 07:43:51 +08:00
|
|
|
EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LDFLAGS"
|
2003-09-08 21:10:10 +08:00
|
|
|
EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $LDFLAGS"
|
2024-07-15 18:16:53 +08:00
|
|
|
unset LDFLAGS
|
1999-12-22 02:04:31 +08:00
|
|
|
|
2018-08-26 02:52:28 +08:00
|
|
|
AC_ARG_PROGRAM
|
|
|
|
|
2024-07-06 19:35:14 +08:00
|
|
|
AS_VAR_IF([prefix], [NONE], [prefix=/usr/local])
|
|
|
|
AS_VAR_IF([exec_prefix], [NONE], [exec_prefix='${prefix}'])
|
|
|
|
AS_VAR_IF([program_prefix], [NONE], [program_prefix=])
|
|
|
|
AS_VAR_IF([program_suffix], [NONE], [program_suffix=])
|
2001-05-07 07:16:33 +08:00
|
|
|
|
2023-10-09 08:42:31 +08:00
|
|
|
orig_libdir=$libdir
|
2024-09-03 01:00:58 +08:00
|
|
|
AS_CASE([$libdir],
|
|
|
|
['${exec_prefix}/lib'], [libdir=$libdir/php])
|
2000-05-04 19:57:59 +08:00
|
|
|
|
2024-08-30 06:40:49 +08:00
|
|
|
AS_CASE([$(eval echo $datadir)],
|
|
|
|
['${prefix}/share'], [datadir=$datadir/php])
|
|
|
|
|
|
|
|
phptempdir=$(pwd)/libs
|
2001-04-22 09:09:14 +08:00
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
old_exec_prefix=$exec_prefix
|
|
|
|
old_libdir=$libdir
|
|
|
|
old_datadir=$datadir
|
2024-08-30 06:40:49 +08:00
|
|
|
exec_prefix=$(eval echo $exec_prefix)
|
|
|
|
libdir=$(eval echo $libdir)
|
|
|
|
datadir=$(eval eval echo $datadir)
|
2001-05-07 07:11:58 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Build extension directory path.
|
2024-08-30 06:40:49 +08:00
|
|
|
ZEND_MODULE_API_NO=$($EGREP '#define ZEND_MODULE_API_NO ' $srcdir/Zend/zend_modules.h|"${SED}" 's/#define ZEND_MODULE_API_NO //')
|
2001-05-07 07:11:58 +08:00
|
|
|
|
2024-09-05 05:25:50 +08:00
|
|
|
AC_ARG_VAR([EXTENSION_DIR],
|
|
|
|
[Default directory for dynamically loadable PHP extensions. If left empty, it
|
|
|
|
is determined automatically. Can be overridden using the PHP 'extension_dir'
|
|
|
|
INI directive.])
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([EXTENSION_DIR],, [
|
2001-05-12 18:33:52 +08:00
|
|
|
extbasedir=$ZEND_MODULE_API_NO
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([oldstyleextdir], [yes], [
|
2024-08-05 03:59:58 +08:00
|
|
|
AS_VAR_IF([PHP_DEBUG], [1], [part1=debug], [part1=no-debug])
|
2024-08-06 04:30:10 +08:00
|
|
|
AS_VAR_IF([PHP_THREAD_SAFETY], [yes], [part2=zts], [part2=non-zts])
|
2001-05-12 18:33:52 +08:00
|
|
|
extbasedir=$part1-$part2-$extbasedir
|
2002-04-24 06:45:51 +08:00
|
|
|
EXTENSION_DIR=$libdir/extensions/$extbasedir
|
2024-08-11 04:13:50 +08:00
|
|
|
], [
|
2024-08-06 04:30:10 +08:00
|
|
|
AS_VAR_IF([PHP_THREAD_SAFETY], [yes], [extbasedir=$extbasedir-zts])
|
2024-08-05 03:59:58 +08:00
|
|
|
AS_VAR_IF([PHP_DEBUG], [1], [extbasedir=$extbasedir-debug])
|
2002-04-24 06:45:51 +08:00
|
|
|
EXTENSION_DIR=$libdir/$extbasedir
|
2024-08-11 04:13:50 +08:00
|
|
|
])
|
|
|
|
])
|
2001-05-07 07:11:58 +08:00
|
|
|
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_CASE([$PHP_LAYOUT],
|
|
|
|
[GNU], [datarootdir=$prefix/share],
|
|
|
|
[datarootdir=$prefix/php])
|
2006-12-25 23:41:56 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Expand all directory names for use in macros/constants.
|
2024-08-30 06:40:49 +08:00
|
|
|
EXPANDED_PEAR_INSTALLDIR=$(eval echo $PEAR_INSTALLDIR)
|
|
|
|
EXPANDED_EXTENSION_DIR=$(eval echo $EXTENSION_DIR)
|
|
|
|
EXPANDED_LOCALSTATEDIR=$(eval echo $localstatedir)
|
|
|
|
EXPANDED_BINDIR=$(eval echo $bindir)
|
|
|
|
EXPANDED_SBINDIR=$(eval echo $sbindir)
|
|
|
|
EXPANDED_MANDIR=$(eval echo $mandir)
|
2001-05-12 18:33:52 +08:00
|
|
|
EXPANDED_LIBDIR=$libdir
|
2024-08-30 06:40:49 +08:00
|
|
|
EXPANDED_SYSCONFDIR=$(eval echo $sysconfdir)
|
2001-05-12 18:33:52 +08:00
|
|
|
EXPANDED_DATADIR=$datadir
|
2024-08-30 06:40:49 +08:00
|
|
|
EXPANDED_PHP_CONFIG_FILE_PATH=$(eval echo "$PHP_CONFIG_FILE_PATH")
|
|
|
|
EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=$(eval echo "$PHP_CONFIG_FILE_SCAN_DIR")
|
2001-05-12 18:33:52 +08:00
|
|
|
INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR
|
2001-04-22 09:09:14 +08:00
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
exec_prefix=$old_exec_prefix
|
|
|
|
libdir=$old_libdir
|
|
|
|
datadir=$old_datadir
|
2001-04-22 09:09:14 +08:00
|
|
|
|
2024-07-01 20:07:26 +08:00
|
|
|
AC_SUBST([INCLUDE_PATH])
|
|
|
|
AC_SUBST([EXPANDED_PEAR_INSTALLDIR])
|
|
|
|
AC_SUBST([EXPANDED_EXTENSION_DIR])
|
|
|
|
AC_SUBST([EXPANDED_BINDIR])
|
|
|
|
AC_SUBST([EXPANDED_SBINDIR])
|
|
|
|
AC_SUBST([EXPANDED_MANDIR])
|
|
|
|
AC_SUBST([EXPANDED_LIBDIR])
|
|
|
|
AC_SUBST([EXPANDED_DATADIR])
|
|
|
|
AC_SUBST([EXPANDED_SYSCONFDIR])
|
|
|
|
AC_SUBST([EXPANDED_LOCALSTATEDIR])
|
|
|
|
AC_SUBST([EXPANDED_PHP_CONFIG_FILE_PATH])
|
|
|
|
AC_SUBST([EXPANDED_PHP_CONFIG_FILE_SCAN_DIR])
|
2024-04-19 04:17:27 +08:00
|
|
|
AC_SUBST([PHP_INSTALLED_SAPIS])
|
|
|
|
AC_SUBST([SAPI_LIBNAME_SHARED])
|
|
|
|
AC_SUBST([SAPI_LIBNAME_STATIC])
|
Sync PHP_SUBST_OLD (#14746)
- All arguments quoted
- PHP_VERSION, PHP_VERSION_ID, PHP_LDFLAGS are used only in templates
with @...@ placeholders
- These are not used in generated Makefile neither in templates:
abs_builddir, abs_srcdir, DEBUG_CFLAGS
- These are used only in generated Makefile: EXTRA_LDFLAGS,
EXTRA_LDFLAGS_PROGRAM, ZEND_EXTRA_LIBS, INCLUDES, EXTRA_INCLUDES,
INSTALL_IT, NATIVE_RPATHS
2024-07-02 01:28:20 +08:00
|
|
|
AC_SUBST([PHP_VERSION])
|
|
|
|
AC_SUBST([PHP_VERSION_ID])
|
|
|
|
AC_SUBST([PHP_LDFLAGS])
|
2000-07-18 19:02:28 +08:00
|
|
|
|
2002-07-20 09:28:56 +08:00
|
|
|
PHP_UTILIZE_RPATHS
|
1999-12-06 06:41:08 +08:00
|
|
|
|
2024-07-27 11:26:32 +08:00
|
|
|
PHP_REMOVE_USR_LIB([PHP_LDFLAGS])
|
|
|
|
PHP_REMOVE_USR_LIB([LDFLAGS])
|
2001-05-09 21:57:56 +08:00
|
|
|
|
1999-12-07 23:22:49 +08:00
|
|
|
EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PHP_LDFLAGS"
|
2003-09-08 21:10:10 +08:00
|
|
|
EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $PHP_LDFLAGS"
|
2000-05-02 22:46:20 +08:00
|
|
|
|
2024-09-02 05:57:33 +08:00
|
|
|
AC_ARG_VAR([PHP_UNAME],
|
|
|
|
[System information (defaults to the 'uname -a' output)])
|
|
|
|
AS_VAR_IF([PHP_UNAME],, [PHP_UNAME=$(uname -a | xargs)])
|
2024-08-09 03:31:57 +08:00
|
|
|
AC_DEFINE_UNQUOTED([PHP_UNAME], ["$PHP_UNAME"], [The 'uname -a' output.])
|
2024-09-02 05:57:33 +08:00
|
|
|
|
2024-08-30 06:40:49 +08:00
|
|
|
PHP_OS=$(uname | xargs)
|
2024-08-09 03:31:57 +08:00
|
|
|
AC_DEFINE_UNQUOTED([PHP_OS], ["$PHP_OS"], [The 'uname' output.])
|
2024-09-02 05:57:33 +08:00
|
|
|
|
|
|
|
AC_ARG_VAR([PHP_BUILD_SYSTEM],
|
|
|
|
[The system that PHP was built on (defaults to the 'uname -a' output)])
|
|
|
|
AS_VAR_IF([PHP_BUILD_SYSTEM],, [PHP_BUILD_SYSTEM=$PHP_UNAME])
|
2024-08-09 03:31:57 +08:00
|
|
|
AC_DEFINE_UNQUOTED([PHP_BUILD_SYSTEM], ["$PHP_BUILD_SYSTEM"],
|
|
|
|
[The system that PHP was built on.])
|
2024-09-02 05:57:33 +08:00
|
|
|
|
|
|
|
AC_ARG_VAR([PHP_BUILD_PROVIDER], [The PHP build provider information])
|
|
|
|
AS_VAR_IF([PHP_BUILD_PROVIDER],,,
|
|
|
|
[AC_DEFINE_UNQUOTED([PHP_BUILD_PROVIDER], ["$PHP_BUILD_PROVIDER"],
|
|
|
|
[The PHP build provider information.])])
|
|
|
|
|
|
|
|
AC_ARG_VAR([PHP_BUILD_COMPILER],
|
|
|
|
[Information about the compiler used for the PHP build])
|
|
|
|
AS_VAR_IF([PHP_BUILD_COMPILER],,,
|
|
|
|
[AC_DEFINE_UNQUOTED([PHP_BUILD_COMPILER], ["$PHP_BUILD_COMPILER"],
|
|
|
|
[The compiler used for the PHP build.])])
|
|
|
|
|
|
|
|
AC_ARG_VAR([PHP_BUILD_ARCH], [The build architecture])
|
|
|
|
AS_VAR_IF([PHP_BUILD_ARCH],,,
|
|
|
|
[AC_DEFINE_UNQUOTED([PHP_BUILD_ARCH], ["$PHP_BUILD_ARCH"],
|
|
|
|
[The build architecture.])])
|
2005-07-27 23:24:36 +08:00
|
|
|
|
2024-07-02 11:44:45 +08:00
|
|
|
PHP_SUBST([PHP_FASTCGI_OBJS])
|
|
|
|
PHP_SUBST([PHP_SAPI_OBJS])
|
|
|
|
PHP_SUBST([PHP_BINARY_OBJS])
|
|
|
|
PHP_SUBST([PHP_GLOBAL_OBJS])
|
|
|
|
PHP_SUBST([PHP_BINARIES])
|
|
|
|
PHP_SUBST([PHP_MODULES])
|
|
|
|
PHP_SUBST([PHP_ZEND_EX])
|
|
|
|
PHP_SUBST([bindir])
|
|
|
|
PHP_SUBST([sbindir])
|
|
|
|
PHP_SUBST([exec_prefix])
|
Sync PHP_SUBST_OLD (#14746)
- All arguments quoted
- PHP_VERSION, PHP_VERSION_ID, PHP_LDFLAGS are used only in templates
with @...@ placeholders
- These are not used in generated Makefile neither in templates:
abs_builddir, abs_srcdir, DEBUG_CFLAGS
- These are used only in generated Makefile: EXTRA_LDFLAGS,
EXTRA_LDFLAGS_PROGRAM, ZEND_EXTRA_LIBS, INCLUDES, EXTRA_INCLUDES,
INSTALL_IT, NATIVE_RPATHS
2024-07-02 01:28:20 +08:00
|
|
|
PHP_SUBST_OLD([program_prefix])
|
|
|
|
PHP_SUBST_OLD([program_suffix])
|
2024-07-02 11:44:45 +08:00
|
|
|
PHP_SUBST([includedir])
|
Sync PHP_SUBST_OLD (#14746)
- All arguments quoted
- PHP_VERSION, PHP_VERSION_ID, PHP_LDFLAGS are used only in templates
with @...@ placeholders
- These are not used in generated Makefile neither in templates:
abs_builddir, abs_srcdir, DEBUG_CFLAGS
- These are used only in generated Makefile: EXTRA_LDFLAGS,
EXTRA_LDFLAGS_PROGRAM, ZEND_EXTRA_LIBS, INCLUDES, EXTRA_INCLUDES,
INSTALL_IT, NATIVE_RPATHS
2024-07-02 01:28:20 +08:00
|
|
|
PHP_SUBST_OLD([orig_libdir])
|
2024-07-02 11:44:45 +08:00
|
|
|
PHP_SUBST([libdir])
|
|
|
|
PHP_SUBST([mandir])
|
|
|
|
PHP_SUBST([phptempdir])
|
|
|
|
PHP_SUBST([prefix])
|
|
|
|
PHP_SUBST([localstatedir])
|
|
|
|
PHP_SUBST([datadir])
|
|
|
|
PHP_SUBST([datarootdir])
|
|
|
|
PHP_SUBST([sysconfdir])
|
|
|
|
PHP_SUBST([EXEEXT])
|
|
|
|
PHP_SUBST([CC])
|
|
|
|
PHP_SUBST([BUILD_CC])
|
|
|
|
PHP_SUBST([CFLAGS])
|
|
|
|
PHP_SUBST([CFLAGS_CLEAN])
|
|
|
|
PHP_SUBST([CPP])
|
|
|
|
PHP_SUBST([CPPFLAGS])
|
|
|
|
PHP_SUBST([CXX])
|
|
|
|
PHP_SUBST([CXXFLAGS])
|
|
|
|
PHP_SUBST([CXXFLAGS_CLEAN])
|
Sync PHP_SUBST_OLD (#14746)
- All arguments quoted
- PHP_VERSION, PHP_VERSION_ID, PHP_LDFLAGS are used only in templates
with @...@ placeholders
- These are not used in generated Makefile neither in templates:
abs_builddir, abs_srcdir, DEBUG_CFLAGS
- These are used only in generated Makefile: EXTRA_LDFLAGS,
EXTRA_LDFLAGS_PROGRAM, ZEND_EXTRA_LIBS, INCLUDES, EXTRA_INCLUDES,
INSTALL_IT, NATIVE_RPATHS
2024-07-02 01:28:20 +08:00
|
|
|
PHP_SUBST_OLD([EXTENSION_DIR])
|
|
|
|
PHP_SUBST([EXTRA_LDFLAGS])
|
|
|
|
PHP_SUBST([EXTRA_LDFLAGS_PROGRAM])
|
|
|
|
PHP_SUBST_OLD([EXTRA_LIBS])
|
|
|
|
PHP_SUBST([ZEND_EXTRA_LIBS])
|
|
|
|
PHP_SUBST([INCLUDES])
|
|
|
|
PHP_SUBST([EXTRA_INCLUDES])
|
|
|
|
PHP_SUBST([INSTALL_IT])
|
2024-07-02 11:44:45 +08:00
|
|
|
PHP_SUBST([LIBTOOL])
|
|
|
|
PHP_SUBST([LN_S])
|
Sync PHP_SUBST_OLD (#14746)
- All arguments quoted
- PHP_VERSION, PHP_VERSION_ID, PHP_LDFLAGS are used only in templates
with @...@ placeholders
- These are not used in generated Makefile neither in templates:
abs_builddir, abs_srcdir, DEBUG_CFLAGS
- These are used only in generated Makefile: EXTRA_LDFLAGS,
EXTRA_LDFLAGS_PROGRAM, ZEND_EXTRA_LIBS, INCLUDES, EXTRA_INCLUDES,
INSTALL_IT, NATIVE_RPATHS
2024-07-02 01:28:20 +08:00
|
|
|
PHP_SUBST([NATIVE_RPATHS])
|
2024-07-02 11:44:45 +08:00
|
|
|
PHP_SUBST([OVERALL_TARGET])
|
|
|
|
PHP_SUBST([PHP_RPATHS])
|
|
|
|
PHP_SUBST([PHP_SAPI])
|
|
|
|
PHP_SUBST([SHELL])
|
|
|
|
PHP_SUBST([PHP_FRAMEWORKS])
|
|
|
|
PHP_SUBST([PHP_FRAMEWORKPATH])
|
|
|
|
PHP_SUBST([INSTALL_HEADERS])
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2000-03-19 01:58:09 +08:00
|
|
|
if test "$PHP_THREAD_SAFETY" = "yes" && test -n "$ac_cv_pthreads_cflags"; then
|
2000-03-30 12:09:56 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS $ac_cv_pthreads_cflags"
|
2018-02-09 21:30:06 +08:00
|
|
|
CPPFLAGS="$CPPFLAGS $ac_cv_pthreads_cflags"
|
2000-03-19 01:58:09 +08:00
|
|
|
fi
|
|
|
|
|
2020-05-20 21:21:01 +08:00
|
|
|
dnl Enable -Werror late, because it may break configure checks throwing warnings.
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_WERROR], [yes], [
|
2019-04-23 19:24:29 +08:00
|
|
|
CFLAGS="$CFLAGS -Werror"
|
2020-05-20 21:21:01 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS -Werror"
|
2024-08-11 04:13:50 +08:00
|
|
|
])
|
2020-05-20 21:21:01 +08:00
|
|
|
|
2021-04-16 12:41:25 +08:00
|
|
|
if test "$PHP_MEMORY_SANITIZER" = "yes" &&
|
|
|
|
test "$PHP_ADDRESS_SANITIZER" = "yes"; then
|
|
|
|
AC_MSG_ERROR([MemorySanitizer and AddressSanitizer are mutually exclusive])
|
|
|
|
fi
|
|
|
|
|
2020-05-20 21:21:01 +08:00
|
|
|
dnl Enable -fsanitize=memory late, because interceptors may break linking detection.
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_MEMORY_SANITIZER], [yes],
|
|
|
|
[AX_CHECK_COMPILE_FLAG([-fsanitize=memory -fsanitize-memory-track-origins], [
|
2021-04-16 12:41:25 +08:00
|
|
|
CFLAGS="$CFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
|
|
|
|
CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
|
|
|
|
], [AC_MSG_ERROR([MemorySanitizer is not available])])
|
2024-08-11 04:13:50 +08:00
|
|
|
])
|
2021-04-16 12:41:25 +08:00
|
|
|
|
2024-07-05 18:03:21 +08:00
|
|
|
AS_VAR_IF([PHP_ADDRESS_SANITIZER], [yes],
|
2024-08-13 16:33:17 +08:00
|
|
|
[AS_VAR_IF([PHP_VALGRIND], [no],, [AC_MSG_ERROR(m4_text_wrap([
|
2024-07-05 18:03:21 +08:00
|
|
|
Valgrind and address sanitizer are not compatible. Either disable Valgrind
|
|
|
|
(remove --with-valgrind) or disable address sanitizer (remove
|
|
|
|
--enable-address-sanitizer).
|
2024-07-19 21:20:04 +08:00
|
|
|
]))])
|
2024-07-05 18:03:21 +08:00
|
|
|
|
2021-04-16 12:41:25 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-fsanitize=address], [
|
|
|
|
CFLAGS="$CFLAGS -fsanitize=address -DZEND_TRACK_ARENA_ALLOC"
|
|
|
|
CXXFLAGS="$CXXFLAGS -fsanitize=address -DZEND_TRACK_ARENA_ALLOC"
|
|
|
|
], [AC_MSG_ERROR([AddressSanitizer is not available])])
|
2024-07-05 18:03:21 +08:00
|
|
|
])
|
2021-04-16 12:41:25 +08:00
|
|
|
|
2024-08-11 04:13:50 +08:00
|
|
|
AS_VAR_IF([PHP_UNDEFINED_SANITIZER], [yes],
|
|
|
|
[AX_CHECK_COMPILE_FLAG([-fsanitize=undefined], [
|
2021-09-15 22:07:26 +08:00
|
|
|
CFLAGS="$CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined"
|
|
|
|
CXXFLAGS="$CXXFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined"
|
|
|
|
AX_CHECK_COMPILE_FLAG([-fno-sanitize=object-size], [
|
|
|
|
dnl Disable object-size sanitizer, because it is incompatible with our zend_function
|
|
|
|
dnl union, and this can't be easily fixed.
|
|
|
|
CFLAGS="$CFLAGS -fno-sanitize=object-size"
|
|
|
|
CXXFLAGS="$CFLAGS -fno-sanitize=object-size"
|
|
|
|
])
|
2023-11-10 03:44:30 +08:00
|
|
|
|
|
|
|
dnl Clang 17 adds stricter function pointer compatibility checks where pointer args cannot be
|
|
|
|
dnl cast to void*. In that case, set -fno-sanitize=function.
|
2024-08-11 04:13:50 +08:00
|
|
|
OLD_CFLAGS=$CFLAGS
|
2023-11-10 03:44:30 +08:00
|
|
|
CFLAGS="$CFLAGS -fno-sanitize-recover=undefined"
|
2024-08-11 04:13:50 +08:00
|
|
|
AC_CACHE_CHECK([whether to add -fno-sanitize=function],
|
|
|
|
[php_cv_ubsan_no_function],
|
|
|
|
[AC_RUN_IFELSE([AC_LANG_SOURCE([
|
2024-09-15 21:52:37 +08:00
|
|
|
void foo(char *string) { (void)string; }
|
|
|
|
int main(void) {
|
|
|
|
void (*f)(void *) = (void (*)(void *))foo;
|
|
|
|
f("foo");
|
|
|
|
return 0;
|
|
|
|
}
|
2024-08-11 04:13:50 +08:00
|
|
|
])],
|
|
|
|
[php_cv_ubsan_no_function=no],
|
|
|
|
[php_cv_ubsan_no_function=yes],
|
|
|
|
[php_cv_ubsan_no_function=no])])
|
|
|
|
CFLAGS=$OLD_CFLAGS
|
|
|
|
AS_VAR_IF([php_cv_ubsan_no_function], [yes], [
|
2023-11-10 03:44:30 +08:00
|
|
|
CFLAGS="$CFLAGS -fno-sanitize=function"
|
|
|
|
CXXFLAGS="$CFLAGS -fno-sanitize=function"
|
2024-08-11 04:13:50 +08:00
|
|
|
])
|
2021-04-16 12:41:25 +08:00
|
|
|
], [AC_MSG_ERROR([UndefinedBehaviorSanitizer is not available])])
|
2024-08-11 04:13:50 +08:00
|
|
|
])
|
2021-04-16 12:41:25 +08:00
|
|
|
|
|
|
|
if test "$PHP_MEMORY_SANITIZER" = "yes" ||
|
|
|
|
test "$PHP_ADDRESS_SANITIZER" = "yes" ||
|
|
|
|
test "$PHP_UNDEFINED_SANITIZER" = "yes"; then
|
|
|
|
CFLAGS="$CFLAGS -fno-omit-frame-pointer"
|
|
|
|
CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
|
2019-04-23 19:24:29 +08:00
|
|
|
fi
|
|
|
|
|
2003-02-25 14:35:43 +08:00
|
|
|
dnl
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Libtool creation.
|
2003-02-25 14:35:43 +08:00
|
|
|
dnl
|
|
|
|
|
2003-10-03 13:24:33 +08:00
|
|
|
PHP_HELP_SEPARATOR([Libtool:])
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([Configuring libtool])
|
2003-02-25 14:35:43 +08:00
|
|
|
|
2024-08-30 06:40:49 +08:00
|
|
|
dnl Silence warning: "ar: 'u' modifier ignored since 'D' is the default".
|
2018-10-21 19:06:58 +08:00
|
|
|
dnl See https://github.com/php/php-src/pull/3017
|
2024-07-01 20:07:26 +08:00
|
|
|
AC_SUBST([AR_FLAGS], [cr])
|
2018-01-13 05:52:47 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Only allow AC_PROG_CXX and AC_PROG_CXXCPP if they are explicitly called (by
|
|
|
|
dnl PHP_REQUIRE_CXX). Otherwise AC_PROG_LIBTOOL fails if there is no working C++
|
|
|
|
dnl compiler.
|
2008-07-25 20:36:34 +08:00
|
|
|
AC_PROVIDE_IFELSE([PHP_REQUIRE_CXX], [], [
|
|
|
|
undefine([AC_PROG_CXX])
|
|
|
|
AC_DEFUN([AC_PROG_CXX], [])
|
|
|
|
undefine([AC_PROG_CXXCPP])
|
2008-07-27 23:05:39 +08:00
|
|
|
AC_DEFUN([AC_PROG_CXXCPP], [php_prog_cxxcpp=disabled])
|
2008-07-25 20:36:34 +08:00
|
|
|
])
|
2002-03-07 22:20:02 +08:00
|
|
|
AC_PROG_LIBTOOL
|
2007-08-06 22:33:51 +08:00
|
|
|
|
2015-07-18 01:02:43 +08:00
|
|
|
PHP_SET_LIBTOOL_VARIABLE([--silent])
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2003-02-12 05:11:42 +08:00
|
|
|
dnl libtool 1.4.3 needs this.
|
|
|
|
PHP_SET_LIBTOOL_VARIABLE([--preserve-dup-deps])
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2024-08-07 04:15:22 +08:00
|
|
|
PHP_CONFIGURE_PART([Generating files])
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2001-05-12 20:22:34 +08:00
|
|
|
CXXFLAGS_CLEAN=$CXXFLAGS
|
2015-05-26 22:33:25 +08:00
|
|
|
CFLAGS_CLEAN="$CFLAGS \$(PROF_FLAGS)"
|
2002-04-26 18:17:40 +08:00
|
|
|
CFLAGS="\$(CFLAGS_CLEAN) $standard_libtool_flag"
|
2015-05-26 22:33:25 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS $standard_libtool_flag \$(PROF_FLAGS)"
|
2001-05-12 20:22:34 +08:00
|
|
|
|
2008-06-01 03:27:31 +08:00
|
|
|
if test "$PHP_PHAR" != "no" && test "$PHP_CLI" != "no"; then
|
2008-06-03 00:58:19 +08:00
|
|
|
pharcmd=pharcmd
|
|
|
|
pharcmd_install=install-pharcmd
|
2008-06-01 03:27:31 +08:00
|
|
|
else
|
2008-06-03 00:58:19 +08:00
|
|
|
pharcmd=
|
|
|
|
pharcmd_install=
|
2008-06-01 03:27:31 +08:00
|
|
|
fi;
|
|
|
|
|
2023-11-27 10:07:05 +08:00
|
|
|
all_targets="\$(OVERALL_TARGET) \$(PHP_MODULES) \$(PHP_ZEND_EX) \$(PHP_BINARIES) $pharcmd"
|
2010-11-14 07:13:07 +08:00
|
|
|
install_targets="$install_sapi $install_modules $install_binaries install-build install-headers install-programs $install_pear $pharcmd_install"
|
2002-12-20 01:02:40 +08:00
|
|
|
|
2024-07-02 11:44:45 +08:00
|
|
|
PHP_SUBST([all_targets])
|
|
|
|
PHP_SUBST([install_targets])
|
|
|
|
PHP_SUBST([install_binary_targets])
|
2002-03-07 22:20:02 +08:00
|
|
|
|
2024-02-12 05:14:46 +08:00
|
|
|
PHP_INSTALL_HEADERS([Zend/ TSRM/ main/ main/streams/])
|
2024-07-29 16:08:17 +08:00
|
|
|
PHP_INSTALL_HEADERS([Zend/Optimizer], m4_normalize([
|
|
|
|
zend_call_graph.h
|
|
|
|
zend_cfg.h
|
|
|
|
zend_dfg.h
|
|
|
|
zend_dump.h
|
|
|
|
zend_func_info.h
|
|
|
|
zend_inference.h
|
|
|
|
zend_optimizer.h
|
|
|
|
zend_ssa.h
|
|
|
|
zend_worklist.h
|
|
|
|
]))
|
2005-11-22 07:08:02 +08:00
|
|
|
|
2024-07-29 16:08:48 +08:00
|
|
|
PHP_ADD_SOURCES([TSRM], [TSRM.c], [-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
|
|
|
|
|
|
|
|
PHP_ADD_SOURCES([main], m4_normalize([
|
|
|
|
explicit_bzero.c
|
|
|
|
fopen_wrappers.c
|
|
|
|
getopt.c
|
|
|
|
main.c
|
|
|
|
network.c
|
|
|
|
output.c
|
|
|
|
php_content_types.c
|
|
|
|
php_ini_builder.c
|
|
|
|
php_ini.c
|
|
|
|
php_odbc_utils.c
|
|
|
|
php_open_temporary_file.c
|
|
|
|
php_scandir.c
|
|
|
|
php_syslog.c
|
|
|
|
php_ticks.c
|
|
|
|
php_variables.c
|
|
|
|
reentrancy.c
|
|
|
|
rfc1867.c
|
|
|
|
safe_bcmp.c
|
|
|
|
SAPI.c
|
|
|
|
snprintf.c
|
|
|
|
spprintf.c
|
|
|
|
strlcat.c
|
|
|
|
strlcpy.c
|
|
|
|
]),
|
|
|
|
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
|
2015-05-26 13:54:20 +08:00
|
|
|
|
2024-04-16 21:10:01 +08:00
|
|
|
if printf "#if __ELF__\nelf\n#endif\n" | $CC -E - | grep elf > /dev/null; then
|
2024-07-29 16:08:48 +08:00
|
|
|
PHP_ADD_SOURCES([main], [debug_gdb_scripts.c])
|
2024-04-16 21:10:01 +08:00
|
|
|
|
|
|
|
cat >> Makefile.objects <<EOF
|
|
|
|
$abs_srcdir/main/debug_gdb_scripts.c: $abs_srcdir/scripts/gdb/debug_gdb_scripts_gen.php $abs_srcdir/scripts/gdb/php_gdb.py $abs_srcdir/.gdbinit
|
|
|
|
@if test ! -z "\$(PHP)"; then \\
|
|
|
|
\$(PHP) $abs_srcdir/scripts/gdb/debug_gdb_scripts_gen.php; \\
|
|
|
|
fi;
|
|
|
|
EOF
|
|
|
|
fi
|
|
|
|
|
2024-07-29 16:08:48 +08:00
|
|
|
PHP_ADD_SOURCES_X([main],
|
|
|
|
[fastcgi.c],
|
|
|
|
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1],
|
|
|
|
[PHP_FASTCGI_OBJS],
|
|
|
|
[no])
|
2003-02-17 06:19:28 +08:00
|
|
|
|
2024-07-29 16:08:48 +08:00
|
|
|
PHP_ADD_SOURCES([main/streams], m4_normalize([
|
|
|
|
cast.c
|
|
|
|
filter.c
|
|
|
|
glob_wrapper.c
|
|
|
|
memory.c
|
|
|
|
mmap.c
|
|
|
|
plain_wrapper.c
|
|
|
|
streams.c
|
|
|
|
transports.c
|
|
|
|
userspace.c
|
|
|
|
xp_socket.c
|
|
|
|
]),
|
|
|
|
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
|
|
|
|
|
|
|
|
PHP_ADD_SOURCES([/main],
|
|
|
|
[internal_functions.c],
|
|
|
|
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1],
|
|
|
|
[sapi])
|
|
|
|
PHP_ADD_SOURCES_X([/main],
|
|
|
|
[internal_functions_cli.c],
|
|
|
|
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1],
|
|
|
|
[PHP_BINARY_OBJS])
|
2002-03-07 22:20:02 +08:00
|
|
|
|
2024-07-19 21:20:04 +08:00
|
|
|
PHP_ADD_SOURCES([Zend], m4_normalize([
|
2024-07-29 16:08:48 +08:00
|
|
|
Optimizer/block_pass.c
|
|
|
|
Optimizer/compact_literals.c
|
|
|
|
Optimizer/compact_vars.c
|
|
|
|
Optimizer/dce.c
|
|
|
|
Optimizer/dfa_pass.c
|
|
|
|
Optimizer/escape_analysis.c
|
|
|
|
Optimizer/nop_removal.c
|
|
|
|
Optimizer/optimize_func_calls.c
|
|
|
|
Optimizer/optimize_temp_vars_5.c
|
|
|
|
Optimizer/pass1.c
|
|
|
|
Optimizer/pass3.c
|
|
|
|
Optimizer/sccp.c
|
|
|
|
Optimizer/scdf.c
|
|
|
|
Optimizer/zend_call_graph.c
|
|
|
|
Optimizer/zend_cfg.c
|
|
|
|
Optimizer/zend_dfg.c
|
|
|
|
Optimizer/zend_dump.c
|
|
|
|
Optimizer/zend_func_info.c
|
|
|
|
Optimizer/zend_inference.c
|
|
|
|
Optimizer/zend_optimizer.c
|
|
|
|
Optimizer/zend_ssa.c
|
|
|
|
zend_alloc.c
|
|
|
|
zend_API.c
|
|
|
|
zend_ast.c
|
|
|
|
zend_atomic.c
|
|
|
|
zend_attributes.c
|
|
|
|
zend_builtin_functions.c
|
|
|
|
zend_call_stack.c
|
|
|
|
zend_closures.c
|
|
|
|
zend_compile.c
|
|
|
|
zend_constants.c
|
|
|
|
zend_cpuinfo.c
|
|
|
|
zend_default_classes.c
|
|
|
|
zend_dtrace.c
|
|
|
|
zend_enum.c
|
|
|
|
zend_exceptions.c
|
|
|
|
zend_execute_API.c
|
|
|
|
zend_execute.c
|
|
|
|
zend_extensions.c
|
|
|
|
zend_fibers.c
|
|
|
|
zend_float.c
|
|
|
|
zend_frameless_function.c
|
|
|
|
zend_gc.c
|
|
|
|
zend_gdb.c
|
|
|
|
zend_generators.c
|
|
|
|
zend_hash.c
|
|
|
|
zend_highlight.c
|
|
|
|
zend_hrtime.c
|
|
|
|
zend_inheritance.c
|
|
|
|
zend_ini_parser.c
|
|
|
|
zend_ini_scanner.c
|
|
|
|
zend_ini.c
|
|
|
|
zend_interfaces.c
|
|
|
|
zend_iterators.c
|
|
|
|
zend_language_parser.c
|
|
|
|
zend_language_scanner.c
|
2023-05-19 18:55:05 +08:00
|
|
|
zend_lazy_objects.c
|
2024-07-29 16:08:48 +08:00
|
|
|
zend_list.c
|
|
|
|
zend_llist.c
|
|
|
|
zend_max_execution_timer.c
|
|
|
|
zend_multibyte.c
|
|
|
|
zend_object_handlers.c
|
|
|
|
zend_objects_API.c
|
|
|
|
zend_objects.c
|
|
|
|
zend_observer.c
|
|
|
|
zend_opcode.c
|
|
|
|
zend_operators.c
|
|
|
|
zend_property_hooks.c
|
|
|
|
zend_ptr_stack.c
|
|
|
|
zend_signal.c
|
|
|
|
zend_smart_str.c
|
|
|
|
zend_sort.c
|
|
|
|
zend_stack.c
|
|
|
|
zend_stream.c
|
|
|
|
zend_string.c
|
|
|
|
zend_strtod.c
|
|
|
|
zend_system_id.c
|
|
|
|
zend_variables.c
|
|
|
|
zend_virtual_cwd.c
|
|
|
|
zend_vm_opcodes.c
|
|
|
|
zend_weakrefs.c
|
|
|
|
zend.c
|
|
|
|
]),
|
2024-06-27 04:18:46 +08:00
|
|
|
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 $fiber_asm_cflag])
|
2002-03-08 03:56:53 +08:00
|
|
|
|
2024-07-03 19:15:13 +08:00
|
|
|
PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/scripts/Makefile.frag],
|
|
|
|
[$abs_srcdir/scripts],
|
|
|
|
[scripts])
|
|
|
|
PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/Zend/Makefile.frag],
|
|
|
|
[$abs_srcdir/Zend],
|
|
|
|
[Zend])
|
2002-03-07 22:20:02 +08:00
|
|
|
|
2024-08-02 07:14:48 +08:00
|
|
|
AC_DEFINE([HAVE_BUILD_DEFS_H], [1],
|
|
|
|
[Define to 1 if PHP has the <main/build-defs.h> header file.])
|
2002-10-24 21:15:49 +08:00
|
|
|
|
2024-08-29 06:44:29 +08:00
|
|
|
PHP_ADD_BUILD_DIR([
|
2024-03-27 23:20:03 +08:00
|
|
|
main
|
|
|
|
main/streams
|
|
|
|
scripts
|
|
|
|
scripts/man1
|
|
|
|
TSRM
|
|
|
|
Zend
|
|
|
|
Zend/asm
|
|
|
|
Zend/Optimizer
|
2024-08-29 06:44:29 +08:00
|
|
|
])
|
2003-01-28 18:59:12 +08:00
|
|
|
|
2024-08-04 03:52:14 +08:00
|
|
|
AC_CONFIG_FILES([
|
|
|
|
main/build-defs.h
|
|
|
|
scripts/man1/php-config.1
|
|
|
|
scripts/man1/phpize.1
|
|
|
|
scripts/php-config
|
|
|
|
scripts/phpize
|
|
|
|
])
|
2019-07-11 08:00:51 +08:00
|
|
|
|
|
|
|
AC_CONFIG_COMMANDS_PRE([PHP_PATCH_CONFIG_HEADERS([main/php_config.h.in])])
|
|
|
|
|
2024-08-22 22:26:28 +08:00
|
|
|
AC_CONFIG_COMMANDS([Zend/zend_config.h], [
|
|
|
|
cat >Zend/zend_config.h <<FEO
|
|
|
|
#include <../main/php_config.h>
|
|
|
|
FEO
|
|
|
|
])
|
|
|
|
|
2024-08-22 00:20:42 +08:00
|
|
|
AC_CONFIG_COMMANDS([main/internal_functions.c], [], [
|
|
|
|
AWK="$AWK" $SHELL $srcdir/build/genif.sh \
|
|
|
|
$srcdir/main/internal_functions.c.in \
|
|
|
|
"$EXT_STATIC" > main/internal_functions.c
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_CONFIG_COMMANDS([main/internal_functions_cli.c], [], [
|
|
|
|
AWK="$AWK" $SHELL $srcdir/build/genif.sh \
|
|
|
|
$srcdir/main/internal_functions.c.in \
|
|
|
|
"$EXT_CLI_STATIC" > main/internal_functions_cli.c
|
|
|
|
])
|
|
|
|
|
2024-08-22 22:26:28 +08:00
|
|
|
AC_CONFIG_COMMANDS([default], [
|
2019-07-04 06:18:15 +08:00
|
|
|
cat <<X
|
|
|
|
|
|
|
|
+--------------------------------------------------------------------+
|
|
|
|
| License: |
|
|
|
|
| This software is subject to the PHP License, available in this |
|
|
|
|
| distribution in the file LICENSE. By continuing this installation |
|
|
|
|
| process, you are bound by the terms of this license agreement. |
|
|
|
|
| If you do not agree with the terms of this license, you must abort |
|
|
|
|
| the installation process at this point. |
|
|
|
|
+--------------------------------------------------------------------+
|
|
|
|
|
|
|
|
Thank you for using PHP.
|
|
|
|
|
|
|
|
X
|
1999-04-17 08:37:12 +08:00
|
|
|
])
|
2018-07-29 05:09:06 +08:00
|
|
|
AC_OUTPUT
|