dnl ## $Id$ -*- sh -*- dnl ## Process this file with autoconf to produce a configure script. divert(0) AC_INIT(main.c) 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` passthru="$@" dnl ## Diversion 1 is the initial checking of OS features, programs, dnl ## libraries and so on. dnl ## In diversion 2 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 3 we check which extensions should be compiled. dnl ## All of these are normally in the extension directories. dnl ## Diversion 4 is the last one. Here we generate files and clean up. divert(1) dnl ## This is where the version number is changed from now on! AM_INIT_AUTOMAKE(php, 4.0b3) PHP_VERSION=$VERSION echo "/* automatically generated by configure */" > php_version.h.new echo "/* edit configure.in.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 AC_SUBST(PHP_VERSION) AM_CONFIG_HEADER(php_config.h) AM_MAINTAINER_MODE phplibdir=$libdir/php AC_SUBST(phplibdir) dnl We want this one before the checks, so the checks can modify CFLAGS. test -z "$CFLAGS" && auto_cflags=1 dnl If we're using cc on HP-UX, add -Ae -D_HPUX_SOURCE [obsolete] dnl if test -n "$auto_cflags" && test "`uname -s 2>/dev/null`" = "HP-UX"; then dnl test -n "$GCC" || CFLAGS="-Ae $CFLAGS -D_HPUX_SOURCE" dnl fi dnl Checks for programs. 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 dnl ## there has to be a better way... dnl## OLDLIBS=$LIBS; LIBS="" AC_PROG_CC dnl## LIBS=$OLDLIBS AM_PROG_CC_STDC AC_PROG_RANLIB AC_PROG_CC_C_O AC_PROG_LN_S AC_PATH_PROG(PERL_PATH, perl) 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 AC_SUBST(LEX_CFLAGS) dnl Hack to work around a Mac OS X cpp problem dnl Known versions needing this workaround are 5.3 and 5.4 if test "$ac_cv_prog_gcc" = "yes" -a "`uname -s`" = "Rhapsody"; then CPPFLAGS="$CPPFLAGS -traditional-cpp" fi dnl Ugly hack to get around a problem with gcc on AIX. if test "$CC" = "gcc" -a "$ac_cv_prog_cc_g" = "yes" -a \ "`uname -sv`" = "AIX 4"; then CFLAGS=`echo $CFLAGS | sed -e 's/-g//'` fi dnl check for -R, etc. switch AC_MSG_CHECKING(if 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([if 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 dnl AC_PROG_INSTALL AC_PATH_PROG(PROG_SENDMAIL, sendmail, /usr/lib/sendmail, $PATH /usr/bin /usr/sbin /usr/etc /etc /usr/ucblib) if test -n "$PROG_SENDMAIL"; then AC_DEFINE(HAVE_SENDMAIL) fi 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 CFLAGS="$CFLAGS -I/usr/pkg/include" LDFLAGS="$LDFLAGS -L/usr/pkg/lib" fi INCLUDES="-I\$(top_builddir)/libzend -I\$(top_builddir)/TSRM" AC_SUBST(INCLUDES) AC_CHECK_LIB(nsl, gethostname, [ AC_ADD_LIBRARY(nsl) AC_DEFINE(HAVE_LIBNSL) ], []) AC_CHECK_LIB(socket, socket, [ AC_ADD_LIBRARY(socket) AC_DEFINE(HAVE_LIBSOCKET) ], []) AC_CHECK_LIB(nsl, gethostbyaddr, [ AC_ADD_LIBRARY(nsl) AC_DEFINE(HAVE_LIBNSL) ], []) AC_CHECK_LIB(crypt, crypt, [ AC_ADD_LIBRARY(crypt) AC_DEFINE(HAVE_LIBCRYPT) ], []) 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) 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) ], [ AC_CHECK_LIB(resolv, res_search, [ LIBS="$LIBS -lresolv" AC_DEFINE(HAVE_LIBRESOLV) ], [ 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( arpa/inet.h \ crypt.h \ dlfcn.h \ fcntl.h \ grp.h \ limits.h \ locale.h \ memory.h \ netinet/in.h \ pwd.h \ signal.h \ stdarg.h \ stdlib.h \ string.h \ sys/file.h \ sys/mman.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 \ syslog.h \ unistd.h \ unix.h \ ) dnl Checks for typedefs, structures, and compiler characteristics. AC_STRUCT_TM AC_STRUCT_TIMEZONE AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, [AC_TRY_COMPILE([#include #include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) if test "$ac_cv_struct_tm_gmtoff" = yes; then AC_DEFINE(HAVE_TM_GMTOFF) fi AC_CACHE_CHECK(for struct flock,php_struct_flock, AC_TRY_COMPILE([ #include #include ], [struct flock x;], [ php_struct_flock=yes ],[ php_struct_flock=no ]) ) if test "$php_struct_flock" = "yes" ; then AC_DEFINE(HAVE_STRUCT_FLOCK, 1) else AC_DEFINE(HAVE_STRUCT_FLOCK, 0) fi AC_CHECK_SIZEOF(long, 8) AC_CHECK_SIZEOF(int, 4) 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 AC_SUBST(WARNING_LEVEL) fi AC_STRUCT_ST_RDEV dnl Checks for types AC_TYPE_SIZE_T AC_TYPE_UID_T dnl This is required for QNX and may be some BSD derived systems AC_CHECK_TYPE( uint, unsigned int ) AC_CHECK_TYPE( ulong, unsigned long ) dnl Checks for library functions. AC_FUNC_VPRINTF AC_CHECK_FUNCS( crypt \ cuserid \ flock \ gcvt \ getlogin \ gethostbyaddr \ gettimeofday \ inet_aton \ link \ lockf \ lrand48 \ memcpy \ memmove \ mmap \ putenv \ random \ regcomp \ rint \ setitimer \ setlocale \ setsockopt \ setvbuf \ shutdown \ sin \ snprintf \ srand48 \ srandom \ statfs \ statvfs \ strcasecmp \ strdup \ strerror \ strftime \ strstr \ symlink \ tempnam \ tzset \ unsetenv \ usleep \ utime \ vsnprintf \ ) AC_REPLACE_FUNCS(strlcat strlcpy) AC_FUNC_UTIME_NULL AC_FUNC_ALLOCA dnl## OLDLIBS=$LIBS; LIBS="" dnl This is also defined/used in libzend. To avoid a redefinition dnl we use that version dnl AC_BROKEN_SPRINTF dnl## LIBS=$OLDLIBS AC_REPLACE_FUNCS(getopt) 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(2) abs_srcdir=`(cd $srcdir; pwd)` abs_builddir=`pwd` AC_SUBST(abs_srcdir) AC_SUBST(abs_builddir) RESULT=no AC_MSG_CHECKING(whether to enable versioning) AC_ARG_ENABLE(versioning, [ --enable-versioning Take advantage of versioning and scoping. See INSTALL for more information], [ if test "$enableval" = "yes" ; then EXTRA_LDFLAGS="-export-symbols \$(srcdir)/php.sym" RESULT="yes" fi ]) AC_MSG_RESULT($RESULT) AC_MSG_CHECKING(whether to use bundled regex library) AC_ARG_WITH(system-regex, [ --with-system-regex Do not use the bundled regex library], [ if test -n "$APXS"; then if test -n "`$APXS -q CFLAGS | grep USE_HSREGEX`"; then HSREGEX=yes else HSREGEX=no fi else if test "$withval" = "no"; then HSREGEX=yes else HSREGEX=no fi fi ],[ if test -n "$APXS"; then if test -n "`$APXS -q CFLAGS | grep USE_HSREGEX`"; then HSREGEX=yes else HSREGEX=no fi else HSREGEX=yes fi ]) AC_MSG_RESULT($HSREGEX) if test "$HSREGEX" = "yes"; then REGEX_LIB=regex/libregex.la AC_DEFINE(HSREGEX) AC_DEFINE(REGEX,1) else REGEX_LIB= AC_DEFINE(REGEX,0) fi AC_SUBST(REGEX_LIB) AC_SUBST(HSREGEX) AC_MSG_CHECKING(whether to use a configuration file) AC_ARG_WITH(config-file-path, [ --with-config-file-path=PATH Sets the path in which to look for php.ini. defaults to /usr/local/lib], [ if test "$withval" = "yes"; then AC_DEFINE_UNQUOTED(CONFIGURATION_FILE_PATH, "/usr/local/lib") AC_DEFINE(USE_CONFIG_FILE, 1) AC_MSG_RESULT(yes) else if test "$withval" != "no"; then AC_DEFINE_UNQUOTED(CONFIGURATION_FILE_PATH, "$withval") AC_DEFINE(USE_CONFIG_FILE, 1) AC_MSG_RESULT(yes) else AC_DEFINE(CONFIGURATION_FILE_PATH, 0) AC_DEFINE(USE_CONFIG_FILE, 0) AC_MSG_RESULT(no) fi fi ],[ AC_DEFINE_UNQUOTED(CONFIGURATION_FILE_PATH, "/usr/local/lib") AC_DEFINE(USE_CONFIG_FILE, 1) AC_MSG_RESULT(yes) ]) AC_MSG_CHECKING(whether to include debugging symbols) AC_ARG_ENABLE(debug, [ --disable-debug Compile without debugging symbols], [ if test "$enableval" = "yes"; then AC_MSG_RESULT(yes) AC_DEFINE(DEBUG,1) PHP_DEBUG=1 DEBUG_CFLAGS="-g" test -n "$GCC" && DEBUG_CFLAGS="$DEBUG_CFLAGS -Wall" test -n "$GCC" && test "$USE_MAINTAINER_MODE" = "yes" && \ DEBUG_CFLAGS="$DEBUG_CFLAGS -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations" else AC_MSG_RESULT(no) AC_DEFINE(DEBUG,0) PHP_DEBUG=0 DEBUG_CFLAGS="" fi ],[ AC_MSG_RESULT(yes) AC_DEFINE(DEBUG,1) PHP_DEBUG=1 DEBUG_CFLAGS="-g" ]) AC_SUBST(DEBUG_CFLAGS) AC_SUBST(PHP_DEBUG) CFLAGS="$CFLAGS $DEBUG_CFLAGS" AC_MSG_CHECKING(whether to enable safe mode by default) AC_ARG_ENABLE(safe-mode, [ --enable-safe-mode Enable safe mode by default.], [ if test "$enableval" = "yes"; then AC_DEFINE(PHP_SAFE_MODE, 1) AC_MSG_RESULT(yes) else AC_DEFINE(PHP_SAFE_MODE, 0) AC_MSG_RESULT(no) fi ],[ AC_DEFINE(PHP_SAFE_MODE, 0) AC_MSG_RESULT(no) ]) 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) ]) AC_MSG_CHECKING(whether to enable track_vars variables by default) AC_ARG_ENABLE(track-vars, [ --enable-track-vars Enable GET/POST/Cookie track variables by default.], [ if test "$enableval" = "yes"; then AC_DEFINE(PHP_TRACK_VARS, 1) AC_MSG_RESULT(yes) else AC_DEFINE(PHP_TRACK_VARS, 0) AC_MSG_RESULT(no) fi ],[ AC_DEFINE(PHP_TRACK_VARS, 0) AC_MSG_RESULT(no) ]) AC_MSG_CHECKING(whether to enable magic quotes by default) AC_ARG_ENABLE(magic-quotes, [ --enable-magic-quotes Enable magic quotes by default.], [ if test "$enableval" = "yes"; then AC_DEFINE(MAGIC_QUOTES, 1) AC_MSG_RESULT(yes) else AC_DEFINE(MAGIC_QUOTES, 0) AC_MSG_RESULT(no) fi ],[ AC_DEFINE(MAGIC_QUOTES, 0) AC_MSG_RESULT(no) ]) AC_MSG_CHECKING(whether to enable runpaths) AC_ARG_ENABLE(rpath, [ --disable-rpath Disable passing additional runtime library search paths], [ if test "$enableval" = "no"; then enable_rpath=no else enable_rpath=yes fi ],[ enable_rpath=yes ]) AC_MSG_RESULT($enable_rpath) AC_MSG_CHECKING(whether to enable short tags by default) AC_ARG_ENABLE(short-tags, [ --disable-short-tags Disable the short-form $srcdir/ext/bcmath/number.c echo "creating number.h" echo "/* Dummy File */" > $srcdir/ext/bcmath/number.h fi if test "$no_recursion" != "yes"; then (set -x; test -d libzend || mkdir libzend; cd libzend; $cwd/$srcdir/libzend/configure --cache-file=../$cache_file $passthru) || exit 1 if test "$enable_thread_safety" = "yes"; then (set -x; test -d TSRM || mkdir TSRM; cd TSRM && $cwd/$srcdir/TSRM/configure --cache-file=../$cache_file $passthru) || exit 1 fi dnl (set -x; cd $srcdir; sh ltconfig --disable-static --enable-dlopen --cache-file=$cache_file ltmain.sh) fi # run this only when generating all the files? if true; then chmod +x scripts/mkextlib # Hacking while airborne considered harmful. # echo "creating internal_functions.c" extensions=\`grep '^s.@EXT_STATIC@' \$0|sed -e 's/^.*@% *//' -e 's/%.*$//'\` mv -f internal_functions.c internal_functions.c.old 2>/dev/null sh $srcdir/genif.sh $srcdir/internal_functions.c.in $srcdir \$extensions > internal_functions.c if cmp internal_functions.c.old internal_functions.c > /dev/null 2>&1; then echo "internal_functions.c is unchanged" mv internal_functions.c.old internal_functions.c else rm -f internal_functions.c.old 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 "| 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/config-security.php3 for more details. |" fi fi fi echo "+--------------------------------------------------------------------+" echo "| License: |" echo "| This software is subject to the PHP License, available in this |" echo "| distribution in the file LICENSE. By continuing this installation |" echo "| process, you are bound by the terms of this license agreement. |" echo "| If you do not agree with the terms of this license, you must abort |" echo "| the installation process at this point. |" echo "+--------------------------------------------------------------------+" fi ]) divert dnl ## Local Variables: dnl ## tab-width: 4 dnl ## End: