1## $Id$ -*- autoconf -*- 2dnl ## Process this file with autoconf to produce a configure script. 3 4dnl include Zend specific macro definitions first 5dnl ------------------------------------------------------------------------- 6sinclude(Zend/acinclude.m4) 7 8dnl Basic autoconf + automake initialization, generation of config.nice. 9dnl ------------------------------------------------------------------------- 10 11AC_PREREQ(2.59) 12AC_INIT(README.GIT-RULES) 13ifdef([AC_PRESERVE_HELP_ORDER], [AC_PRESERVE_HELP_ORDER], []) 14 15PHP_CONFIG_NICE(config.nice) 16 17PHP_CANONICAL_HOST_TARGET 18 19AC_CONFIG_HEADER(main/php_config.h) 20AH_TOP([ 21#if defined(__GNUC__) && __GNUC__ >= 4 22# define ZEND_API __attribute__ ((visibility("default"))) 23# define ZEND_DLEXPORT __attribute__ ((visibility("default"))) 24#else 25# define ZEND_API 26# define ZEND_DLEXPORT 27#endif 28 29#define ZEND_DLIMPORT 30 31#undef uint 32#undef ulong 33 34/* Define if you want to enable memory limit support */ 35#define MEMORY_LIMIT 0 36]) 37AH_BOTTOM([ 38#ifndef ZEND_ACCONFIG_H_NO_C_PROTOS 39 40#ifdef HAVE_STDLIB_H 41# include <stdlib.h> 42#endif 43 44#ifdef HAVE_SYS_TYPES_H 45# include <sys/types.h> 46#endif 47 48#ifdef HAVE_SYS_SELECT_H 49#include <sys/select.h> 50#endif 51 52#ifdef HAVE_IEEEFP_H 53# include <ieeefp.h> 54#endif 55 56#ifdef HAVE_STRING_H 57# include <string.h> 58#else 59# include <strings.h> 60#endif 61 62#if ZEND_BROKEN_SPRINTF 63int zend_sprintf(char *buffer, const char *format, ...); 64#else 65# define zend_sprintf sprintf 66#endif 67 68#include <math.h> 69 70/* To enable the is_nan, is_infinite and is_finite PHP functions */ 71#ifdef NETWARE 72 #define HAVE_DECL_ISNAN 1 73 #define HAVE_DECL_ISINF 1 74 #define HAVE_DECL_ISFINITE 1 75#endif 76 77#ifndef zend_isnan 78#if HAVE_DECL_ISNAN && (!defined(__cplusplus) || __cplusplus < 201103L) 79#define zend_isnan(a) isnan(a) 80#elif defined(HAVE_FPCLASS) 81#define zend_isnan(a) ((fpclass(a) == FP_SNAN) || (fpclass(a) == FP_QNAN)) 82#else 83#define zend_isnan(a) ((a) != (a)) 84#endif 85#endif 86 87#if HAVE_DECL_ISINF && (!defined(__cplusplus) || __cplusplus < 201103L) 88#define zend_isinf(a) isinf(a) 89#elif defined(INFINITY) 90/* Might not work, but is required by ISO C99 */ 91#define zend_isinf(a) (((a)==INFINITY || (a)==-INFINITY)?1:0) 92#elif defined(HAVE_FPCLASS) 93#define zend_isinf(a) ((fpclass(a) == FP_PINF) || (fpclass(a) == FP_NINF)) 94#else 95#define zend_isinf(a) 0 96#endif 97 98#if HAVE_DECL_ISFINITE && (!defined(__cplusplus) || __cplusplus < 201103L) 99#define zend_finite(a) isfinite(a) 100#elif defined(HAVE_FINITE) 101#define zend_finite(a) finite(a) 102#elif defined(fpclassify) 103#define zend_finite(a) ((fpclassify((a))!=FP_INFINITE&&fpclassify((a))!=FP_NAN)?1:0) 104#else 105#define zend_finite(a) (zend_isnan(a) ? 0 : zend_isinf(a) ? 0 : 1) 106#endif 107 108#endif /* ifndef ZEND_ACCONFIG_H_NO_C_PROTOS */ 109 110#ifdef NETWARE 111#ifdef USE_WINSOCK 112#/*This detection against winsock is of no use*/ undef HAVE_SOCKLEN_T 113#/*This detection against winsock is of no use*/ undef HAVE_SYS_SOCKET_H 114#endif 115#endif 116 117#undef PTHREADS 118]) 119 120PHP_MAJOR_VERSION=7 121PHP_MINOR_VERSION=1 122PHP_RELEASE_VERSION=34 123PHP_EXTRA_VERSION="-dev" 124PHP_VERSION="$PHP_MAJOR_VERSION.$PHP_MINOR_VERSION.$PHP_RELEASE_VERSION$PHP_EXTRA_VERSION" 125PHP_VERSION_ID=`expr [$]PHP_MAJOR_VERSION \* 10000 + [$]PHP_MINOR_VERSION \* 100 + [$]PHP_RELEASE_VERSION` 126 127dnl Allow version values to be used in Makefile 128PHP_SUBST(PHP_MAJOR_VERSION) 129PHP_SUBST(PHP_MINOR_VERSION) 130PHP_SUBST(PHP_RELEASE_VERSION) 131PHP_SUBST(PHP_EXTRA_VERSION) 132 133dnl Define where extension directories are located in the configure context 134AC_DEFUN([PHP_EXT_BUILDDIR],[$config_m4_dir])dnl 135AC_DEFUN([PHP_EXT_DIR],[$config_m4_dir])dnl 136AC_DEFUN([PHP_EXT_SRCDIR],[$abs_srcdir/$config_m4_dir])dnl 137AC_DEFUN([PHP_ALWAYS_SHARED],[])dnl 138 139dnl Setting up the PHP version based on the information above. 140dnl ------------------------------------------------------------------------- 141 142echo "/* automatically generated by configure */" > php_version.h.new 143echo "/* edit configure.in to change version number */" >> php_version.h.new 144echo "#define PHP_MAJOR_VERSION $PHP_MAJOR_VERSION" >> php_version.h.new 145echo "#define PHP_MINOR_VERSION $PHP_MINOR_VERSION" >> php_version.h.new 146echo "#define PHP_RELEASE_VERSION $PHP_RELEASE_VERSION" >> php_version.h.new 147echo "#define PHP_EXTRA_VERSION \"$PHP_EXTRA_VERSION\"" >> php_version.h.new 148echo "#define PHP_VERSION \"$PHP_VERSION\"" >> php_version.h.new 149echo "#define PHP_VERSION_ID $PHP_VERSION_ID" >> php_version.h.new 150cmp php_version.h.new $srcdir/main/php_version.h >/dev/null 2>&1 151if test $? -ne 0 ; then 152 rm -f $srcdir/main/php_version.h && mv php_version.h.new $srcdir/main/php_version.h && \ 153 echo 'Updated main/php_version.h' 154else 155 rm -f php_version.h.new 156fi 157 158 159dnl Catch common errors here to save a few seconds of our users' time 160dnl ------------------------------------------------------------------------- 161 162if test "$with_shared_apache" != "no" && test -n "$with_shared_apache" ; then 163 AC_MSG_ERROR([--with-shared-apache is not supported. Please refer to the documentation for using APXS]) 164fi 165 166if test -n "$with_apache" && test -n "$with_apxs"; then 167 AC_MSG_ERROR([--with-apache and --with-apxs cannot be used together]) 168fi 169 170if test -n "$with_apxs2filter" && test -n "$with_apxs2"; then 171 AC_MSG_ERROR([--with-apxs2filter and --with-apxs2 cannot be used together]) 172fi 173 174 175dnl Settings we want to make before the checks. 176dnl ------------------------------------------------------------------------- 177 178cwd=`pwd` 179 180php_shtool=$srcdir/build/shtool 181T_MD=`$php_shtool echo -n -e %B` 182T_ME=`$php_shtool echo -n -e %b` 183 184PHP_INIT_BUILD_SYSTEM 185 186dnl We want this one before the checks, so the checks can modify CFLAGS. 187test -z "$CFLAGS" && auto_cflags=1 188 189abs_srcdir=`(cd $srcdir; pwd)` 190abs_builddir=`pwd` 191 192php_abs_top_srcdir=$abs_srcdir 193php_abs_top_builddir=$abs_builddir 194 195dnl Because ``make install'' is often performed by the superuser, 196dnl we create the libs subdirectory as the user who configures PHP. 197dnl Otherwise, the current user will not be able to delete libs 198dnl or the contents of libs. 199 200$php_shtool mkdir -p libs 201rm -f libs/* 202 203dnl Checks for programs. 204dnl ------------------------------------------------------------------------- 205 206AC_PROG_CC([cc gcc]) 207PHP_DETECT_ICC 208PHP_DETECT_SUNCC 209AC_PROG_CC_C_O 210dnl Change to AC_PROG_CC_STDC when we start requiring a post-2.13 autoconf 211dnl AC_PROG_CC_STDC 212AC_PROG_CPP 213AC_AIX 214AC_PROG_LN_S 215 216dnl Support systems with system libraries in e.g. /usr/lib64 217PHP_ARG_WITH(libdir, for system library directory, 218[ --with-libdir=NAME Look for libraries in .../NAME rather than .../lib],lib,no) 219 220PHP_ARG_ENABLE(rpath, whether to enable runpaths, 221[ --disable-rpath Disable passing additional runtime library 222 search paths], yes, no) 223 224dnl check for -R, etc. switch 225PHP_RUNPATH_SWITCH 226 227dnl Checks for some support/generator progs 228PHP_PROG_AWK 229PHP_PROG_BISON 230PHP_PROG_RE2C 231 232dnl Check if bison generated files exist when bison does not.. 233case $php_cv_bison_version in 234 ""|invalid[)] 235 if ! test -f "$abs_srcdir/Zend/zend_language_parser.h" || ! test -f "$abs_srcdir/Zend/zend_language_parser.c" ; then 236 AC_MSG_ERROR([bison is required to build PHP/Zend when building a GIT checkout!]) 237 fi 238 ;; 239esac 240 241PHP_ARG_ENABLE(re2c-cgoto, whether to enable computed goto gcc extension with re2c, 242[ --enable-re2c-cgoto Enable -g flag to re2c to use computed goto gcc extension], no, no) 243 244if test "$PHP_RE2C_CGOTO" = "no"; then 245 RE2C_FLAGS="" 246else 247 AC_MSG_CHECKING([whether re2c -g works]) 248 AC_TRY_COMPILE([],[ 249int main(int argc, const char **argv) 250{ 251 argc = argc; 252 argv = argv; 253label1: 254label2: 255 static void *adr[] = { &&label1, &&label2}; 256 goto *adr[0]; 257 return 0; 258} 259 ],[ 260 RE2C_FLAGS="" 261 AC_MSG_RESULT([no]) 262 ],[ 263 RE2C_FLAGS="-g" 264 AC_MSG_RESULT([yes]) 265 ]) 266fi 267PHP_SUBST(RE2C_FLAGS) 268 269dnl Platform-specific compile settings. 270dnl ------------------------------------------------------------------------- 271 272dnl See bug #28605 273case $host_cpu in 274 alpha*) 275 if test "$GCC" = "yes"; then 276 CFLAGS="$CFLAGS -mieee" 277 else 278 CFLAGS="$CFLAGS -ieee" 279 fi 280 ;; 281 sparc*) 282 if test "$SUNCC" = "yes"; then 283 CFLAGS="$CFLAGS -xmemalign=8s" 284 fi 285 ;; 286esac 287 288dnl activate some gcc specific optimizations for gcc >= 4 289if test "$GCC" = "yes"; then 290 case $host_alias in 291 *darwin*) 292 GCC_MAJOR_VERSION=`$CC -dumpversion | /usr/bin/sed -nE '1s/([[0-9]]+)\.[[0-9]]+\..*/\1/;1p'` 293 ;; 294 *) 295 GCC_MAJOR_VERSION=`$CC --version | $SED -n '1s/[[^0-9]]*//;1s/\..*//;1p'` 296 ;; 297 esac 298 if test $GCC_MAJOR_VERSION -ge 4; then 299 CFLAGS="$CFLAGS -fvisibility=hidden" 300 fi 301fi 302 303case $host_alias in 304 *solaris*) 305 CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS" 306 if test "${enable_libgcc+set}" != "set" && test "$GCC" = "yes"; then 307 enable_libgcc=yes 308 fi 309 ;; 310 *dgux*) 311 CPPFLAGS="$CPPFLAGS -D_BSD_TIMEOFDAY_FLAVOR" 312 ;; 313 *darwin*|*rhapsody*) 314 if test -n "$GCC"; then 315 PHP_CHECK_GCC_ARG(-no-cpp-precomp, gcc_no_cpp_precomp=yes) 316 if test "$gcc_no_cpp_precomp" = "yes"; then 317 CPPFLAGS="$CPPFLAGS -no-cpp-precomp" 318 fi 319 fi 320 php_multiple_shlib_versions_ok=yes 321 ;; 322 *beos*) 323 beos_threads=1 324 LIBS="$LIBS -lbe -lroot" 325 ;; 326 *mips*) 327 CPPFLAGS="$CPPFLAGS -D_XPG_IV" 328 ;; 329 *hpux*) 330 if test "$GCC" = "yes"; then 331 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" 332 fi 333 ;; 334 *netware*) 335 PHP_BUILD_PROGRAM 336 PHP_ADD_SOURCES(/main, internal_functions.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1, PHP_GLOBAL_OBJS) 337 PHP_ADD_SOURCES(win32, sendmail.c, -I$CFLAGS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1, PHP_GLOBAL_OBJS) 338 PHP7LIB_SHARED_LIBADD=\$\(EXTRA_LIBS\) 339 EXTENSION_DIR=sys:/php$PHP_MAJOR_VERSION/ext 340 PHP_SUBST(PHP7LIB_SHARED_LIBADD) 341 PHP_SHARED_MODULE(php7lib, PHP_GLOBAL_OBJS, netware) 342 ;; 343esac 344 345# Disable PIC mode by default where it is known to be safe to do so, 346# to avoid the performance hit from the lost register 347AC_MSG_CHECKING([whether to force non-PIC code in shared modules]) 348case $host_alias in 349 i?86-*-linux*|i?86-*-freebsd*) 350 if test "${with_pic+set}" != "set" || test "$with_pic" = "no"; then 351 with_pic=no 352 AC_MSG_RESULT(yes) 353 else 354 AC_MSG_RESULT(no) 355 fi 356 ;; 357 *) 358 AC_MSG_RESULT(no) 359 ;; 360esac 361 362 363dnl Include Zend and TSRM configurations. 364dnl ------------------------------------------------------------------------- 365 366sinclude(Zend/Zend.m4) 367sinclude(TSRM/threads.m4) 368sinclude(TSRM/tsrm.m4) 369 370dnl . 371dnl ------------------------------------------------------------------------- 372 373PTHREADS_CHECK 374PHP_HELP_SEPARATOR([SAPI modules:]) 375PHP_SHLIB_SUFFIX_NAMES 376PHP_BUILD_PROGRAM 377PHP_SAPI=none 378 379 380dnl SAPI configuration. 381dnl ------------------------------------------------------------------------- 382 383dnl paths to the targets are relative to the build directory 384SAPI_SHARED=libs/libphp[]$PHP_MAJOR_VERSION[.]$SHLIB_DL_SUFFIX_NAME 385SAPI_STATIC=libs/libphp[]$PHP_MAJOR_VERSION[.a] 386SAPI_LIBTOOL=libphp[]$PHP_MAJOR_VERSION[.la] 387 388PHP_CONFIGURE_PART(Configuring SAPI modules) 389 390esyscmd(./build/config-stubs sapi) 391 392dnl Show which main SAPI was selected 393AC_MSG_CHECKING([for chosen SAPI module]) 394AC_MSG_RESULT([$PHP_SAPI]) 395 396dnl Show which binaries were selected 397AC_MSG_CHECKING([for executable SAPI binaries]) 398if test "$PHP_BINARIES"; then 399 AC_MSG_RESULT([$PHP_BINARIES]) 400else 401 AC_MSG_RESULT([none]) 402fi 403 404dnl Exit early 405if test -z "$PHP_INSTALLED_SAPIS"; then 406 AC_MSG_ERROR([Nothing to build.]) 407fi 408 409dnl force ZTS 410if test "$enable_maintainer_zts" = "yes"; then 411 PTHREADS_ASSIGN_VARS 412 PTHREADS_FLAGS 413fi 414 415dnl Starting system checks. 416dnl ------------------------------------------------------------------------- 417 418PHP_CONFIGURE_PART(Running system checks) 419 420dnl Find sendmail binary 421PHP_PROG_SENDMAIL 422 423dnl Check whether the system uses EBCDIC (not ASCII) as its native codeset 424PHP_EBCDIC 425 426dnl Check whether the system byte ordering is bigendian 427PHP_C_BIGENDIAN 428 429dnl Check whether writing to stdout works 430PHP_TEST_WRITE_STDOUT 431 432dnl Check for /usr/pkg/{lib,include} which is where NetBSD puts binary 433dnl and source packages. This should be harmless on other OSs. 434if test -d /usr/pkg/include -a -d /usr/pkg/lib ; then 435 CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" 436 LDFLAGS="$LDFLAGS -L/usr/pkg/lib" 437fi 438test -d /usr/ucblib && PHP_ADD_LIBPATH(/usr/ucblib) 439 440 441dnl First, library checks. 442dnl ------------------------------------------------------------------------- 443 444dnl Some systems (OpenServer 5) dislike -lsocket -lnsl, so we try 445dnl to avoid -lnsl checks, if we already have the functions which 446dnl are usually in libnsl 447dnl Also, uClibc will bark at linking with glibc's libnsl. 448 449PHP_CHECK_FUNC(socket, socket) 450PHP_CHECK_FUNC(socketpair, socket) 451PHP_CHECK_FUNC(htonl, socket) 452PHP_CHECK_FUNC(gethostname, nsl) 453PHP_CHECK_FUNC(gethostbyaddr, nsl) 454PHP_CHECK_FUNC(yp_get_default_domain, nsl) 455 456PHP_CHECK_FUNC(dlopen, dl) 457if test "$ac_cv_func_dlopen" = "yes"; then 458 AC_DEFINE(HAVE_LIBDL, 1, [ ]) 459fi 460AC_CHECK_LIB(m, sin) 461 462dnl Check for inet_aton 463dnl in -lc, -lbind and -lresolv 464PHP_CHECK_FUNC(inet_aton, resolv, bind) 465 466dnl Then headers. 467dnl ------------------------------------------------------------------------- 468 469dnl Checks for header files. 470AC_HEADER_STDC 471AC_HEADER_DIRENT 472 473dnl QNX requires unix.h to allow functions in libunix to work properly 474AC_CHECK_HEADERS([ \ 475inttypes.h \ 476stdint.h \ 477dirent.h \ 478ApplicationServices/ApplicationServices.h \ 479sys/param.h \ 480sys/types.h \ 481sys/time.h \ 482netinet/in.h \ 483alloca.h \ 484arpa/inet.h \ 485arpa/nameser.h \ 486assert.h \ 487crypt.h \ 488dns.h \ 489fcntl.h \ 490grp.h \ 491ieeefp.h \ 492langinfo.h \ 493limits.h \ 494locale.h \ 495monetary.h \ 496netdb.h \ 497poll.h \ 498pwd.h \ 499resolv.h \ 500signal.h \ 501stdarg.h \ 502stdlib.h \ 503string.h \ 504syslog.h \ 505sysexits.h \ 506sys/ioctl.h \ 507sys/file.h \ 508sys/mman.h \ 509sys/mount.h \ 510sys/poll.h \ 511sys/resource.h \ 512sys/select.h \ 513sys/socket.h \ 514sys/stat.h \ 515sys/statfs.h \ 516sys/statvfs.h \ 517sys/vfs.h \ 518sys/sysexits.h \ 519sys/varargs.h \ 520sys/wait.h \ 521sys/loadavg.h \ 522termios.h \ 523unistd.h \ 524unix.h \ 525utime.h \ 526sys/utsname.h \ 527sys/ipc.h \ 528dlfcn.h \ 529assert.h 530],[],[],[ 531#ifdef HAVE_SYS_PARAM_H 532#include <sys/param.h> 533#endif 534#ifdef HAVE_SYS_TYPES_H 535#include <sys/types.h> 536#endif 537#ifdef HAVE_SYS_TIME_H 538#include <sys/time.h> 539#endif 540#ifdef HAVE_NETINET_IN_H 541#include <netinet/in.h> 542#endif 543#ifdef HAVE_ARPA_NAMESER_H 544#include <arpa/nameser.h> 545#endif 546]) 547 548PHP_FOPENCOOKIE 549PHP_BROKEN_GETCWD 550PHP_BROKEN_GLIBC_FOPEN_APPEND 551 552dnl Checks for typedefs, structures, and compiler characteristics. 553dnl ------------------------------------------------------------------------- 554 555AC_STRUCT_TM 556AC_STRUCT_TIMEZONE 557 558PHP_MISSING_TIME_R_DECL 559PHP_MISSING_FCLOSE_DECL 560 561PHP_TM_GMTOFF 562PHP_STRUCT_FLOCK 563PHP_SOCKLEN_T 564 565AC_CHECK_SIZEOF(size_t, 8) 566AC_CHECK_SIZEOF(long long, 8) 567AC_CHECK_SIZEOF(long long int, 8) 568AC_CHECK_SIZEOF(long, 8) 569AC_CHECK_SIZEOF(int, 4) 570 571dnl These are defined elsewhere than stdio.h 572PHP_CHECK_SIZEOF(intmax_t, 0) 573PHP_CHECK_SIZEOF(ssize_t, 8) 574PHP_CHECK_SIZEOF(ptrdiff_t, 8) 575 576dnl Check stdint types (must be after header check) 577PHP_CHECK_STDINT_TYPES 578 579dnl Check __builtin_expect 580PHP_CHECK_BUILTIN_EXPECT 581dnl Check __builtin_clz 582PHP_CHECK_BUILTIN_CLZ 583dnl Check __builtin_ctzl 584PHP_CHECK_BUILTIN_CTZL 585dnl Check __builtin_ctzll 586PHP_CHECK_BUILTIN_CTZLL 587 588dnl Check for members of the stat structure 589AC_STRUCT_ST_BLKSIZE 590dnl AC_STRUCT_ST_BLOCKS will screw QNX because fileblocks.o does not exists 591dnl The WARNING_LEVEL required because cc in QNX hates -w option without an argument 592if test "`uname -s 2>/dev/null`" != "QNX"; then 593 AC_STRUCT_ST_BLOCKS 594else 595 AC_MSG_WARN([warnings level for cc set to 0]) 596 WARNING_LEVEL=0 597fi 598AC_STRUCT_ST_RDEV 599 600dnl Checks for types 601AC_TYPE_SIZE_T 602AC_TYPE_UID_T 603 604dnl Checks for sockaddr_storage and sockaddr.sa_len 605PHP_SOCKADDR_CHECKS 606 607dnl Check for IPv6 support 608AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support, 609[AC_TRY_LINK([ #include <sys/types.h> 610#include <sys/socket.h> 611#include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;], 612 [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])]) 613 614dnl Checks for library functions. 615dnl ------------------------------------------------------------------------- 616 617AC_FUNC_VPRINTF 618AC_CHECK_FUNCS( 619alphasort \ 620asctime_r \ 621chroot \ 622ctime_r \ 623cuserid \ 624crypt \ 625flock \ 626ftok \ 627funopen \ 628gai_strerror \ 629gcvt \ 630getloadavg \ 631getlogin \ 632getprotobyname \ 633getprotobynumber \ 634getservbyname \ 635getservbyport \ 636gethostname \ 637getrusage \ 638gettimeofday \ 639gmtime_r \ 640getpwnam_r \ 641getgrnam_r \ 642getpwuid_r \ 643grantpt \ 644inet_ntoa \ 645inet_ntop \ 646inet_pton \ 647isascii \ 648link \ 649localtime_r \ 650lockf \ 651lchown \ 652lrand48 \ 653memcpy \ 654memmove \ 655mkstemp \ 656mmap \ 657nl_langinfo \ 658perror \ 659poll \ 660ptsname \ 661putenv \ 662realpath \ 663random \ 664rand_r \ 665scandir \ 666setitimer \ 667setlocale \ 668localeconv \ 669setenv \ 670setpgid \ 671setsockopt \ 672setvbuf \ 673shutdown \ 674sin \ 675snprintf \ 676srand48 \ 677srandom \ 678statfs \ 679statvfs \ 680std_syslog \ 681strcasecmp \ 682strcoll \ 683strdup \ 684strerror \ 685strftime \ 686strnlen \ 687strptime \ 688strstr \ 689strtok_r \ 690symlink \ 691tempnam \ 692tzset \ 693unlockpt \ 694unsetenv \ 695usleep \ 696utime \ 697vsnprintf \ 698vasprintf \ 699asprintf \ 700nanosleep \ 701) 702 703dnl Some systems (like OpenSolaris) do not have nanosleep in libc 704PHP_CHECK_FUNC_LIB(nanosleep, rt) 705 706dnl Check for getaddrinfo, should be a better way, but... 707dnl Also check for working getaddrinfo 708AC_CACHE_CHECK([for getaddrinfo], ac_cv_func_getaddrinfo, 709[AC_TRY_LINK([#include <netdb.h>], 710 [struct addrinfo *g,h;g=&h;getaddrinfo("","",g,&g);], 711 AC_TRY_RUN([ 712#include <netdb.h> 713#include <sys/types.h> 714#ifndef AF_INET 715# include <sys/socket.h> 716#endif 717int main(void) { 718 struct addrinfo *ai, *pai, hints; 719 720 memset(&hints, 0, sizeof(hints)); 721 hints.ai_flags = AI_NUMERICHOST; 722 723 if (getaddrinfo("127.0.0.1", 0, &hints, &ai) < 0) { 724 exit(1); 725 } 726 727 if (ai == 0) { 728 exit(1); 729 } 730 731 pai = ai; 732 733 while (pai) { 734 if (pai->ai_family != AF_INET) { 735 /* 127.0.0.1/NUMERICHOST should only resolve ONE way */ 736 exit(1); 737 } 738 if (pai->ai_addr->sa_family != AF_INET) { 739 /* 127.0.0.1/NUMERICHOST should only resolve ONE way */ 740 exit(1); 741 } 742 pai = pai->ai_next; 743 } 744 freeaddrinfo(ai); 745 exit(0); 746} 747 ],ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no, ac_cv_func_getaddrinfo=no), 748ac_cv_func_getaddrinfo=no)]) 749if test "$ac_cv_func_getaddrinfo" = yes; then 750 AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function]) 751fi 752 753dnl Check for the __sync_fetch_and_add builtin 754AC_CACHE_CHECK([for __sync_fetch_and_add], ac_cv_func_sync_fetch_and_add, 755[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)]) 756if test "$ac_cv_func_sync_fetch_and_add" = yes; then 757 AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD,1,[Define if you have the __sync_fetch_and_add function]) 758fi 759 760AC_REPLACE_FUNCS(strlcat strlcpy getopt) 761AC_FUNC_UTIME_NULL 762AC_FUNC_ALLOCA 763dnl PHP_AC_BROKEN_SPRINTF 764dnl PHP_AC_BROKEN_SNPRINTF 765PHP_DECLARED_TIMEZONE 766PHP_TIME_R_TYPE 767PHP_READDIR_R_TYPE 768PHP_CHECK_IN_ADDR_T 769 770AC_CHECK_FUNCS(crypt_r, [ php_crypt_r="1" ], [ php_crypt_r="0" ]) 771if test "x$php_crypt_r" = "x1"; then 772 PHP_CRYPT_R_STYLE 773fi 774 775dnl General settings. 776dnl ------------------------------------------------------------------------- 777PHP_CONFIGURE_PART(General settings) 778 779PHP_HELP_SEPARATOR([General settings:]) 780 781PHP_ARG_ENABLE(gcov, whether to include gcov symbols, 782[ --enable-gcov Enable GCOV code coverage (requires LTP) - FOR DEVELOPERS ONLY!!], no, no) 783 784if test "$PHP_GCOV" = "yes"; then 785 786 if test "$GCC" != "yes"; then 787 AC_MSG_ERROR([GCC is required for --enable-gcov]) 788 fi 789 790 dnl Check if ccache is being used 791 case `$php_shtool path $CC` in 792 *ccache*[)] gcc_ccache=yes;; 793 *[)] gcc_ccache=no;; 794 esac 795 796 if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then 797 AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.]) 798 fi 799 800 dnl min: 1.5 (i.e. 105, major * 100 + minor for easier comparison) 801 ltp_version_min="105" 802 dnl non-working versions, e.g. "1.8 1.18"; 803 dnl remove "none" when introducing the first incompatible LTP version and 804 dnl separate any following additions by spaces 805 ltp_version_exclude="1.8" 806 807 AC_CHECK_PROG(LTP, lcov, lcov) 808 AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml) 809 PHP_SUBST(LTP) 810 PHP_SUBST(LTP_GENHTML) 811 812 if test "$LTP"; then 813 AC_CACHE_CHECK([for ltp version], php_cv_ltp_version, [ 814 php_cv_ltp_version=invalid 815 ltp_version_vars=`$LTP -v 2>/dev/null | $SED -e 's/^.* //' -e 's/\./ /g' | tr -d a-z` 816 if test -n "$ltp_version_vars"; then 817 set $ltp_version_vars 818 ltp_version="${1}.${2}" 819 ltp_version_num="`expr ${1} \* 100 + ${2}`" 820 if test $ltp_version_num -ge $ltp_version_min; then 821 php_cv_ltp_version="$ltp_version (ok)" 822 for ltp_check_version in $ltp_version_exclude; do 823 if test "$ltp_version" = "$ltp_check_version"; then 824 php_cv_ltp_version=invalid 825 break 826 fi 827 done 828 fi 829 fi 830 ]) 831 else 832 ltp_msg="To enable code coverage reporting you must have LTP installed" 833 AC_MSG_ERROR([$ltp_msg]) 834 fi 835 836 case $php_cv_ltp_version in 837 ""|invalid[)] 838 ltp_msg="This LTP version is not supported (found: $ltp_version, min: $ltp_version_min, excluded: $ltp_version_exclude)." 839 AC_MSG_ERROR([$ltp_msg]) 840 LTP="exit 0;" 841 ;; 842 esac 843 844 if test -z "$LTP_GENHTML"; then 845 AC_MSG_ERROR([Could not find genhtml from the LTP package]) 846 fi 847 848 AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov]) 849 PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Makefile.gcov, $abs_srcdir) 850 851 dnl Remove all optimization flags from CFLAGS 852 changequote({,}) 853 CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` 854 CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` 855 changequote([,]) 856 857 dnl Add the special gcc flags 858 CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage" 859 CXXFLAGS="$CXXFLAGS -O0 -fprofile-arcs -ftest-coverage" 860fi 861 862PHP_ARG_ENABLE(debug, whether to include debugging symbols, 863[ --enable-debug Compile with debugging symbols], no, no) 864 865if test "$PHP_DEBUG" = "yes"; then 866 PHP_DEBUG=1 867 ZEND_DEBUG=yes 868 changequote({,}) 869 CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` 870 CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` 871 changequote([,]) 872 dnl add -O0 only if GCC or ICC is used 873 if test "$GCC" = "yes" || test "$ICC" = "yes"; then 874 CFLAGS="$CFLAGS -O0" 875 CXXFLAGS="$CXXFLAGS -g -O0" 876 fi 877 if test "$SUNCC" = "yes"; then 878 if test -n "$auto_cflags"; then 879 CFLAGS="-g" 880 CXXFLAGS="-g" 881 else 882 CFLAGS="$CFLAGS -g" 883 CXXFLAGS="$CFLAGS -g" 884 fi 885 fi 886else 887 PHP_DEBUG=0 888 ZEND_DEBUG=no 889fi 890 891PHP_ARG_WITH(layout, layout of installed files, 892[ --with-layout=TYPE Set how installed files will be laid out. Type can 893 be either PHP or GNU @<:@PHP@:>@], PHP, no) 894 895case $PHP_LAYOUT in 896 GNU) 897 oldstyleextdir=no 898 ;; 899 *) 900 oldstyleextdir=yes 901 ;; 902esac 903 904PHP_ARG_WITH(config-file-path, path to configuration file, 905[ --with-config-file-path=PATH 906 Set the path in which to look for php.ini @<:@PREFIX/lib@:>@], DEFAULT, no) 907 908if test "$PHP_CONFIG_FILE_PATH" = "DEFAULT"; then 909 case $PHP_LAYOUT in 910 GNU) 911 PHP_CONFIG_FILE_PATH=$sysconfdir 912 ;; 913 *) 914 PHP_CONFIG_FILE_PATH=$libdir 915 ;; 916 esac 917fi 918 919AC_MSG_CHECKING([where to scan for configuration files]) 920PHP_ARG_WITH(config-file-scan-dir,, 921[ --with-config-file-scan-dir=PATH 922 Set the path where to scan for configuration files], DEFAULT, no) 923if test "$PHP_CONFIG_FILE_SCAN_DIR" = "DEFAULT"; then 924 PHP_CONFIG_FILE_SCAN_DIR= 925fi 926AC_MSG_RESULT([$PHP_CONFIG_FILE_SCAN_DIR]) 927 928test -n "$DEBUG_CFLAGS" && CFLAGS="$CFLAGS $DEBUG_CFLAGS" 929 930PHP_ARG_ENABLE(sigchild, whether to enable PHP's own SIGCHLD handler, 931[ --enable-sigchild Enable PHP's own SIGCHLD handler], no, no) 932 933if test "$PHP_SIGCHILD" = "yes"; then 934 AC_DEFINE(PHP_SIGCHILD, 1, [ ]) 935else 936 AC_DEFINE(PHP_SIGCHILD, 0, [ ]) 937fi 938 939PHP_ARG_ENABLE(libgcc, whether to explicitly link against libgcc, 940[ --enable-libgcc Enable explicitly linking against libgcc], no, no) 941 942if test "$PHP_LIBGCC" = "yes"; then 943 PHP_LIBGCC_LIBPATH(gcc) 944 if test -z "$libgcc_libpath"; then 945 AC_MSG_ERROR([Cannot locate libgcc. Make sure that gcc is in your path]) 946 fi 947 PHP_ADD_LIBPATH($libgcc_libpath) 948 PHP_ADD_LIBRARY(gcc, yes) 949fi 950 951PHP_ARG_ENABLE(short-tags, whether to enable short tags by default, 952[ --disable-short-tags Disable the short-form <? start tag by default], yes, no) 953 954if test "$PHP_SHORT_TAGS" = "yes"; then 955 AC_DEFINE(DEFAULT_SHORT_OPEN_TAG, "1", [ ]) 956else 957 AC_DEFINE(DEFAULT_SHORT_OPEN_TAG, "0", [ ]) 958fi 959 960PHP_ARG_ENABLE(dmalloc, whether to enable dmalloc, 961[ --enable-dmalloc Enable dmalloc], no, no) 962 963if test "$PHP_DMALLOC" = "yes"; then 964 AC_CHECK_LIB(dmalloc, dmalloc_error, [ 965 PHP_ADD_LIBRARY(dmalloc) 966 AC_DEFINE(HAVE_DMALLOC,1,[Whether you have dmalloc]) 967 CPPFLAGS="$CPPFLAGS -DDMALLOC_FUNC_CHECK" 968 ], [ 969 AC_MSG_ERROR([Problem with enabling dmalloc. Please check config.log for details.]) 970 ]) 971fi 972 973PHP_ARG_ENABLE(ipv6, whether to enable IPv6 support, 974[ --disable-ipv6 Disable IPv6 support], yes, no) 975 976if test "$PHP_IPV6" != "no" && test "$ac_cv_ipv6_support" = yes; then 977 AC_DEFINE(HAVE_IPV6, 1, [Whether to enable IPv6 support]) 978fi 979 980dnl ## 981dnl ## DTRACE CHECKS 982dnl ## Note: this has to be done after SAPI configuration! 983dnl ## 984PHP_ARG_ENABLE(dtrace, whether to enable DTrace support, 985[ --enable-dtrace Enable DTrace support], no, no) 986 987if test "$PHP_DTRACE" = "yes"; then 988 AC_CHECK_HEADERS([sys/sdt.h], [ 989 PHP_INIT_DTRACE([Zend/zend_dtrace.d],[Zend/zend_dtrace_gen.h],[main/main.c Zend/zend_API.c \ 990 Zend/zend_execute.c Zend/zend_exceptions.c \ 991 Zend/zend_dtrace.c Zend/zend.c]) 992 AC_DEFINE(HAVE_DTRACE, 1, [Whether to enable DTrace support]) 993 PHP_SUBST(PHP_DTRACE_OBJS) 994 ], [ 995 AC_MSG_ERROR([Cannot find sys/sdt.h which is required for DTrace support]) 996 ]) 997fi 998 999AC_MSG_CHECKING([how big to make fd sets]) 1000PHP_ARG_ENABLE(fd-setsize,, 1001[ --enable-fd-setsize Set size of descriptor sets], no, no) 1002 1003if test "$PHP_FD_SETSIZE" != "no"; then 1004 if test "0$PHP_FD_SETSIZE" -gt 0 2>/dev/null; then 1005 CPPFLAGS="$CPPFLAGS -DFD_SETSIZE=$PHP_FD_SETSIZE" 1006 AC_MSG_RESULT([using $PHP_FD_SETSIZE]) 1007 else 1008 AC_MSG_ERROR([Invalid value passed to --enable-fd-setsize!]) 1009 fi 1010else 1011 AC_MSG_RESULT([using system default]) 1012fi 1013 1014dnl Extension configuration. 1015dnl ------------------------------------------------------------------------- 1016 1017PHP_HELP_SEPARATOR([Extensions: 1018 1019 --with-EXTENSION=[shared[,PATH]] 1020 1021 NOTE: Not all extensions can be build as 'shared'. 1022 1023 Example: --with-foobar=shared,/usr/local/foobar/ 1024 1025 o Builds the foobar extension as shared extension. 1026 o foobar package install prefix is /usr/local/foobar/ 1027]) 1028 1029PHP_CONFIGURE_PART(Configuring extensions) 1030 1031dnl 1032dnl Check if all enabled by default extensions should be disabled 1033dnl 1034 1035AC_ARG_ENABLE(all, 1036[ --disable-all Disable all extensions which are enabled by default 1037], [ 1038 PHP_ENABLE_ALL=$enableval 1039]) 1040 1041# reading config stubs 1042esyscmd(./build/config-stubs ext) 1043 1044dnl Extensions post-config 1045dnl ------------------------------------------------------------------------- 1046 1047enable_shared=yes 1048enable_static=yes 1049 1050case $php_sapi_module in 1051 shared[)] 1052 enable_static=no 1053 case $with_pic in 1054 yes) 1055 standard_libtool_flag='-prefer-pic' 1056 ;; 1057 no) 1058 standard_libtool_flag='-prefer-non-pic' 1059 ;; 1060 esac 1061 EXTRA_LDFLAGS="$EXTRA_LDFLAGS -avoid-version -module" 1062 ;; 1063 *[)] 1064 standard_libtool_flag='-prefer-non-pic -static' 1065 if test -z "$PHP_MODULES" && test -z "$PHP_ZEND_EX"; then 1066 enable_shared=no 1067 fi 1068 ;; 1069esac 1070 1071EXTRA_LIBS="$EXTRA_LIBS $DLIBS $LIBS" 1072 1073dnl this has to be here to prevent the openssl crypt() from 1074dnl overriding the system provided crypt(). 1075if test "$ac_cv_lib_crypt_crypt" = "yes"; then 1076 EXTRA_LIBS="-lcrypt $EXTRA_LIBS -lcrypt" 1077fi 1078 1079unset LIBS LDFLAGS 1080 1081dnl PEAR 1082dnl ------------------------------------------------------------------------- 1083 1084PHP_HELP_SEPARATOR([PEAR:]) 1085PHP_CONFIGURE_PART(Configuring PEAR) 1086 1087# compatibility 1088if test -z "$with_pear" && test "$enable_pear" = "no"; then 1089 with_pear=no 1090fi 1091 1092# If CLI is disabled -> disable PEAR 1093if test "$PHP_CLI" = "no"; then 1094 with_pear=no 1095fi 1096 1097PHP_ARG_WITH(pear, [whether to install PEAR], 1098[ --with-pear=DIR Install PEAR in DIR @<:@PREFIX/lib/php@:>@ 1099 --without-pear Do not install PEAR], DEFAULT, yes) 1100 1101if test "$PHP_PEAR" != "no"; then 1102 1103 dnl 1104 dnl PEAR dependancies 1105 dnl 1106 if test "$PHP_XML" = "no"; then 1107 pear_error_msg="$pear_error_msg 1108 PEAR requires XML to be enabled. Add --enable-xml to the configure line. (or --without-pear)" 1109 fi 1110 1111dnl 1112dnl if test "$PHP_XMLRPC" = "no"; then 1113dnl pear_error_msg="$pear_error_msg 1114dnl PEAR requires XML-RPC to be enabled. Add --with-xmlrpc to the configure line. (or --without-pear)" 1115dnl fi 1116dnl 1117 1118 if test "$pear_error_msg"; then 1119 AC_MSG_ERROR([$pear_error_msg]) 1120 fi 1121 1122 install_pear="install-pear" 1123 PEAR_INSTALLDIR=$PHP_PEAR 1124 1125 if test "$PHP_PEAR" = "DEFAULT" || test "$PHP_PEAR" = "yes"; then 1126 case $PHP_LAYOUT in 1127 GNU) PEAR_INSTALLDIR=$datadir/pear;; 1128 *) PEAR_INSTALLDIR=$libdir/php;; 1129 esac 1130 fi 1131 1132 PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/pear/Makefile.frag,$abs_srcdir/pear,pear) 1133fi 1134 1135 1136dnl Configuring Zend and TSRM. 1137dnl ------------------------------------------------------------------------- 1138 1139PHP_HELP_SEPARATOR([Zend:]) 1140PHP_CONFIGURE_PART(Configuring Zend) 1141 1142LIBZEND_BASIC_CHECKS 1143LIBZEND_DLSYM_CHECK 1144LIBZEND_OTHER_CHECKS 1145 1146if test "$ZEND_MAINTAINER_ZTS" = "yes"; then 1147 AC_DEFINE(ZTS,1,[ ]) 1148 PHP_THREAD_SAFETY=yes 1149else 1150 PHP_THREAD_SAFETY=no 1151fi 1152 1153INCLUDES="$INCLUDES -I\$(top_builddir)/TSRM" 1154INCLUDES="$INCLUDES -I\$(top_builddir)/Zend" 1155 1156if test "$abs_srcdir" != "$abs_builddir"; then 1157 INCLUDES="$INCLUDES -I\$(top_srcdir)/main -I\$(top_srcdir)/Zend" 1158 INCLUDES="$INCLUDES -I\$(top_srcdir)/TSRM -I\$(top_builddir)/" 1159fi 1160 1161ZEND_EXTRA_LIBS="$LIBS" 1162unset LIBS LDFLAGS 1163 1164PHP_HELP_SEPARATOR([TSRM:]) 1165PHP_CONFIGURE_PART(Configuring TSRM) 1166TSRM_BASIC_CHECKS 1167if test "$PHP_THREAD_SAFETY" = "yes"; then 1168 TSRM_THREADS_CHECKS 1169fi 1170 1171EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LDFLAGS" 1172EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $LDFLAGS" 1173EXTRA_LIBS="$EXTRA_LIBS $LIBS" 1174unset LIBS LDFLAGS 1175 1176test "$prefix" = "NONE" && prefix=/usr/local 1177test "$exec_prefix" = "NONE" && exec_prefix='${prefix}' 1178test "$program_prefix" = "NONE" && program_prefix= 1179test "$program_suffix" = "NONE" && program_suffix= 1180 1181case $libdir in 1182 '${exec_prefix}/lib') 1183 libdir=$libdir/php 1184 ;; 1185esac 1186case `eval echo $datadir` in 1187 '${prefix}/share') 1188 datadir=$datadir/php 1189 ;; 1190esac 1191 1192phplibdir=`pwd`/modules 1193$php_shtool mkdir -p $phplibdir 1194phptempdir=`pwd`/libs 1195 1196old_exec_prefix=$exec_prefix 1197old_libdir=$libdir 1198old_datadir=$datadir 1199exec_prefix=`eval echo $exec_prefix` 1200libdir=`eval echo $libdir` 1201datadir=`eval eval echo $datadir` 1202 1203dnl Build extension directory path 1204 1205ZEND_MODULE_API_NO=`$EGREP '#define ZEND_MODULE_API_NO ' $srcdir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO //'` 1206 1207if test -z "$EXTENSION_DIR"; then 1208 extbasedir=$ZEND_MODULE_API_NO 1209 if test "$oldstyleextdir" = "yes"; then 1210 if test "$PHP_DEBUG" = "1"; then 1211 part1=debug 1212 else 1213 part1=no-debug 1214 fi 1215 if test "$enable_maintainer_zts" = "yes"; then 1216 part2=zts 1217 else 1218 part2=non-zts 1219 fi 1220 extbasedir=$part1-$part2-$extbasedir 1221 EXTENSION_DIR=$libdir/extensions/$extbasedir 1222 else 1223 if test "$enable_maintainer_zts" = "yes"; then 1224 extbasedir=$extbasedir-zts 1225 fi 1226 1227 if test "$PHP_DEBUG" = "1"; then 1228 extbasedir=$extbasedir-debug 1229 fi 1230 EXTENSION_DIR=$libdir/$extbasedir 1231 fi 1232fi 1233 1234case $PHP_LAYOUT in 1235 GNU) 1236 datarootdir=$prefix/share 1237 ;; 1238 *) 1239 datarootdir=$prefix/php 1240 ;; 1241esac 1242 1243dnl Expand all directory names for use in macros/constants 1244EXPANDED_PEAR_INSTALLDIR=`eval echo $PEAR_INSTALLDIR` 1245EXPANDED_EXTENSION_DIR=`eval echo $EXTENSION_DIR` 1246EXPANDED_LOCALSTATEDIR=`eval echo $localstatedir` 1247EXPANDED_BINDIR=`eval echo $bindir` 1248EXPANDED_SBINDIR=`eval echo $sbindir` 1249EXPANDED_MANDIR=`eval echo $mandir` 1250EXPANDED_LIBDIR=$libdir 1251EXPANDED_SYSCONFDIR=`eval echo $sysconfdir` 1252EXPANDED_DATADIR=$datadir 1253EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"` 1254EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"` 1255INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR 1256 1257exec_prefix=$old_exec_prefix 1258libdir=$old_libdir 1259datadir=$old_datadir 1260 1261AC_SUBST(INCLUDE_PATH) 1262AC_SUBST(EXPANDED_PEAR_INSTALLDIR) 1263AC_SUBST(EXPANDED_EXTENSION_DIR) 1264AC_SUBST(EXPANDED_BINDIR) 1265AC_SUBST(EXPANDED_SBINDIR) 1266AC_SUBST(EXPANDED_MANDIR) 1267AC_SUBST(EXPANDED_LIBDIR) 1268AC_SUBST(EXPANDED_DATADIR) 1269AC_SUBST(EXPANDED_SYSCONFDIR) 1270AC_SUBST(EXPANDED_LOCALSTATEDIR) 1271AC_SUBST(EXPANDED_PHP_CONFIG_FILE_PATH) 1272AC_SUBST(EXPANDED_PHP_CONFIG_FILE_SCAN_DIR) 1273 1274if test -n "$php_ldflags_add_usr_lib"; then 1275 PHP_RPATHS="$PHP_RPATHS /usr/lib" 1276fi 1277 1278PHP_UTILIZE_RPATHS 1279 1280if test -z "$php_ldflags_add_usr_lib"; then 1281 PHP_REMOVE_USR_LIB(PHP_LDFLAGS) 1282 PHP_REMOVE_USR_LIB(LDFLAGS) 1283fi 1284 1285EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PHP_LDFLAGS" 1286EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $PHP_LDFLAGS" 1287 1288# SOURCE_DATE_EPOCH for reproducible builds https://reproducible-builds.org/specs/source-date-epoch/ 1289PHP_BUILD_DATE=`date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y-%m-%d 2>/dev/null` 1290if test $? -ne 0 ; then 1291PHP_BUILD_DATE=`date -u +%Y-%m-%d` 1292fi 1293AC_DEFINE_UNQUOTED(PHP_BUILD_DATE,"$PHP_BUILD_DATE",[PHP build date]) 1294 1295case $host_alias in 1296*netware*) 1297 PHP_OS="NetWare" 1298 PHP_UNAME="NetWare" 1299 AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[hardcode for each of the cross compiler host]) 1300 AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[hardcode for each of the cross compiler host]) 1301 ;; 1302*) 1303 PHP_UNAME=`uname -a | xargs` 1304 AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output]) 1305 PHP_OS=`uname | xargs` 1306 AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output]) 1307 ;; 1308esac 1309 1310PHP_SUBST_OLD(PHP_INSTALLED_SAPIS) 1311 1312PHP_SUBST(PHP_EXECUTABLE) 1313 1314PHP_SUBST(PHP_FASTCGI_OBJS) 1315PHP_SUBST(PHP_SAPI_OBJS) 1316PHP_SUBST(PHP_BINARY_OBJS) 1317PHP_SUBST(PHP_GLOBAL_OBJS) 1318 1319PHP_SUBST(PHP_BINARIES) 1320PHP_SUBST(PHP_MODULES) 1321PHP_SUBST(PHP_ZEND_EX) 1322 1323PHP_SUBST(EXT_LIBS) 1324 1325PHP_SUBST_OLD(abs_builddir) 1326PHP_SUBST_OLD(abs_srcdir) 1327PHP_SUBST_OLD(php_abs_top_builddir) 1328PHP_SUBST_OLD(php_abs_top_srcdir) 1329 1330PHP_SUBST(bindir) 1331PHP_SUBST(sbindir) 1332PHP_SUBST(exec_prefix) 1333PHP_SUBST_OLD(program_prefix) 1334PHP_SUBST_OLD(program_suffix) 1335PHP_SUBST(includedir) 1336PHP_SUBST(libdir) 1337PHP_SUBST(mandir) 1338PHP_SUBST(phplibdir) 1339PHP_SUBST(phptempdir) 1340PHP_SUBST(prefix) 1341PHP_SUBST(localstatedir) 1342PHP_SUBST(datadir) 1343PHP_SUBST(datarootdir) 1344PHP_SUBST(sysconfdir) 1345 1346PHP_SUBST(EXEEXT) 1347PHP_SUBST(CC) 1348PHP_SUBST(CFLAGS) 1349PHP_SUBST(CFLAGS_CLEAN) 1350PHP_SUBST(CPP) 1351PHP_SUBST(CPPFLAGS) 1352PHP_SUBST(CXX) 1353PHP_SUBST(CXXFLAGS) 1354PHP_SUBST(CXXFLAGS_CLEAN) 1355PHP_SUBST_OLD(DEBUG_CFLAGS) 1356PHP_SUBST_OLD(EXTENSION_DIR) 1357PHP_SUBST_OLD(EXTRA_LDFLAGS) 1358PHP_SUBST_OLD(EXTRA_LDFLAGS_PROGRAM) 1359PHP_SUBST_OLD(EXTRA_LIBS) 1360PHP_SUBST_OLD(ZEND_EXTRA_LIBS) 1361PHP_SUBST_OLD(INCLUDES) 1362PHP_SUBST_OLD(EXTRA_INCLUDES) 1363PHP_SUBST_OLD(INCLUDE_PATH) 1364PHP_SUBST_OLD(INSTALL_IT) 1365PHP_SUBST(LFLAGS) 1366PHP_SUBST(LIBTOOL) 1367PHP_SUBST(LN_S) 1368PHP_SUBST_OLD(NATIVE_RPATHS) 1369PHP_SUBST_OLD(PEAR_INSTALLDIR) 1370PHP_SUBST(PHP_BUILD_DATE) 1371PHP_SUBST_OLD(PHP_LDFLAGS) 1372PHP_SUBST_OLD(PHP_LIBS) 1373PHP_SUBST(OVERALL_TARGET) 1374PHP_SUBST(PHP_RPATHS) 1375PHP_SUBST(PHP_SAPI) 1376PHP_SUBST_OLD(PHP_VERSION) 1377PHP_SUBST_OLD(PHP_VERSION_ID) 1378PHP_SUBST(SHELL) 1379PHP_SUBST(SHARED_LIBTOOL) 1380PHP_SUBST(WARNING_LEVEL) 1381PHP_SUBST(PHP_FRAMEWORKS) 1382PHP_SUBST(PHP_FRAMEWORKPATH) 1383PHP_SUBST(INSTALL_HEADERS) 1384 1385old_CC=$CC 1386 1387if test "$PHP_THREAD_SAFETY" = "yes" && test -n "$ac_cv_pthreads_cflags"; then 1388 CXXFLAGS="$CXXFLAGS $ac_cv_pthreads_cflags" 1389 INLINE_CFLAGS="$INLINE_CFLAGS $ac_cv_pthreads_cflags" 1390 cat >meta_ccld<<EOF 1391#! /bin/sh 1392exec $CC $ac_cv_pthreads_cflags \$@ 1393EOF 1394 CC="$abs_builddir/meta_ccld" 1395 chmod +x meta_ccld 1396fi 1397 1398dnl This will go away, if we have a facility to run per-extension code 1399dnl after the thread_safety decision was done 1400if test "$PHP_THREAD_SAFETY" = "yes" && test "$PHP_MYSQL" = "yes"; then 1401 CPPFLAGS="$CPPFLAGS -DTHREAD=1" 1402fi 1403 1404ZEND_EXT_TYPE="zend_extension" 1405PHP_SUBST(ZEND_EXT_TYPE) 1406 1407dnl 1408dnl Libtool creation 1409dnl 1410 1411PHP_HELP_SEPARATOR([Libtool:]) 1412PHP_CONFIGURE_PART(Configuring libtool) 1413 1414LDFLAGS="$LDFLAGS $PHP_AIX_LDFLAGS" 1415 1416dnl Autoconf 2.13's libtool checks go slightly nuts on Mac OS X 10.5 and 10.6. 1417dnl This hack works around it. Ugly. 1418case $host_alias in 1419*darwin9*|*darwin10*) 1420 ac_cv_exeext= 1421 ;; 1422esac 1423 1424dnl Only allow AC_PROG_CXX and AC_PROG_CXXCPP if they are explicitly called (by PHP_REQUIRE_CXX). 1425dnl Otherwise AC_PROG_LIBTOOL fails if there is no working C++ compiler. 1426AC_PROVIDE_IFELSE([PHP_REQUIRE_CXX], [], [ 1427 undefine([AC_PROG_CXX]) 1428 AC_DEFUN([AC_PROG_CXX], []) 1429 undefine([AC_PROG_CXXCPP]) 1430 AC_DEFUN([AC_PROG_CXXCPP], [php_prog_cxxcpp=disabled]) 1431]) 1432AC_PROG_LIBTOOL 1433 1434PHP_SET_LIBTOOL_VARIABLE([--silent]) 1435 1436dnl libtool 1.4.3 needs this. 1437PHP_SET_LIBTOOL_VARIABLE([--preserve-dup-deps]) 1438 1439test -z "$PHP_COMPILE" && PHP_COMPILE='$(LIBTOOL) --mode=compile $(COMPILE) -c $<' 1440test -z "$CXX_PHP_COMPILE" && CXX_PHP_COMPILE='$(LIBTOOL) --mode=compile $(CXX_COMPILE) -c $<' 1441SHARED_LIBTOOL='$(LIBTOOL)' 1442 1443CC=$old_CC 1444 1445PHP_CONFIGURE_PART(Generating files) 1446 1447CXXFLAGS_CLEAN=$CXXFLAGS 1448CFLAGS_CLEAN="$CFLAGS \$(PROF_FLAGS)" 1449CFLAGS="\$(CFLAGS_CLEAN) $standard_libtool_flag" 1450INLINE_CFLAGS="$INLINE_CFLAGS $standard_libtool_flag" 1451CXXFLAGS="$CXXFLAGS $standard_libtool_flag \$(PROF_FLAGS)" 1452 1453if test "$PHP_PHAR" != "no" && test "$PHP_CLI" != "no"; then 1454 pharcmd=pharcmd 1455 pharcmd_install=install-pharcmd 1456else 1457 pharcmd= 1458 pharcmd_install= 1459fi; 1460 1461all_targets="$lcov_target \$(OVERALL_TARGET) \$(PHP_MODULES) \$(PHP_ZEND_EX) \$(PHP_BINARIES) $pharcmd" 1462install_targets="$install_sapi $install_modules $install_binaries install-build install-headers install-programs $install_pear $pharcmd_install" 1463 1464PHP_SUBST(all_targets) 1465PHP_SUBST(install_targets) 1466PHP_SUBST(install_binary_targets) 1467 1468PHP_INSTALL_HEADERS([Zend/ TSRM/ include/ main/ main/streams/]) 1469 1470PHP_ADD_SOURCES(TSRM, TSRM.c tsrm_strtok_r.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) 1471 1472PHP_ADD_SOURCES(main, main.c snprintf.c spprintf.c php_sprintf.c \ 1473 fopen_wrappers.c alloca.c php_scandir.c \ 1474 php_ini.c SAPI.c rfc1867.c php_content_types.c strlcpy.c \ 1475 strlcat.c mergesort.c reentrancy.c php_variables.c php_ticks.c \ 1476 network.c php_open_temporary_file.c \ 1477 output.c getopt.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) 1478 1479PHP_ADD_SOURCES_X(main, fastcgi.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1, PHP_FASTCGI_OBJS, no) 1480 1481PHP_ADD_SOURCES(main/streams, streams.c cast.c memory.c filter.c \ 1482 plain_wrapper.c userspace.c transports.c xp_socket.c mmap.c \ 1483 glob_wrapper.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) 1484 1485PHP_ADD_SOURCES(/main, internal_functions.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1, sapi) 1486 1487case $host_alias in 1488 *netware*) 1489 PHP_ADD_BUILD_DIR(win32) 1490 PHP_ADD_BUILD_DIR(netware) 1491 ;; 1492 *) 1493 PHP_ADD_SOURCES_X(/main, internal_functions_cli.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1, PHP_BINARY_OBJS) 1494 ;; 1495esac 1496 1497PHP_ADD_SOURCES(Zend, \ 1498 zend_language_parser.c zend_language_scanner.c \ 1499 zend_ini_parser.c zend_ini_scanner.c \ 1500 zend_alloc.c zend_compile.c zend_constants.c zend_dtrace.c \ 1501 zend_execute_API.c zend_highlight.c zend_llist.c \ 1502 zend_vm_opcodes.c zend_opcode.c zend_operators.c zend_ptr_stack.c zend_stack.c \ 1503 zend_variables.c zend.c zend_API.c zend_extensions.c zend_hash.c \ 1504 zend_list.c zend_builtin_functions.c zend_sprintf.c \ 1505 zend_ini.c zend_sort.c zend_multibyte.c zend_ts_hash.c zend_stream.c \ 1506 zend_iterators.c zend_interfaces.c zend_exceptions.c zend_strtod.c zend_gc.c \ 1507 zend_closures.c zend_float.c zend_string.c zend_signal.c zend_generators.c \ 1508 zend_virtual_cwd.c zend_ast.c zend_objects.c zend_object_handlers.c zend_objects_API.c \ 1509 zend_default_classes.c zend_inheritance.c zend_smart_str.c, \ 1510 -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) 1511 1512dnl Selectively disable optimization due to high RAM usage during 1513dnl compiling the executor. 1514if test -n "$GCC" && test "$ZEND_INLINE_OPTIMIZATION" != "yes"; then 1515 flag=-O0 1516else 1517 flag= 1518fi 1519 1520PHP_ADD_SOURCES_X(Zend, zend_execute.c, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1,PHP_GLOBAL_OBJS,,$flag) 1521 1522PHP_ADD_BUILD_DIR(main main/streams) 1523PHP_ADD_BUILD_DIR(TSRM) 1524PHP_ADD_BUILD_DIR(Zend) 1525 1526PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/scripts/Makefile.frag,$abs_srcdir/scripts,scripts) 1527PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Makefile.frag,$abs_srcdir/Zend,Zend) 1528PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Zend/Makefile.frag,$abs_srcdir/Zend,Zend) 1529 1530PHP_GEN_BUILD_DIRS 1531PHP_GEN_GLOBAL_MAKEFILE 1532 1533AC_DEFINE([HAVE_BUILD_DEFS_H], 1, [ ]) 1534 1535$php_shtool mkdir -p pear/scripts 1536$php_shtool mkdir -p scripts 1537$php_shtool mkdir -p scripts/man1 1538 1539ALL_OUTPUT_FILES="php7.spec main/build-defs.h \ 1540scripts/phpize scripts/man1/phpize.1 \ 1541scripts/php-config scripts/man1/php-config.1 \ 1542$PHP_OUTPUT_FILES" 1543 1544dnl 1545dnl Check for unknown configure options 1546dnl 1547PHP_CHECK_CONFIGURE_OPTIONS 1548 1549dnl 1550dnl Generate build files 1551dnl 1552AC_OUTPUT($ALL_OUTPUT_FILES, [], [ 1553 1554if test "\$CONFIG_FILES" = "$ALL_OUTPUT_FILES" || test "\$CONFIG_FILES" = " $ALL_OUTPUT_FILES" || test -z "\$CONFIG_FILES"; then 1555 REDO_ALL=yes 1556fi 1557 1558################################################################ 1559# Create configuration headers 1560# 1561 1562test -d TSRM || $php_shtool mkdir TSRM 1563echo '#include <../main/php_config.h>' > TSRM/tsrm_config.h 1564 1565test -d Zend || $php_shtool mkdir Zend 1566 1567cat >Zend/zend_config.h <<FEO 1568#include <../main/php_config.h> 1569#if defined(APACHE) && defined(PHP_API_VERSION) 1570#undef HAVE_DLFCN_H 1571#endif 1572FEO 1573 1574# run this only when generating all the files? 1575if test -n "\$REDO_ALL"; then 1576 # Hacking while airborne considered harmful. 1577 # 1578 echo "creating main/internal_functions.c" 1579 extensions="$EXT_STATIC" 1580dnl mv -f main/internal_functions.c main/internal_functions.c.old 2>/dev/null 1581 sh $srcdir/build/genif.sh $srcdir/main/internal_functions.c.in $srcdir "$EXTRA_MODULE_PTRS" $AWK \$extensions > main/internal_functions.c 1582 1583 echo "creating main/internal_functions_cli.c" 1584 cli_extensions="$EXT_CLI_STATIC" 1585 sh $srcdir/build/genif.sh $srcdir/main/internal_functions.c.in $srcdir "$EXTRA_MODULE_PTRS" $AWK \$cli_extensions > main/internal_functions_cli.c 1586 1587 if test "$UNAME" = "FreeBSD" && test "$PHP_SAPI" = "apache2filter" && test "$TSRM_PTH" != "pth-config" ; then 1588 echo "+--------------------------------------------------------------------+" 1589 echo "| *** WARNING *** |" 1590 echo "| |" 1591 echo "| In order to build PHP as a Apache2 module on FreeBSD, you have to |" 1592 echo "| add --with-tsrm-pth to your ./configure line. Therefore you need |" 1593 echo "| to install gnu-pth from /usr/ports/devel/pth. |" 1594 fi 1595 1596 if test -n "$PHP_APXS_BROKEN"; then 1597 echo "+--------------------------------------------------------------------+" 1598 echo "| WARNING: Your $APXS script is most likely broken." 1599 echo "| |" 1600 echo "| Please go read http://www.php.net/faq.build#faq.build.apxs |" 1601 echo "| and make the changes described there and try again. |" 1602 fi 1603 1604 if test -n "$DEBUG_LOG"; then 1605 rm -f config.cache 1606cat <<X 1607+--------------------------------------------------------------------+ 1608| *** ATTENTION *** | 1609| | 1610| Something is likely to be messed up here, because the configure | 1611| script was not able to detect a simple feature on your platform. | 1612| This is often caused by incorrect configuration parameters. Please | 1613| see the file debug.log for error messages. | 1614| | 1615| If you are unable to fix this, send the file debug.log to the | 1616| php-install@lists.php.net mailing list and include appropriate | 1617| information about your setup. | 1618X 1619 fi 1620 1621 if test "$PHP_SAPI" = "apache2handler" || test "$PHP_SAPI" = "apache2filter"; then 1622 if test "$APACHE_VERSION" -ge 2004001; then 1623 if test -z "$APACHE_THREADED_MPM"; then 1624cat <<X 1625+--------------------------------------------------------------------+ 1626| *** WARNING *** | 1627| | 1628| You have built PHP for Apache's current non-threaded MPM. | 1629| If you change Apache to use a threaded MPM you must reconfigure | 1630| PHP with --enable-maintainer-zts | 1631X 1632 fi 1633 fi 1634 fi 1635 1636 # Warn about linking Apache with libpthread if oci8 extension is enabled on linux. 1637 if test "$PHP_OCI8" != "no"; then 1638 if test "$PHP_SAPI" = "apache"; then 1639 if test `uname` = "Linux"; then 1640cat <<X 1641+--------------------------------------------------------------------+ 1642| *** WARNING *** | 1643| | 1644| Please check that your Apache (httpd) is linked with libpthread. | 1645| If not, you have to recompile Apache with pthread. For more | 1646| details, see this page: http://www.php.net/manual/ref.oci8.php | 1647X 1648 fi 1649 fi 1650 1651 if test "$PHP_SIGCHILD" != "yes"; then 1652 if test "$PHP_OCI8_INSTANT_CLIENT" = "no"; then 1653cat <<X 1654+--------------------------------------------------------------------+ 1655| Notice: | 1656| If you encounter <defunc> processes when using a local Oracle | 1657| database, set the value BEQUEATH_DETACH=YES in Oracle Net's | 1658| sqlnet.ora file on the PHP host, or set the environment variable | 1659| BEQUEATH_DETACH to YES before starting Apache. If the problem | 1660| still occurs, then recompile PHP and specify --enable-sigchild | 1661| when configuring. | 1662X 1663 fi 1664 fi 1665 fi 1666 1667cat <<X 1668+--------------------------------------------------------------------+ 1669| License: | 1670| This software is subject to the PHP License, available in this | 1671| distribution in the file LICENSE. By continuing this installation | 1672| process, you are bound by the terms of this license agreement. | 1673| If you do not agree with the terms of this license, you must abort | 1674| the installation process at this point. | 1675+--------------------------------------------------------------------+ 1676 1677Thank you for using PHP. 1678 1679X 1680 1681 # Output unknown configure options 1682 if test "$PHP_UNKNOWN_CONFIGURE_OPTIONS"; then 1683 echo "Notice: Following unknown configure options were used: 1684$PHP_UNKNOWN_CONFIGURE_OPTIONS 1685 1686Check '[$]0 --help' for available options 1687" 1688 fi 1689 1690fi 1691]) 1692 1693dnl ## Local Variables: 1694dnl ## tab-width: 4 1695dnl ## End: 1696