dnl ## $Id$ -*- sh -*- dnl ## Process this file with autoconf to produce a configure script. divert(1) AC_INIT(main.c) PHP_FAST_OUTPUT(sapi/Makefile ext/Makefile Makefile pear/Makefile) 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. test -d libs || mkdir libs 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` CONFIGURE_COMMAND=$0 for arg in "$@"; 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 ## 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. divert(2) PHP_CONFIGURE_PART(Running system checks) dnl ## This is where the version number is changed from now on! AM_INIT_AUTOMAKE(php, 4.0b4-dev) 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 AM_CONFIG_HEADER(php_config.h) AM_MAINTAINER_MODE 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 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 sinclude(Zend/acinclude.m4) sinclude(Zend/Zend.m4) sinclude(TSRM/tsrm.m4) 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 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)/Zend -I\$(top_srcdir)" 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(socket, htonl, [ AC_ADD_LIBRARY(socket) ])]) 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,1,[ ]) ], []) 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) ], []) 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) ], [ 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 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 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( asctime_r \ crypt \ ctime_r \ cuserid \ flock \ gcvt \ getlogin \ gethostbyaddr \ gettimeofday \ gmtime_r \ inet_aton \ link \ localtime_r \ lockf \ lrand48 \ memcpy \ memmove \ mmap \ putenv \ random \ rand_r \ regcomp \ rint \ setitimer \ setlocale \ setsockopt \ setvbuf \ shutdown \ sin \ snprintf \ srand48 \ srandom \ statfs \ statvfs \ 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 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(3) abs_srcdir=`(cd $srcdir; pwd)` abs_builddir=`pwd` 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_ARG_ENABLE(debug, [ --disable-debug Compile without debugging symbols], [ PHP_DEBUG=$enableval ],[ PHP_DEBUG=yes ]) AC_MSG_CHECKING(whether to include debugging symbols) AC_MSG_RESULT($PHP_DEBUG) if test "$PHP_DEBUG" = "yes"; then AC_DEFINE(DEBUG,1) PHP_DEBUG=1 ZEND_DEBUG=yes else AC_DEFINE(DEBUG,0) PHP_DEBUG=0 ZEND_DEBUG=no fi test -n "$DEBUG_CFLAGS" && 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 test -d TSRM && echo '#include "../php_config.h"' > TSRM/tsrm_config.h echo '#include "../php_config.h"' > Zend/zend_config.h # 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 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.php3#4.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 "| 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 ]) dnl ## Local Variables: dnl ## tab-width: 4 dnl ## End: