## $Id$ -*- autoconf -*- dnl ## Process this file with autoconf to produce a configure script. dnl include Zend specific macro definitions first dnl ------------------------------------------------------------------------- sinclude(Zend/acinclude.m4) dnl Basic autoconf + automake initialization, generation of config.nice. dnl ------------------------------------------------------------------------- AC_PREREQ(2.59) AC_INIT(README.GIT-RULES) ifdef([AC_PRESERVE_HELP_ORDER], [AC_PRESERVE_HELP_ORDER], []) PHP_CONFIG_NICE(config.nice) PHP_CANONICAL_HOST_TARGET AC_CONFIG_HEADER(main/php_config.h) AH_TOP([ #ifndef PHP_CONFIG_H #define PHP_CONFIG_H #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 #undef uint #undef ulong ]) AH_BOTTOM([ #ifndef ZEND_ACCONFIG_H_NO_C_PROTOS #ifdef HAVE_STDLIB_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef HAVE_IEEEFP_H # include #endif #ifdef HAVE_STRING_H # include #else # include #endif #if ZEND_BROKEN_SPRINTF int zend_sprintf(char *buffer, const char *format, ...); #else # define zend_sprintf sprintf #endif #include #ifndef zend_isnan #if HAVE_DECL_ISNAN && (!defined(__cplusplus) || __cplusplus < 201103L) #define zend_isnan(a) isnan(a) #elif defined(HAVE_FPCLASS) #define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN)) #else #define zend_isnan(a) ((a) != (a)) #endif #endif #if HAVE_DECL_ISINF && (!defined(__cplusplus) || __cplusplus < 201103L) #define zend_isinf(a) isinf(a) #elif defined(INFINITY) /* Might not work, but is required by ISO C99 */ #define zend_isinf(a) (((a)==INFINITY || (a)==-INFINITY)?1:0) #elif defined(HAVE_FPCLASS) #define zend_isinf(a) ((fpclass(a) == FP_PINF) || (fpclass(a) == FP_NINF)) #else #define zend_isinf(a) 0 #endif #if HAVE_DECL_ISFINITE && (!defined(__cplusplus) || __cplusplus < 201103L) #define zend_finite(a) isfinite(a) #elif defined(HAVE_FINITE) #define zend_finite(a) finite(a) #elif defined(fpclassify) #define zend_finite(a) ((fpclassify((a))!=FP_INFINITE&&fpclassify((a))!=FP_NAN)?1:0) #else #define zend_finite(a) (zend_isnan(a) ? 0 : zend_isinf(a) ? 0 : 1) #endif #endif /* ifndef ZEND_ACCONFIG_H_NO_C_PROTOS */ #undef PTHREADS #endif /* PHP_CONFIG_H */ ]) PHP_MAJOR_VERSION=7 PHP_MINOR_VERSION=2 PHP_RELEASE_VERSION=25 PHP_EXTRA_VERSION="-dev" 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` dnl Allow version values to be used in Makefile PHP_SUBST(PHP_MAJOR_VERSION) PHP_SUBST(PHP_MINOR_VERSION) PHP_SUBST(PHP_RELEASE_VERSION) PHP_SUBST(PHP_EXTRA_VERSION) dnl Define where extension directories are located in the configure context 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 AC_DEFUN([PHP_ALWAYS_SHARED],[])dnl dnl Setting up the PHP version based on the information above. dnl ------------------------------------------------------------------------- echo "/* automatically generated by configure */" > php_version.h.new echo "/* edit configure.ac to change version number */" >> php_version.h.new 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 echo "#define PHP_VERSION \"$PHP_VERSION\"" >> php_version.h.new echo "#define PHP_VERSION_ID $PHP_VERSION_ID" >> php_version.h.new cmp php_version.h.new $srcdir/main/php_version.h >/dev/null 2>&1 if test $? -ne 0 ; then rm -f $srcdir/main/php_version.h && mv php_version.h.new $srcdir/main/php_version.h && \ echo 'Updated main/php_version.h' else rm -f php_version.h.new fi dnl Catch common errors here to save a few seconds of our users' time dnl ------------------------------------------------------------------------- if test "$with_shared_apache" != "no" && test -n "$with_shared_apache" ; then AC_MSG_ERROR([--with-shared-apache is not supported. Please refer to the documentation for using APXS]) fi if test -n "$with_apache" && test -n "$with_apxs"; then AC_MSG_ERROR([--with-apache and --with-apxs cannot be used together]) fi if test -n "$with_apxs2filter" && test -n "$with_apxs2"; then AC_MSG_ERROR([--with-apxs2filter and --with-apxs2 cannot be used together]) fi dnl Settings we want to make before the checks. dnl ------------------------------------------------------------------------- cwd=`pwd` php_shtool=$srcdir/build/shtool T_MD=`$php_shtool echo -n -e %B` T_ME=`$php_shtool echo -n -e %b` PHP_INIT_BUILD_SYSTEM 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` php_abs_top_srcdir=$abs_srcdir php_abs_top_builddir=$abs_builddir dnl Because ``make install'' is often performed by the superuser, dnl we create the libs subdirectory as the user who configures PHP. dnl Otherwise, the current user will not be able to delete libs dnl or the contents of libs. $php_shtool mkdir -p libs rm -f libs/* dnl Checks for programs. dnl ------------------------------------------------------------------------- AC_PROG_CC([cc gcc]) PHP_DETECT_ICC PHP_DETECT_SUNCC AC_PROG_CC_C_O dnl Change to AC_PROG_CC_STDC when we start requiring a post-2.13 autoconf dnl AC_PROG_CC_STDC AC_PROG_CPP AC_AIX AC_PROG_LN_S dnl Support systems with system libraries in e.g. /usr/lib64 PHP_ARG_WITH(libdir, for system library directory, [ --with-libdir=NAME Look for libraries in .../NAME rather than .../lib],lib,no) PHP_ARG_ENABLE(rpath, whether to enable runpaths, [ --disable-rpath Disable passing additional runtime library search paths], yes, no) dnl check for -R, etc. switch PHP_RUNPATH_SWITCH dnl Checks for some support/generator progs PHP_PROG_AWK PHP_PROG_BISON PHP_PROG_RE2C dnl Check if bison generated files exist when bison does not.. case $php_cv_bison_version in ""|invalid[)] if ! test -f "$abs_srcdir/Zend/zend_language_parser.h" || ! test -f "$abs_srcdir/Zend/zend_language_parser.c" ; then AC_MSG_ERROR([bison is required to build PHP/Zend when building a GIT checkout!]) fi ;; esac PHP_ARG_ENABLE(re2c-cgoto, whether to enable computed goto gcc extension with re2c, [ --enable-re2c-cgoto Enable -g flag to re2c to use computed goto gcc extension], no, no) if test "$PHP_RE2C_CGOTO" = "no"; then RE2C_FLAGS="" else AC_MSG_CHECKING([whether re2c -g works]) AC_TRY_COMPILE([],[ int main(int argc, const char **argv) { argc = argc; argv = argv; label1: label2: static void *adr[] = { &&label1, &&label2}; goto *adr[0]; return 0; } ],[ RE2C_FLAGS="" AC_MSG_RESULT([no]) ],[ RE2C_FLAGS="-g" AC_MSG_RESULT([yes]) ]) fi PHP_SUBST(RE2C_FLAGS) dnl Platform-specific compile settings. dnl ------------------------------------------------------------------------- dnl See bug #28605 case $host_cpu in alpha*) if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -mieee" else CFLAGS="$CFLAGS -ieee" fi ;; sparc*) if test "$SUNCC" = "yes"; then CFLAGS="$CFLAGS -xmemalign=8s" fi ;; esac 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. AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CFLAGS="$CFLAGS -fvisibility=hidden"]) case $host_alias in *solaris*) CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS" if test "${enable_libgcc+set}" != "set" && test "$GCC" = "yes"; then enable_libgcc=yes fi ;; *dgux*) CPPFLAGS="$CPPFLAGS -D_BSD_TIMEOFDAY_FLAVOR" ;; *darwin*|*rhapsody*) if test -n "$GCC"; then PHP_CHECK_GCC_ARG(-no-cpp-precomp, gcc_no_cpp_precomp=yes) if test "$gcc_no_cpp_precomp" = "yes"; then CPPFLAGS="$CPPFLAGS -no-cpp-precomp" fi fi php_multiple_shlib_versions_ok=yes ;; *beos*) beos_threads=1 LIBS="$LIBS -lbe -lroot" ;; *mips*) CPPFLAGS="$CPPFLAGS -D_XPG_IV" ;; *hpux*) if test "$GCC" = "yes"; then CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" fi ;; esac # Disable PIC mode by default where it is known to be safe to do so, # to avoid the performance hit from the lost register AC_MSG_CHECKING([whether to force non-PIC code in shared modules]) case $host_alias in i?86-*-linux*|i?86-*-freebsd*) if test "${with_pic+set}" != "set" || test "$with_pic" = "no"; then with_pic=no AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi ;; *) AC_MSG_RESULT(no) ;; esac dnl Include Zend and TSRM configurations. dnl ------------------------------------------------------------------------- sinclude(Zend/Zend.m4) sinclude(TSRM/threads.m4) sinclude(TSRM/tsrm.m4) dnl . dnl ------------------------------------------------------------------------- PTHREADS_CHECK PHP_HELP_SEPARATOR([SAPI modules:]) PHP_SHLIB_SUFFIX_NAMES PHP_BUILD_PROGRAM PHP_SAPI=none dnl SAPI configuration. dnl ------------------------------------------------------------------------- dnl paths to the targets are relative to the build directory SAPI_SHARED=libs/libphp[]$PHP_MAJOR_VERSION[.]$SHLIB_DL_SUFFIX_NAME SAPI_STATIC=libs/libphp[]$PHP_MAJOR_VERSION[.a] SAPI_LIBTOOL=libphp[]$PHP_MAJOR_VERSION[.la] PHP_CONFIGURE_PART(Configuring SAPI modules) esyscmd(./build/config-stubs sapi) dnl Show which main SAPI was selected AC_MSG_CHECKING([for chosen SAPI module]) AC_MSG_RESULT([$PHP_SAPI]) dnl Show which binaries were selected AC_MSG_CHECKING([for executable SAPI binaries]) if test "$PHP_BINARIES"; then AC_MSG_RESULT([$PHP_BINARIES]) else AC_MSG_RESULT([none]) fi dnl Exit early if test -z "$PHP_INSTALLED_SAPIS"; then AC_MSG_ERROR([Nothing to build.]) fi dnl force ZTS if test "$enable_maintainer_zts" = "yes"; then PTHREADS_ASSIGN_VARS PTHREADS_FLAGS fi dnl Starting system checks. dnl ------------------------------------------------------------------------- PHP_CONFIGURE_PART(Running system checks) dnl Find sendmail binary PHP_PROG_SENDMAIL dnl Check whether the system uses EBCDIC (not ASCII) as its native codeset PHP_EBCDIC dnl Check whether the system byte ordering is bigendian PHP_C_BIGENDIAN dnl Check whether writing to stdout works PHP_TEST_WRITE_STDOUT dnl Check for /usr/pkg/{lib,include} which is where NetBSD puts binary dnl and source packages. This should be harmless on other OSs. if test -d /usr/pkg/include -a -d /usr/pkg/lib ; then CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" LDFLAGS="$LDFLAGS -L/usr/pkg/lib" fi test -d /usr/ucblib && PHP_ADD_LIBPATH(/usr/ucblib) dnl First, library checks. dnl ------------------------------------------------------------------------- dnl Some systems (OpenServer 5) dislike -lsocket -lnsl, so we try dnl to avoid -lnsl checks, if we already have the functions which dnl are usually in libnsl dnl Also, uClibc will bark at linking with glibc's libnsl. PHP_CHECK_FUNC(socket, socket) PHP_CHECK_FUNC(socketpair, socket) PHP_CHECK_FUNC(htonl, socket) PHP_CHECK_FUNC(gethostname, nsl) PHP_CHECK_FUNC(gethostbyaddr, nsl) PHP_CHECK_FUNC(yp_get_default_domain, nsl) PHP_CHECK_FUNC(dlopen, dl) if test "$ac_cv_func_dlopen" = "yes"; then AC_DEFINE(HAVE_LIBDL, 1, [ ]) fi AC_CHECK_LIB(m, sin) dnl Check for inet_aton dnl in -lc, -lbind and -lresolv PHP_CHECK_FUNC(inet_aton, resolv, bind) dnl Then headers. dnl ------------------------------------------------------------------------- dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT dnl QNX requires unix.h to allow functions in libunix to work properly AC_CHECK_HEADERS([ \ inttypes.h \ stdint.h \ dirent.h \ ApplicationServices/ApplicationServices.h \ sys/param.h \ sys/types.h \ sys/time.h \ netinet/in.h \ alloca.h \ arpa/inet.h \ arpa/nameser.h \ assert.h \ crypt.h \ dns.h \ fcntl.h \ grp.h \ ieeefp.h \ langinfo.h \ limits.h \ locale.h \ monetary.h \ netdb.h \ poll.h \ pwd.h \ resolv.h \ signal.h \ stdarg.h \ stdlib.h \ string.h \ syslog.h \ sysexits.h \ sys/ioctl.h \ sys/file.h \ sys/mman.h \ sys/mount.h \ sys/poll.h \ sys/resource.h \ sys/select.h \ sys/socket.h \ sys/stat.h \ sys/statfs.h \ sys/statvfs.h \ sys/vfs.h \ sys/sysexits.h \ sys/varargs.h \ sys/wait.h \ sys/loadavg.h \ termios.h \ unistd.h \ unix.h \ utime.h \ sys/utsname.h \ sys/ipc.h \ dlfcn.h \ assert.h ],[],[],[ #ifdef HAVE_SYS_PARAM_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_NAMESER_H #include #endif ]) PHP_FOPENCOOKIE PHP_BROKEN_GETCWD PHP_BROKEN_GLIBC_FOPEN_APPEND dnl Checks for typedefs, structures, and compiler characteristics. dnl ------------------------------------------------------------------------- AC_STRUCT_TM AC_STRUCT_TIMEZONE PHP_MISSING_TIME_R_DECL PHP_MISSING_FCLOSE_DECL PHP_TM_GMTOFF PHP_STRUCT_FLOCK PHP_SOCKLEN_T AC_CHECK_SIZEOF(size_t, 8) AC_CHECK_SIZEOF(long long, 8) AC_CHECK_SIZEOF(long long int, 8) AC_CHECK_SIZEOF(long, 8) AC_CHECK_SIZEOF(int, 4) dnl These are defined elsewhere than stdio.h PHP_CHECK_SIZEOF(intmax_t, 0) PHP_CHECK_SIZEOF(ssize_t, 8) PHP_CHECK_SIZEOF(ptrdiff_t, 8) dnl Check stdint types (must be after header check) PHP_CHECK_STDINT_TYPES dnl Check __builtin_expect PHP_CHECK_BUILTIN_EXPECT dnl Check __builtin_clz PHP_CHECK_BUILTIN_CLZ dnl Check __builtin_ctzl PHP_CHECK_BUILTIN_CTZL dnl Check __builtin_ctzll PHP_CHECK_BUILTIN_CTZLL 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 dnl Check __builtin_ssubl_overflow PHP_CHECK_BUILTIN_SSUBL_OVERFLOW dnl Check __builtin_ssubll_overflow PHP_CHECK_BUILTIN_SSUBLL_OVERFLOW dnl Check for members of the stat structure AC_STRUCT_ST_BLKSIZE dnl AC_STRUCT_ST_BLOCKS will screw QNX because fileblocks.o does not exists dnl The WARNING_LEVEL required because cc in QNX hates -w option without an argument if test "`uname -s 2>/dev/null`" != "QNX"; then AC_STRUCT_ST_BLOCKS else AC_MSG_WARN([warnings level for cc set to 0]) WARNING_LEVEL=0 fi AC_STRUCT_ST_RDEV dnl Checks for types AC_TYPE_SIZE_T AC_TYPE_UID_T dnl Checks for sockaddr_storage and sockaddr.sa_len PHP_SOCKADDR_CHECKS dnl Check for IPv6 support AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support, [AC_TRY_LINK([ #include #include #include ], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;], [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])]) dnl Checks for library functions. dnl ------------------------------------------------------------------------- AC_FUNC_VPRINTF AC_CHECK_FUNCS( alphasort \ asctime_r \ chroot \ ctime_r \ cuserid \ crypt \ flock \ ftok \ funopen \ gai_strerror \ gcvt \ getloadavg \ getlogin \ getprotobyname \ getprotobynumber \ getservbyname \ getservbyport \ gethostname \ getrusage \ gettimeofday \ gmtime_r \ getpwnam_r \ getgrnam_r \ getpwuid_r \ grantpt \ inet_ntoa \ inet_ntop \ inet_pton \ isascii \ link \ localtime_r \ lockf \ lchown \ lrand48 \ memcpy \ memmove \ mkstemp \ mmap \ nl_langinfo \ perror \ poll \ ptsname \ putenv \ realpath \ random \ rand_r \ scandir \ setitimer \ setlocale \ localeconv \ setenv \ setpgid \ setsockopt \ setvbuf \ shutdown \ sin \ snprintf \ srand48 \ srandom \ statfs \ statvfs \ std_syslog \ strcasecmp \ strcoll \ strdup \ strerror \ strftime \ strnlen \ strptime \ strstr \ strtok_r \ symlink \ tempnam \ tzset \ unlockpt \ unsetenv \ usleep \ utime \ vsnprintf \ vasprintf \ asprintf \ nanosleep \ ) dnl Some systems (like OpenSolaris) do not have nanosleep in libc PHP_CHECK_FUNC_LIB(nanosleep, rt) dnl Check for getaddrinfo, should be a better way, but... dnl Also check for working getaddrinfo AC_CACHE_CHECK([for getaddrinfo], ac_cv_func_getaddrinfo, [AC_TRY_LINK([#include ], [struct addrinfo *g,h;g=&h;getaddrinfo("","",g,&g);], AC_TRY_RUN([ #include #include #ifndef AF_INET # include #endif int main(void) { struct addrinfo *ai, *pai, hints; memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_NUMERICHOST; if (getaddrinfo("127.0.0.1", 0, &hints, &ai) < 0) { exit(1); } if (ai == 0) { exit(1); } pai = ai; while (pai) { if (pai->ai_family != AF_INET) { /* 127.0.0.1/NUMERICHOST should only resolve ONE way */ exit(1); } if (pai->ai_addr->sa_family != AF_INET) { /* 127.0.0.1/NUMERICHOST should only resolve ONE way */ exit(1); } pai = pai->ai_next; } freeaddrinfo(ai); exit(0); } ],ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no, ac_cv_func_getaddrinfo=no), ac_cv_func_getaddrinfo=no)]) if test "$ac_cv_func_getaddrinfo" = yes; then AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function]) fi dnl Check for the __sync_fetch_and_add builtin AC_CACHE_CHECK([for __sync_fetch_and_add], ac_cv_func_sync_fetch_and_add, [AC_TRY_LINK([],[int x;__sync_fetch_and_add(&x,1);],ac_cv_func_sync_fetch_and_add=yes,ac_cv_func_sync_fetch_and_add=no)]) if test "$ac_cv_func_sync_fetch_and_add" = yes; then AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD,1,[Define if you have the __sync_fetch_and_add function]) fi AC_REPLACE_FUNCS(strlcat strlcpy explicit_bzero getopt) AC_FUNC_UTIME_NULL AC_FUNC_ALLOCA dnl PHP_AC_BROKEN_SPRINTF dnl PHP_AC_BROKEN_SNPRINTF PHP_DECLARED_TIMEZONE PHP_TIME_R_TYPE PHP_READDIR_R_TYPE PHP_CHECK_IN_ADDR_T AC_CHECK_FUNCS(crypt_r, [ php_crypt_r="1" ], [ php_crypt_r="0" ]) if test "x$php_crypt_r" = "x1"; then PHP_CRYPT_R_STYLE fi dnl Check valgrind support PHP_ARG_WITH(valgrind, [whether to enable valgrind support], [ --with-valgrind=DIR Enable valgrind support], yes, no) if test "$PHP_VALGRIND" != "no"; then AC_MSG_CHECKING([for valgrind header]) if test "$PHP_VALGRIND" = "yes"; then SEARCH_PATH="/usr/local /usr" else SEARCH_PATH="$PHP_VALGRIND" fi SEARCH_FOR="/include/valgrind/valgrind.h" for i in $SEARCH_PATH ; do if test -r $i/$SEARCH_FOR; then VALGRIND_DIR=$i fi done if test -z "$VALGRIND_DIR"; then AC_MSG_RESULT([not found]) else AC_MSG_RESULT(found in $VALGRIND_DIR) AC_DEFINE(HAVE_VALGRIND, 1, [ ]) fi fi dnl General settings. dnl ------------------------------------------------------------------------- PHP_CONFIGURE_PART(General settings) PHP_HELP_SEPARATOR([General settings:]) PHP_ARG_ENABLE(gcov, whether to include gcov symbols, [ --enable-gcov Enable GCOV code coverage (requires LTP) - FOR DEVELOPERS ONLY!!], no, no) if test "$PHP_GCOV" = "yes"; then if test "$GCC" != "yes"; then AC_MSG_ERROR([GCC is required for --enable-gcov]) fi dnl Check if ccache is being used 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.]) fi dnl min: 1.5 (i.e. 105, major * 100 + minor for easier comparison) ltp_version_min="105" dnl non-working versions, e.g. "1.8 1.18"; dnl remove "none" when introducing the first incompatible LTP version and dnl separate any following additions by spaces ltp_version_exclude="1.8" AC_CHECK_PROG(LTP, lcov, lcov) AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml) PHP_SUBST(LTP) PHP_SUBST(LTP_GENHTML) if test "$LTP"; then AC_CACHE_CHECK([for ltp version], php_cv_ltp_version, [ php_cv_ltp_version=invalid ltp_version_vars=`$LTP -v 2>/dev/null | $SED -e 's/^.* //' -e 's/\./ /g' | tr -d a-z` if test -n "$ltp_version_vars"; then set $ltp_version_vars ltp_version="${1}.${2}" ltp_version_num="`expr ${1} \* 100 + ${2}`" if test $ltp_version_num -ge $ltp_version_min; then php_cv_ltp_version="$ltp_version (ok)" for ltp_check_version in $ltp_version_exclude; do if test "$ltp_version" = "$ltp_check_version"; then php_cv_ltp_version=invalid break fi done fi fi ]) else ltp_msg="To enable code coverage reporting you must have LTP installed" AC_MSG_ERROR([$ltp_msg]) fi case $php_cv_ltp_version in ""|invalid[)] ltp_msg="This LTP version is not supported (found: $ltp_version, min: $ltp_version_min, excluded: $ltp_version_exclude)." AC_MSG_ERROR([$ltp_msg]) LTP="exit 0;" ;; esac if test -z "$LTP_GENHTML"; then AC_MSG_ERROR([Could not find genhtml from the LTP package]) fi AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov]) PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Makefile.gcov, $abs_srcdir) dnl Remove all optimization flags from CFLAGS changequote({,}) CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` changequote([,]) dnl Add the special gcc flags CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage" CXXFLAGS="$CXXFLAGS -O0 -fprofile-arcs -ftest-coverage" fi PHP_ARG_ENABLE(debug, whether to include debugging symbols, [ --enable-debug Compile with debugging symbols], no, no) if test "$PHP_DEBUG" = "yes"; then PHP_DEBUG=1 ZEND_DEBUG=yes changequote({,}) CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` changequote([,]) dnl add -O0 only if GCC or ICC is used if test "$GCC" = "yes" || test "$ICC" = "yes"; then CFLAGS="$CFLAGS -O0" CXXFLAGS="$CXXFLAGS -g -O0" fi if test "$SUNCC" = "yes"; then if test -n "$auto_cflags"; then CFLAGS="-g" CXXFLAGS="-g" else CFLAGS="$CFLAGS -g" CXXFLAGS="$CFLAGS -g" fi fi else PHP_DEBUG=0 ZEND_DEBUG=no fi PHP_ARG_WITH(layout, layout of installed files, [ --with-layout=TYPE Set how installed files will be laid out. Type can be either PHP or GNU @<:@PHP@:>@], PHP, no) case $PHP_LAYOUT in GNU) oldstyleextdir=no ;; *) oldstyleextdir=yes ;; esac PHP_ARG_WITH(config-file-path, path to configuration file, [ --with-config-file-path=PATH Set the path in which to look for php.ini @<:@PREFIX/lib@:>@], DEFAULT, no) if test "$PHP_CONFIG_FILE_PATH" = "DEFAULT"; then case $PHP_LAYOUT in GNU) PHP_CONFIG_FILE_PATH=$sysconfdir ;; *) PHP_CONFIG_FILE_PATH=$libdir ;; esac fi AC_MSG_CHECKING([where to scan for configuration files]) PHP_ARG_WITH(config-file-scan-dir,, [ --with-config-file-scan-dir=PATH Set the path where to scan for configuration files], DEFAULT, no) if test "$PHP_CONFIG_FILE_SCAN_DIR" = "DEFAULT"; then PHP_CONFIG_FILE_SCAN_DIR= fi AC_MSG_RESULT([$PHP_CONFIG_FILE_SCAN_DIR]) test -n "$DEBUG_CFLAGS" && CFLAGS="$CFLAGS $DEBUG_CFLAGS" PHP_ARG_ENABLE(sigchild, whether to enable PHP's own SIGCHLD handler, [ --enable-sigchild Enable PHP's own SIGCHLD handler], no, no) if test "$PHP_SIGCHILD" = "yes"; then AC_DEFINE(PHP_SIGCHILD, 1, [ ]) else AC_DEFINE(PHP_SIGCHILD, 0, [ ]) fi PHP_ARG_ENABLE(libgcc, whether to explicitly link against libgcc, [ --enable-libgcc Enable explicitly linking against libgcc], no, no) if test "$PHP_LIBGCC" = "yes"; then PHP_LIBGCC_LIBPATH(gcc) if test -z "$libgcc_libpath"; then AC_MSG_ERROR([Cannot locate libgcc. Make sure that gcc is in your path]) fi PHP_ADD_LIBPATH($libgcc_libpath) PHP_ADD_LIBRARY(gcc, yes) fi PHP_ARG_ENABLE(short-tags, whether to enable short tags by default, [ --disable-short-tags Disable the short-form /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 else AC_MSG_RESULT([using system default]) fi dnl Extension configuration. dnl ------------------------------------------------------------------------- PHP_HELP_SEPARATOR([Extensions: --with-EXTENSION=[shared[,PATH]] NOTE: Not all extensions can be build as 'shared'. Example: --with-foobar=shared,/usr/local/foobar/ o Builds the foobar extension as shared extension. o foobar package install prefix is /usr/local/foobar/ ]) PHP_CONFIGURE_PART(Configuring extensions) dnl dnl Check if all enabled by default extensions should be disabled dnl AC_ARG_ENABLE(all, [ --disable-all Disable all extensions which are enabled by default ], [ PHP_ENABLE_ALL=$enableval ]) # reading config stubs esyscmd(./build/config-stubs ext) dnl Extensions post-config dnl ------------------------------------------------------------------------- enable_shared=yes enable_static=yes case $php_sapi_module in shared[)] enable_static=no case $with_pic in yes) standard_libtool_flag='-prefer-pic' ;; no) standard_libtool_flag='-prefer-non-pic' ;; esac EXTRA_LDFLAGS="$EXTRA_LDFLAGS -avoid-version -module" ;; *[)] standard_libtool_flag='-prefer-non-pic -static' if test -z "$PHP_MODULES" && test -z "$PHP_ZEND_EX"; then enable_shared=no fi ;; esac EXTRA_LIBS="$EXTRA_LIBS $DLIBS $LIBS" dnl this has to be here to prevent the openssl crypt() from dnl overriding the system provided crypt(). if test "$ac_cv_lib_crypt_crypt" = "yes"; then EXTRA_LIBS="-lcrypt $EXTRA_LIBS -lcrypt" fi unset LIBS LDFLAGS dnl PEAR dnl ------------------------------------------------------------------------- PHP_HELP_SEPARATOR([PEAR:]) PHP_CONFIGURE_PART(Configuring PEAR) # compatibility if test -z "$with_pear" && test "$enable_pear" = "no"; then with_pear=no fi # If CLI is disabled -> disable PEAR if test "$PHP_CLI" = "no"; then with_pear=no fi PHP_ARG_WITH(pear, [whether to install PEAR], [ --with-pear=DIR Install PEAR in DIR @<:@PREFIX/lib/php@:>@ --without-pear Do not install PEAR], DEFAULT, yes) if test "$PHP_PEAR" != "no"; then dnl dnl PEAR dependancies dnl if test "$PHP_XML" = "no"; then pear_error_msg="$pear_error_msg PEAR requires XML to be enabled. Add --enable-xml to the configure line. (or --without-pear)" fi dnl dnl if test "$PHP_XMLRPC" = "no"; then dnl pear_error_msg="$pear_error_msg dnl PEAR requires XML-RPC to be enabled. Add --with-xmlrpc to the configure line. (or --without-pear)" dnl fi dnl if test "$pear_error_msg"; then AC_MSG_ERROR([$pear_error_msg]) fi install_pear="install-pear" PEAR_INSTALLDIR=$PHP_PEAR if test "$PHP_PEAR" = "DEFAULT" || test "$PHP_PEAR" = "yes"; then case $PHP_LAYOUT in GNU) PEAR_INSTALLDIR=$datadir/pear;; *) PEAR_INSTALLDIR=$libdir/php;; esac fi PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/pear/Makefile.frag,$abs_srcdir/pear,pear) fi dnl Configuring Zend and TSRM. dnl ------------------------------------------------------------------------- PHP_HELP_SEPARATOR([Zend:]) PHP_CONFIGURE_PART(Configuring Zend) LIBZEND_BASIC_CHECKS LIBZEND_DLSYM_CHECK LIBZEND_OTHER_CHECKS if test "$ZEND_MAINTAINER_ZTS" = "yes"; then AC_DEFINE(ZTS,1,[ ]) PHP_THREAD_SAFETY=yes else PHP_THREAD_SAFETY=no fi INCLUDES="$INCLUDES -I\$(top_builddir)/TSRM" INCLUDES="$INCLUDES -I\$(top_builddir)/Zend" if test "$abs_srcdir" != "$abs_builddir"; then INCLUDES="$INCLUDES -I\$(top_srcdir)/main -I\$(top_srcdir)/Zend" INCLUDES="$INCLUDES -I\$(top_srcdir)/TSRM -I\$(top_builddir)/" fi ZEND_EXTRA_LIBS="$LIBS" unset LIBS LDFLAGS PHP_HELP_SEPARATOR([TSRM:]) PHP_CONFIGURE_PART(Configuring TSRM) TSRM_BASIC_CHECKS if test "$PHP_THREAD_SAFETY" = "yes"; then TSRM_THREADS_CHECKS fi EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LDFLAGS" EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $LDFLAGS" EXTRA_LIBS="$EXTRA_LIBS $LIBS" unset LIBS LDFLAGS test "$prefix" = "NONE" && prefix=/usr/local test "$exec_prefix" = "NONE" && exec_prefix='${prefix}' test "$program_prefix" = "NONE" && program_prefix= test "$program_suffix" = "NONE" && program_suffix= case $libdir in '${exec_prefix}/lib') libdir=$libdir/php ;; esac case `eval echo $datadir` in '${prefix}/share') datadir=$datadir/php ;; esac phplibdir=`pwd`/modules $php_shtool mkdir -p $phplibdir phptempdir=`pwd`/libs old_exec_prefix=$exec_prefix old_libdir=$libdir old_datadir=$datadir exec_prefix=`eval echo $exec_prefix` libdir=`eval echo $libdir` datadir=`eval eval echo $datadir` dnl Build extension directory path ZEND_MODULE_API_NO=`$EGREP '#define ZEND_MODULE_API_NO ' $srcdir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO //'` if test -z "$EXTENSION_DIR"; then extbasedir=$ZEND_MODULE_API_NO if test "$oldstyleextdir" = "yes"; then if test "$PHP_DEBUG" = "1"; then part1=debug else part1=no-debug fi if test "$enable_maintainer_zts" = "yes"; then part2=zts else part2=non-zts fi extbasedir=$part1-$part2-$extbasedir EXTENSION_DIR=$libdir/extensions/$extbasedir else if test "$enable_maintainer_zts" = "yes"; then extbasedir=$extbasedir-zts fi if test "$PHP_DEBUG" = "1"; then extbasedir=$extbasedir-debug fi EXTENSION_DIR=$libdir/$extbasedir fi fi case $PHP_LAYOUT in GNU) datarootdir=$prefix/share ;; *) datarootdir=$prefix/php ;; esac dnl Expand all directory names for use in macros/constants EXPANDED_PEAR_INSTALLDIR=`eval echo $PEAR_INSTALLDIR` EXPANDED_EXTENSION_DIR=`eval echo $EXTENSION_DIR` EXPANDED_LOCALSTATEDIR=`eval echo $localstatedir` EXPANDED_BINDIR=`eval echo $bindir` EXPANDED_SBINDIR=`eval echo $sbindir` EXPANDED_MANDIR=`eval echo $mandir` EXPANDED_LIBDIR=$libdir EXPANDED_SYSCONFDIR=`eval echo $sysconfdir` EXPANDED_DATADIR=$datadir EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"` EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"` INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR exec_prefix=$old_exec_prefix libdir=$old_libdir datadir=$old_datadir AC_SUBST(INCLUDE_PATH) AC_SUBST(EXPANDED_PEAR_INSTALLDIR) AC_SUBST(EXPANDED_EXTENSION_DIR) AC_SUBST(EXPANDED_BINDIR) AC_SUBST(EXPANDED_SBINDIR) AC_SUBST(EXPANDED_MANDIR) AC_SUBST(EXPANDED_LIBDIR) AC_SUBST(EXPANDED_DATADIR) AC_SUBST(EXPANDED_SYSCONFDIR) AC_SUBST(EXPANDED_LOCALSTATEDIR) AC_SUBST(EXPANDED_PHP_CONFIG_FILE_PATH) AC_SUBST(EXPANDED_PHP_CONFIG_FILE_SCAN_DIR) if test -n "$php_ldflags_add_usr_lib"; then PHP_RPATHS="$PHP_RPATHS /usr/lib" fi PHP_UTILIZE_RPATHS if test -z "$php_ldflags_add_usr_lib"; then PHP_REMOVE_USR_LIB(PHP_LDFLAGS) PHP_REMOVE_USR_LIB(LDFLAGS) fi EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PHP_LDFLAGS" EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $PHP_LDFLAGS" # SOURCE_DATE_EPOCH for reproducible builds https://reproducible-builds.org/specs/source-date-epoch/ PHP_BUILD_DATE=`date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y-%m-%d 2>/dev/null` if test $? -ne 0 ; then PHP_BUILD_DATE=`date -u +%Y-%m-%d` fi AC_DEFINE_UNQUOTED(PHP_BUILD_DATE,"$PHP_BUILD_DATE",[PHP build date]) PHP_UNAME=`uname -a | xargs` AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output]) PHP_OS=`uname | xargs` AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output]) PHP_SUBST_OLD(PHP_INSTALLED_SAPIS) PHP_SUBST(PHP_EXECUTABLE) PHP_SUBST(PHP_FASTCGI_OBJS) PHP_SUBST(PHP_SAPI_OBJS) PHP_SUBST(PHP_BINARY_OBJS) PHP_SUBST(PHP_GLOBAL_OBJS) PHP_SUBST(PHP_BINARIES) PHP_SUBST(PHP_MODULES) PHP_SUBST(PHP_ZEND_EX) PHP_SUBST(EXT_LIBS) PHP_SUBST_OLD(abs_builddir) PHP_SUBST_OLD(abs_srcdir) PHP_SUBST_OLD(php_abs_top_builddir) PHP_SUBST_OLD(php_abs_top_srcdir) PHP_SUBST(bindir) PHP_SUBST(sbindir) PHP_SUBST(exec_prefix) PHP_SUBST_OLD(program_prefix) PHP_SUBST_OLD(program_suffix) PHP_SUBST(includedir) PHP_SUBST(libdir) PHP_SUBST(mandir) PHP_SUBST(phplibdir) PHP_SUBST(phptempdir) PHP_SUBST(prefix) PHP_SUBST(localstatedir) PHP_SUBST(datadir) PHP_SUBST(datarootdir) PHP_SUBST(sysconfdir) PHP_SUBST(EXEEXT) PHP_SUBST(CC) PHP_SUBST(CFLAGS) PHP_SUBST(CFLAGS_CLEAN) PHP_SUBST(CPP) PHP_SUBST(CPPFLAGS) PHP_SUBST(CXX) PHP_SUBST(CXXFLAGS) PHP_SUBST(CXXFLAGS_CLEAN) PHP_SUBST_OLD(DEBUG_CFLAGS) PHP_SUBST_OLD(EXTENSION_DIR) PHP_SUBST_OLD(EXTRA_LDFLAGS) PHP_SUBST_OLD(EXTRA_LDFLAGS_PROGRAM) PHP_SUBST_OLD(EXTRA_LIBS) PHP_SUBST_OLD(ZEND_EXTRA_LIBS) PHP_SUBST_OLD(INCLUDES) PHP_SUBST_OLD(EXTRA_INCLUDES) PHP_SUBST_OLD(INCLUDE_PATH) PHP_SUBST_OLD(INSTALL_IT) PHP_SUBST(LFLAGS) PHP_SUBST(LIBTOOL) PHP_SUBST(LN_S) PHP_SUBST_OLD(NATIVE_RPATHS) PHP_SUBST_OLD(PEAR_INSTALLDIR) PHP_SUBST(PHP_BUILD_DATE) PHP_SUBST_OLD(PHP_LDFLAGS) PHP_SUBST_OLD(PHP_LIBS) PHP_SUBST(OVERALL_TARGET) PHP_SUBST(PHP_RPATHS) PHP_SUBST(PHP_SAPI) PHP_SUBST_OLD(PHP_VERSION) PHP_SUBST_OLD(PHP_VERSION_ID) PHP_SUBST(SHELL) PHP_SUBST(SHARED_LIBTOOL) PHP_SUBST(WARNING_LEVEL) PHP_SUBST(PHP_FRAMEWORKS) PHP_SUBST(PHP_FRAMEWORKPATH) PHP_SUBST(INSTALL_HEADERS) old_CC=$CC if test "$PHP_THREAD_SAFETY" = "yes" && test -n "$ac_cv_pthreads_cflags"; then CXXFLAGS="$CXXFLAGS $ac_cv_pthreads_cflags" INLINE_CFLAGS="$INLINE_CFLAGS $ac_cv_pthreads_cflags" cat >meta_ccld<' > TSRM/tsrm_config.h test -d Zend || $php_shtool mkdir Zend cat >Zend/zend_config.h < #if defined(APACHE) && defined(PHP_API_VERSION) #undef HAVE_DLFCN_H #endif FEO # run this only when generating all the files? if test -n "\$REDO_ALL"; then # Hacking while airborne considered harmful. # echo "creating main/internal_functions.c" extensions="$EXT_STATIC" dnl mv -f main/internal_functions.c main/internal_functions.c.old 2>/dev/null sh $srcdir/build/genif.sh $srcdir/main/internal_functions.c.in $srcdir "$EXTRA_MODULE_PTRS" $AWK \$extensions > main/internal_functions.c echo "creating main/internal_functions_cli.c" cli_extensions="$EXT_CLI_STATIC" sh $srcdir/build/genif.sh $srcdir/main/internal_functions.c.in $srcdir "$EXTRA_MODULE_PTRS" $AWK \$cli_extensions > main/internal_functions_cli.c if test "$UNAME" = "FreeBSD" && test "$PHP_SAPI" = "apache2filter" && test "$TSRM_PTH" != "pth-config" ; then echo "+--------------------------------------------------------------------+" echo "| *** WARNING *** |" echo "| |" echo "| In order to build PHP as a Apache2 module on FreeBSD, you have to |" echo "| add --with-tsrm-pth to your ./configure line. Therefore you need |" echo "| to install gnu-pth from /usr/ports/devel/pth. |" fi if test -n "$PHP_APXS_BROKEN"; then echo "+--------------------------------------------------------------------+" echo "| WARNING: Your $APXS script is most likely broken." echo "| |" echo "| Please go read http://www.php.net/faq.build#faq.build.apxs |" echo "| and make the changes described there and try again. |" fi if test -n "$DEBUG_LOG"; then rm -f config.cache cat < processes when using a local Oracle | | database, set the value BEQUEATH_DETACH=YES in Oracle Net's | | sqlnet.ora file on the PHP host, or set the environment variable | | BEQUEATH_DETACH to YES before starting Apache. If the problem | | still occurs, then recompile PHP and specify --enable-sigchild | | when configuring. | X fi fi fi cat <