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])
|
|
|
|
m4_include([TSRM/tsrm.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])
|
2023-08-30 00:19:01 +08:00
|
|
|
AC_INIT([PHP],[8.4.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
|
|
|
|
|
|
|
PHP_CONFIG_NICE(config.nice)
|
|
|
|
|
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
|
|
|
|
AC_ARG_VAR([PHP_EXTRA_VERSION],[Extra PHP version label suffix, e.g. '-dev', 'rc1', '-acme'])dnl
|
|
|
|
AS_IF([test -z "$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"
|
|
|
|
PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION`
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Allow version values to be used in Makefile.
|
2007-07-27 06:45:59 +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
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Define where extension directories are located in the configure context.
|
2015-11-16 18:04:10 +08:00
|
|
|
AC_DEFUN([PHP_EXT_BUILDDIR],[$config_m4_dir])dnl
|
|
|
|
AC_DEFUN([PHP_EXT_DIR],[$config_m4_dir])dnl
|
|
|
|
AC_DEFUN([PHP_EXT_SRCDIR],[$abs_srcdir/$config_m4_dir])dnl
|
2004-12-30 15:08:39 +08:00
|
|
|
AC_DEFUN([PHP_ALWAYS_SHARED],[])dnl
|
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
|
|
|
|
|
|
|
php_shtool=$srcdir/build/shtool
|
|
|
|
T_MD=`$php_shtool echo -n -e %B`
|
|
|
|
T_ME=`$php_shtool echo -n -e %b`
|
|
|
|
|
2003-03-10 22:32:47 +08:00
|
|
|
PHP_INIT_BUILD_SYSTEM
|
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl We want this one before the checks, so the checks can modify CFLAGS.
|
|
|
|
test -z "$CFLAGS" && auto_cflags=1
|
|
|
|
|
|
|
|
abs_srcdir=`(cd $srcdir; pwd)`
|
|
|
|
abs_builddir=`pwd`
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Because `make install` is often performed by the superuser, we create the
|
|
|
|
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.
|
2005-02-25 02:11:36 +08:00
|
|
|
PHP_PROG_AWK
|
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])
|
2021-03-16 19:28:47 +08:00
|
|
|
PHP_PROG_PHP()
|
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
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
|
|
|
;;
|
2008-07-21 18:17:36 +08:00
|
|
|
*)
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
;;
|
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])
|
|
|
|
if command -v ldd >/dev/null && ldd --version 2>&1 | grep -q ^musl
|
|
|
|
then
|
|
|
|
AC_MSG_RESULT(yes)
|
2022-03-07 19:04:21 +08:00
|
|
|
AC_DEFINE([__MUSL__], [1], [Define when using musl libc])
|
2021-05-20 19:10:30 +08:00
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
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
|
|
|
|
|
|
|
PHP_CONFIGURE_PART(Configuring SAPI modules)
|
|
|
|
|
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])
|
|
|
|
if test "$PHP_BINARIES"; then
|
|
|
|
AC_MSG_RESULT([$PHP_BINARIES])
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT([none])
|
|
|
|
fi
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Exit early.
|
2010-11-14 07:13:07 +08:00
|
|
|
if test -z "$PHP_INSTALLED_SAPIS"; then
|
|
|
|
AC_MSG_ERROR([Nothing to build.])
|
|
|
|
fi
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Force ZTS.
|
2019-03-22 17:10:01 +08:00
|
|
|
if test "$enable_zts" = "yes"; then
|
2019-07-02 07:00:14 +08:00
|
|
|
dnl Add pthreads linker and compiler flags.
|
|
|
|
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
|
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
PHP_CONFIGURE_PART(Running system checks)
|
|
|
|
|
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
|
2002-01-27 07:57:17 +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],
|
|
|
|
[AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if the dl library is available.])])
|
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])
|
|
|
|
|
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.
|
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
|
|
|
AC_CHECK_HEADERS([ \
|
2003-09-08 21:15:22 +08:00
|
|
|
dirent.h \
|
2003-08-21 14:24:17 +08:00
|
|
|
sys/param.h \
|
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
|
|
|
sys/types.h \
|
|
|
|
sys/time.h \
|
|
|
|
netinet/in.h \
|
2000-06-22 05:49:33 +08:00
|
|
|
alloca.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
arpa/inet.h \
|
2009-08-06 07:20:17 +08:00
|
|
|
arpa/nameser.h \
|
|
|
|
dns.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
fcntl.h \
|
|
|
|
grp.h \
|
2001-01-05 19:07:52 +08:00
|
|
|
ieeefp.h \
|
2001-07-04 18:10:30 +08:00
|
|
|
langinfo.h \
|
2022-06-01 19:32:04 +08:00
|
|
|
linux/sock_diag.h \
|
2017-04-18 06:22:34 +08:00
|
|
|
poll.h \
|
Add PTY support to proc_open (again after 16 long years)
Back in 2004, a feature was added to proc_open which allowed it to open a PTY,
connecting specific FDs in the child process to the slave end of the PTY and returning
the master end of the PTY (wrapped as a PHP stream) in the `$pipes` array. However,
this feature was disabled just about a month later. Little information is available
about why this was done, but from talking to the original implementer, it seems there
were portability problems with some rare flavors of Unix.
Re-enable this feature with a simplified implementation which uses openpty(). No
attempt is made to support PTYs if the platform does not have openpty(). The configure
script checks if linking with -lutil is necessary to use openpty(), but if anything
else is required, like including some special header or linking with some other library,
PTY support will be disabled.
The original PTY support for proc_open automatically daemonized the child process
(disassociating it from the TTY session and process group of the parent). However,
I don't think this is a good idea. Just because a user opens a child process in a
PTY, it doesn't mean they want it to continue running even when the parent process
is killed. Of course, if the child process is some kind of server, it will likely
daemonize itself; but we have no reason to preempt that decision.
It turns out that since 2015, there has been one test case for PTY support in
proc_open() in the test suite. This test was added in GitHub PR #1588
(https://github.com/php/php-src/pull/1588). That PR mentioned that the PHP
binary in the Debian/Ubuntu repositories is patched to *enable* PTY support. Checking
the Debian PHP repository (https://salsa.debian.org/php-team/php.git) shows that this
is still true. Debian's patch does not modify the implementation from 2004 in any
way; it just removes the #if 0 line which disables it.
Naturally, the test case is skipped if PTY support is not enabled. This means that ever
since it was added, every test run against the 'vanilla' PHP codebase has skipped it.
Interestingly, the test case which was added in 2015 fails on my Linux Mint PC... both
with this simplified implementation *and* when enabling the original implementation.
Investigation reveals the reason: when the child process using the slave end of the
PTY exits and its FDs are all closed, and all buffered data is read from the master
end of the PTY, any further attempt to read from the master end fails with EIO. The
test case seems to expect that reading from the master end will always return an
empty string if no data is available.
Likely this is because PHP's fread() was updated to report errors from the underlying
system calls only recently.
One way out of this dilemma: IF at least one FD referring to the slave end of the PTY is
kept open *in the parent process*, the failure with EIO will not occur even after the child
process exits. However, that would raise another issue: we would need a way to ensure the FD
will be closed eventually in long-running programs.
Another discovery made while testing this code is that fread() does not always return
all the data written to the slave end of the PTY in a single call, even if the data was
written with a single syscall and it is only a few bytes long.
Specifically, when the child process in the test case writes "foo\n" to the PTY, the parent
sometimes receives "foo" (3 bytes) and sometimes "foo\r\n" (5 bytes). (The "\r" is from the
TTY line discipline converting "\n" to "\r\n".) A second call to fread() does return the
remaining bytes, though sometimes all the data is read in the first call, and by the time
the second call is made, the child process has already exited. It seems that liberal use
of the @ operator is needed when using fread() on pipes.
Thanks to Nikita Popov for suggesting that we should just use openpty() rather than
grantpt(), unlockpt(), etc.
2020-05-03 23:54:06 +08:00
|
|
|
pty.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
pwd.h \
|
2001-02-06 08:03:44 +08:00
|
|
|
resolv.h \
|
2019-06-24 04:04:03 +08:00
|
|
|
strings.h \
|
2000-06-22 05:49:33 +08:00
|
|
|
syslog.h \
|
2001-01-22 01:29:15 +08:00
|
|
|
sysexits.h \
|
2004-04-19 23:07:30 +08:00
|
|
|
sys/ioctl.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
sys/file.h \
|
|
|
|
sys/mman.h \
|
2001-05-22 10:45:04 +08:00
|
|
|
sys/mount.h \
|
2002-03-19 11:49:26 +08:00
|
|
|
sys/poll.h \
|
2000-06-22 05:49:33 +08:00
|
|
|
sys/resource.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
sys/select.h \
|
|
|
|
sys/socket.h \
|
2007-06-25 22:22:49 +08:00
|
|
|
sys/stat.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
sys/statfs.h \
|
|
|
|
sys/statvfs.h \
|
2001-08-13 05:23:15 +08:00
|
|
|
sys/vfs.h \
|
2001-01-22 01:29:15 +08:00
|
|
|
sys/sysexits.h \
|
2019-06-24 04:04:03 +08:00
|
|
|
sys/uio.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
sys/wait.h \
|
2006-07-26 16:57:44 +08:00
|
|
|
sys/loadavg.h \
|
1999-09-18 20:14:49 +08:00
|
|
|
unistd.h \
|
|
|
|
unix.h \
|
2000-08-07 01:42:54 +08:00
|
|
|
utime.h \
|
2002-03-31 07:44:50 +08:00
|
|
|
sys/utsname.h \
|
2002-11-05 04:08:09 +08:00
|
|
|
sys/ipc.h \
|
2005-11-30 07:20:01 +08:00
|
|
|
dlfcn.h \
|
2018-02-12 20:46:17 +08:00
|
|
|
tmmintrin.h \
|
|
|
|
nmmintrin.h \
|
2020-09-02 18:53:29 +08:00
|
|
|
wmmintrin.h \
|
2018-02-12 20:46:17 +08:00
|
|
|
immintrin.h
|
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
|
|
|
],[],[],[
|
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
|
2018-09-11 18:23:20 +08:00
|
|
|
if test "$GCC" = "yes"; then
|
|
|
|
PHP_BROKEN_GCC_STRLEN_OPT
|
|
|
|
fi
|
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>])
|
2019-07-18 18:11:19 +08:00
|
|
|
AC_CHECK_TYPES(socklen_t, [], [], [
|
|
|
|
#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.
|
2007-06-27 22:40:08 +08:00
|
|
|
PHP_CHECK_SIZEOF(intmax_t, 0)
|
|
|
|
PHP_CHECK_SIZEOF(ssize_t, 8)
|
|
|
|
PHP_CHECK_SIZEOF(ptrdiff_t, 8)
|
|
|
|
|
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
|
|
|
|
|
2015-03-21 01:58:58 +08:00
|
|
|
dnl Check __builtin_expect
|
|
|
|
PHP_CHECK_BUILTIN_EXPECT
|
2023-09-22 17:53:09 +08:00
|
|
|
dnl Check __builtin_unreachable
|
|
|
|
PHP_CHECK_BUILTIN_UNREACHABLE
|
2015-12-03 18:28:41 +08:00
|
|
|
dnl Check __builtin_clz
|
|
|
|
PHP_CHECK_BUILTIN_CLZ
|
2020-09-08 15:34:29 +08:00
|
|
|
dnl Check __builtin_clzl
|
|
|
|
PHP_CHECK_BUILTIN_CLZL
|
|
|
|
dnl Check __builtin_clzll
|
|
|
|
PHP_CHECK_BUILTIN_CLZLL
|
2015-12-03 18:28:41 +08:00
|
|
|
dnl Check __builtin_ctzl
|
|
|
|
PHP_CHECK_BUILTIN_CTZL
|
|
|
|
dnl Check __builtin_ctzll
|
|
|
|
PHP_CHECK_BUILTIN_CTZLL
|
2016-08-11 19:57:30 +08:00
|
|
|
dnl Check __builtin_smull_overflow
|
|
|
|
PHP_CHECK_BUILTIN_SMULL_OVERFLOW
|
|
|
|
dnl Check __builtin_smulll_overflow
|
|
|
|
PHP_CHECK_BUILTIN_SMULLL_OVERFLOW
|
|
|
|
dnl Check __builtin_saddl_overflow
|
|
|
|
PHP_CHECK_BUILTIN_SADDL_OVERFLOW
|
|
|
|
dnl Check __builtin_saddll_overflow
|
|
|
|
PHP_CHECK_BUILTIN_SADDLL_OVERFLOW
|
Add AVX2-accelerated UTF-16 decoding/encoding routines
As with other SIMD-accelerated functions in php-src, the new UTF-16
encoding and decoding routines can be compiled either with AVX2
acceleration "always on", "always off", or else with runtime detection
of AVX2 support.
With the new UTF-16 decoder/encoder, conversion of extremely short
strings (as in several bytes) has the same performance as before,
and conversion of medium-length (~100 character) strings is about 65%
faster, but conversion of long (~10,000 character) strings is around
6 times faster.
Many other mbstring functions will also be faster now when handling
UTF-16; for example, mb_strlen is almost 3 times faster on medium
strings, and almost 9 times faster on long strings. (Why does mb_strlen
benefit more from AVX2 acceleration than mb_convert_encoding? It's
because mb_strlen only needs to decode, but not re-encode, the input
string, and the UTF-16 decoder benefits much more from SIMD
acceleration than the UTF-16 encoder.)
2023-01-26 04:28:10 +08:00
|
|
|
dnl Check __builtin_usub_overflow
|
|
|
|
PHP_CHECK_BUILTIN_USUB_OVERFLOW
|
2016-08-11 19:57:30 +08:00
|
|
|
dnl Check __builtin_ssubl_overflow
|
|
|
|
PHP_CHECK_BUILTIN_SSUBL_OVERFLOW
|
|
|
|
dnl Check __builtin_ssubll_overflow
|
|
|
|
PHP_CHECK_BUILTIN_SSUBLL_OVERFLOW
|
2018-02-10 17:37:38 +08:00
|
|
|
dnl Check __builtin_cpu_init
|
|
|
|
PHP_CHECK_BUILTIN_CPU_INIT
|
2018-02-10 16:58:27 +08:00
|
|
|
dnl Check __builtin_cpu_supports
|
|
|
|
PHP_CHECK_BUILTIN_CPU_SUPPORTS
|
2022-12-17 00:44:26 +08:00
|
|
|
dnl Check __builtin_frame_address
|
|
|
|
PHP_CHECK_BUILTIN_FRAME_ADDRESS
|
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
|
|
|
|
AC_CACHE_CHECK(whether the compiler supports __alignof__, ac_cv_alignof_exists,[
|
|
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
|
|
]],[[
|
|
|
|
int align = __alignof__(int);
|
2024-05-19 00:28:20 +08:00
|
|
|
(void)align;
|
2020-06-27 21:01:06 +08:00
|
|
|
]])],[
|
|
|
|
ac_cv_alignof_exists=yes
|
|
|
|
],[
|
|
|
|
ac_cv_alignof_exists=no
|
|
|
|
])])
|
|
|
|
if test "$ac_cv_alignof_exists" = "yes"; then
|
|
|
|
AC_DEFINE([HAVE_ALIGNOF], 1, [whether the compiler supports __alignof__])
|
|
|
|
fi
|
|
|
|
|
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.
|
1999-04-17 08:37:12 +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], [
|
|
|
|
if test "`uname -s 2>/dev/null`" != "FreeBSD" || test "`uname -U 2>/dev/null`" -ge 1200000; then
|
|
|
|
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])
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check for IPv6 support.
|
2000-10-19 20:18:02 +08:00
|
|
|
AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
|
2018-07-30 07:50:24 +08:00
|
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
|
2001-06-15 03:04:57 +08:00
|
|
|
#include <sys/socket.h>
|
2024-05-19 00:28:20 +08:00
|
|
|
#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;
|
|
|
|
]])],
|
2002-05-02 21:12:44 +08:00
|
|
|
[ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
|
2000-09-08 01:56:12 +08:00
|
|
|
|
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-02-21 08:43:56 +08:00
|
|
|
AC_CHECK_FUNC([inet_ntop],,[AC_MSG_ERROR([Required inet_ntop not found.])])
|
|
|
|
AC_CHECK_FUNC([inet_pton],,[AC_MSG_ERROR([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.
|
2000-09-09 20:09:43 +08:00
|
|
|
AC_CACHE_CHECK([for getaddrinfo], ac_cv_func_getaddrinfo,
|
2018-07-30 07:50:24 +08:00
|
|
|
[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
|
|
|
]])],[ac_cv_func_getaddrinfo=yes], [ac_cv_func_getaddrinfo=no], [
|
|
|
|
dnl Cross compilation.
|
|
|
|
case $host_alias in
|
2024-04-18 14:19:44 +08:00
|
|
|
*linux*|*midipix)
|
2021-04-16 22:28:54 +08:00
|
|
|
ac_cv_func_getaddrinfo=yes
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
ac_cv_func_getaddrinfo=no
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
])],
|
2018-07-30 07:50:24 +08:00
|
|
|
[ac_cv_func_getaddrinfo=no])])
|
2000-09-09 20:09:43 +08:00
|
|
|
if test "$ac_cv_func_getaddrinfo" = yes; then
|
|
|
|
AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
|
|
|
|
fi
|
|
|
|
|
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
|
2022-10-02 19:55:00 +08:00
|
|
|
AC_CACHE_CHECK([for copy_file_range], ac_cv_copy_file_range,
|
|
|
|
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
|
|
|
#ifdef __linux__
|
|
|
|
#ifndef _GNU_SOURCE
|
|
|
|
#define _GNU_SOURCE
|
|
|
|
#endif
|
|
|
|
#include <linux/version.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
(void)copy_file_range(-1, 0, -1, 0, 0, 0);
|
|
|
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,3,0)
|
|
|
|
#error "kernel too old"
|
|
|
|
#else
|
|
|
|
return 0;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
#error "unsupported platform"
|
|
|
|
#endif
|
2022-11-07 23:39:08 +08:00
|
|
|
]])], [ac_cv_copy_file_range=yes], [ac_cv_copy_file_range=no], [ac_cv_copy_file_range=no])
|
2022-10-02 19:55:00 +08:00
|
|
|
])
|
|
|
|
|
|
|
|
if test "$ac_cv_copy_file_range" = yes; then
|
|
|
|
AC_DEFINE(HAVE_COPY_FILE_RANGE,1,[Define if copy_file_range support])
|
|
|
|
fi
|
|
|
|
|
2022-09-22 20:55:41 +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
|
|
|
|
2020-05-13 14:22:29 +08:00
|
|
|
AC_CACHE_CHECK([for aarch64 CRC32 API], ac_cv_func___crc32d,
|
|
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <arm_acle.h>]],[[__crc32d(0, 0);]])],[ac_cv_func___crc32d=yes],[ac_cv_func___crc32d="no"])])
|
|
|
|
if test "$ac_cv_func___crc32d" = "yes"; then
|
|
|
|
AC_DEFINE([HAVE_AARCH64_CRC32], [1], [Define when aarch64 CRC32 API is available.])
|
|
|
|
fi
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check for asm goto support.
|
2024-03-15 13:44:27 +08:00
|
|
|
AC_CACHE_CHECK([for asm goto], [ac_cv__asm_goto],
|
|
|
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[
|
2021-04-16 22:28:54 +08:00
|
|
|
#if defined(__x86_64__) || defined(__i386__)
|
|
|
|
__asm__ goto("jmp %l0\n" :::: end);
|
|
|
|
#elif defined(__aarch64__)
|
|
|
|
__asm__ goto("b %l0\n" :::: end);
|
|
|
|
#endif
|
|
|
|
end:
|
|
|
|
return 0;
|
2024-03-15 13:44:27 +08:00
|
|
|
]])], [ac_cv__asm_goto=yes], [ac_cv__asm_goto=no])])
|
2017-11-29 04:37:53 +08:00
|
|
|
if test "$ac_cv__asm_goto" = yes; then
|
2024-03-15 13:44:27 +08:00
|
|
|
AC_DEFINE([HAVE_ASM_GOTO], [1], [Define if asm goto support is available.])
|
2017-11-29 04:37:53 +08:00
|
|
|
fi
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check valgrind support.
|
2019-03-03 23:44:16 +08:00
|
|
|
PHP_ARG_WITH([valgrind],
|
|
|
|
[whether to enable valgrind support],
|
2019-05-23 21:01:04 +08:00
|
|
|
[AS_HELP_STRING([--with-valgrind],
|
2019-03-03 23:44:16 +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
|
|
|
|
|
|
|
if test "$PHP_VALGRIND" != "no"; then
|
2019-05-23 21:01:04 +08:00
|
|
|
PKG_CHECK_MODULES([VALGRIND], [valgrind], [have_valgrind="yes"], [have_valgrind="no"])
|
2018-02-14 21:46:17 +08:00
|
|
|
|
2019-05-23 21:01:04 +08:00
|
|
|
if test "$have_valgrind" = "yes"; then
|
|
|
|
PHP_EVAL_INCLINE($VALGRIND_CFLAGS)
|
|
|
|
AC_DEFINE(HAVE_VALGRIND, 1, [ ])
|
2018-02-14 21:46:17 +08:00
|
|
|
else
|
2019-05-23 21:01:04 +08:00
|
|
|
if test "$with_valgrind" = "yes"; then
|
|
|
|
AC_MSG_ERROR([Valgrind not found. Please install Valgrind.])
|
2018-02-14 21:46:17 +08:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
2017-05-31 21:16:56 +08:00
|
|
|
|
2020-06-26 17:23:52 +08:00
|
|
|
dnl Check for openpty. It may require linking against libutil or libbsd.
|
2024-02-29 03:14:24 +08:00
|
|
|
AC_CHECK_FUNCS([openpty],,
|
|
|
|
[AC_SEARCH_LIBS([openpty], [util bsd], [AC_DEFINE([HAVE_OPENPTY], [1])])])
|
Add PTY support to proc_open (again after 16 long years)
Back in 2004, a feature was added to proc_open which allowed it to open a PTY,
connecting specific FDs in the child process to the slave end of the PTY and returning
the master end of the PTY (wrapped as a PHP stream) in the `$pipes` array. However,
this feature was disabled just about a month later. Little information is available
about why this was done, but from talking to the original implementer, it seems there
were portability problems with some rare flavors of Unix.
Re-enable this feature with a simplified implementation which uses openpty(). No
attempt is made to support PTYs if the platform does not have openpty(). The configure
script checks if linking with -lutil is necessary to use openpty(), but if anything
else is required, like including some special header or linking with some other library,
PTY support will be disabled.
The original PTY support for proc_open automatically daemonized the child process
(disassociating it from the TTY session and process group of the parent). However,
I don't think this is a good idea. Just because a user opens a child process in a
PTY, it doesn't mean they want it to continue running even when the parent process
is killed. Of course, if the child process is some kind of server, it will likely
daemonize itself; but we have no reason to preempt that decision.
It turns out that since 2015, there has been one test case for PTY support in
proc_open() in the test suite. This test was added in GitHub PR #1588
(https://github.com/php/php-src/pull/1588). That PR mentioned that the PHP
binary in the Debian/Ubuntu repositories is patched to *enable* PTY support. Checking
the Debian PHP repository (https://salsa.debian.org/php-team/php.git) shows that this
is still true. Debian's patch does not modify the implementation from 2004 in any
way; it just removes the #if 0 line which disables it.
Naturally, the test case is skipped if PTY support is not enabled. This means that ever
since it was added, every test run against the 'vanilla' PHP codebase has skipped it.
Interestingly, the test case which was added in 2015 fails on my Linux Mint PC... both
with this simplified implementation *and* when enabling the original implementation.
Investigation reveals the reason: when the child process using the slave end of the
PTY exits and its FDs are all closed, and all buffered data is read from the master
end of the PTY, any further attempt to read from the master end fails with EIO. The
test case seems to expect that reading from the master end will always return an
empty string if no data is available.
Likely this is because PHP's fread() was updated to report errors from the underlying
system calls only recently.
One way out of this dilemma: IF at least one FD referring to the slave end of the PTY is
kept open *in the parent process*, the failure with EIO will not occur even after the child
process exits. However, that would raise another issue: we would need a way to ensure the FD
will be closed eventually in long-running programs.
Another discovery made while testing this code is that fread() does not always return
all the data written to the slave end of the PTY in a single call, even if the data was
written with a single syscall and it is only a few bytes long.
Specifically, when the child process in the test case writes "foo\n" to the PTY, the parent
sometimes receives "foo" (3 bytes) and sometimes "foo\r\n" (5 bytes). (The "\r" is from the
TTY line discipline converting "\n" to "\r\n".) A second call to fread() does return the
remaining bytes, though sometimes all the data is read in the first call, and by the time
the second call is made, the child process has already exited. It seems that liberal use
of the @ operator is needed when using fread() on pipes.
Thanks to Nikita Popov for suggesting that we should just use openpty() rather than
grantpt(), unlockpt(), etc.
2020-05-03 23:54:06 +08:00
|
|
|
|
2002-01-27 07:57:17 +08:00
|
|
|
dnl General settings.
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl ----------------------------------------------------------------------------
|
2003-03-25 21:43:13 +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
|
|
|
|
|
|
|
if test "$PHP_GCOV" = "yes"; then
|
|
|
|
|
|
|
|
if test "$GCC" != "yes"; then
|
|
|
|
AC_MSG_ERROR([GCC is required for --enable-gcov])
|
|
|
|
fi
|
2018-07-29 09:43:45 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Check if ccache is being used.
|
2005-11-30 23:01:34 +08:00
|
|
|
case `$php_shtool path $CC` in
|
|
|
|
*ccache*[)] gcc_ccache=yes;;
|
|
|
|
*[)] gcc_ccache=no;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
|
|
|
|
AC_MSG_ERROR([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
|
|
|
|
2005-11-30 07:20:01 +08:00
|
|
|
AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov])
|
2019-03-04 13:06:10 +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.
|
2005-11-30 07:20:01 +08:00
|
|
|
changequote({,})
|
2024-05-22 19:22:34 +08:00
|
|
|
dnl Discard known '-O...' flags, including just '-O', but do not remove only '-O' in '-Ounknown'
|
|
|
|
CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O\([0-9gsz]\|fast\|\)\([\t ]\|$\)//g'`
|
|
|
|
CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O\([0-9gsz]\|fast\|\)\([\t ]\|$\)//g'`
|
2005-11-30 07:20:01 +08:00
|
|
|
changequote([,])
|
|
|
|
|
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"
|
2005-11-30 07:20:01 +08:00
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
1999-12-20 16:10:38 +08:00
|
|
|
if test "$PHP_DEBUG" = "yes"; then
|
1999-07-18 00:43:11 +08:00
|
|
|
PHP_DEBUG=1
|
1999-12-17 22:28:35 +08:00
|
|
|
ZEND_DEBUG=yes
|
2006-08-07 04:46:02 +08:00
|
|
|
changequote({,})
|
2024-05-22 19:22:34 +08:00
|
|
|
dnl Discard known '-O...' flags, including just '-O', but do not remove only '-O' in '-Ounknown'
|
|
|
|
CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O\([0-9gsz]\|fast\|\)\([\t ]\|$\)//g'`
|
|
|
|
CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O\([0-9gsz]\|fast\|\)\([\t ]\|$\)//g'`
|
2006-08-07 04:46:02 +08:00
|
|
|
changequote([,])
|
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
|
1999-12-17 22:28:35 +08:00
|
|
|
else
|
|
|
|
PHP_DEBUG=0
|
|
|
|
ZEND_DEBUG=no
|
|
|
|
fi
|
|
|
|
|
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])
|
|
|
|
|
|
|
|
if test "$PHP_DEBUG_ASSERTIONS" = "yes"; then
|
|
|
|
PHP_DEBUG=1
|
|
|
|
ZEND_DEBUG=yes
|
|
|
|
fi
|
|
|
|
|
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])
|
|
|
|
|
|
|
|
if test "$ZEND_ZTS" = "yes"; then
|
|
|
|
AC_DEFINE(ZTS, 1,[ ])
|
|
|
|
PHP_THREAD_SAFETY=yes
|
|
|
|
else
|
|
|
|
PHP_THREAD_SAFETY=no
|
|
|
|
fi
|
|
|
|
|
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])
|
|
|
|
|
|
|
|
if test "$PHP_RTLD_NOW" = "yes"; then
|
|
|
|
AC_DEFINE(PHP_USE_RTLD_NOW, 1, [ Use dlopen with RTLD_NOW instead of RTLD_LAZY ])
|
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
2002-02-05 09:27:00 +08:00
|
|
|
case $PHP_LAYOUT in
|
|
|
|
GNU)
|
|
|
|
oldstyleextdir=no
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
oldstyleextdir=yes
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
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
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
if test "$PHP_CONFIG_FILE_PATH" = "DEFAULT"; then
|
2001-05-07 07:11:58 +08:00
|
|
|
case $PHP_LAYOUT in
|
2001-05-07 07:16:33 +08:00
|
|
|
GNU)
|
2001-05-12 18:33:52 +08:00
|
|
|
PHP_CONFIG_FILE_PATH=$sysconfdir
|
2002-02-05 09:27:00 +08:00
|
|
|
;;
|
2001-05-07 07:16:33 +08:00
|
|
|
*)
|
2001-05-12 18:33:52 +08:00
|
|
|
PHP_CONFIG_FILE_PATH=$libdir
|
2002-02-05 09:27:00 +08:00
|
|
|
;;
|
2001-05-07 07:11:58 +08:00
|
|
|
esac
|
|
|
|
fi
|
|
|
|
|
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])
|
|
|
|
|
2002-10-04 12:47:35 +08:00
|
|
|
if test "$PHP_CONFIG_FILE_SCAN_DIR" = "DEFAULT"; then
|
2005-07-27 23:24:36 +08:00
|
|
|
PHP_CONFIG_FILE_SCAN_DIR=
|
2002-10-04 12:47:35 +08:00
|
|
|
fi
|
2007-07-12 07:20:37 +08:00
|
|
|
AC_MSG_RESULT([$PHP_CONFIG_FILE_SCAN_DIR])
|
2002-10-04 12:47:35 +08:00
|
|
|
|
1999-12-17 22:28:35 +08:00
|
|
|
test -n "$DEBUG_CFLAGS" && CFLAGS="$CFLAGS $DEBUG_CFLAGS"
|
1999-04-17 08:37:12 +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
|
|
|
|
|
|
|
if test "$PHP_SIGCHILD" = "yes"; then
|
2000-06-08 14:14:58 +08:00
|
|
|
AC_DEFINE(PHP_SIGCHILD, 1, [ ])
|
2000-05-19 03:45:34 +08:00
|
|
|
else
|
2000-06-08 14:14:58 +08:00
|
|
|
AC_DEFINE(PHP_SIGCHILD, 0, [ ])
|
2000-05-19 03:45:34 +08:00
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
|
|
|
if test "$PHP_LIBGCC" = "yes"; then
|
|
|
|
PHP_LIBGCC_LIBPATH(gcc)
|
|
|
|
if test -z "$libgcc_libpath"; then
|
2001-09-07 04:55:24 +08:00
|
|
|
AC_MSG_ERROR([Cannot locate libgcc. Make sure that gcc is in your path])
|
1999-09-26 17:05:56 +08:00
|
|
|
fi
|
2001-03-28 04:35:04 +08:00
|
|
|
PHP_ADD_LIBPATH($libgcc_libpath)
|
|
|
|
PHP_ADD_LIBRARY(gcc, yes)
|
2000-03-30 23:00:30 +08:00
|
|
|
fi
|
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
|
|
|
|
2000-06-08 14:14:58 +08:00
|
|
|
if test "$PHP_SHORT_TAGS" = "yes"; then
|
2007-07-12 07:20:37 +08:00
|
|
|
AC_DEFINE(DEFAULT_SHORT_OPEN_TAG, "1", [ ])
|
2000-06-08 14:14:58 +08:00
|
|
|
else
|
2007-07-12 07:20:37 +08:00
|
|
|
AC_DEFINE(DEFAULT_SHORT_OPEN_TAG, "0", [ ])
|
2000-06-08 14:14:58 +08:00
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
|
|
|
if test "$PHP_DMALLOC" = "yes"; then
|
2001-08-19 02:14:22 +08:00
|
|
|
AC_CHECK_LIB(dmalloc, dmalloc_error, [
|
|
|
|
PHP_ADD_LIBRARY(dmalloc)
|
|
|
|
AC_DEFINE(HAVE_DMALLOC,1,[Whether you have dmalloc])
|
|
|
|
CPPFLAGS="$CPPFLAGS -DDMALLOC_FUNC_CHECK"
|
|
|
|
], [
|
2001-09-07 04:55:24 +08:00
|
|
|
AC_MSG_ERROR([Problem with enabling dmalloc. Please check config.log for details.])
|
2001-08-19 02:14:22 +08:00
|
|
|
])
|
2000-06-08 14:14:58 +08:00
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
|
|
|
if test "$PHP_IPV6" != "no" && test "$ac_cv_ipv6_support" = yes; then
|
2007-07-12 07:20:37 +08:00
|
|
|
AC_DEFINE(HAVE_IPV6, 1, [Whether to enable IPv6 support])
|
2002-08-17 21:56:39 +08:00
|
|
|
fi
|
|
|
|
|
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-06-30 01:12:08 +08:00
|
|
|
AS_VAR_IF([PHP_DTRACE], [yes],
|
|
|
|
[PHP_INIT_DTRACE([Zend/zend_dtrace.d],
|
|
|
|
[Zend/zend_dtrace_gen.h],
|
|
|
|
[main/main.c Zend/zend_API.c \
|
2010-05-07 23:17:34 +08:00
|
|
|
Zend/zend_execute.c Zend/zend_exceptions.c \
|
2024-06-30 01:12:08 +08:00
|
|
|
Zend/zend_dtrace.c Zend/zend.c])])
|
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
|
|
|
|
2007-07-12 19:33:37 +08:00
|
|
|
if test "$PHP_FD_SETSIZE" != "no"; then
|
|
|
|
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
|
2007-07-12 07:20:37 +08:00
|
|
|
else
|
|
|
|
AC_MSG_RESULT([using system default])
|
|
|
|
fi
|
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
|
|
|
|
2001-12-01 08:59:43 +08:00
|
|
|
PHP_HELP_SEPARATOR([Extensions:
|
|
|
|
|
|
|
|
--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/
|
|
|
|
])
|
1999-04-17 10:01:20 +08:00
|
|
|
|
1999-12-30 10:59:53 +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"
|
2003-02-14 09:27:15 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl This has to be here to prevent the openssl crypt() from overriding the
|
|
|
|
dnl system provided crypt().
|
2003-02-14 09:27:15 +08:00
|
|
|
if test "$ac_cv_lib_crypt_crypt" = "yes"; then
|
|
|
|
EXTRA_LIBS="-lcrypt $EXTRA_LIBS -lcrypt"
|
|
|
|
fi
|
|
|
|
|
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:])
|
|
|
|
PHP_CONFIGURE_PART(Configuring PEAR)
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl If CLI is disabled disable PEAR.
|
2007-07-12 07:20:37 +08:00
|
|
|
if test "$PHP_CLI" = "no"; then
|
2005-02-07 20:48:11 +08:00
|
|
|
with_pear=no
|
|
|
|
fi
|
|
|
|
|
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
|
|
|
|
|
|
|
if test "$PHP_PEAR" != "no"; then
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl PEAR dependencies.
|
2003-07-01 00:33:50 +08:00
|
|
|
if test "$PHP_XML" = "no"; then
|
2018-07-29 09:43:45 +08:00
|
|
|
pear_error_msg="$pear_error_msg
|
2005-02-07 20:48:11 +08:00
|
|
|
PEAR requires XML to be enabled. Add --enable-xml to the configure line. (or --without-pear)"
|
2003-07-01 00:33:50 +08:00
|
|
|
fi
|
2005-08-28 09:10:00 +08:00
|
|
|
|
2003-07-01 00:33:50 +08:00
|
|
|
if test "$pear_error_msg"; then
|
|
|
|
AC_MSG_ERROR([$pear_error_msg])
|
|
|
|
fi
|
|
|
|
|
2019-02-01 19:09:29 +08:00
|
|
|
AC_MSG_WARN([The --with-pear option is deprecated])
|
|
|
|
|
2003-07-01 00:33:50 +08:00
|
|
|
install_pear="install-pear"
|
|
|
|
PEAR_INSTALLDIR=$PHP_PEAR
|
|
|
|
|
2019-02-01 19:09:29 +08:00
|
|
|
if test "$PHP_PEAR" = "yes"; then
|
2003-07-01 00:33:50 +08:00
|
|
|
case $PHP_LAYOUT in
|
|
|
|
GNU) PEAR_INSTALLDIR=$datadir/pear;;
|
|
|
|
*) PEAR_INSTALLDIR=$libdir/php;;
|
|
|
|
esac
|
|
|
|
fi
|
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])
|
2005-02-07 20:48:11 +08:00
|
|
|
PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/pear/Makefile.frag,$abs_srcdir/pear,pear)
|
2003-07-01 00:33:50 +08:00
|
|
|
fi
|
|
|
|
|
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:])
|
|
|
|
PHP_CONFIGURE_PART(Configuring Zend)
|
|
|
|
|
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])
|
2022-07-26 18:52: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
|
2021-07-12 04:40:11 +08:00
|
|
|
if test "$fiber_os" = 'mac'; then
|
|
|
|
AC_DEFINE([_XOPEN_SOURCE], 1, [ ])
|
|
|
|
fi
|
|
|
|
AC_CHECK_HEADER(ucontext.h, [
|
|
|
|
AC_DEFINE([ZEND_FIBER_UCONTEXT], 1, [ ])
|
|
|
|
], [
|
|
|
|
AC_MSG_ERROR([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-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
|
|
|
|
2002-02-04 04:00:27 +08:00
|
|
|
ZEND_EXTRA_LIBS="$LIBS"
|
2023-07-07 10:30:56 +08:00
|
|
|
unset LIBS
|
2000-09-01 07:43:51 +08:00
|
|
|
|
|
|
|
PHP_CONFIGURE_PART(Configuring TSRM)
|
2000-09-02 23:24:18 +08:00
|
|
|
if test "$PHP_THREAD_SAFETY" = "yes"; then
|
2019-03-23 15:15:53 +08:00
|
|
|
TSRM_CHECK_PTHREADS
|
2000-09-02 23:24:18 +08:00
|
|
|
fi
|
2005-02-25 02:11:36 +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"
|
2000-09-01 07:43:51 +08:00
|
|
|
EXTRA_LIBS="$EXTRA_LIBS $LIBS"
|
2009-11-30 16:31:32 +08:00
|
|
|
unset LIBS LDFLAGS
|
1999-12-22 02:04:31 +08:00
|
|
|
|
2018-08-26 02:52:28 +08:00
|
|
|
AC_ARG_PROGRAM
|
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
test "$prefix" = "NONE" && prefix=/usr/local
|
2001-04-22 09:09:14 +08:00
|
|
|
test "$exec_prefix" = "NONE" && exec_prefix='${prefix}'
|
2003-12-01 23:17:13 +08:00
|
|
|
test "$program_prefix" = "NONE" && program_prefix=
|
|
|
|
test "$program_suffix" = "NONE" && program_suffix=
|
2001-05-07 07:16:33 +08:00
|
|
|
|
2023-10-09 08:42:31 +08:00
|
|
|
orig_libdir=$libdir
|
2001-04-22 09:09:14 +08:00
|
|
|
case $libdir in
|
2001-05-07 07:11:58 +08:00
|
|
|
'${exec_prefix}/lib')
|
2001-05-12 18:33:52 +08:00
|
|
|
libdir=$libdir/php
|
2001-05-07 07:11:58 +08:00
|
|
|
;;
|
2001-04-22 09:09:14 +08:00
|
|
|
esac
|
2015-01-04 02:18:07 +08:00
|
|
|
case `eval echo $datadir` in
|
2001-05-07 07:11:58 +08:00
|
|
|
'${prefix}/share')
|
2001-05-12 18:33:52 +08:00
|
|
|
datadir=$datadir/php
|
2001-05-07 07:11:58 +08:00
|
|
|
;;
|
2001-04-22 09:09:14 +08:00
|
|
|
esac
|
2000-05-04 19:57:59 +08:00
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
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
|
2001-04-22 09:09:14 +08:00
|
|
|
exec_prefix=`eval echo $exec_prefix`
|
|
|
|
libdir=`eval echo $libdir`
|
2015-01-04 02:18:07 +08:00
|
|
|
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.
|
2019-11-07 14:45:55 +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
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
if test -z "$EXTENSION_DIR"; then
|
|
|
|
extbasedir=$ZEND_MODULE_API_NO
|
2001-05-07 07:11:58 +08:00
|
|
|
if test "$oldstyleextdir" = "yes"; then
|
|
|
|
if test "$PHP_DEBUG" = "1"; then
|
2001-05-12 18:33:52 +08:00
|
|
|
part1=debug
|
2001-05-07 07:11:58 +08:00
|
|
|
else
|
2001-05-12 18:33:52 +08:00
|
|
|
part1=no-debug
|
2001-05-07 07:11:58 +08:00
|
|
|
fi
|
2019-03-22 17:10:01 +08:00
|
|
|
if test "$enable_zts" = "yes"; then
|
2001-05-12 18:33:52 +08:00
|
|
|
part2=zts
|
2001-05-07 07:11:58 +08:00
|
|
|
else
|
2001-05-12 18:33:52 +08:00
|
|
|
part2=non-zts
|
2001-05-07 07:11:58 +08:00
|
|
|
fi
|
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
|
2001-05-07 07:11:58 +08:00
|
|
|
else
|
2019-03-22 17:10:01 +08:00
|
|
|
if test "$enable_zts" = "yes"; then
|
2002-04-24 06:45:51 +08:00
|
|
|
extbasedir=$extbasedir-zts
|
|
|
|
fi
|
2018-07-29 09:43:45 +08:00
|
|
|
|
2002-04-24 06:45:51 +08:00
|
|
|
if test "$PHP_DEBUG" = "1"; then
|
|
|
|
extbasedir=$extbasedir-debug
|
|
|
|
fi
|
|
|
|
EXTENSION_DIR=$libdir/$extbasedir
|
2001-05-07 07:11:58 +08:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2006-12-25 23:41:56 +08:00
|
|
|
case $PHP_LAYOUT in
|
|
|
|
GNU)
|
|
|
|
datarootdir=$prefix/share
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
datarootdir=$prefix/php
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Expand all directory names for use in macros/constants.
|
2001-04-22 09:09:14 +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`
|
2009-12-15 19:17:47 +08:00
|
|
|
EXPANDED_SBINDIR=`eval echo $sbindir`
|
2011-04-18 17:50:32 +08:00
|
|
|
EXPANDED_MANDIR=`eval echo $mandir`
|
2001-05-12 18:33:52 +08:00
|
|
|
EXPANDED_LIBDIR=$libdir
|
2001-04-22 09:09:14 +08:00
|
|
|
EXPANDED_SYSCONFDIR=`eval echo $sysconfdir`
|
2001-05-12 18:33:52 +08:00
|
|
|
EXPANDED_DATADIR=$datadir
|
2001-04-22 09:09:14 +08:00
|
|
|
EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"`
|
2002-10-04 12:47:35 +08:00
|
|
|
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
|
|
|
|
|
|
|
AC_SUBST(INCLUDE_PATH)
|
|
|
|
AC_SUBST(EXPANDED_PEAR_INSTALLDIR)
|
|
|
|
AC_SUBST(EXPANDED_EXTENSION_DIR)
|
|
|
|
AC_SUBST(EXPANDED_BINDIR)
|
2009-12-15 19:17:47 +08:00
|
|
|
AC_SUBST(EXPANDED_SBINDIR)
|
2011-04-18 17:50:32 +08:00
|
|
|
AC_SUBST(EXPANDED_MANDIR)
|
2001-04-22 09:09:14 +08:00
|
|
|
AC_SUBST(EXPANDED_LIBDIR)
|
|
|
|
AC_SUBST(EXPANDED_DATADIR)
|
|
|
|
AC_SUBST(EXPANDED_SYSCONFDIR)
|
|
|
|
AC_SUBST(EXPANDED_LOCALSTATEDIR)
|
|
|
|
AC_SUBST(EXPANDED_PHP_CONFIG_FILE_PATH)
|
2002-10-04 12:47:35 +08:00
|
|
|
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])
|
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
|
|
|
|
Clean up some unused code (and fix some comments) in build scripts
- Fix typo in build/php.m4
- Nothing uses HAVE_INTTYPES_H; so remove check for header file
- Nothing defines ZEND_ACCONFIG_H_NO_C_PROTOS; so remove #ifndef
- `format_money` was removed in 2019, so <monetary.h> no longer needed
- Nothing uses HAVE_NETDB_H; so remove check for header file
- Nothing checks HAVE_TERMIOS_H; so remove check for header file
(This was actually added when Wez Furlong was adding the original implementation of
PTY support in `proc_open`, since replaced.)
- Nothing checks HAVE_SYS_AUXV_H; so remove check for header file
- PHP_BUILD_DATE variable is not used for anything, so remove it
This variable was added to the Makefile, but from there, was not used for anything.
The comments suggest it was intended to allow 'reproducible builds'. Presumably,
this means that if a bug is found in a PHP binary somewhere, one could look at the
Makefile which it was built from, see the date, and then could check the same
code version out from source control. But... there can easily be multiple commits
to the repo in the same day. Also, what makes us think that the Makefile which a
binary was built from will be easily available?
Besides, ext/standard/info.c already embeds the build date and time in each binary...
but it does it using `__DATE__` and `__TIME__` (see `php_print_info`).
- Nothing checks HAVE_FINITE; so don't check for function
- Grammar fix to comment in build/php.m4
- Nothing sets $php_ldflags_add_usr_lib variable in configure, so remove conditional
This was added in 2002, when Rasmus was having difficulty building PHP on some
host and needed to have /usr/lib in the rpath. It was never documented and
probably has never been used by anyone else.
2020-05-27 01:56:52 +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
|
|
|
|
2020-06-06 04:50:58 +08:00
|
|
|
UNAME=`uname -a | xargs`
|
|
|
|
PHP_UNAME=${PHP_UNAME:-$UNAME}
|
2016-11-12 18:20:01 +08:00
|
|
|
AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output])
|
|
|
|
PHP_OS=`uname | xargs`
|
|
|
|
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output])
|
2020-07-03 16:08:09 +08:00
|
|
|
PHP_BUILD_SYSTEM=${PHP_BUILD_SYSTEM:-$PHP_UNAME}
|
|
|
|
AC_DEFINE_UNQUOTED(PHP_BUILD_SYSTEM,"$PHP_BUILD_SYSTEM",[builder uname output])
|
|
|
|
if test -n "${PHP_BUILD_PROVIDER}"; then
|
|
|
|
AC_DEFINE_UNQUOTED(PHP_BUILD_PROVIDER,"$PHP_BUILD_PROVIDER",[build provider])
|
|
|
|
fi
|
2020-07-10 17:49:22 +08:00
|
|
|
if test -n "${PHP_BUILD_COMPILER}"; then
|
2020-12-28 15:33:09 +08:00
|
|
|
AC_DEFINE_UNQUOTED(PHP_BUILD_COMPILER,"$PHP_BUILD_COMPILER",[used compiler for build])
|
2020-07-10 17:49:22 +08:00
|
|
|
fi
|
|
|
|
if test -n "${PHP_BUILD_ARCH}"; then
|
2020-12-28 15:33:09 +08:00
|
|
|
AC_DEFINE_UNQUOTED(PHP_BUILD_ARCH,"$PHP_BUILD_ARCH",[build architecture])
|
2020-07-10 17:49:22 +08:00
|
|
|
fi
|
2005-07-27 23:24:36 +08:00
|
|
|
|
2015-05-26 13:54:20 +08:00
|
|
|
PHP_SUBST(PHP_FASTCGI_OBJS)
|
2002-03-07 22:20:02 +08:00
|
|
|
PHP_SUBST(PHP_SAPI_OBJS)
|
2010-11-14 07:13:07 +08:00
|
|
|
PHP_SUBST(PHP_BINARY_OBJS)
|
2002-03-07 22:20:02 +08:00
|
|
|
PHP_SUBST(PHP_GLOBAL_OBJS)
|
|
|
|
|
2010-11-14 07:13:07 +08:00
|
|
|
PHP_SUBST(PHP_BINARIES)
|
2002-03-07 22:20:02 +08:00
|
|
|
PHP_SUBST(PHP_MODULES)
|
2008-02-18 04:50:03 +08:00
|
|
|
PHP_SUBST(PHP_ZEND_EX)
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2000-12-23 21:17:36 +08:00
|
|
|
PHP_SUBST_OLD(abs_builddir)
|
|
|
|
PHP_SUBST_OLD(abs_srcdir)
|
2002-04-23 10:51:17 +08:00
|
|
|
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(bindir)
|
2009-12-15 18:55:27 +08:00
|
|
|
PHP_SUBST(sbindir)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(exec_prefix)
|
2005-08-09 00:06:49 +08:00
|
|
|
PHP_SUBST_OLD(program_prefix)
|
|
|
|
PHP_SUBST_OLD(program_suffix)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(includedir)
|
2023-10-09 08:42:31 +08:00
|
|
|
PHP_SUBST_OLD(orig_libdir)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(libdir)
|
2003-02-12 07:46:39 +08:00
|
|
|
PHP_SUBST(mandir)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(phptempdir)
|
|
|
|
PHP_SUBST(prefix)
|
2001-01-10 09:34:40 +08:00
|
|
|
PHP_SUBST(localstatedir)
|
2001-04-22 09:09:14 +08:00
|
|
|
PHP_SUBST(datadir)
|
2006-12-25 23:41:56 +08:00
|
|
|
PHP_SUBST(datarootdir)
|
2001-04-22 09:09:14 +08:00
|
|
|
PHP_SUBST(sysconfdir)
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2005-04-21 22:57:53 +08:00
|
|
|
PHP_SUBST(EXEEXT)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(CC)
|
2021-04-16 22:28:54 +08:00
|
|
|
PHP_SUBST(BUILD_CC)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(CFLAGS)
|
2001-05-12 20:22:34 +08:00
|
|
|
PHP_SUBST(CFLAGS_CLEAN)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(CPP)
|
|
|
|
PHP_SUBST(CPPFLAGS)
|
|
|
|
PHP_SUBST(CXX)
|
2000-07-10 04:39:18 +08:00
|
|
|
PHP_SUBST(CXXFLAGS)
|
2001-05-12 20:22:34 +08:00
|
|
|
PHP_SUBST(CXXFLAGS_CLEAN)
|
2000-12-21 13:26:45 +08:00
|
|
|
PHP_SUBST_OLD(DEBUG_CFLAGS)
|
|
|
|
PHP_SUBST_OLD(EXTENSION_DIR)
|
2002-12-11 16:41:45 +08:00
|
|
|
PHP_SUBST_OLD(EXTRA_LDFLAGS)
|
2003-09-08 21:10:10 +08:00
|
|
|
PHP_SUBST_OLD(EXTRA_LDFLAGS_PROGRAM)
|
2000-12-23 21:17:36 +08:00
|
|
|
PHP_SUBST_OLD(EXTRA_LIBS)
|
2002-02-04 04:00:27 +08:00
|
|
|
PHP_SUBST_OLD(ZEND_EXTRA_LIBS)
|
2002-04-23 10:51:17 +08:00
|
|
|
PHP_SUBST_OLD(INCLUDES)
|
|
|
|
PHP_SUBST_OLD(EXTRA_INCLUDES)
|
2000-12-21 13:26:45 +08:00
|
|
|
PHP_SUBST_OLD(INSTALL_IT)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(LIBTOOL)
|
2000-05-18 19:35:17 +08:00
|
|
|
PHP_SUBST(LN_S)
|
2000-12-23 21:17:36 +08:00
|
|
|
PHP_SUBST_OLD(NATIVE_RPATHS)
|
|
|
|
PHP_SUBST_OLD(PHP_LDFLAGS)
|
2002-03-07 22:20:02 +08:00
|
|
|
PHP_SUBST(OVERALL_TARGET)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(PHP_RPATHS)
|
|
|
|
PHP_SUBST(PHP_SAPI)
|
2002-05-09 20:06:44 +08:00
|
|
|
PHP_SUBST_OLD(PHP_VERSION)
|
2006-07-27 16:53:16 +08:00
|
|
|
PHP_SUBST_OLD(PHP_VERSION_ID)
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_SUBST(SHELL)
|
2002-08-07 00:01:34 +08:00
|
|
|
PHP_SUBST(PHP_FRAMEWORKS)
|
2002-08-07 06:05:38 +08:00
|
|
|
PHP_SUBST(PHP_FRAMEWORKPATH)
|
2005-11-22 07:08:02 +08:00
|
|
|
PHP_SUBST(INSTALL_HEADERS)
|
1999-12-30 10:59:53 +08:00
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
old_CC=$CC
|
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.
|
2019-04-23 19:24:29 +08:00
|
|
|
if test "$PHP_WERROR" = "yes"; then
|
|
|
|
CFLAGS="$CFLAGS -Werror"
|
2020-05-20 21:21:01 +08:00
|
|
|
CXXFLAGS="$CXXFLAGS -Werror"
|
|
|
|
fi
|
|
|
|
|
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.
|
|
|
|
if test "$PHP_MEMORY_SANITIZER" = "yes"; then
|
2021-04-16 12:41:25 +08:00
|
|
|
AX_CHECK_COMPILE_FLAG([-fsanitize=memory -fsanitize-memory-track-origins], [
|
|
|
|
CFLAGS="$CFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
|
|
|
|
CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins"
|
|
|
|
], [AC_MSG_ERROR([MemorySanitizer is not available])])
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$PHP_ADDRESS_SANITIZER" = "yes"; then
|
|
|
|
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])])
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$PHP_UNDEFINED_SANITIZER" = "yes"; then
|
|
|
|
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.
|
|
|
|
OLD_CFLAGS="$CFLAGS"
|
|
|
|
CFLAGS="$CFLAGS -fno-sanitize-recover=undefined"
|
2023-12-22 23:12:59 +08:00
|
|
|
AC_CACHE_CHECK([whether to add -fno-sanitize=function],[php_cv_ubsan_no_function],[
|
2023-11-10 03:44:30 +08:00
|
|
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
|
|
|
void foo(char *string) {}
|
|
|
|
int main(void) {
|
|
|
|
void (*f)(void *) = (void (*)(void *))foo;
|
|
|
|
f("foo");
|
|
|
|
}
|
2023-12-22 23:12:59 +08:00
|
|
|
]])],[php_cv_ubsan_no_function=no],[php_cv_ubsan_no_function=yes],[php_cv_ubsan_no_function=no])])
|
2023-11-10 03:44:30 +08:00
|
|
|
CFLAGS="$OLD_CFLAGS"
|
2023-12-22 23:12:59 +08:00
|
|
|
if test "$php_cv_ubsan_no_function" = yes; then
|
2023-11-10 03:44:30 +08:00
|
|
|
CFLAGS="$CFLAGS -fno-sanitize=function"
|
|
|
|
CXXFLAGS="$CFLAGS -fno-sanitize=function"
|
|
|
|
fi
|
2021-04-16 12:41:25 +08:00
|
|
|
], [AC_MSG_ERROR([UndefinedBehaviorSanitizer is not available])])
|
|
|
|
fi
|
|
|
|
|
|
|
|
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:])
|
2003-02-25 15:40:51 +08:00
|
|
|
PHP_CONFIGURE_PART(Configuring libtool)
|
2003-02-25 14:35:43 +08:00
|
|
|
|
2018-01-13 05:52:47 +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
|
2018-01-13 05:52:47 +08:00
|
|
|
AC_SUBST(AR_FLAGS, [cr])
|
|
|
|
|
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
|
|
|
|
2001-05-12 18:33:52 +08:00
|
|
|
CC=$old_CC
|
2000-03-19 01:58:09 +08:00
|
|
|
|
1999-12-30 10:59:53 +08:00
|
|
|
PHP_CONFIGURE_PART(Generating files)
|
|
|
|
|
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
|
|
|
|
2002-03-07 22:20:02 +08:00
|
|
|
PHP_SUBST(all_targets)
|
|
|
|
PHP_SUBST(install_targets)
|
2010-11-14 07:13:07 +08:00
|
|
|
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/])
|
2021-01-26 22:53:49 +08:00
|
|
|
PHP_INSTALL_HEADERS([Zend/Optimizer], [ \
|
|
|
|
zend_call_graph.h \
|
|
|
|
zend_cfg.h \
|
2021-06-14 17:08:32 +08:00
|
|
|
zend_dfg.h \
|
2021-01-26 22:53:49 +08:00
|
|
|
zend_dump.h \
|
|
|
|
zend_func_info.h \
|
|
|
|
zend_inference.h \
|
|
|
|
zend_optimizer.h \
|
2023-10-31 02:37:27 +08:00
|
|
|
zend_ssa.h \
|
|
|
|
zend_worklist.h])
|
2005-11-22 07:08:02 +08:00
|
|
|
|
2019-07-12 19:12:56 +08:00
|
|
|
PHP_ADD_SOURCES(TSRM, TSRM.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
|
2002-03-07 22:20:02 +08:00
|
|
|
|
2019-02-21 06:17:15 +08:00
|
|
|
PHP_ADD_SOURCES(main, main.c snprintf.c spprintf.c \
|
2022-05-27 16:05:33 +08:00
|
|
|
fopen_wrappers.c php_scandir.c \
|
2022-03-23 04:15:58 +08:00
|
|
|
php_ini_builder.c \
|
2002-03-07 22:20:02 +08:00
|
|
|
php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \
|
2020-02-27 17:33:35 +08:00
|
|
|
strlcat.c explicit_bzero.c reentrancy.c php_variables.c php_ticks.c \
|
2022-09-22 20:55:41 +08:00
|
|
|
network.c php_open_temporary_file.c php_odbc_utils.c safe_bcmp.c \
|
2017-08-10 10:55:25 +08:00
|
|
|
output.c getopt.c php_syslog.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
|
|
|
|
PHP_ADD_SOURCES(main, debug_gdb_scripts.c)
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2015-05-26 13:54:20 +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
|
|
|
|
|
|
|
PHP_ADD_SOURCES(main/streams, streams.c cast.c memory.c filter.c \
|
2007-11-06 19:50:52 +08:00
|
|
|
plain_wrapper.c userspace.c transports.c xp_socket.c mmap.c \
|
2014-10-15 22:33:40 +08:00
|
|
|
glob_wrapper.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
|
2003-02-17 06:19:28 +08:00
|
|
|
|
2014-10-15 22:33:40 +08:00
|
|
|
PHP_ADD_SOURCES(/main, internal_functions.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1, sapi)
|
2016-11-12 18:20:01 +08:00
|
|
|
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-06-27 04:18:46 +08:00
|
|
|
PHP_ADD_SOURCES([Zend], [m4_normalize([
|
|
|
|
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
|
|
|
|
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_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
|
|
|
|
])],
|
|
|
|
[-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 $fiber_asm_cflag])
|
2002-03-08 03:56:53 +08:00
|
|
|
|
2003-01-28 18:59:12 +08:00
|
|
|
PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/scripts/Makefile.frag,$abs_srcdir/scripts,scripts)
|
2004-10-02 06:32:15 +08:00
|
|
|
PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Zend/Makefile.frag,$abs_srcdir/Zend,Zend)
|
2002-03-07 22:20:02 +08:00
|
|
|
|
2002-10-24 21:15:49 +08:00
|
|
|
AC_DEFINE([HAVE_BUILD_DEFS_H], 1, [ ])
|
|
|
|
|
2024-03-27 23:20:03 +08:00
|
|
|
PHP_ADD_BUILD_DIR([m4_normalize([
|
|
|
|
main
|
|
|
|
main/streams
|
|
|
|
scripts
|
|
|
|
scripts/man1
|
|
|
|
TSRM
|
|
|
|
Zend
|
|
|
|
Zend/asm
|
|
|
|
Zend/Optimizer
|
|
|
|
])])
|
2003-01-28 18:59:12 +08:00
|
|
|
|
2019-03-28 06:36:59 +08:00
|
|
|
ALL_OUTPUT_FILES="main/build-defs.h \
|
2005-04-30 12:27:23 +08:00
|
|
|
scripts/phpize scripts/man1/phpize.1 \
|
|
|
|
scripts/php-config scripts/man1/php-config.1 \
|
2002-03-07 22:20:02 +08:00
|
|
|
$PHP_OUTPUT_FILES"
|
2000-07-26 22:53:54 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Generate build files.
|
2018-07-29 05:09:06 +08:00
|
|
|
AC_CONFIG_FILES([$ALL_OUTPUT_FILES])
|
2019-07-11 08:00:51 +08:00
|
|
|
|
|
|
|
AC_CONFIG_COMMANDS_PRE([PHP_PATCH_CONFIG_HEADERS([main/php_config.h.in])])
|
|
|
|
|
2019-07-04 06:18:15 +08:00
|
|
|
AC_CONFIG_COMMANDS([default],[
|
|
|
|
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
|
|
|
|
],[
|
2000-07-26 22:53:54 +08:00
|
|
|
|
2002-05-15 04:53:33 +08:00
|
|
|
if test "\$CONFIG_FILES" = "$ALL_OUTPUT_FILES" || test "\$CONFIG_FILES" = " $ALL_OUTPUT_FILES" || test -z "\$CONFIG_FILES"; then
|
2000-07-26 22:53:54 +08:00
|
|
|
REDO_ALL=yes
|
|
|
|
fi
|
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Create configuration headers.
|
|
|
|
dnl ----------------------------------------------------------------------------
|
2000-01-13 03:44:35 +08:00
|
|
|
cat >Zend/zend_config.h <<FEO
|
2005-01-10 05:05:06 +08:00
|
|
|
#include <../main/php_config.h>
|
2000-01-13 03:44:35 +08:00
|
|
|
FEO
|
1999-10-04 23:18:26 +08:00
|
|
|
|
2019-05-13 00:43:03 +08:00
|
|
|
dnl Run this only when generating all the files.
|
2000-07-26 22:53:54 +08:00
|
|
|
if test -n "\$REDO_ALL"; then
|
2000-06-12 02:51:17 +08:00
|
|
|
echo "creating main/internal_functions.c"
|
2019-07-08 20:58:26 +08:00
|
|
|
AWK="$AWK" sh $srcdir/build/genif.sh $srcdir/main/internal_functions.c.in "$EXT_STATIC" > main/internal_functions.c
|
2002-01-20 10:30:18 +08:00
|
|
|
|
|
|
|
echo "creating main/internal_functions_cli.c"
|
2019-07-08 20:58:26 +08:00
|
|
|
AWK="$AWK" sh $srcdir/build/genif.sh $srcdir/main/internal_functions.c.in "$EXT_CLI_STATIC" > main/internal_functions_cli.c
|
2002-01-20 10:30:18 +08:00
|
|
|
|
2017-10-05 23:55:29 +08:00
|
|
|
if test "$PHP_SAPI" = "apache2handler"; then
|
2012-03-02 08:07:41 +08:00
|
|
|
if test "$APACHE_VERSION" -ge 2004001; then
|
|
|
|
if test -z "$APACHE_THREADED_MPM"; then
|
|
|
|
cat <<X
|
|
|
|
+--------------------------------------------------------------------+
|
|
|
|
| *** WARNING *** |
|
|
|
|
| |
|
|
|
|
| You have built PHP for Apache's current non-threaded MPM. |
|
|
|
|
| If you change Apache to use a threaded MPM you must reconfigure |
|
2019-03-27 01:28:18 +08:00
|
|
|
| PHP with --enable-zts |
|
2012-03-02 08:07:41 +08:00
|
|
|
X
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
1999-07-22 05:56:25 +08:00
|
|
|
fi
|
1999-04-17 08:37:12 +08:00
|
|
|
])
|
2018-07-29 05:09:06 +08:00
|
|
|
AC_OUTPUT
|