dnl ## $Id$ -*- sh -*- dnl ## Process this file with autoconf to produce a configure script. divert(1) AC_INIT(README.CVS-RULES) PHP_FAST_OUTPUT(sapi/Makefile ext/Makefile Makefile pear/Makefile main/Makefile) 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 cwd=`pwd` PHP_CONFIG_NICE(config.nice) for arg in $0 "$@"; do CONFIGURE_COMMAND="$CONFIGURE_COMMAND '$arg'" done php_shtool="$srcdir/build/shtool" T_MD=`$php_shtool echo -n -e %B` T_ME=`$php_shtool echo -n -e %b` 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 ## Diversion 2 is the initial checking of OS features, programs, dnl ## libraries and so on. dnl ## In diversion 3 we check for compile-time options to the PHP dnl ## core and how to deal with different system dependencies. This dnl ## includes what regex library is used and whether debugging or short dnl ## tags are enabled, and the default behaviour of php.ini options. dnl ## This is also where an SAPI interface is selected (choosing between dnl ## Apache module, CGI etc.) dnl ## In diversion 4 we check which extensions should be compiled. dnl ## All of these are normally in the extension directories. dnl ## Diversion 5 is the last one. Here we generate files and clean up. dnl ## This is where the version number is changed from now on! AM_INIT_AUTOMAKE(php, 4.0.3-dev) PHP_VERSION=$VERSION echo "/* automatically generated by configure */" > php_version.h.new echo "/* edit configure.in to change version number */" >> php_version.h.new echo "#define PHP_VERSION \"$PHP_VERSION\"" >> php_version.h.new cmp php_version.h.new php_version.h >/dev/null 2>&1 if test $? -ne 0 ; then rm -f php_version.h && mv php_version.h.new php_version.h && \ echo 'Updated php_version.h' else rm -f php_version.h.new fi AM_CONFIG_HEADER(php_config.h) AM_MAINTAINER_MODE AC_CANONICAL_HOST dnl We want this one before the checks, so the checks can modify CFLAGS. test -z "$CFLAGS" && auto_cflags=1 dnl Checks for programs. AC_PROG_AWK AC_PROG_YACC if test "$YACC" != "bison -y"; then AC_MSG_WARN(You will need bison if you want to regenerate the PHP parsers.) else AC_MSG_CHECKING(bison version) oldIFS=$IFS; IFS=. set `bison -V | sed -e 's/^GNU Bison version //'` IFS=$oldIFS if test "$1" = "1" -a "$2" -lt "25"; then AC_MSG_WARN(Bison 1.25 or newer needed to regenerate parsers (found $1.$2).) fi AC_MSG_RESULT($1.$2 (ok)) fi AC_PROG_CC AC_AIX case "$host_alias" in *solaris*) CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS";; *dgux*) CPPFLAGS="$CPPFLAGS -D_BSD_TIMEOFDAY_FLAVOR";; *darwin*|*rhapsody*) CPPFLAGS="$CPPFLAGS -traditional-cpp";; esac AM_PROG_CC_STDC AC_PROG_RANLIB AC_PROG_CC_C_O AC_PROG_LN_S AM_PROG_LEX dnl ## Make flex scanners use const if they can, even if __STDC__ is not dnl ## true, for compilers like Sun's that only set __STDC__ true in dnl ## "limit-to-ANSI-standard" mode, not in "ANSI-compatible" mode AC_C_CONST if test "$ac_cv_c_const" = "yes" ; then LEX_CFLAGS="-DYY_USE_CONST" fi abs_srcdir=`(cd $srcdir; pwd)` abs_builddir=`pwd` sinclude(Zend/acinclude.m4) sinclude(Zend/Zend.m4) sinclude(TSRM/tsrm.m4) divert(2) PTHREADS_CHECK PHP_SHLIB_SUFFIX_NAME PHP_SAPI=cgi PHP_BUILD_PROGRAM dnl paths to the targets are relative to the build directory SAPI_PROGRAM=php SAPI_SHARED=libs/libphp4.$SHLIB_SUFFIX_NAME SAPI_STATIC=libs/libphp4.a PHP_CONFIGURE_PART(Configuring SAPI modules) esyscmd(./scripts/config-stubs sapi) AC_MSG_CHECKING(for chosen SAPI module) AC_MSG_RESULT($PHP_SAPI) if test "$enable_experimental_zts" = "yes"; then PTHREADS_ASSIGN_VARS PTHREADS_FLAGS fi divert(3) PHP_CONFIGURE_PART(Running system checks) PHP_MISSING_TIME_R_DECL dnl check for -R, etc. switch AC_MSG_CHECKING(whether compiler supports -R) AC_CACHE_VAL(php_cv_cc_dashr,[ SAVE_LIBS="${LIBS}" LIBS="-R /usr/lib ${LIBS}" AC_TRY_LINK([], [], php_cv_cc_dashr=yes, php_cv_cc_dashr=no) LIBS="${SAVE_LIBS}"]) AC_MSG_RESULT($php_cv_cc_dashr) if test $php_cv_cc_dashr = "yes"; then ld_runpath_switch="-R" else AC_MSG_CHECKING([whether compiler supports -Wl,-rpath,]) AC_CACHE_VAL(php_cv_cc_rpath,[ SAVE_LIBS="${LIBS}" LIBS="-Wl,-rpath,/usr/lib ${LIBS}" AC_TRY_LINK([], [], php_cv_cc_rpath=yes, php_cv_cc_rpath=no) LIBS="${SAVE_LIBS}"]) AC_MSG_RESULT($php_cv_cc_rpath) if test $php_cv_cc_rpath = "yes"; then ld_runpath_switch="-Wl,-rpath," else dnl something innocuous ld_runpath_switch="-L" fi fi PHP_PROG_SENDMAIL dnl Check whether the system uses EBCDIC (not ASCII) as its native codeset PHP_EBCDIC dnl dnl Check for /usr/pkg/{lib,include} which is where NetBSD puts binary dnl and source packages. This should be harmless on other OSs. dnl 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 INCLUDES="$INCLUDES -I\$(top_builddir)/Zend -I\$(top_srcdir)" AC_CHECK_LIB(socket, socket, [ AC_ADD_LIBRARY(socket) AC_DEFINE(HAVE_LIBSOCKET,1,[ ]) ], [ AC_CHECK_LIB(socket, htonl, [ AC_ADD_LIBRARY(socket) ])]) 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 unset ac_cv_func_yp_get_default_domain AC_CHECK_FUNC(yp_get_default_domain, [php_no_nsl_checks=yes],[ ]) unset ac_cv_func_yp_get_default_domain if test "$php_no_nsl_checks" != "yes"; then AC_CHECK_LIB(nsl, gethostname, [ AC_ADD_LIBRARY(nsl) AC_DEFINE(HAVE_LIBNSL,1,[ ]) ],[ AC_CHECK_LIB(nsl, gethostbyaddr, [ AC_ADD_LIBRARY(nsl) AC_DEFINE(HAVE_LIBNSL,1,[ ]) ], []) ]) fi AC_CHECK_LIB(crypt, crypt, [ AC_ADD_LIBRARY(crypt) AC_DEFINE(HAVE_LIBCRYPT,1,[ ]) ], []) AC_CHECK_LIB(dl, dlopen,[AC_ADD_LIBRARY(dl)]) dnl The sin may be in a library which need not be specifed dnl as well as res_search resides in libsocket AC_CHECK_LIB(m, sin) AC_CHECK_LIB(bind, inet_aton, [ AC_ADD_LIBRARY(bind) AC_DEFINE(HAVE_LIBBIND,1,[Whether you have bind]) ], []) AC_CHECK_LIB(resolv, inet_aton) dnl The res_search may be in libsocket as well, and if it is dnl make sure to check for dn_skipname in libresolv, or if res_search dnl is in neither of these libs, still check for dn_skipname in libresolv AC_CHECK_LIB(socket, res_search, [ AC_CHECK_LIB(resolv, dn_skipname) AC_CHECK_LIB(resolv, __dn_skipname) LIBS="$LIBS -lsocket" AC_DEFINE(HAVE_LIBSOCKET,1,[ ]) ], [ AC_CHECK_LIB(resolv, res_search, [ LIBS="$LIBS -lresolv" AC_DEFINE(HAVE_LIBRESOLV,1,[ ]) ], [ AC_CHECK_LIB(resolv, dn_skipname) AC_CHECK_LIB(resolv, __dn_skipname) ]) ]) dnl Checks for header files. AC_HEADER_STDC dnl In QNX opendir resides in libc but dirent.h is still required if test "`uname -s 2>/dev/null`" != "QNX"; then AC_HEADER_DIRENT else AC_CHECK_HEADERS(dirent.h) fi AC_MISSING_FCLOSE_DECL dnl QNX requires unix.h to allow functions in libunix to work properly AC_CHECK_HEADERS( alloca.h \ arpa/inet.h \ crypt.h \ fcntl.h \ grp.h \ limits.h \ locale.h \ netinet/in.h \ pwd.h \ signal.h \ stdarg.h \ stdlib.h \ string.h \ syslog.h \ sys/file.h \ sys/mman.h \ sys/resource.h \ sys/select.h \ sys/socket.h \ sys/statfs.h \ sys/statvfs.h \ sys/time.h \ sys/types.h \ sys/varargs.h \ sys/wait.h \ unistd.h \ unix.h \ utime.h \ ) dnl Checks for typedefs, structures, and compiler characteristics. AC_STRUCT_TM AC_STRUCT_TIMEZONE PHP_TM_GMTOFF PHP_STRUCT_FLOCK PHP_SOCKLEN_T AC_CHECK_SIZEOF(long, 8) AC_CHECK_SIZEOF(int, 4) test -d /usr/ucblib && AC_ADD_LIBPATH(/usr/ucblib) 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 library functions. AC_FUNC_VPRINTF AC_CHECK_FUNCS( asctime_r \ crypt \ ctime_r \ cuserid \ flock \ gcvt \ getaddrinfo \ getlogin \ gethostbyaddr \ getrusage \ gettimeofday \ gmtime_r \ inet_aton \ isascii \ link \ localtime_r \ lockf \ lrand48 \ memcpy \ memmove \ mmap \ putenv \ random \ rand_r \ regcomp \ setitimer \ setlocale \ setsockopt \ setvbuf \ shutdown \ sin \ snprintf \ srand48 \ srandom \ statfs \ statvfs \ std_syslog \ strcasecmp \ strdup \ strerror \ strftime \ strstr \ strtok_r \ symlink \ tempnam \ tzset \ unsetenv \ usleep \ utime \ vsnprintf \ ) AC_REPLACE_FUNCS(strlcat strlcpy getopt) AC_FUNC_UTIME_NULL AC_FUNC_ALLOCA AC_BROKEN_SPRINTF PHP_DECLARED_TIMEZONE PHP_TIME_R_TYPE PHP_READDIR_R_TYPE dnl AIX keeps in_addr_t in /usr/include/netinet/in.h dnl AC_MSG_CHECKING(for in_addr_t) AC_CACHE_VAL(ac_cv_type_$1, [AC_EGREP_CPP(dnl changequote(<<,>>)dnl <>dnl changequote([,]), [#include #if STDC_HEADERS #include #include #endif #ifdef HAVE_NETINET_IN_H #include #endif], ac_cv_type_in_addr_t=yes, ac_cv_type_in_addr_t=no)])dnl dnl AC_MSG_RESULT($ac_cv_type_in_addr_t) if test $ac_cv_type_in_addr_t = no; then AC_DEFINE(in_addr_t, u_int, [ ]) fi divert(4) PHP_ARG_WITH(config-file-path,whether to use a configuration file, [ --with-config-file-path=PATH Sets the path in which to look for php.ini. defaults to /usr/local/lib], yes) if test "$PHP_CONFIG_FILE_PATH" = "yes"; then PHP_CONFIG_FILE_PATH="/usr/local/lib" fi if test "$PHP_CONFIG_FILE_PATH" != "no"; then AC_DEFINE_UNQUOTED(CONFIGURATION_FILE_PATH, "$PHP_CONFIG_FILE_PATH",[ ]) AC_DEFINE(USE_CONFIG_FILE, 1, [ ]) else AC_DEFINE(CONFIGURATION_FILE_PATH, 0, [ ]) AC_DEFINE(USE_CONFIG_FILE, 0, [ ]) fi PHP_ARG_ENABLE(debug, whether to include debugging symbols, [ --enable-debug Compile with debugging symbols.], no) if test "$PHP_DEBUG" = "yes"; then PHP_DEBUG=1 ZEND_DEBUG=yes else PHP_DEBUG=0 ZEND_DEBUG=no fi test -n "$DEBUG_CFLAGS" && CFLAGS="$CFLAGS $DEBUG_CFLAGS" PHP_ARG_ENABLE(safe-mode, whether to enable safe mode by default, [ --enable-safe-mode Enable safe mode by default.]) if test "$PHP_SAFE_MODE" = "yes"; then AC_DEFINE(PHP_SAFE_MODE,1,[ ]) else AC_DEFINE(PHP_SAFE_MODE,0,[ ]) fi AC_MSG_CHECKING(for safe mode exec dir) AC_ARG_WITH(exec-dir, [ --with-exec-dir[=DIR] Only allow executables in DIR when in safe mode defaults to /usr/local/php/bin], [ if test "$withval" != "no"; then if test "$withval" = "yes"; then AC_DEFINE(PHP_SAFE_MODE_EXEC_DIR,"/usr/local/php/bin", [ ]) AC_MSG_RESULT(/usr/local/php/bin) else AC_DEFINE_UNQUOTED(PHP_SAFE_MODE_EXEC_DIR,"$withval", [ ]) AC_MSG_RESULT($withval) fi else AC_DEFINE(PHP_SAFE_MODE_EXEC_DIR,"/usr/local/php/bin", [ ]) AC_MSG_RESULT(/usr/local/php/bin) fi ],[ AC_DEFINE(PHP_SAFE_MODE_EXEC_DIR,"/usr/local/php/bin", [ ]) AC_MSG_RESULT(/usr/local/php/bin) ]) PHP_ARG_ENABLE(sigchild,whether to enable PHP's own SIGCHLD handler, [ --enable-sigchild Enable PHP's own SIGCHLD handler.],no) if test "$PHP_SIGCHILD" = "yes"; then AC_DEFINE(PHP_SIGCHILD, 1, [ ]) else AC_DEFINE(PHP_SIGCHILD, 0, [ ]) fi PHP_ARG_ENABLE(magic-quotes,whether to enable magic quotes by default, [ --enable-magic-quotes Enable magic quotes by default.]) if test "$PHP_MAGIC_QUOTES" = "yes"; then AC_DEFINE(MAGIC_QUOTES, 1, [ ]) else AC_DEFINE(MAGIC_QUOTES, 0, [ ]) fi PHP_ARG_ENABLE(rpath, whether to enable runpaths, [ --disable-rpath Disable passing additional runtime library search paths], yes) PHP_ARG_ENABLE(libgcc, whether to explicitly link against libgcc, [ --enable-libgcc Enable explicitly linking against libgcc]) 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 AC_ADD_LIBPATH($libgcc_libpath) AC_ADD_LIBRARY(gcc, yes) fi PHP_ARG_ENABLE(short-tags,whether to enable short tags by default, [ --disable-short-tags Disable the short-form meta_ccld<meta_cc< $srcdir/ext/bcmath/number.c echo "creating number.h" echo "/* Dummy File */" > $srcdir/ext/bcmath/number.h fi ################################################################ # Create configuration headers # if test -d TSRM; then echo '#include "../php_config.h"' > TSRM/tsrm_config.h fi cat >Zend/zend_config.h </dev/null sh $srcdir/genif.sh $srcdir/main/internal_functions.c.in $srcdir "$EXTRA_MODULE_PTRS" \$extensions > main/internal_functions.c if cmp main/internal_functions.c.old main/internal_functions.c > /dev/null 2>&1; then echo "main/internal_functions.c is unchanged" mv main/internal_functions.c.old main/internal_functions.c else rm -f main/internal_functions.c.old 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.php#6.11 and make the |" echo "| changes described there and try again. |" fi # Warn about CGI version with no extra security options. if test "$PHP_SAPI" = "cgi"; then if test "$REDIRECT" = "0"; then if test "$DISCARD_PATH" = "0"; then echo "+--------------------------------------------------------------------+" echo "| *** WARNING *** |" echo "| |" echo "| You will be compiling the CGI version of PHP without any |" echo "| redirection checking. By putting this cgi binary somewhere in |" echo "| your web space, users may be able to circumvent existing .htaccess |" echo "| security by loading files directly through the parser. See |" echo "| http://www.php.net/manual/security.php for more details. |" fi fi fi if test -n "$DEBUG_LOG"; then rm -f config.cache cat <