]> granicus.if.org Git - php/commitdiff
- Restructured and added a few comments here and there.
authorfoobar <sniper@php.net>
Thu, 24 Feb 2005 18:11:36 +0000 (18:11 +0000)
committerfoobar <sniper@php.net>
Thu, 24 Feb 2005 18:11:36 +0000 (18:11 +0000)
- Made macros of couple of tests previously littering configure.in
  (e.g. PHP_PROG_AWK, PHP_PROG_LEX, PHP_PROG_BISON..)
- Moved all PHP_SUBST() calls into their respective macros.
  (no point adding empty entries in Makefile if macro is not used)

acinclude.m4
configure.in
scripts/phpize.m4

index dd83f1684c8be44b30eece3a618e796e9dfe78ce..0001967d7da241c76c84ad01f62a2a3a09be5c00 100644 (file)
@@ -1,27 +1,80 @@
+dnl
 dnl $Id$
 dnl
 dnl This file contains local autoconf functions.
+dnl
+
+dnl -------------------------------------------------------------------------
+dnl Output stylize macros for configure (help/runtime)
+dnl -------------------------------------------------------------------------
 
-dnl PHP_ADD_MAKEFILE_FRAGMENT([srcfile[, ext_srcdir[, ext_builddir]]])
 dnl
-dnl Processes a file called Makefile.frag in the source directory
-dnl of the most recently added extension. $(srcdir) and $(builddir)
-dnl are substituted with the proper paths. Can be used to supply
-dnl custom rules and/or additional targets.
+dnl PHP_HELP_SEPARATOR(title)
 dnl
-AC_DEFUN([PHP_ADD_MAKEFILE_FRAGMENT],[
-  ifelse($1,,src=$ext_srcdir/Makefile.frag,src=$1)
-  ifelse($2,,ac_srcdir=$ext_srcdir,ac_srcdir=$2)
-  ifelse($3,,ac_builddir=$ext_builddir,ac_builddir=$3)
-  sed -e "s#\$(srcdir)#$ac_srcdir#g" -e "s#\$(builddir)#$ac_builddir#g" $src  >> Makefile.fragments
+dnl Adds separator title into the configure --help display.
+dnl 
+AC_DEFUN([PHP_HELP_SEPARATOR],[
+AC_ARG_ENABLE([],[
+$1
+],[])
 ])
 
-AC_DEFUN([PHP_PROG_RE2C],[
-  AC_CHECK_PROG(RE2C, re2c, re2c, [exit 0;])
+dnl
+dnl PHP_CONFIGURE_PART(title)
+dnl
+dnl Adds separator title configure output (idea borrowed from mm)
+dnl
+AC_DEFUN([PHP_CONFIGURE_PART],[
+  AC_MSG_RESULT()
+  AC_MSG_RESULT([${T_MD}$1${T_ME}])
+])
+
+dnl -------------------------------------------------------------------------
+dnl Build system helper macros
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_DEF_HAVE(what)
+dnl
+dnl Generates 'AC_DEFINE(HAVE_WHAT, 1, [ ])'
+dnl
+AC_DEFUN([PHP_DEF_HAVE],[AC_DEFINE([HAVE_]translit($1,a-z_-,A-Z__), 1, [ ])])
+
+dnl
+dnl PHP_RUN_ONCE(namespace, variable, code)
+dnl
+dnl execute code, if variable is not set in namespace
+dnl
+AC_DEFUN([PHP_RUN_ONCE],[
+  changequote({,})
+  unique=`echo $2|sed 's/[^a-zA-Z0-9]/_/g'`
+  changequote([,])
+  cmd="echo $ac_n \"\$$1$unique$ac_c\""
+  if test -n "$unique" && test "`eval $cmd`" = "" ; then
+    eval "$1$unique=set"
+    $3
+  fi
 ])
 
+dnl
+dnl PHP_EXPAND_PATH(path, variable)
+dnl
+dnl expands path to an absolute path and assigns it to variable
+dnl
+AC_DEFUN([PHP_EXPAND_PATH],[
+  if test -z "$1" || echo "$1" | grep '^/' >/dev/null ; then
+    $2=$1
+  else
+    changequote({,})
+    ep_dir="`echo $1|sed 's%/*[^/][^/]*/*$%%'`"
+    changequote([,])
+    ep_realdir="`(cd \"$ep_dir\" && pwd)`"
+    $2="$ep_realdir/`basename \"$1\"`"
+  fi
+])
 
-dnl PHP_DEFINE(WHAT[, value[, directory]])
+dnl
+dnl PHP_DEFINE(WHAT [, value[, directory]])
 dnl
 dnl Creates builddir/include/what.h and in there #define WHAT value
 dnl
@@ -29,6 +82,43 @@ AC_DEFUN([PHP_DEFINE],[
   [echo "#define ]$1[]ifelse([$2],,[ 1],[ $2])[" > ]ifelse([$3],,[include],[$3])[/php_]translit($1,A-Z,a-z)[.h]
 ])
 
+dnl
+dnl PHP_SUBST(varname)
+dnl
+dnl Adds variable with it's value into Makefile, e.g.:
+dnl CC = gcc
+dnl
+AC_DEFUN([PHP_SUBST],[
+  PHP_VAR_SUBST="$PHP_VAR_SUBST $1"
+])
+
+dnl
+dnl PHP_SUBST_OLD(varname)
+dnl
+dnl Same as PHP_SUBST() but also substitutes all @VARNAME@
+dnl instances in every file passed to AC_OUTPUT()
+dnl
+AC_DEFUN([PHP_SUBST_OLD],[
+  PHP_SUBST($1)
+  AC_SUBST($1)
+])
+
+dnl
+dnl PHP_OUTPUT(file)
+dnl
+dnl Adds "file" to the list of files generated by AC_OUTPUT
+dnl This macro can be used several times.
+dnl
+AC_DEFUN([PHP_OUTPUT],[
+  PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES $1"
+])
+
+
+dnl -------------------------------------------------------------------------
+dnl Build system base macros
+dnl -------------------------------------------------------------------------
+
+dnl
 dnl PHP_CANONICAL_HOST_TARGET
 dnl
 AC_DEFUN([PHP_CANONICAL_HOST_TARGET],[
@@ -43,6 +133,7 @@ AC_DEFUN([PHP_CANONICAL_HOST_TARGET],[
   fi
 ])
 
+dnl
 dnl PHP_INIT_BUILD_SYSTEM
 dnl
 AC_DEFUN([PHP_INIT_BUILD_SYSTEM],[
@@ -55,6 +146,7 @@ pattern=define
 egrep $pattern'.*include/php' $srcdir/configure|sed 's/.*>//'|xargs touch 2>/dev/null
 ])
 
+dnl
 dnl PHP_GEN_GLOBAL_MAKEFILE
 dnl 
 dnl Generates the global makefile.
@@ -73,7 +165,23 @@ EOF
   cat $abs_srcdir/Makefile.global Makefile.fragments Makefile.objects >> Makefile
 ])
 
-dnl PHP_ADD_SOURCES(source-path, sources[, special-flags[, type]])
+dnl
+dnl PHP_ADD_MAKEFILE_FRAGMENT([srcfile [, ext_srcdir [, ext_builddir]]])
+dnl
+dnl Processes a file called Makefile.frag in the source directory
+dnl of the most recently added extension. $(srcdir) and $(builddir)
+dnl are substituted with the proper paths. Can be used to supply
+dnl custom rules and/or additional targets.
+dnl
+AC_DEFUN([PHP_ADD_MAKEFILE_FRAGMENT],[
+  ifelse($1,,src=$ext_srcdir/Makefile.frag,src=$1)
+  ifelse($2,,ac_srcdir=$ext_srcdir,ac_srcdir=$2)
+  ifelse($3,,ac_builddir=$ext_builddir,ac_builddir=$3)
+  sed -e "s#\$(srcdir)#$ac_srcdir#g" -e "s#\$(builddir)#$ac_builddir#g" $src  >> Makefile.fragments
+])
+
+dnl
+dnl PHP_ADD_SOURCES(source-path, sources [, special-flags [, type]])
 dnl
 dnl Adds sources which are located relative to source-path to the 
 dnl array of type type.  Sources are processed with optional 
@@ -88,6 +196,7 @@ dnl which array to append to?
 AC_DEFUN([PHP_ADD_SOURCES],[
   PHP_ADD_SOURCES_X($1, $2, $3, ifelse($4,cli,PHP_CLI_OBJS,ifelse($4,sapi,PHP_SAPI_OBJS,PHP_GLOBAL_OBJS)))
 ])
+
 dnl
 dnl _PHP_ASSIGN_BUILD_VARS(type)
 dnl internal, don't use
@@ -110,12 +219,14 @@ ifelse($1,shared,[
   b_lo=[$]$1_lo
 ])
 
+dnl
 dnl PHP_ADD_SOURCES_X(source-path, sources[, special-flags[, target-var[, shared[, special-post-flags]]]])
 dnl
 dnl Additional to PHP_ADD_SOURCES (see above), this lets you set the
 dnl name of the array target-var directly, as well as whether
-dnl shared objects will be built from the sources.  Should not be 
-dnl used directly.
+dnl shared objects will be built from the sources.
+dnl
+dnl Should not be used directly.
 dnl 
 AC_DEFUN([PHP_ADD_SOURCES_X],[
 dnl relative to source- or build-directory?
@@ -158,14 +269,9 @@ EOF
   done
 ])
 
-dnl
-dnl Separator into the configure --help display.
-dnl 
-AC_DEFUN([PHP_HELP_SEPARATOR],[
-AC_ARG_ENABLE([],[
-$1
-],[])
-])
+dnl -------------------------------------------------------------------------
+dnl Compiler characteristics checks
+dnl -------------------------------------------------------------------------
 
 dnl
 dnl PHP_TARGET_RDYNAMIC
@@ -180,13 +286,89 @@ dnl
 AC_DEFUN([PHP_TARGET_RDYNAMIC],[
   if test -n "$GCC"; then
     dnl we should use a PHP-specific macro here
-    TSRM_CHECK_GCC_ARG(-rdynamic, gcc_rdynamic=yes)
+    PHP_CHECK_GCC_ARG(-rdynamic, gcc_rdynamic=yes)
     if test "$gcc_rdynamic" = "yes"; then
       PHP_LDFLAGS="$PHP_LDFLAGS -rdynamic"
     fi
   fi
 ])
 
+dnl
+dnl PHP_RUNPATH_SWITCH
+dnl
+dnl Checks for -R, etc. switch
+dnl
+AC_DEFUN([PHP_RUNPATH_SWITCH],[
+AC_MSG_CHECKING([if compiler supports -R])
+AC_CACHE_VAL(php_cv_cc_dashr,[
+       SAVE_LIBS=$LIBS
+       LIBS="-R /usr/$PHP_LIBDIR $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/$PHP_LIBDIR $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
+dnl PHP_CHECK_GCC_ARG(arg, action-if-found, action-if-not-found)
+dnl
+AC_DEFUN([PHP_CHECK_GCC_ARG],[
+  gcc_arg_name=[ac_cv_gcc_arg]translit($1,A-Z-,a-z_)
+  AC_CACHE_CHECK([whether $CC supports $1], [ac_cv_gcc_arg]translit($1,A-Z-,a-z_), [
+  echo 'void somefunc() { };' > conftest.c
+  cmd='$CC $1 -c conftest.c'
+  if eval $cmd 2>&1 | egrep -e $1 >/dev/null ; then
+    ac_result=no
+  else
+    ac_result=yes
+  fi
+  eval $gcc_arg_name=$ac_result
+  rm -f conftest.*
+  ])
+  if eval test "\$$gcc_arg_name" = "yes"; then
+    $2
+  else
+    :
+    $3
+  fi
+])
+
+dnl
+dnl PHP_LIBGCC_LIBPATH(gcc)
+dnl
+dnl Stores the location of libgcc in libgcc_libpath
+dnl
+AC_DEFUN([PHP_LIBGCC_LIBPATH],[
+  changequote({,})
+  libgcc_libpath=`$1 --print-libgcc-file-name|sed 's%/*[^/][^/]*$%%'`
+  changequote([,])
+])
+
+dnl -------------------------------------------------------------------------
+dnl Macros to modify LIBS, INCLUDES, etc. variables 
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_REMOVE_USR_LIB(NAME)
+dnl
+dnl Removes all -L/usr/$PHP_LIBDIR entries from variable NAME
+dnl
 AC_DEFUN([PHP_REMOVE_USR_LIB],[
   unset ac_new_flags
   for i in [$]$1; do
@@ -198,7 +380,8 @@ AC_DEFUN([PHP_REMOVE_USR_LIB],[
   $1=[$]ac_new_flags
 ])
 
-dnl PHP_EVAL_LIBLINE(LINE, SHARED-LIBADD)
+dnl
+dnl PHP_EVAL_LIBLINE(libline, SHARED-LIBADD)
 dnl
 dnl Use this macro, if you need to add libraries and or library search
 dnl paths to the PHP build system which are only given in compiler
@@ -219,7 +402,8 @@ AC_DEFUN([PHP_EVAL_LIBLINE],[
   done
 ])
 
-dnl PHP_EVAL_INCLINE(LINE)
+dnl
+dnl PHP_EVAL_INCLINE(headerline)
 dnl
 dnl Use this macro, if you need to add header search paths to the PHP
 dnl build system which are only given in compiler notation.
@@ -235,233 +419,237 @@ AC_DEFUN([PHP_EVAL_INCLINE],[
   done
 ])
 
-AC_DEFUN([PHP_READDIR_R_TYPE],[
-  dnl HAVE_READDIR_R is also defined by libmysql
-  AC_CHECK_FUNC(readdir_r,ac_cv_func_readdir_r=yes,ac_cv_func_readdir=no)
-  if test "$ac_cv_func_readdir_r" = "yes"; then
-  AC_CACHE_CHECK(for type of readdir_r, ac_cv_what_readdir_r,[
-    AC_TRY_RUN([
-#define _REENTRANT
-#include <sys/types.h>
-#include <dirent.h>
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-main() {
-       DIR *dir;
-       char entry[sizeof(struct dirent)+PATH_MAX];
-       struct dirent *pentry = (struct dirent *) &entry;
-
-       dir = opendir("/");
-       if (!dir) 
-               exit(1);
-       if (readdir_r(dir, (struct dirent *) entry, &pentry) == 0)
-               exit(0);
-       exit(1);
-}
-    ],[
-      ac_cv_what_readdir_r=POSIX
-    ],[
-      AC_TRY_CPP([
-#define _REENTRANT
-#include <sys/types.h>
-#include <dirent.h>
-int readdir_r(DIR *, struct dirent *);
-        ],[
-          ac_cv_what_readdir_r=old-style
-        ],[
-          ac_cv_what_readdir_r=none
-      ])
-    ],[
-      ac_cv_what_readdir_r=none
-   ])
+dnl internal, don't use
+AC_DEFUN([_PHP_ADD_LIBPATH_GLOBAL],[
+  PHP_RUN_ONCE(LIBPATH, $1, [
+    test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$1"
+    LDFLAGS="$LDFLAGS -L$1"
+    PHP_RPATHS="$PHP_RPATHS $1"
   ])
-    case $ac_cv_what_readdir_r in
-    POSIX)
-      AC_DEFINE(HAVE_POSIX_READDIR_R,1,[whether you have POSIX readdir_r]);;
-    old-style)
-      AC_DEFINE(HAVE_OLD_READDIR_R,1,[whether you have old-style readdir_r]);;
-    esac
+])dnl
+dnl
+dnl
+dnl PHP_ADD_LIBPATH(path [, SHARED-LIBADD])
+dnl
+dnl Adds a path to linkpath/runpath (LDFLAGS)
+dnl
+AC_DEFUN([PHP_ADD_LIBPATH],[
+  if test "$1" != "/usr/$PHP_LIBDIR"; then
+    PHP_EXPAND_PATH($1, ai_p)
+    ifelse([$2],,[
+      _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
+    ],[
+      if test "$ext_shared" = "yes"; then
+        $2="$ld_runpath_switch$ai_p -L$ai_p [$]$2"
+      else
+        _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
+      fi
+    ])
   fi
 ])
 
-AC_DEFUN([PHP_SHLIB_SUFFIX_NAME],[
-  AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl
-  PHP_SUBST(SHLIB_SUFFIX_NAME)
-  SHLIB_SUFFIX_NAME=so
-  case $host_alias in
-  *hpux*[)]
-    SHLIB_SUFFIX_NAME=sl
-    ;;
-  *darwin*[)]
-    SHLIB_SUFFIX_NAME=dylib
-    ;;
-  esac
-])
+dnl
+dnl PHP_UTILIZE_RPATHS()
+dnl
+dnl builds RPATHS/LDFLAGS from PHP_RPATHS
+dnl
+AC_DEFUN([PHP_UTILIZE_RPATHS],[
+  OLD_RPATHS=$PHP_RPATHS
+  unset PHP_RPATHS
 
-AC_DEFUN([PHP_DEBUG_MACRO],[
-  DEBUG_LOG=$1
-  cat >$1 <<X
-CONFIGURE:  $CONFIGURE_COMMAND
-CC:         $CC
-CFLAGS:     $CFLAGS
-CPPFLAGS:   $CPPFLAGS
-CXX:        $CXX
-CXXFLAGS:   $CXXFLAGS
-INCLUDES:   $INCLUDES
-LDFLAGS:    $LDFLAGS
-LIBS:       $LIBS
-DLIBS:      $DLIBS
-SAPI:       $PHP_SAPI
-PHP_RPATHS: $PHP_RPATHS
-uname -a:   `uname -a`
+  for i in $OLD_RPATHS; do
+dnl Can be passed to native cc/libtool
+    PHP_LDFLAGS="$PHP_LDFLAGS -L$i"
+dnl Libtool-specific
+    PHP_RPATHS="$PHP_RPATHS -R $i"
+dnl cc-specific
+    NATIVE_RPATHS="$NATIVE_RPATHS $ld_runpath_switch$i"
+  done
 
-X
-    cat >conftest.$ac_ext <<X
-main()
-{
-  exit(0);
-}
-X
-    (eval echo \"$ac_link\"; eval $ac_link && ./conftest) >>$1 2>&1
-    rm -fr conftest*
+  if test "$PHP_RPATH" = "no"; then
+    unset PHP_RPATHS
+    unset NATIVE_RPATHS
+  fi
 ])
 
-AC_DEFUN([PHP_DOES_PWRITE_WORK],[
-  AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-$1
-    main() {
-    int fd = open("conftest_in", O_WRONLY|O_CREAT, 0600);
-
-    if (fd < 0) exit(1);
-    if (pwrite(fd, "text", 4, 0) != 4) exit(1);
-    /* Linux glibc breakage until 2.2.5 */
-    if (pwrite(fd, "text", 4, -1) != -1 || errno != EINVAL) exit(1);
-    exit(0);
-    }
+dnl
+dnl PHP_ADD_INCLUDE(path [,before])
+dnl
+dnl add an include path. 
+dnl if before is 1, add in the beginning of INCLUDES.
+dnl
+AC_DEFUN([PHP_ADD_INCLUDE],[
+  if test "$1" != "/usr/include"; then
+    PHP_EXPAND_PATH($1, ai_p)
+    PHP_RUN_ONCE(INCLUDEPATH, $ai_p, [
+      if test "$2"; then
+        INCLUDES="-I$ai_p $INCLUDES"
+      else
+        INCLUDES="$INCLUDES -I$ai_p"
+      fi
+    ])
+  fi
+])
 
+dnl internal, don't use
+AC_DEFUN([_PHP_X_ADD_LIBRARY],[dnl
+  ifelse([$2],,$3="-l$1 [$]$3", $3="[$]$3 -l$1") dnl
+])dnl
+dnl
+dnl internal, don't use
+AC_DEFUN([_PHP_ADD_LIBRARY_SKELETON],[
+  case $1 in
+  c|c_r|pthread*[)] ;;
+  *[)] ifelse($3,,[
+    _PHP_X_ADD_LIBRARY($1,$2,$5)
   ],[
-    ac_cv_pwrite=yes
-  ],[
-    ac_cv_pwrite=no
-  ],[
-    ac_cv_pwrite=no
-  ])
+    if test "$ext_shared" = "yes"; then
+      _PHP_X_ADD_LIBRARY($1,$2,$3)
+    else
+      $4($1,$2)
+    fi
+  ]) ;;
+  esac
+])dnl
+dnl
+dnl
+dnl PHP_ADD_LIBRARY(library[, append[, shared-libadd]])
+dnl
+dnl add a library to the link line
+dnl
+AC_DEFUN([PHP_ADD_LIBRARY],[
+  _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY],[LIBS])
 ])
 
-AC_DEFUN([PHP_DOES_PREAD_WORK],[
-  echo test > conftest_in
-  AC_TRY_RUN([
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-$1
-    main() {
-    char buf[3]; 
-    int fd = open("conftest_in", O_RDONLY);
-    if (fd < 0) exit(1);
-    if (pread(fd, buf, 2, 0) != 2) exit(1);
-    /* Linux glibc breakage until 2.2.5 */
-    if (pread(fd, buf, 2, -1) != -1 || errno != EINVAL) exit(1);
-    exit(0);
-    }
-  ],[
-    ac_cv_pread=yes
-  ],[
-    ac_cv_pread=no
-  ],[
-    ac_cv_pread=no
-  ])
-  rm -f conftest_in
+dnl
+dnl PHP_ADD_LIBRARY_DEFER(library[, append[, shared-libadd]])
+dnl
+dnl add a library to the link line (deferred, not used during configure)
+dnl
+AC_DEFUN([PHP_ADD_LIBRARY_DEFER],[
+  _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY_DEFER],[DLIBS])
 ])
 
-AC_DEFUN([PHP_PWRITE_TEST],[
-  AC_CACHE_CHECK(whether pwrite works,ac_cv_pwrite,[
-    PHP_DOES_PWRITE_WORK
-    if test "$ac_cv_pwrite" = "no"; then
-      PHP_DOES_PWRITE_WORK([ssize_t pwrite(int, void *, size_t, off64_t);])
-      if test "$ac_cv_pwrite" = "yes"; then
-        ac_cv_pwrite=64
-      fi
+dnl
+dnl PHP_ADD_LIBRARY_WITH_PATH(library, path[, shared-libadd])
+dnl
+dnl add a library to the link line and path to linkpath/runpath.
+dnl if shared-libadd is not empty and $ext_shared is yes,
+dnl shared-libadd will be assigned the library information
+dnl
+AC_DEFUN([PHP_ADD_LIBRARY_WITH_PATH],[
+ifelse($3,,[
+  if test -n "$2"; then
+    PHP_ADD_LIBPATH($2)
+  fi
+  PHP_ADD_LIBRARY($1)
+],[
+  if test "$ext_shared" = "yes"; then
+    $3="-l$1 [$]$3"
+    if test -n "$2"; then
+      PHP_ADD_LIBPATH($2,$3)
     fi
-  ])
+  else
+    PHP_ADD_LIBRARY_WITH_PATH($1,$2)
+  fi
+])
+])
 
-  if test "$ac_cv_pwrite" != "no"; then
-    AC_DEFINE(HAVE_PWRITE, 1, [ ])
-    if test "$ac_cv_pwrite" = "64"; then
-      AC_DEFINE(PHP_PWRITE_64, 1, [whether pwrite64 is default])
+dnl
+dnl PHP_ADD_LIBRARY_DEFER_WITH_PATH(library, path[, shared-libadd])
+dnl
+dnl add a library to the link line (deferred)
+dnl and path to linkpath/runpath (not deferred)
+dnl if shared-libadd is not empty and $ext_shared is yes,
+dnl shared-libadd will be assigned the library information
+dnl
+AC_DEFUN([PHP_ADD_LIBRARY_DEFER_WITH_PATH],[
+ifelse($3,,[
+  if test -n "$2"; then
+    PHP_ADD_LIBPATH($2)
+  fi
+  PHP_ADD_LIBRARY_DEFER($1)
+],[
+  if test "$ext_shared" = "yes"; then
+    $3="-l$1 [$]$3"
+    if test -n "$2"; then
+      PHP_ADD_LIBPATH($2,$3)
     fi
-  fi  
+  else
+    PHP_ADD_LIBRARY_DEFER_WITH_PATH($1,$2)
+  fi
+])
 ])
 
-AC_DEFUN([PHP_PREAD_TEST],[
-  AC_CACHE_CHECK(whether pread works,ac_cv_pread,[
-    PHP_DOES_PREAD_WORK
-    if test "$ac_cv_pread" = "no"; then
-      PHP_DOES_PREAD_WORK([ssize_t pread(int, void *, size_t, off64_t);])
-      if test "$ac_cv_pread" = "yes"; then
-        ac_cv_pread=64
-      fi
+dnl
+dnl PHP_ADD_FRAMEWORK(framework [,before])
+dnl
+dnl add a (Darwin / Mac OS X) framework to the link
+dnl line. if before is 1, the framework is added
+dnl to the beginning of the line.
+dnl
+AC_DEFUN([PHP_ADD_FRAMEWORK], [
+  PHP_RUN_ONCE(FRAMEWORKS, $1, [
+    if test "$2"; then
+      PHP_FRAMEWORKS="-framework $1 $PHP_FRAMEWORKS"
+    else
+      PHP_FRAMEWORKS="$PHP_FRAMEWORKS -framework $1"
     fi
   ])
+])
 
-  if test "$ac_cv_pread" != "no"; then
-    AC_DEFINE(HAVE_PREAD, 1, [ ])
-    if test "$ac_cv_pread" = "64"; then
-      AC_DEFINE(PHP_PREAD_64, 1, [whether pread64 is default])
+dnl
+dnl PHP_ADD_FRAMEWORKPATH(path [,before])
+dnl
+dnl add a (Darwin / Mac OS X) framework path to the link
+dnl and include lines. default paths include (but are
+dnl not limited to) /Local/Library/Frameworks and
+dnl /System/Library/Frameworks, so these don't need
+dnl to be specifically added. if before is 1, the
+dnl framework path is added to the beginning of the
+dnl relevant lines.
+dnl
+AC_DEFUN([PHP_ADD_FRAMEWORKPATH], [
+  PHP_EXPAND_PATH($1, ai_p)
+  PHP_RUN_ONCE(FRAMEWORKPATH, $ai_p, [
+    if test "$2"; then
+      PHP_FRAMEWORKPATH="-F$ai_p $PHP_FRAMEWORKPATH"
+    else
+      PHP_FRAMEWORKPATH="$PHP_FRAMEWORKPATH -F$ai_p"
     fi
-  fi  
+  ])
 ])
 
-AC_DEFUN([PHP_MISSING_TIME_R_DECL],[
-  AC_MSG_CHECKING([for missing declarations of reentrant functions])
-  AC_TRY_COMPILE([#include <time.h>],[struct tm *(*func)() = localtime_r],[
-    :
-  ],[
-    AC_DEFINE(MISSING_LOCALTIME_R_DECL,1,[Whether localtime_r is declared])
-  ])
-  AC_TRY_COMPILE([#include <time.h>],[struct tm *(*func)() = gmtime_r],[
-    :
-  ],[
-    AC_DEFINE(MISSING_GMTIME_R_DECL,1,[Whether gmtime_r is declared])
-  ])
-  AC_TRY_COMPILE([#include <time.h>],[char *(*func)() = asctime_r],[
-    :
-  ],[
-    AC_DEFINE(MISSING_ASCTIME_R_DECL,1,[Whether asctime_r is declared])
-  ])
-  AC_TRY_COMPILE([#include <time.h>],[char *(*func)() = ctime_r],[
-    :
-  ],[
-    AC_DEFINE(MISSING_CTIME_R_DECL,1,[Whether ctime_r is declared])
-  ])
-  AC_TRY_COMPILE([#include <string.h>],[char *(*func)() = strtok_r],[
-    :
-  ],[
-    AC_DEFINE(MISSING_STRTOK_R_DECL,1,[Whether strtok_r is declared])
-  ])
-  AC_MSG_RESULT([done])
+dnl
+dnl PHP_ADD_FRAMEWORK_WITH_PATH(framework, path)
+dnl
+dnl Adds a (Darwin / Mac OS X) framework path and the
+dnl framework itself to the link and include lines.
+dnl
+AC_DEFUN([PHP_ADD_FRAMEWORK_WITH_PATH], [
+  PHP_ADD_FRAMEWORKPATH($2)
+  PHP_ADD_FRAMEWORK($1)
 ])
 
 dnl
-dnl PHP_LIBGCC_LIBPATH(gcc)
-dnl Stores the location of libgcc in libgcc_libpath
+dnl PHP_SET_LIBTOOL_VARIABLE(var)
 dnl
-AC_DEFUN([PHP_LIBGCC_LIBPATH],[
-  changequote({,})
-  libgcc_libpath=`$1 --print-libgcc-file-name|sed 's%/*[^/][^/]*$%%'`
-  changequote([,])
+dnl Set libtool variable
+dnl
+AC_DEFUN([PHP_SET_LIBTOOL_VARIABLE],[
+  if test -z "$LIBTOOL"; then
+    LIBTOOL='$(SHELL) $(top_builddir)/libtool $1'
+  else
+    LIBTOOL="$LIBTOOL $1"
+  fi
 ])
 
+dnl -------------------------------------------------------------------------
+dnl Wrapper macros for AC_ARG_WITH / AC_ARG_ENABLE
+dnl -------------------------------------------------------------------------
+
+dnl PHP_ARG_ANALYZE_EX
+dnl internal
 AC_DEFUN([PHP_ARG_ANALYZE_EX],[
 ext_output="yes, shared"
 ext_shared=yes
@@ -485,6 +673,8 @@ esac
 PHP_ALWAYS_SHARED([$1])
 ])
 
+dnl PHP_ARG_ANALYZE
+dnl internal
 AC_DEFUN([PHP_ARG_ANALYZE],[
 ifelse([$3],yes,[PHP_ARG_ANALYZE_EX([$1])],[ext_output=ifelse([$]$1,,no,[$]$1)])
 ifelse([$2],,,[AC_MSG_RESULT([$ext_output])])
@@ -502,216 +692,52 @@ AC_DEFUN([PHP_ARG_WITH],[
 PHP_REAL_ARG_WITH([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z0-9-,A-Z0-9_),[ifelse($5,,yes,$5)])
 ])
 
+dnl PHP_REAL_ARG_WITH
+dnl internal
 AC_DEFUN([PHP_REAL_ARG_WITH],[
 ifelse([$2],,,[AC_MSG_CHECKING([$2])])
-AC_ARG_WITH($1,[$3],$5=[$]withval,
-[
-  $5=ifelse($4,,no,$4)
-
-  if test "$PHP_ENABLE_ALL" && test "$6" = "yes"; then
-    $5=$PHP_ENABLE_ALL
-  fi
-])
-PHP_ARG_ANALYZE($5,[$2],$6)
-])
-
-dnl
-dnl PHP_ARG_ENABLE(arg-name, check message, help text[, default-val[, extension-or-not]])
-dnl Sets PHP_ARG_NAME either to the user value or to the default value.
-dnl default-val defaults to no.  This will also set the variable ext_shared,
-dnl and will overwrite any previous variable of that name.
-dnl If extension-or-not is yes (default), then do the ENABLE_ALL check and run
-dnl the PHP_ARG_ANALYZE_EX.
-dnl
-AC_DEFUN([PHP_ARG_ENABLE],[
-PHP_REAL_ARG_ENABLE([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z-,A-Z_),[ifelse($5,,yes,$5)])
-])
-
-AC_DEFUN([PHP_REAL_ARG_ENABLE],[
-ifelse([$2],,,[AC_MSG_CHECKING([$2])])
-AC_ARG_ENABLE($1,[$3],$5=[$]enableval,
-[
-  $5=ifelse($4,,no,$4)
-
-  if test "$PHP_ENABLE_ALL" && test "$6" = "yes"; then
-    $5=$PHP_ENABLE_ALL
-  fi
-])
-PHP_ARG_ANALYZE($5,[$2],$6)
-])
-
-AC_DEFUN([PHP_MODULE_PTR],[
-  EXTRA_MODULE_PTRS="$EXTRA_MODULE_PTRS $1,"
-])
-AC_DEFUN([PHP_CONFIG_NICE],[
-  test -f $1 && mv $1 $1.old
-  rm -f $1.old
-  cat >$1<<EOF
-#! /bin/sh
-#
-# Created by configure
-
-EOF
-
-  for var in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS LIBS CC CXX; do
-    eval val=\$$var
-    if test -n "$val"; then
-      echo "$var='$val' \\" >> $1
-    fi
-  done
-
-  for arg in [$]0 "[$]@"; do
-    echo "'[$]arg' \\" >> $1
-  done
-  echo '"[$]@"' >> $1
-  chmod +x $1
-])
-
-AC_DEFUN([PHP_TIME_R_TYPE],[
-AC_CACHE_CHECK(for type of reentrant time-related functions, ac_cv_time_r_type,[
-AC_TRY_RUN([
-#include <time.h>
-
-main() {
-char buf[27];
-struct tm t;
-time_t old = 0;
-int r, s;
-
-s = gmtime_r(&old, &t);
-r = (int) asctime_r(&t, buf, 26);
-if (r == s && s == 0) return (0);
-return (1);
-}
-],[
-  ac_cv_time_r_type=hpux
-],[
-  AC_TRY_RUN([
-#include <time.h>
-main() {
-  struct tm t, *s;
-  time_t old = 0;
-  char buf[27], *p;
-  
-  s = gmtime_r(&old, &t);
-  p = asctime_r(&t, buf, 26);
-  if (p == buf && s == &t) return (0);
-  return (1);
-}
-  ],[
-    ac_cv_time_r_type=irix
-  ],[
-    ac_cv_time_r_type=POSIX
-  ])
-],[
-  ac_cv_time_r_type=POSIX
-])
-])
-  case $ac_cv_time_r_type in
-  hpux[)] AC_DEFINE(PHP_HPUX_TIME_R,1,[Whether you have HP-UX 10.x]) ;;
-  irix[)] AC_DEFINE(PHP_IRIX_TIME_R,1,[Whether you have IRIX-style functions]) ;;
-  esac
-])
-
-AC_DEFUN([PHP_SUBST],[
-  PHP_VAR_SUBST="$PHP_VAR_SUBST $1"
-])
-
-AC_DEFUN([PHP_SUBST_OLD],[
-  PHP_SUBST($1)
-  AC_SUBST($1)
-])
-
-AC_DEFUN([PHP_TM_GMTOFF],[
-AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#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,1,[whether you have tm_gmtoff in struct tm])
-fi
-])
-
-dnl PHP_CONFIGURE_PART(MESSAGE)
-dnl Idea borrowed from mm
-AC_DEFUN([PHP_CONFIGURE_PART],[
-  AC_MSG_RESULT()
-  AC_MSG_RESULT([${T_MD}$1${T_ME}])
-])
-
-AC_DEFUN([PHP_PROG_SENDMAIL],[
-PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib
-AC_PATH_PROG(PROG_SENDMAIL, sendmail,[], $PATH:$PHP_ALT_PATH)
-if test -n "$PROG_SENDMAIL"; then
-  AC_DEFINE(HAVE_SENDMAIL,1,[whether you have sendmail])
-fi
-])
-
-AC_DEFUN([PHP_RUNPATH_SWITCH],[
-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/$PHP_LIBDIR $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/$PHP_LIBDIR $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
+AC_ARG_WITH($1,[$3],$5=[$]withval,
+[
+  $5=ifelse($4,,no,$4)
+
+  if test "$PHP_ENABLE_ALL" && test "$6" = "yes"; then
+    $5=$PHP_ENABLE_ALL
+  fi
+])
+PHP_ARG_ANALYZE($5,[$2],$6)
 ])
 
-AC_DEFUN([PHP_STRUCT_FLOCK],[
-AC_CACHE_CHECK(for struct flock,ac_cv_struct_flock,
-    AC_TRY_COMPILE([
-#include <unistd.h>
-#include <fcntl.h>
-        ],
-        [struct flock x;],
-        [
-          ac_cv_struct_flock=yes
-        ],[
-          ac_cv_struct_flock=no
-        ])
-)
-if test "$ac_cv_struct_flock" = "yes" ; then
-    AC_DEFINE(HAVE_STRUCT_FLOCK, 1,[whether you have struct flock])
-fi
+dnl
+dnl PHP_ARG_ENABLE(arg-name, check message, help text[, default-val[, extension-or-not]])
+dnl Sets PHP_ARG_NAME either to the user value or to the default value.
+dnl default-val defaults to no.  This will also set the variable ext_shared,
+dnl and will overwrite any previous variable of that name.
+dnl If extension-or-not is yes (default), then do the ENABLE_ALL check and run
+dnl the PHP_ARG_ANALYZE_EX.
+dnl
+AC_DEFUN([PHP_ARG_ENABLE],[
+PHP_REAL_ARG_ENABLE([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z-,A-Z_),[ifelse($5,,yes,$5)])
 ])
 
-AC_DEFUN([PHP_SOCKLEN_T],[
-AC_CACHE_CHECK(for socklen_t,ac_cv_socklen_t,
-  AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/socket.h>
-],[
-socklen_t x;
-],[
-  ac_cv_socklen_t=yes
-],[
-  ac_cv_socklen_t=no
-]))
-if test "$ac_cv_socklen_t" = "yes"; then
-  AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t])
-fi
+dnl PHP_REAL_ARG_ENABLE
+dnl internal
+AC_DEFUN([PHP_REAL_ARG_ENABLE],[
+ifelse([$2],,,[AC_MSG_CHECKING([$2])])
+AC_ARG_ENABLE($1,[$3],$5=[$]enableval,
+[
+  $5=ifelse($4,,no,$4)
+
+  if test "$PHP_ENABLE_ALL" && test "$6" = "yes"; then
+    $5=$PHP_ENABLE_ALL
+  fi
+])
+PHP_ARG_ANALYZE($5,[$2],$6)
 ])
 
+dnl -------------------------------------------------------------------------
+dnl Build macros
+dnl -------------------------------------------------------------------------
+
 dnl
 dnl PHP_SET_SYM_FILE(path)
 dnl
@@ -732,6 +758,9 @@ AC_DEFUN([PHP_BUILD_THREAD_SAFE],[
   fi
 ])
 
+dnl
+dnl PHP_REQUIRE_CXX
+dnl
 AC_DEFUN([PHP_REQUIRE_CXX],[
   if test -z "$php_cxx_done"; then
     AC_PROG_CXX
@@ -805,302 +834,480 @@ AC_DEFUN([PHP_BUILD_PROGRAM],[
 ])
 
 dnl
-dnl PHP_RUN_ONCE(namespace, variable, code)
+dnl PHP_SHARED_MODULE(module-name, object-var, build-dir, cxx)
 dnl
-dnl execute code, if variable is not set in namespace
+dnl Basically sets up the link-stage for building module-name
+dnl from object_var in build-dir.
 dnl
-AC_DEFUN([PHP_RUN_ONCE],[
-  changequote({,})
-  unique=`echo $2|sed 's/[^a-zA-Z0-9]/_/g'`
-  changequote([,])
-  cmd="echo $ac_n \"\$$1$unique$ac_c\""
-  if test -n "$unique" && test "`eval $cmd`" = "" ; then
-    eval "$1$unique=set"
-    $3
-  fi
-])
+AC_DEFUN([PHP_SHARED_MODULE],[
+  install_modules="install-modules"
 
-dnl
-dnl PHP_EXPAND_PATH(path, variable)
-dnl
-dnl expands path to an absolute path and assigns it to variable
-dnl
-AC_DEFUN([PHP_EXPAND_PATH],[
-  if test -z "$1" || echo "$1" | grep '^/' >/dev/null ; then
-    $2=$1
-  else
-    changequote({,})
-    ep_dir="`echo $1|sed 's%/*[^/][^/]*/*$%%'`"
-    changequote([,])
-    ep_realdir="`(cd \"$ep_dir\" && pwd)`"
-    $2="$ep_realdir/`basename \"$1\"`"
-  fi
+  case $host_alias in
+    *darwin*[)]
+      suffix=so
+      link_cmd='ifelse($4,,[$(CC)],[$(CXX)]) -dynamic -flat_namespace -bundle -undefined suppress $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)'
+      ;;
+    *[)]
+      suffix=la
+      link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)'
+      ;;
+  esac
+
+  PHP_MODULES="$PHP_MODULES \$(phplibdir)/$1.$suffix"
+  PHP_SUBST($2)
+  cat >>Makefile.objects<<EOF
+\$(phplibdir)/$1.$suffix: $3/$1.$suffix
+       \$(LIBTOOL) --mode=install cp $3/$1.$suffix \$(phplibdir)
+
+$3/$1.$suffix: \$($2) \$(translit($1,a-z_-,A-Z__)_SHARED_DEPENDENCIES)
+       $link_cmd
+
+EOF
 ])
+
 dnl
-dnl internal, don't use
-AC_DEFUN([_PHP_ADD_LIBPATH_GLOBAL],[
-  PHP_RUN_ONCE(LIBPATH, $1, [
-    test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$1"
-    LDFLAGS="$LDFLAGS -L$1"
-    PHP_RPATHS="$PHP_RPATHS $1"
-  ])
-])dnl
-dnl
-dnl
-dnl
-dnl PHP_ADD_LIBPATH(path[, shared-libadd])
+dnl PHP_SELECT_SAPI(name, type[, sources [, extra-cflags [, build-target]]])
 dnl
-dnl add a library to linkpath/runpath
+dnl Selects the SAPI name and type (static, shared, programm)
+dnl and optionally also the source-files for the SAPI-specific
+dnl objects.
 dnl
-AC_DEFUN([PHP_ADD_LIBPATH],[
-  if test "$1" != "/usr/$PHP_LIBDIR"; then
-    PHP_EXPAND_PATH($1, ai_p)
-    ifelse([$2],,[
-      _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
-    ],[
-      if test "$ext_shared" = "yes"; then
-        $2="$ld_runpath_switch$ai_p -L$ai_p [$]$2"
-      else
-        _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
-      fi
-    ])
-  fi
+AC_DEFUN([PHP_SELECT_SAPI],[
+  PHP_SAPI=$1
+  
+  case "$2" in
+  static[)] PHP_BUILD_STATIC;;
+  shared[)] PHP_BUILD_SHARED;;
+  bundle[)] PHP_BUILD_BUNDLE;;
+  program[)] PHP_BUILD_PROGRAM($5);;
+  esac
+    
+  ifelse($3,,,[PHP_ADD_SOURCES([sapi/$1],[$3],[$4],[sapi])])
 ])
 
-dnl
-dnl PHP_UTILIZE_RPATHS()
-dnl
-dnl builds RPATHS/LDFLAGS from PHP_RPATHS
-dnl
-AC_DEFUN([PHP_UTILIZE_RPATHS],[
-  OLD_RPATHS=$PHP_RPATHS
-  unset PHP_RPATHS
+dnl deprecated
+AC_DEFUN([PHP_EXTENSION],[
+  sources=`$AWK -f $abs_srcdir/build/scan_makefile_in.awk < []PHP_EXT_SRCDIR($1)[]/Makefile.in`
 
-  for i in $OLD_RPATHS; do
-dnl Can be passed to native cc/libtool
-    PHP_LDFLAGS="$PHP_LDFLAGS -L$i"
-dnl Libtool-specific
-    PHP_RPATHS="$PHP_RPATHS -R $i"
-dnl cc-specific
-    NATIVE_RPATHS="$NATIVE_RPATHS $ld_runpath_switch$i"
-  done
+  PHP_NEW_EXTENSION($1, $sources, $2, $3)
 
-  if test "$PHP_RPATH" = "no"; then
-    unset PHP_RPATHS
-    unset NATIVE_RPATHS
+  if test -r "$ext_srcdir/Makefile.frag"; then
+    PHP_ADD_MAKEFILE_FRAGMENT
   fi
 ])
 
+AC_DEFUN([PHP_ADD_BUILD_DIR],[
+  BUILD_DIR="$BUILD_DIR $1"
+])
+
+AC_DEFUN([PHP_GEN_BUILD_DIRS],[
+  $php_shtool mkdir -p $BUILD_DIR
+])
+
 dnl
-dnl PHP_ADD_INCLUDE(path [,before])
+dnl PHP_NEW_EXTENSION(extname, sources [, shared [,sapi_class[, extra-cflags[, cxx]]]])
 dnl
-dnl add an include path. 
-dnl if before is 1, add in the beginning of INCLUDES.
+dnl Includes an extension in the build.
 dnl
-AC_DEFUN([PHP_ADD_INCLUDE],[
-  if test "$1" != "/usr/include"; then
-    PHP_EXPAND_PATH($1, ai_p)
-    PHP_RUN_ONCE(INCLUDEPATH, $ai_p, [
-      if test "$2"; then
-        INCLUDES="-I$ai_p $INCLUDES"
-      else
-        INCLUDES="$INCLUDES -I$ai_p"
-      fi
-    ])
+dnl "extname" is the name of the ext/ subdir where the extension resides.
+dnl "sources" is a list of files relative to the subdir which are used
+dnl to build the extension.
+dnl "shared" can be set to "shared" or "yes" to build the extension as
+dnl a dynamically loadable library. Optional parameter "sapi_class" can
+dnl be set to "cli" to mark extension build only with CLI or CGI sapi's.
+dnl extra-cflags are passed to the compiler, with @ext_srcdir@ being
+dnl substituted.
+AC_DEFUN([PHP_NEW_EXTENSION],[
+  ext_builddir=[]PHP_EXT_BUILDDIR($1)
+  ext_srcdir=[]PHP_EXT_SRCDIR($1)
+
+  ifelse($5,,ac_extra=,[ac_extra=`echo "$5"|sed s#@ext_srcdir@#$ext_srcdir#g`])
+
+  if test "$3" != "shared" && test "$3" != "yes" && test "$4" != "cli"; then
+dnl ---------------------------------------------- Static module
+
+    PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,)
+    EXT_STATIC="$EXT_STATIC $1"
+    if test "$3" != "nocli"; then
+      EXT_CLI_STATIC="$EXT_CLI_STATIC $1"
+    fi
+  else
+    if test "$3" = "shared" || test "$3" = "yes"; then
+dnl ---------------------------------------------- Shared module
+      PHP_ADD_SOURCES_X(PHP_EXT_DIR($1),$2,$ac_extra,shared_objects_$1,yes)
+      PHP_SHARED_MODULE($1,shared_objects_$1, $ext_builddir, $6)
+      AC_DEFINE_UNQUOTED([COMPILE_DL_]translit($1,a-z_-,A-Z__), 1, Whether to build $1 as dynamic module)
+    fi
   fi
-])
-dnl
-dnl internal, don't use
-AC_DEFUN([_PHP_X_ADD_LIBRARY],[dnl
-  ifelse([$2],,$3="-l$1 [$]$3", $3="[$]$3 -l$1") dnl
-])dnl
-dnl
-dnl internal, don't use
-AC_DEFUN([_PHP_ADD_LIBRARY_SKELETON],[
-  case $1 in
-  c|c_r|pthread*[)] ;;
-  *[)] ifelse($3,,[
-    _PHP_X_ADD_LIBRARY($1,$2,$5)
-  ],[
-    if test "$ext_shared" = "yes"; then
-      _PHP_X_ADD_LIBRARY($1,$2,$3)
+
+  if test "$3" != "shared" && test "$3" != "yes" && test "$4" = "cli"; then
+dnl ---------------------------------------------- CLI static module
+    if test "$PHP_SAPI" = "cgi"; then
+      PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,)
+      EXT_STATIC="$EXT_STATIC $1"
     else
-      $4($1,$2)
+      PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,cli)
     fi
-  ]) ;;
-  esac
-])dnl
-dnl
-dnl
+    EXT_CLI_STATIC="$EXT_CLI_STATIC $1"
+  fi
+  PHP_ADD_BUILD_DIR($ext_builddir)
+])
+
 dnl
-dnl PHP_ADD_LIBRARY(library[, append[, shared-libadd]])
+dnl PHP_WITH_SHARED
 dnl
-dnl add a library to the link line
+dnl Checks whether $withval is "shared" or starts with "shared,XXX"
+dnl and sets $shared to "yes" or "no", and removes "shared,?" stuff
+dnl from $withval.
 dnl
-AC_DEFUN([PHP_ADD_LIBRARY],[
-  _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY],[LIBS])
+AC_DEFUN([PHP_WITH_SHARED],[
+  PHP_ARG_ANALYZE_EX(withval)
+  shared=$ext_shared
+  unset ext_shared ext_output
 ])
 
 dnl
-dnl PHP_ADD_LIBRARY_DEFER(library[, append[, shared-libadd]])
+dnl PHP_ADD_EXTENSION_DEP(extname, depends [, depconf])
 dnl
-dnl add a library to the link line (deferred)
+dnl This macro is currently a placeholder in the config.m4 file
+dnl it is scanned by genif.sh when it builds the internal functions
+dnl list, so that modules can be init'd in the correct order
+dnl $1 = name of extension, $2 = extension upon which it depends
+dnl $3 = optional: if true, it's ok for $2 to have not been configured
+dnl default is false and should halt the build.
+dnl See ADD_EXTENSION_DEP in win32 build 
 dnl
-AC_DEFUN([PHP_ADD_LIBRARY_DEFER],[
-  _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY_DEFER],[DLIBS])
+AC_DEFUN([PHP_ADD_EXTENSION_DEP], [])
+
+dnl -------------------------------------------------------------------------
+dnl Checks for structures, typedefs, broken functions, etc.
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_CHECK_IN_ADDR_T
+dnl
+AC_DEFUN([PHP_CHECK_IN_ADDR_T], [
+dnl AIX keeps in_addr_t in /usr/include/netinet/in.h
+AC_MSG_CHECKING([for in_addr_t])
+AC_CACHE_VAL(ac_cv_type_in_addr_t,
+[AC_EGREP_CPP(dnl
+changequote(<<,>>)dnl
+<<in_addr_t[^a-zA-Z_0-9]>>dnl
+changequote([,]), [#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif], ac_cv_type_in_addr_t=yes, ac_cv_type_in_addr_t=no)])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
 ])
 
 dnl
-dnl PHP_ADD_LIBRARY_WITH_PATH(library, path[, shared-libadd])
+dnl PHP_TIME_R_TYPE
 dnl
-dnl add a library to the link line and path to linkpath/runpath.
-dnl if shared-libadd is not empty and $ext_shared is yes,
-dnl shared-libadd will be assigned the library information
+dnl Check type of reentrant time-related functions
+dnl Type can be: irix, hpux or POSIX
 dnl
-AC_DEFUN([PHP_ADD_LIBRARY_WITH_PATH],[
-ifelse($3,,[
-  if test -n "$2"; then
-    PHP_ADD_LIBPATH($2)
-  fi
-  PHP_ADD_LIBRARY($1)
+AC_DEFUN([PHP_TIME_R_TYPE],[
+AC_CACHE_CHECK(for type of reentrant time-related functions, ac_cv_time_r_type,[
+AC_TRY_RUN([
+#include <time.h>
+
+main() {
+char buf[27];
+struct tm t;
+time_t old = 0;
+int r, s;
+
+s = gmtime_r(&old, &t);
+r = (int) asctime_r(&t, buf, 26);
+if (r == s && s == 0) return (0);
+return (1);
+}
 ],[
-  if test "$ext_shared" = "yes"; then
-    $3="-l$1 [$]$3"
-    if test -n "$2"; then
-      PHP_ADD_LIBPATH($2,$3)
-    fi
-  else
-    PHP_ADD_LIBRARY_WITH_PATH($1,$2)
-  fi
+  ac_cv_time_r_type=hpux
+],[
+  AC_TRY_RUN([
+#include <time.h>
+main() {
+  struct tm t, *s;
+  time_t old = 0;
+  char buf[27], *p;
+  
+  s = gmtime_r(&old, &t);
+  p = asctime_r(&t, buf, 26);
+  if (p == buf && s == &t) return (0);
+  return (1);
+}
+  ],[
+    ac_cv_time_r_type=irix
+  ],[
+    ac_cv_time_r_type=POSIX
+  ])
+],[
+  ac_cv_time_r_type=POSIX
 ])
+])
+  case $ac_cv_time_r_type in
+  hpux[)] AC_DEFINE(PHP_HPUX_TIME_R,1,[Whether you have HP-UX 10.x]) ;;
+  irix[)] AC_DEFINE(PHP_IRIX_TIME_R,1,[Whether you have IRIX-style functions]) ;;
+  esac
 ])
 
 dnl
-dnl PHP_ADD_LIBRARY_DEFER_WITH_PATH(library, path[, shared-libadd])
+dnl PHP_DOES_PWRITE_WORK
+dnl internal
+AC_DEFUN([PHP_DOES_PWRITE_WORK],[
+  AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+$1
+    main() {
+    int fd = open("conftest_in", O_WRONLY|O_CREAT, 0600);
+
+    if (fd < 0) exit(1);
+    if (pwrite(fd, "text", 4, 0) != 4) exit(1);
+    /* Linux glibc breakage until 2.2.5 */
+    if (pwrite(fd, "text", 4, -1) != -1 || errno != EINVAL) exit(1);
+    exit(0);
+    }
+
+  ],[
+    ac_cv_pwrite=yes
+  ],[
+    ac_cv_pwrite=no
+  ],[
+    ac_cv_pwrite=no
+  ])
+])
+
+dnl PHP_DOES_PREAD_WORK
+dnl internal
+AC_DEFUN([PHP_DOES_PREAD_WORK],[
+  echo test > conftest_in
+  AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+$1
+    main() {
+    char buf[3]; 
+    int fd = open("conftest_in", O_RDONLY);
+    if (fd < 0) exit(1);
+    if (pread(fd, buf, 2, 0) != 2) exit(1);
+    /* Linux glibc breakage until 2.2.5 */
+    if (pread(fd, buf, 2, -1) != -1 || errno != EINVAL) exit(1);
+    exit(0);
+    }
+  ],[
+    ac_cv_pread=yes
+  ],[
+    ac_cv_pread=no
+  ],[
+    ac_cv_pread=no
+  ])
+  rm -f conftest_in
+])
+
 dnl
-dnl add a library to the link line (deferred)
-dnl and path to linkpath/runpath (not deferred)
-dnl if shared-libadd is not empty and $ext_shared is yes,
-dnl shared-libadd will be assigned the library information
+dnl PHP_PWRITE_TEST
 dnl
-AC_DEFUN([PHP_ADD_LIBRARY_DEFER_WITH_PATH],[
-ifelse($3,,[
-  if test -n "$2"; then
-    PHP_ADD_LIBPATH($2)
-  fi
-  PHP_ADD_LIBRARY_DEFER($1)
-],[
-  if test "$ext_shared" = "yes"; then
-    $3="-l$1 [$]$3"
-    if test -n "$2"; then
-      PHP_ADD_LIBPATH($2,$3)
+AC_DEFUN([PHP_PWRITE_TEST],[
+  AC_CACHE_CHECK(whether pwrite works,ac_cv_pwrite,[
+    PHP_DOES_PWRITE_WORK
+    if test "$ac_cv_pwrite" = "no"; then
+      PHP_DOES_PWRITE_WORK([ssize_t pwrite(int, void *, size_t, off64_t);])
+      if test "$ac_cv_pwrite" = "yes"; then
+        ac_cv_pwrite=64
+      fi
     fi
-  else
-    PHP_ADD_LIBRARY_DEFER_WITH_PATH($1,$2)
-  fi
-])
+  ])
+
+  if test "$ac_cv_pwrite" != "no"; then
+    AC_DEFINE(HAVE_PWRITE, 1, [ ])
+    if test "$ac_cv_pwrite" = "64"; then
+      AC_DEFINE(PHP_PWRITE_64, 1, [whether pwrite64 is default])
+    fi
+  fi  
 ])
 
 dnl
-dnl PHP_ADD_FRAMEWORK(framework [,before])
+dnl PHP_PREAD_TEST
 dnl
-dnl add a (Darwin / Mac OS X) framework to the link
-dnl line. if before is 1, the framework is added
-dnl to the beginning of the line.
+AC_DEFUN([PHP_PREAD_TEST],[
+  AC_CACHE_CHECK(whether pread works,ac_cv_pread,[
+    PHP_DOES_PREAD_WORK
+    if test "$ac_cv_pread" = "no"; then
+      PHP_DOES_PREAD_WORK([ssize_t pread(int, void *, size_t, off64_t);])
+      if test "$ac_cv_pread" = "yes"; then
+        ac_cv_pread=64
+      fi
+    fi
+  ])
 
-AC_DEFUN([PHP_ADD_FRAMEWORK], [
-  PHP_RUN_ONCE(FRAMEWORKS, $1, [
-    if test "$2"; then
-      PHP_FRAMEWORKS="-framework $1 $PHP_FRAMEWORKS"
-    else
-      PHP_FRAMEWORKS="$PHP_FRAMEWORKS -framework $1"
+  if test "$ac_cv_pread" != "no"; then
+    AC_DEFINE(HAVE_PREAD, 1, [ ])
+    if test "$ac_cv_pread" = "64"; then
+      AC_DEFINE(PHP_PREAD_64, 1, [whether pread64 is default])
     fi
+  fi  
+])
+
+dnl
+dnl PHP_MISSING_TIME_R_DECL
+dnl
+AC_DEFUN([PHP_MISSING_TIME_R_DECL],[
+  AC_MSG_CHECKING([for missing declarations of reentrant functions])
+  AC_TRY_COMPILE([#include <time.h>],[struct tm *(*func)() = localtime_r],[
+    :
+  ],[
+    AC_DEFINE(MISSING_LOCALTIME_R_DECL,1,[Whether localtime_r is declared])
+  ])
+  AC_TRY_COMPILE([#include <time.h>],[struct tm *(*func)() = gmtime_r],[
+    :
+  ],[
+    AC_DEFINE(MISSING_GMTIME_R_DECL,1,[Whether gmtime_r is declared])
+  ])
+  AC_TRY_COMPILE([#include <time.h>],[char *(*func)() = asctime_r],[
+    :
+  ],[
+    AC_DEFINE(MISSING_ASCTIME_R_DECL,1,[Whether asctime_r is declared])
+  ])
+  AC_TRY_COMPILE([#include <time.h>],[char *(*func)() = ctime_r],[
+    :
+  ],[
+    AC_DEFINE(MISSING_CTIME_R_DECL,1,[Whether ctime_r is declared])
+  ])
+  AC_TRY_COMPILE([#include <string.h>],[char *(*func)() = strtok_r],[
+    :
+  ],[
+    AC_DEFINE(MISSING_STRTOK_R_DECL,1,[Whether strtok_r is declared])
   ])
+  AC_MSG_RESULT([done])
 ])
 
-dnl
-dnl PHP_ADD_FRAMEWORKPATH(path [,before])
-dnl
-dnl add a (Darwin / Mac OS X) framework path to the link
-dnl and include lines. default paths include (but are
-dnl not limited to) /Local/Library/Frameworks and
-dnl /System/Library/Frameworks, so these don't need
-dnl to be specifically added. if before is 1, the
-dnl framework path is added to the beginning of the
-dnl relevant lines.
+dnl
+dnl PHP_READDIR_R_TYPE
+dnl 
+AC_DEFUN([PHP_READDIR_R_TYPE],[
+  dnl HAVE_READDIR_R is also defined by libmysql
+  AC_CHECK_FUNC(readdir_r,ac_cv_func_readdir_r=yes,ac_cv_func_readdir=no)
+  if test "$ac_cv_func_readdir_r" = "yes"; then
+  AC_CACHE_CHECK(for type of readdir_r, ac_cv_what_readdir_r,[
+    AC_TRY_RUN([
+#define _REENTRANT
+#include <sys/types.h>
+#include <dirent.h>
+
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
 
-AC_DEFUN([PHP_ADD_FRAMEWORKPATH], [
-  PHP_EXPAND_PATH($1, ai_p)
-  PHP_RUN_ONCE(FRAMEWORKPATH, $ai_p, [
-    if test "$2"; then
-      PHP_FRAMEWORKPATH="-F$ai_p $PHP_FRAMEWORKPATH"
-    else
-      PHP_FRAMEWORKPATH="$PHP_FRAMEWORKPATH -F$ai_p"
-    fi
+main() {
+       DIR *dir;
+       char entry[sizeof(struct dirent)+PATH_MAX];
+       struct dirent *pentry = (struct dirent *) &entry;
+
+       dir = opendir("/");
+       if (!dir) 
+               exit(1);
+       if (readdir_r(dir, (struct dirent *) entry, &pentry) == 0)
+               exit(0);
+       exit(1);
+}
+    ],[
+      ac_cv_what_readdir_r=POSIX
+    ],[
+      AC_TRY_CPP([
+#define _REENTRANT
+#include <sys/types.h>
+#include <dirent.h>
+int readdir_r(DIR *, struct dirent *);
+        ],[
+          ac_cv_what_readdir_r=old-style
+        ],[
+          ac_cv_what_readdir_r=none
+      ])
+    ],[
+      ac_cv_what_readdir_r=none
+   ])
   ])
+    case $ac_cv_what_readdir_r in
+    POSIX)
+      AC_DEFINE(HAVE_POSIX_READDIR_R,1,[whether you have POSIX readdir_r]);;
+    old-style)
+      AC_DEFINE(HAVE_OLD_READDIR_R,1,[whether you have old-style readdir_r]);;
+    esac
+  fi
 ])
 
 dnl
-dnl PHP_ADD_FRAMEWORK_WITH_PATH(framework, path)
-dnl
-dnl add a (Darwin / Mac OS X) framework path and the
-dnl framework itself to the link and include lines.
-AC_DEFUN([PHP_ADD_FRAMEWORK_WITH_PATH], [
-  PHP_ADD_FRAMEWORKPATH($2)
-  PHP_ADD_FRAMEWORK($1)
+dnl PHP_TM_GMTOFF
+dnl 
+AC_DEFUN([PHP_TM_GMTOFF],[
+AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#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,1,[whether you have tm_gmtoff in struct tm])
+fi
 ])
 
 dnl
-dnl Set libtool variable
+dnl PHP_STRUCT_FLOCK
 dnl
-AC_DEFUN([PHP_SET_LIBTOOL_VARIABLE],[
-  if test -z "$LIBTOOL"; then
-    LIBTOOL='$(SHELL) $(top_builddir)/libtool $1'
-  else
-    LIBTOOL="$LIBTOOL $1"
-  fi
+AC_DEFUN([PHP_STRUCT_FLOCK],[
+AC_CACHE_CHECK(for struct flock,ac_cv_struct_flock,
+    AC_TRY_COMPILE([
+#include <unistd.h>
+#include <fcntl.h>
+        ],
+        [struct flock x;],
+        [
+          ac_cv_struct_flock=yes
+        ],[
+          ac_cv_struct_flock=no
+        ])
+)
+if test "$ac_cv_struct_flock" = "yes" ; then
+    AC_DEFINE(HAVE_STRUCT_FLOCK, 1,[whether you have struct flock])
+fi
 ])
 
 dnl
-dnl Check for cc option
+dnl PHP_SOCKLEN_T
 dnl
-AC_DEFUN([PHP_CHECK_CC_OPTION],[
-  echo "main(){return 0;}" > conftest.$ac_ext
-  opt=$1
-  changequote({,})
-  var=`echo $opt|sed 's/[^a-zA-Z0-9]/_/g'`
-  changequote([,])
-  AC_MSG_CHECKING([if compiler supports -$1 really])
-  ac_php_compile="${CC-cc} -$opt -o conftest $CFLAGS $CPPFLAGS conftest.$ac_ext 2>&1"
-  if eval $ac_php_compile 2>&1 | egrep "$opt" > /dev/null 2>&1 ; then
-    eval php_cc_$var=no
-       AC_MSG_RESULT([no])
-  else
-    if eval ./conftest 2>/dev/null ; then
-      eval php_cc_$var=yes
-         AC_MSG_RESULT([yes])
-    else
-      eval php_cc_$var=no
-         AC_MSG_RESULT([no])
-    fi
-  fi
-  rm -rf conftest*
-])
-
-AC_DEFUN([PHP_REGEX],[
-
-if test "$REGEX_TYPE" = "php"; then
-  AC_DEFINE(HSREGEX,1,[ ])
-  AC_DEFINE(REGEX,1,[ ])
-  PHP_ADD_SOURCES(regex, regcomp.c regexec.c regerror.c regfree.c)
-elif test "$REGEX_TYPE" = "system"; then
-  AC_DEFINE(REGEX,0,[ ])
+AC_DEFUN([PHP_SOCKLEN_T],[
+AC_CACHE_CHECK(for socklen_t,ac_cv_socklen_t,
+  AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+],[
+socklen_t x;
+],[
+  ac_cv_socklen_t=yes
+],[
+  ac_cv_socklen_t=no
+]))
+if test "$ac_cv_socklen_t" = "yes"; then
+  AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t])
 fi
-
-AC_MSG_CHECKING([which regex library to use])
-AC_MSG_RESULT([$REGEX_TYPE])
 ])
 
+dnl
+dnl PHP_MISSING_FCLOSE_DECL
 dnl
 dnl See if we have broken header files like SunOS has.
 dnl
@@ -1115,6 +1322,8 @@ AC_DEFUN([PHP_MISSING_FCLOSE_DECL],[
   ])
 ])
 
+dnl
+dnl PHP_AC_BROKEN_SPRINTF
 dnl
 dnl Check for broken sprintf(), C99 conformance
 dnl
@@ -1135,6 +1344,8 @@ AC_DEFUN([PHP_AC_BROKEN_SPRINTF],[
   fi
 ])
 
+dnl
+dnl PHP_AC_BROKEN_SNPRINTF
 dnl
 dnl Check for broken snprintf(), C99 conformance
 dnl
@@ -1170,125 +1381,8 @@ main() {
   fi
 ])
 
-dnl PHP_SHARED_MODULE(module-name, object-var, build-dir, cxx)
-dnl
-dnl Basically sets up the link-stage for building module-name
-dnl from object_var in build-dir.
-dnl
-AC_DEFUN([PHP_SHARED_MODULE],[
-  install_modules="install-modules"
-
-  case $host_alias in
-    *darwin*[)]
-      suffix=so
-      link_cmd='ifelse($4,,[$(CC)],[$(CXX)]) -dynamic -flat_namespace -bundle -undefined suppress $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)'
-      ;;
-    *[)]
-      suffix=la
-      link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)'
-      ;;
-  esac
-
-  PHP_MODULES="$PHP_MODULES \$(phplibdir)/$1.$suffix"
-  PHP_SUBST($2)
-  cat >>Makefile.objects<<EOF
-\$(phplibdir)/$1.$suffix: $3/$1.$suffix
-       \$(LIBTOOL) --mode=install cp $3/$1.$suffix \$(phplibdir)
-
-$3/$1.$suffix: \$($2) \$(translit($1,a-z_-,A-Z__)_SHARED_DEPENDENCIES)
-       $link_cmd
-
-EOF
-])
-
-dnl
-dnl PHP_SELECT_SAPI(name, type[, sources [, extra-cflags [, build-target]]])
-dnl
-dnl Selects the SAPI name and type (static, shared, programm)
-dnl and optionally also the source-files for the SAPI-specific
-dnl objects.
-dnl
-AC_DEFUN([PHP_SELECT_SAPI],[
-  PHP_SAPI=$1
-  
-  case "$2" in
-  static[)] PHP_BUILD_STATIC;;
-  shared[)] PHP_BUILD_SHARED;;
-  bundle[)] PHP_BUILD_BUNDLE;;
-  program[)] PHP_BUILD_PROGRAM($5);;
-  esac
-    
-  ifelse($3,,,[PHP_ADD_SOURCES([sapi/$1],[$3],[$4],[sapi])])
-])
-
-dnl deprecated
-AC_DEFUN([PHP_EXTENSION],[
-  sources=`$AWK -f $abs_srcdir/build/scan_makefile_in.awk < []PHP_EXT_SRCDIR($1)[]/Makefile.in`
-
-  PHP_NEW_EXTENSION($1, $sources, $2, $3)
-
-  if test -r "$ext_srcdir/Makefile.frag"; then
-    PHP_ADD_MAKEFILE_FRAGMENT
-  fi
-])
-
-AC_DEFUN([PHP_ADD_BUILD_DIR],[
-  BUILD_DIR="$BUILD_DIR $1"
-])
-
-AC_DEFUN([PHP_GEN_BUILD_DIRS],[
-  $php_shtool mkdir -p $BUILD_DIR
-])
-
-dnl
-dnl PHP_NEW_EXTENSION(extname, sources [, shared [,sapi_class[, extra-cflags[, cxx]]]])
-dnl
-dnl Includes an extension in the build.
 dnl
-dnl "extname" is the name of the ext/ subdir where the extension resides.
-dnl "sources" is a list of files relative to the subdir which are used
-dnl to build the extension.
-dnl "shared" can be set to "shared" or "yes" to build the extension as
-dnl a dynamically loadable library. Optional parameter "sapi_class" can
-dnl be set to "cli" to mark extension build only with CLI or CGI sapi's.
-dnl extra-cflags are passed to the compiler, with @ext_srcdir@ being
-dnl substituted.
-AC_DEFUN([PHP_NEW_EXTENSION],[
-  ext_builddir=[]PHP_EXT_BUILDDIR($1)
-  ext_srcdir=[]PHP_EXT_SRCDIR($1)
-
-  ifelse($5,,ac_extra=,[ac_extra=`echo "$5"|sed s#@ext_srcdir@#$ext_srcdir#g`])
-
-  if test "$3" != "shared" && test "$3" != "yes" && test "$4" != "cli"; then
-dnl ---------------------------------------------- Static module
-
-    PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,)
-    EXT_STATIC="$EXT_STATIC $1"
-    if test "$3" != "nocli"; then
-      EXT_CLI_STATIC="$EXT_CLI_STATIC $1"
-    fi
-  else
-    if test "$3" = "shared" || test "$3" = "yes"; then
-dnl ---------------------------------------------- Shared module
-      PHP_ADD_SOURCES_X(PHP_EXT_DIR($1),$2,$ac_extra,shared_objects_$1,yes)
-      PHP_SHARED_MODULE($1,shared_objects_$1, $ext_builddir, $6)
-      AC_DEFINE_UNQUOTED([COMPILE_DL_]translit($1,a-z_-,A-Z__), 1, Whether to build $1 as dynamic module)
-    fi
-  fi
-
-  if test "$3" != "shared" && test "$3" != "yes" && test "$4" = "cli"; then
-dnl ---------------------------------------------- CLI static module
-    if test "$PHP_SAPI" = "cgi"; then
-      PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,)
-      EXT_STATIC="$EXT_STATIC $1"
-    else
-      PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,cli)
-    fi
-    EXT_CLI_STATIC="$EXT_CLI_STATIC $1"
-  fi
-  PHP_ADD_BUILD_DIR($ext_builddir)
-])
-
+dnl PHP_SOLARIS_PIC_WEIRDNESS
 dnl
 dnl Solaris requires main code to be position independent in order
 dnl to let shared objects find symbols.  Weird.  Ugly.
@@ -1315,25 +1409,17 @@ AC_DEFUN([PHP_SOLARIS_PIC_WEIRDNESS],[
   fi
 ])
 
-dnl
-dnl Checks whether $withval is "shared" or starts with "shared,XXX"
-dnl and sets $shared to "yes" or "no", and removes "shared,?" stuff
-dnl from $withval.
-dnl
-AC_DEFUN([PHP_WITH_SHARED],[
-  PHP_ARG_ANALYZE_EX(withval)
-  shared=$ext_shared
-  unset ext_shared ext_output
-])
-
+dnl
+dnl PHP_SYS_LFS
+dnl
 dnl The problem is that the default compilation flags in Solaris 2.6 won't
 dnl let programs access large files;  you need to tell the compiler that
 dnl you actually want your programs to work on large files.  For more
 dnl details about this brain damage please see:
 dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
-
+dnl
 dnl Written by Paul Eggert <eggert@twinsun.com>.
-
+dnl
 AC_DEFUN([PHP_SYS_LFS],
 [dnl
   # If available, prefer support for large files unless the user specified
@@ -1369,6 +1455,9 @@ AC_DEFUN([PHP_SYS_LFS],
   esac
 ])
 
+dnl
+dnl PHP_SOCKADDR_SA_LEN
+dnl
 AC_DEFUN([PHP_SOCKADDR_SA_LEN],[
   AC_CACHE_CHECK([for field sa_len in struct sockaddr],ac_cv_sockaddr_sa_len,[
     AC_TRY_COMPILE([#include <sys/types.h>
@@ -1380,14 +1469,9 @@ AC_DEFUN([PHP_SOCKADDR_SA_LEN],[
   ])
 ])
 
-
-dnl ## PHP_OUTPUT(file)
-dnl ## adds "file" to the list of files generated by AC_OUTPUT
-dnl ## This macro can be used several times.
-AC_DEFUN([PHP_OUTPUT],[
-  PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES $1"
-])
-
+dnl
+dnl PHP_DECLARED_TIMEZONE
+dnl
 AC_DEFUN([PHP_DECLARED_TIMEZONE],[
   AC_CACHE_CHECK(for declared timezone, ac_cv_declared_timezone,[
     AC_TRY_COMPILE([
@@ -1408,7 +1492,10 @@ AC_DEFUN([PHP_DECLARED_TIMEZONE],[
   fi
 ])
 
-AC_DEFUN([PHP_EBCDIC],[
+dnl
+dnl PHP_EBCDIC
+dnl
+AC_DEFUN([PHP_EBCDIC], [
   AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[
   AC_TRY_RUN( [
 int main(void) { 
@@ -1426,8 +1513,12 @@ int main(void) {
   fi
 ])
 
+dnl
+dnl PHP_BROKEN_GETCWD
+dnl
 dnl Some systems, notably Solaris, cause getcwd() or realpath to fail if a
 dnl component of the path has execute but not read permissions
+dnl
 AC_DEFUN([PHP_BROKEN_GETCWD],[
   AC_MSG_CHECKING([for broken getcwd])
   os=`uname -sr 2>/dev/null`
@@ -1440,7 +1531,10 @@ AC_DEFUN([PHP_BROKEN_GETCWD],[
   esac
 ])
 
-AC_DEFUN([PHP_BROKEN_GLIBC_FOPEN_APPEND],[
+dnl
+dnl PHP_BROKEN_GLIBC_FOPEN_APPEND
+dnl
+AC_DEFUN([PHP_BROKEN_GLIBC_FOPEN_APPEND], [
   AC_MSG_CHECKING([for broken libc stdio])
   AC_CACHE_VAL(have_broken_glibc_fopen_append,[
   AC_TRY_RUN([
@@ -1489,28 +1583,27 @@ choke me
   fi
 ])
 
+dnl
+dnl PHP_FOPENCOOKIE
+dnl
+AC_DEFUN([PHP_FOPENCOOKIE], [
+  AC_CHECK_FUNC(fopencookie, [have_glibc_fopencookie=yes])
 
-AC_DEFUN([PHP_FOPENCOOKIE],[
-       AC_CHECK_FUNC(fopencookie, [ have_glibc_fopencookie=yes ])
-
-       if test "$have_glibc_fopencookie" = "yes" ; then
-               dnl this comes in two flavors:
-      dnl newer glibcs (since 2.1.2 ? )
-      dnl have a type called cookie_io_functions_t
-                 AC_TRY_COMPILE([ #define _GNU_SOURCE
-                       #include <stdio.h>
-                                                                          ],
-                          [ cookie_io_functions_t cookie; ],
-                     [ have_cookie_io_functions_t=yes ],
-                                                                                [] )
-
-      if test "$have_cookie_io_functions_t" = "yes" ; then
-        cookie_io_functions_t=cookie_io_functions_t
-        have_fopen_cookie=yes
+  if test "$have_glibc_fopencookie" = "yes"; then
+dnl this comes in two flavors:
+dnl newer glibcs (since 2.1.2 ? )
+dnl have a type called cookie_io_functions_t
+AC_TRY_COMPILE([
+#define _GNU_SOURCE
+#include <stdio.h>
+], [cookie_io_functions_t cookie;], [have_cookie_io_functions_t=yes], [])
 
-               dnl even newer glibcs have a different seeker definition...
+    if test "$have_cookie_io_functions_t" = "yes"; then
+      cookie_io_functions_t=cookie_io_functions_t
+      have_fopen_cookie=yes
 
-               AC_TRY_RUN([
+dnl even newer glibcs have a different seeker definition...
+AC_TRY_RUN([
 #define _GNU_SOURCE
 #include <stdio.h>
 
@@ -1538,81 +1631,376 @@ main() {
   exit(1);
 }
 
-                                          ],
-                                          [ cookie_io_functions_use_off64_t=yes ],
-                                          [ ] )
-               
+], [cookie_io_functions_use_off64_t=yes], [])
+    
+    else
+
+dnl older glibc versions (up to 2.1.2 ?)
+dnl call it _IO_cookie_io_functions_t
+AC_TRY_COMPILE([
+#define _GNU_SOURCE
+#include <stdio.h>
+], [ _IO_cookie_io_functions_t cookie; ], [have_IO_cookie_io_functions_t=yes], [])
+      if test "$have_cookie_io_functions_t" = "yes" ; then
+        cookie_io_functions_t=_IO_cookie_io_functions_t
+        have_fopen_cookie=yes
+      fi
+    fi
+
+    if test "$have_fopen_cookie" = "yes" ; then
+      AC_DEFINE(HAVE_FOPENCOOKIE, 1, [ ])
+      AC_DEFINE_UNQUOTED(COOKIE_IO_FUNCTIONS_T, $cookie_io_functions_t, [ ])
+      if test "$cookie_io_functions_use_off64_t" = "yes" ; then
+        AC_DEFINE(COOKIE_SEEKER_USES_OFF64_T, 1, [ ])
+      fi
+    fi
+  fi
+])
+
+dnl -------------------------------------------------------------------------
+dnl Library/function existance and build sanity checks
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_CHECK_LIBRARY(library, function [, action-found [, action-not-found [, extra-libs]]])
+dnl
+dnl Wrapper for AC_CHECK_LIB
+dnl
+AC_DEFUN([PHP_CHECK_LIBRARY], [
+  save_old_LDFLAGS=$LDFLAGS
+  ac_stuff="$5"
+  
+  save_ext_shared=$ext_shared
+  ext_shared=yes
+  PHP_EVAL_LIBLINE([$]ac_stuff, LDFLAGS)
+  AC_CHECK_LIB([$1],[$2],[
+    LDFLAGS=$save_old_LDFLAGS
+    ext_shared=$save_ext_shared
+    $3
+  ],[
+    LDFLAGS=$save_old_LDFLAGS
+    ext_shared=$save_ext_shared
+    unset ac_cv_lib_$1[]_$2
+    $4
+  ])dnl
+])
+
+dnl
+dnl PHP_CHECK_FRAMEWORK(framework, function [, action-found [, action-not-found ]])
+dnl
+dnl El cheapo wrapper for AC_CHECK_LIB
+dnl
+AC_DEFUN([PHP_CHECK_FRAMEWORK], [
+  save_old_LDFLAGS=$LDFLAGS
+  LDFLAGS="-framework $1 $LDFLAGS"
+  dnl supplying "c" to AC_CHECK_LIB is technically cheating, but
+  dnl rewriting AC_CHECK_LIB is overkill and this only affects
+  dnl the "checking.." output anyway.
+  AC_CHECK_LIB(c,[$2],[
+    LDFLAGS=$save_old_LDFLAGS
+    $3
+  ],[
+    LDFLAGS=$save_old_LDFLAGS
+    $4
+  ])
+])
+
+dnl
+dnl PHP_CHECK_FUNC_LIB(func, libs)
+dnl
+dnl This macro checks whether 'func' or '__func' exists
+dnl in the specified library.
+dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS.
+dnl This should be called in the ACTION-IF-NOT-FOUND part of PHP_CHECK_FUNC
+dnl
+dnl
+dnl autoconf undefines the builtin "shift" :-(
+dnl If possible, we use the builtin shift anyway, otherwise we use
+dnl the ubercool definition I have tested so far with FreeBSD/GNU m4
+ifdef([builtin],[builtin(define, phpshift, [builtin(shift, $@)])],[
+define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,])))])])
+])
+dnl
+AC_DEFUN([PHP_CHECK_FUNC_LIB],[
+  ifelse($2,,:,[
+  unset ac_cv_lib_$2[]_$1
+  unset ac_cv_lib_$2[]___$1
+  unset found
+  AC_CHECK_LIB($2, $1, [found=yes], [
+    AC_CHECK_LIB($2, __$1, [found=yes], [found=no])
+  ])
+
+  if test "$found" = "yes"; then
+    ac_libs=$LIBS
+    LIBS="$LIBS -l$2"
+    AC_TRY_RUN([main() { return (0); }],[found=yes],[found=no],[found=no])
+    LIBS=$ac_libs
+  fi
+
+  if test "$found" = "yes"; then
+    PHP_ADD_LIBRARY($2)
+    PHP_DEF_HAVE($1)
+    PHP_DEF_HAVE(lib$2)
+    ac_cv_func_$1=yes
+  else
+    PHP_CHECK_FUNC_LIB($1,phpshift(phpshift($@)))
+  fi
+  ])
+])
+
+dnl
+dnl PHP_CHECK_FUNC(func, ...)
+dnl
+dnl This macro checks whether 'func' or '__func' exists
+dnl in the default libraries and as a fall back in the specified library.
+dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS.
+dnl
+AC_DEFUN([PHP_CHECK_FUNC],[
+  unset ac_cv_func_$1
+  unset ac_cv_func___$1
+  unset found
+  
+  AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ])
+
+  case $found in
+  yes[)] 
+    PHP_DEF_HAVE($1)
+    ac_cv_func_$1=yes
+  ;;
+  ifelse($#,1,,[
+    *[)] PHP_CHECK_FUNC_LIB($@) ;;
+  ])
+  esac
+])
+
+dnl
+dnl PHP_TEST_BUILD(function, action-if-ok, action-if-not-ok [, extra-libs [, extra-source]])
+dnl
+dnl This macro checks whether build works and given function exists.
+dnl
+AC_DEFUN([PHP_TEST_BUILD], [
+  old_LIBS=$LIBS
+  LIBS="$4 $LIBS"
+  AC_TRY_RUN([
+    $5
+    char $1();
+    int main() {
+      $1();
+      return 0;
+    }
+  ], [
+    LIBS=$old_LIBS
+    $2
+  ],[
+    LIBS=$old_LIBS
+    $3
+  ],[
+    LIBS=$old_LIBS
+  ])
+])
+
+dnl -------------------------------------------------------------------------
+dnl Platform characteristics checks
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_SHLIB_SUFFIX_NAME
+dnl
+dnl Determines shared library suffix 
+dnl suffix can be: .so, .sl or .dylib
+dnl
+AC_DEFUN([PHP_SHLIB_SUFFIX_NAME],[
+  AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl
+  PHP_SUBST(SHLIB_SUFFIX_NAME)
+  SHLIB_SUFFIX_NAME=so
+  case $host_alias in
+  *hpux*[)]
+    SHLIB_SUFFIX_NAME=sl
+    ;;
+  *darwin*[)]
+    SHLIB_SUFFIX_NAME=dylib
+    ;;
+  esac
+])
+
+dnl
+dnl PHP_CHECK_64BIT([do if 32], [do if 64])
+dnl
+dnl This macro is used to detect if we're at 64-bit platform or not.
+dnl It could be useful for those external libs, that have different precompiled 
+dnl versions in different directories.
+dnl
+AC_DEFUN([PHP_CHECK_64BIT],[
+  AC_CHECK_SIZEOF(long int)
+  AC_MSG_CHECKING([checking if we're at 64-bit platform])
+  if test "$ac_cv_sizeof_long_int" = "4" ; then
+    AC_MSG_RESULT([no])
+    $1
+  else
+    AC_MSG_RESULT([yes])
+    $2
+  fi
+])
+
+dnl
+dnl PHP_C_BIGENDIAN
+dnl
+dnl Replacement macro for AC_C_BIGENDIAN
+dnl
+AC_DEFUN([PHP_C_BIGENDIAN],
+[AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian_php,
+ [
+  ac_cv_c_bigendian_php=unknown
+  AC_TRY_RUN(
+  [
+int main(void)
+{
+       short one = 1;
+       char *cp = (char *)&one;
+
+       if (*cp == 0) {
+               return(0);
+       } else {
+               return(1);
+       }
+}
+  ], [ac_cv_c_bigendian_php=yes], [ac_cv_c_bigendian_php=no], [ac_cv_c_bigendian_php=unknown])
+ ])
+ if test $ac_cv_c_bigendian_php = yes; then
+   AC_DEFINE(WORDS_BIGENDIAN, [], [Define if processor uses big-endian word])
+ fi
+])
+
+dnl -------------------------------------------------------------------------
+dnl Checks for programs: PHP_PROG_<program>
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_PROG_SENDMAIL
+dnl
+dnl Search for the sendmail binary
+dnl
+AC_DEFUN([PHP_PROG_SENDMAIL], [
+  PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib
+  AC_PATH_PROG(PROG_SENDMAIL, sendmail,[], $PATH:$PHP_ALT_PATH)
+  if test -n "$PROG_SENDMAIL"; then
+    AC_DEFINE(HAVE_SENDMAIL,1,[whether you have sendmail])
+  fi
+  PHP_SUBST(PROG_SENDMAIL)
+])
+
+dnl
+dnl PHP_PROG_AWK
+dnl
+dnl Some vendors force mawk before gawk; mawk is broken so we don't like that
+dnl
+AC_DEFUN([PHP_PROG_AWK], [
+  AC_CHECK_PROGS(AWK, gawk nawk awk mawk, bork, /usr/xpg4/bin/:$PATH)
+  case "$AWK" in
+    *mawk)
+      AC_MSG_WARN([mawk is known to have problems on some systems. You should install GNU awk])
+      ;;
+    *gawk)  
+      ;;
+    bork)   
+      AC_MSG_ERROR([Could not find awk; Install GNU awk])
+      ;;
+    *)
+      AC_MSG_CHECKING([if $AWK is broken])
+      if ! $AWK 'function foo() {}' >/dev/null 2>&1 ; then
+        AC_MSG_RESULT([yes])
+        AC_MSG_ERROR([You should install GNU awk])
       else
-           dnl older glibc versions (up to 2.1.2 ?)
-        dnl call it _IO_cookie_io_functions_t
-                   AC_TRY_COMPILE([ #define _GNU_SOURCE
-                       #include <stdio.h>
-                                                                          ],
-                          [ _IO_cookie_io_functions_t cookie; ],
-                     [ have_IO_cookie_io_functions_t=yes ],
-                                                                                [] )
-                   if test "$have_cookie_io_functions_t" = "yes" ; then
-              cookie_io_functions_t=_IO_cookie_io_functions_t
-              have_fopen_cookie=yes
-                   fi
+        AC_MSG_RESULT([no])
       fi
-
-      if test "$have_fopen_cookie" = "yes" ; then
-        AC_DEFINE(HAVE_FOPENCOOKIE, 1, [ ])
-        AC_DEFINE_UNQUOTED(COOKIE_IO_FUNCTIONS_T, $cookie_io_functions_t, [ ])
-               if test "$cookie_io_functions_use_off64_t" = "yes" ; then
-          AC_DEFINE(COOKIE_SEEKER_USES_OFF64_T, 1, [ ])
-               fi
-      fi      
-
-       fi
+      ;;
+  esac
+  PHP_SUBST(AWK)
 ])
 
+dnl
+dnl PHP_PROG_BISON
+dnl
+dnl Search for bison and check it's version
+dnl
+AC_DEFUN([PHP_PROG_BISON], [
+  AC_PROG_YACC
+  if test "$YACC" != "bison -y"; then
+    AC_MSG_WARN([You will need bison 1.28, 1.35, 1.75 or 1.875 if you want to regenerate the Zend/PHP parsers.])
+  else
+    AC_MSG_CHECKING([bison version])
+    set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | sed -e 's/\./ /'|tr -d a-z`
+    if test "${1}" -ne "1" -o "(" "${2}" != "28" -a "${2}" != "35" -a "${2}" != "75" -a "${2}" != "875" ")"; then 
+      AC_MSG_WARN([You will need bison 1.28, 1.35, 1.75 or 1.875 if you want to regenerate the Zend/PHP parsers (found ${1}.${2}).])
+    fi
+    AC_MSG_RESULT(${1}.${2} (ok))
+  fi
+  PHP_SUBST(YACC)
+])
 
 dnl
-dnl PHP_CHECK_LIBRARY(library, function [, action-found [, action-not-found [, extra-libs]]])
+dnl PHP_PROG_LEX
 dnl
-dnl Wrapper for AC_CHECK_LIB
+dnl Search for (f)lex and check it's version
 dnl
-AC_DEFUN([PHP_CHECK_LIBRARY], [
-  save_old_LDFLAGS=$LDFLAGS
-  ac_stuff="$5"
-  
-  save_ext_shared=$ext_shared
-  ext_shared=yes
-  PHP_EVAL_LIBLINE([$]ac_stuff, LDFLAGS)
-  AC_CHECK_LIB([$1],[$2],[
-    LDFLAGS=$save_old_LDFLAGS
-    ext_shared=$save_ext_shared
-    $3
-  ],[
-    LDFLAGS=$save_old_LDFLAGS
-    ext_shared=$save_ext_shared
-    unset ac_cv_lib_$1[]_$2
-    $4
-  ])dnl
+AC_DEFUN([PHP_PROG_LEX], [
+  AC_PROG_LEX
+  if test -n "$LEX"; then
+    AC_DECL_YYTEXT
+    :
+  fi
+  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_MSG_CHECKING([flex version])
+  if test "$LEX" ;then
+    flexvers=`echo "" | $LEX -V -v --version 2>/dev/null | sed -e 's/^.* //' -e 's/\./ /g'`
+    if test ! -z "$flexvers"; then
+      set $flexvers
+      if test "${1}" != "2" -o "${2}" != "5" -o "${3}" != "4"; then
+        AC_MSG_WARN([You will need flex 2.5.4 if you want to regenerate Zend/PHP lexical parsers.])
+      fi
+    fi
+    AC_MSG_RESULT(${1}.${2}.${3} (ok))
+  else
+    AC_MSG_WARN([You will need flex 2.5.4 or later if you want to regenerate Zend/PHP lexical parsers.])
+  fi
+  PHP_SUBST(LEX)
 ])
 
 dnl
-dnl PHP_CHECK_FRAMEWORK(framework, function [, action-found [, action-not-found ]])
+dnl PHP_PROG_RE2C
 dnl
-dnl El cheapo wrapper for AC_CHECK_LIB
+dnl Search for the re2c binary and check the version
 dnl
-AC_DEFUN([PHP_CHECK_FRAMEWORK], [
-  save_old_LDFLAGS=$LDFLAGS
-  LDFLAGS="-framework $1 $LDFLAGS"
-  dnl supplying "c" to AC_CHECK_LIB is technically cheating, but
-  dnl rewriting AC_CHECK_LIB is overkill and this only affects
-  dnl the "checking.." output anyway.
-  AC_CHECK_LIB(c,[$2],[
-    LDFLAGS=$save_old_LDFLAGS
-    $3
-  ],[
-    LDFLAGS=$save_old_LDFLAGS
-    $4
-  ])
+AC_DEFUN([PHP_PROG_RE2C],[
+  AC_CHECK_PROG(RE2C, re2c, re2c)
+  if test -n "$RE2C"; then
+    AC_MSG_CHECKING([re2c version])
+    AC_CACHE_VAL(php_cv_re2c_version, [
+      if test `echo "" | re2c --vernum 2>/dev/null` -lt "904"; then
+        AC_MSG_WARN([You will need re2c 0.94 or later if you want to regenerate PHP parsers.])
+        php_cv_re2c_version=invalid
+      else
+        php_cv_re2c_version="`echo "" | re2c --version | cut -d ' ' -f 2  2>/dev/null` (ok)"
+      fi 
+    ])
+    AC_MSG_RESULT([$php_cv_re2c_version])
+  else 
+    AC_MSG_WARN([You will need re2c 0.94 or later if you want to regenerate PHP parsers.])
+  fi
+  PHP_SUBST(RE2C)
 ])
 
+dnl -------------------------------------------------------------------------
+dnl Common setup macros: PHP_SETUP_<what>
+dnl -------------------------------------------------------------------------
+
 dnl
 dnl PHP_SETUP_KERBEROS(shared-add [, action-found [, action-not-found]])
 dnl
@@ -1923,76 +2311,13 @@ ifelse([$3],[],,[else $3])
   fi
 ])
 
-AC_DEFUN([PHP_DEF_HAVE],[AC_DEFINE([HAVE_]translit($1,a-z_-,A-Z__), 1, [ ])])
-
-dnl
-dnl PHP_CHECK_FUNC_LIB(func, libs)
-dnl This macro checks whether 'func' or '__func' exists
-dnl in the specified library.
-dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS.
-dnl This should be called in the ACTION-IF-NOT-FOUND part of PHP_CHECK_FUNC
-dnl
-
-dnl autoconf undefines the builtin "shift" :-(
-dnl If possible, we use the builtin shift anyway, otherwise we use
-dnl the ubercool definition I have tested so far with FreeBSD/GNU m4
-ifdef([builtin],[builtin(define, phpshift, [builtin(shift, $@)])],[
-define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,])))])])
-])
-
-AC_DEFUN([PHP_CHECK_FUNC_LIB],[
-  ifelse($2,,:,[
-  unset ac_cv_lib_$2[]_$1
-  unset ac_cv_lib_$2[]___$1
-  unset found
-  AC_CHECK_LIB($2, $1, [found=yes], [
-    AC_CHECK_LIB($2, __$1, [found=yes], [found=no])
-  ])
-
-  if test "$found" = "yes"; then
-    ac_libs=$LIBS
-    LIBS="$LIBS -l$2"
-    AC_TRY_RUN([main() { return (0); }],[found=yes],[found=no],[found=no])
-    LIBS=$ac_libs
-  fi
-
-  if test "$found" = "yes"; then
-    PHP_ADD_LIBRARY($2)
-    PHP_DEF_HAVE($1)
-    PHP_DEF_HAVE(lib$2)
-    ac_cv_func_$1=yes
-  else
-    PHP_CHECK_FUNC_LIB($1,phpshift(phpshift($@)))
-  fi
-  ])
-])
-
-dnl
-dnl PHP_CHECK_FUNC(func, ...)
-dnl This macro checks whether 'func' or '__func' exists
-dnl in the default libraries and as a fall back in the specified library.
-dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS.
-dnl
-AC_DEFUN([PHP_CHECK_FUNC],[
-  unset ac_cv_func_$1
-  unset ac_cv_func___$1
-  unset found
-  
-  AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ])
-
-  case $found in
-  yes[)] 
-    PHP_DEF_HAVE($1)
-    ac_cv_func_$1=yes
-  ;;
-  ifelse($#,1,,[
-    *[)] PHP_CHECK_FUNC_LIB($@) ;;
-  ])
-  esac
-])
+dnl -------------------------------------------------------------------------
+dnl Misc. macros
+dnl -------------------------------------------------------------------------
 
 dnl
 dnl PHP_AP_EXTRACT_VERSION(/path/httpd)
+dnl
 dnl This macro is used to get a comparable
 dnl version for apache1/2.
 dnl
@@ -2008,81 +2333,77 @@ IFS="- /.
 ])
 
 dnl
-dnl PHP_TEST_BUILD(function, action-if-ok, action-if-not-ok [, extra-libs [, extra-source]])
-dnl This macro checks whether build works and given function exists.
-dnl
-AC_DEFUN([PHP_TEST_BUILD], [
-  old_LIBS=$LIBS
-  LIBS="$4 $LIBS"
-  AC_TRY_RUN([
-    $5
-    char $1();
-    int main() {
-      $1();
-      return 0;
-    }
-  ], [
-    LIBS=$old_LIBS
-    $2
-  ],[
-    LIBS=$old_LIBS
-    $3
-  ],[
-    LIBS=$old_LIBS
-  ])
+dnl PHP_DEBUG_MACRO(filename)
+dnl 
+AC_DEFUN([PHP_DEBUG_MACRO],[
+  DEBUG_LOG=$1
+  cat >$1 <<X
+CONFIGURE:  $CONFIGURE_COMMAND
+CC:         $CC
+CFLAGS:     $CFLAGS
+CPPFLAGS:   $CPPFLAGS
+CXX:        $CXX
+CXXFLAGS:   $CXXFLAGS
+INCLUDES:   $INCLUDES
+LDFLAGS:    $LDFLAGS
+LIBS:       $LIBS
+DLIBS:      $DLIBS
+SAPI:       $PHP_SAPI
+PHP_RPATHS: $PHP_RPATHS
+uname -a:   `uname -a`
+
+X
+    cat >conftest.$ac_ext <<X
+main()
+{
+  exit(0);
+}
+X
+    (eval echo \"$ac_link\"; eval $ac_link && ./conftest) >>$1 2>&1
+    rm -fr conftest*
 ])
 
-dnl This macro is currently a placeholder in the config.m4 file
-dnl it is scanned by genif.sh when it builds the internal functions
-dnl list, so that modules can be init'd in the correct order
-dnl $1 = name of extension, $2 = extension upon which it depends
-dnl $3 = optional: if true, it's ok for $2 to have not been configured
-dnl default is false and should halt the build.
-dnl See ADD_EXTENSION_DEP in win32 build 
-AC_DEFUN([PHP_ADD_EXTENSION_DEP], [])
+dnl
+dnl PHP_CONFIG_NICE(filename)
+dnl
+dnl Generates the config.nice file
+dnl
+AC_DEFUN([PHP_CONFIG_NICE],[
+  test -f $1 && mv $1 $1.old
+  rm -f $1.old
+  cat >$1<<EOF
+#! /bin/sh
+#
+# Created by configure
 
+EOF
 
-dnl PHP_CHECK_64BIT([do if 32], [do if 64])
-dnl This macro is used to detect if we're at 64-bit platform or not.
-dnl It could be useful for those external libs, that have different precompiled 
-dnl versions in different directories.
-AC_DEFUN([PHP_CHECK_64BIT],[
-  AC_CHECK_SIZEOF(long int)
-  AC_MSG_CHECKING([checking if we're at 64-bit platform])
-  if test "$ac_cv_sizeof_long_int" = "4" ; then
-    AC_MSG_RESULT([no])
-    $1
-  else
-    AC_MSG_RESULT([yes])
-    $2
-  fi
+  for var in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS LIBS CC CXX; do
+    eval val=\$$var
+    if test -n "$val"; then
+      echo "$var='$val' \\" >> $1
+    fi
+  done
+
+  for arg in [$]0 "[$]@"; do
+    echo "'[$]arg' \\" >> $1
+  done
+  echo '"[$]@"' >> $1
+  chmod +x $1
 ])
 
 dnl
-dnl PHP_C_BIGENDIAN
-dnl Replacement macro for AC_C_BIGENDIAN
+dnl PHP_REGEX
 dnl
-AC_DEFUN([PHP_C_BIGENDIAN],
-[AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian_php,
- [
-  ac_cv_c_bigendian_php=unknown
-  AC_TRY_RUN(
-  [
-int main(void)
-{
-       short one = 1;
-       char *cp = (char *)&one;
+AC_DEFUN([PHP_REGEX],[
+  if test "$REGEX_TYPE" = "php"; then
+    AC_DEFINE(HSREGEX,1,[ ])
+    AC_DEFINE(REGEX,1,[ ])
+    PHP_ADD_SOURCES(regex, regcomp.c regexec.c regerror.c regfree.c)
+  elif test "$REGEX_TYPE" = "system"; then
+    AC_DEFINE(REGEX,0,[ ])
+  fi
 
-       if (*cp == 0) {
-               return(0);
-       } else {
-               return(1);
-       }
-}
-  ], [ac_cv_c_bigendian_php=yes], [ac_cv_c_bigendian_php=no], [ac_cv_c_bigendian_php=unknown])
- ])
- if test $ac_cv_c_bigendian_php = yes; then
-   AC_DEFINE(WORDS_BIGENDIAN, [], [Define if processor uses big-endian word])
- fi
+  AC_MSG_CHECKING([which regex library to use])
+  AC_MSG_RESULT([$REGEX_TYPE])
 ])
-
index 96d807682953e7b50c510a864ce1ad4c63f82e75..04a03db48e398ec030dd8ac652e87d3f686d8d8e 100644 (file)
@@ -119,11 +119,8 @@ AC_PROG_CC_C_O
 dnl Change to AC_PROG_CC_STDC when we start requiring a post-2.13 autoconf
 dnl AC_PROG_CC_STDC
 AC_PROG_CPP
-
 AC_AIX
-
-dnl AC_PROG_CXX
-dnl AC_PROG_CXXCPP
+AC_PROG_LN_S
 
 dnl Support systems with system libraries in e.g. /usr/lib64
 AC_ARG_WITH(libdir,
@@ -133,75 +130,11 @@ AC_ARG_WITH(libdir,
 dnl check for -R, etc. switch
 PHP_RUNPATH_SWITCH
 
+dnl Checks for some support/generator progs
 PHP_PROG_RE2C
-AC_PROG_LN_S
-
-dnl Some vendors force mawk before gawk; mawk is broken so we don't like that,
-dnl and check manually
-dnl AC_PROG_AWK
-AC_CHECK_PROGS(AWK, gawk nawk awk mawk, bork, /usr/xpg4/bin/:$PATH)
-case "$AWK" in
-       *mawk)
-               AC_MSG_WARN([mawk is known to have problems on some systems.  You should install GNU awk])
-               ;;
-       *gawk)
-               ;;
-       bork)
-               AC_MSG_ERROR([Could not find awk; Install GNU awk])
-               ;;
-       *)
-               AC_MSG_CHECKING([if $AWK is broken])
-               if ! $AWK 'function foo() {}' >/dev/null 2>&1 ; then
-                       AC_MSG_RESULT([yes])
-                       AC_MSG_ERROR([You should install GNU awk])
-               else
-                       AC_MSG_RESULT([no - good!])
-               fi
-               ;;
-esac
-
-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])
-    set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | sed -e 's/\./ /'|tr -d a-z`
-    if test "${1}" -ne "1" -o "(" "${2}" != "28" -a "${2}" != "35" -a "${2}" != "75" -a "${2}" != "875" ")"; then
-      AC_MSG_WARN([You will need bison 1.28, 1.35, 1.75 or 1.875 if you want to regenerate the Zend parser (found ${1}.${2}).])
-    fi
-    AC_MSG_RESULT(${1}.${2} (ok))
-fi
-AC_PROG_LEX
-if test -n "$LEX"; then
-  AC_DECL_YYTEXT
-  :
-fi
-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_MSG_CHECKING([flex version])
-if test "$LEX" ;then
-       flexvers=`echo "" | $LEX -V -v --version 2>/dev/null | 
-               sed -e 's/^.* //' -e 's/\./ /g'`
-       if test ! -z "$flexvers"; then
-               set $flexvers
-               if test "${1}" != "2" -o "${2}" != "5" -o "${3}" != "4"; then
-                       AC_MSG_WARN(You will need flex 2.5.4 if you want to regenerate Zend/PHP lexical parsers.)
-               fi
-       fi
-AC_MSG_RESULT(${1}.${2}.${3} (ok))
-else
-       AC_MSG_WARN(You will need flex 2.5.4 or later if you want to regenerate Zend/PHP lexical parsers.)
-fi
-
-dnl Check whether byte ordering is bigendian
-PHP_C_BIGENDIAN
-
+PHP_PROG_AWK
+PHP_PROG_BISON
+PHP_PROG_LEX
 
 dnl Platform-specific compile settings.
 dnl -------------------------------------------------------------------------
@@ -255,7 +188,6 @@ sinclude(Zend/Zend.m4)
 sinclude(TSRM/tsrm.m4)
 
 
-
 divert(2)
 
 dnl ## Diversion 2 is where we set PHP-specific options and come up
@@ -274,7 +206,6 @@ PHP_SAPI=default
 PHP_BUILD_PROGRAM
 
 
-
 dnl SAPI configuration.
 dnl -------------------------------------------------------------------------
 
@@ -310,16 +241,20 @@ 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 Starting system checks.
 dnl -------------------------------------------------------------------------
 
 PHP_CONFIGURE_PART(Running system checks)
 
-PHP_MISSING_TIME_R_DECL
+dnl Find sendmail binary
 PHP_PROG_SENDMAIL
+
 dnl Check whether the system uses EBCDIC (not ASCII) as its native codeset
 PHP_EBCDIC
+
+dnl Check whether the system byte ordering is bigendian
+PHP_C_BIGENDIAN
+
 dnl Check for /usr/pkg/{lib,include} which is where NetBSD puts binary
 dnl and source packages.  This should be harmless on other OSs.
 if test -d /usr/pkg/include -a -d /usr/pkg/lib ; then
@@ -369,7 +304,6 @@ dnl Checks for header files.
 AC_HEADER_STDC
 AC_HEADER_DIRENT
 
-PHP_MISSING_FCLOSE_DECL
 dnl QNX requires unix.h to allow functions in libunix to work properly
 AC_CHECK_HEADERS([ \
 inttypes.h \
@@ -452,6 +386,9 @@ dnl -------------------------------------------------------------------------
 AC_STRUCT_TM
 AC_STRUCT_TIMEZONE
 
+PHP_MISSING_TIME_R_DECL
+PHP_MISSING_FCLOSE_DECL
+
 PHP_TM_GMTOFF
 PHP_STRUCT_FLOCK
 PHP_SOCKLEN_T
@@ -506,8 +443,6 @@ AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;],
   [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
 
-
-
 dnl Checks for library functions.
 dnl -------------------------------------------------------------------------
 
@@ -644,28 +579,7 @@ dnl PHP_AC_BROKEN_SNPRINTF
 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
-<<in_addr_t[^a-zA-Z_0-9]>>dnl
-changequote([,]), [#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#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
-
-
+PHP_CHECK_IN_ADDR_T
 
 divert(4)
 
@@ -1018,6 +932,7 @@ TSRM_BASIC_CHECKS
 if test "$PHP_THREAD_SAFETY" = "yes"; then
   TSRM_THREADS_CHECKS
 fi
+
 EXTRA_LDFLAGS="$EXTRA_LDFLAGS $LDFLAGS"
 EXTRA_LDFLAGS_PROGRAM="$EXTRA_LDFLAGS_PROGRAM $LDFLAGS"
 EXTRA_LIBS="$EXTRA_LIBS $LIBS"
@@ -1164,7 +1079,6 @@ PHP_SUBST(localstatedir)
 PHP_SUBST(datadir)
 PHP_SUBST(sysconfdir)
 
-PHP_SUBST(AWK)
 PHP_SUBST(CC)
 PHP_SUBST(CFLAGS)
 PHP_SUBST(CFLAGS_CLEAN)
@@ -1174,7 +1088,6 @@ PHP_SUBST(CPPFLAGS)
 PHP_SUBST(CXX)
 PHP_SUBST(CXXFLAGS)
 PHP_SUBST(CXXFLAGS_CLEAN)
-PHP_SUBST(CXX_PHP_COMPILE)
 PHP_SUBST_OLD(DEBUG_CFLAGS)
 PHP_SUBST(DEFS)
 PHP_SUBST_OLD(EXTENSION_DIR)
@@ -1186,23 +1099,18 @@ PHP_SUBST_OLD(INCLUDES)
 PHP_SUBST_OLD(EXTRA_INCLUDES)
 PHP_SUBST_OLD(INCLUDE_PATH)
 PHP_SUBST_OLD(INSTALL_IT)
-PHP_SUBST(LEX)
-PHP_SUBST(LEX_OUTPUT_ROOT)
 PHP_SUBST(LFLAGS)
 PHP_SUBST(LIBTOOL)
 PHP_SUBST(LN_S)
 PHP_SUBST_OLD(NATIVE_RPATHS)
 PHP_SUBST_OLD(PEAR_INSTALLDIR)
 PHP_SUBST(PHP_BUILD_DATE)
-PHP_SUBST(PHP_COMPILE)
 PHP_SUBST_OLD(PHP_LDFLAGS)
 PHP_SUBST_OLD(PHP_LIBS)
 PHP_SUBST(OVERALL_TARGET)
 PHP_SUBST(PHP_RPATHS)
 PHP_SUBST(PHP_SAPI)
 PHP_SUBST_OLD(PHP_VERSION)
-PHP_SUBST(PROG_SENDMAIL)
-PHP_SUBST(RE2C)
 PHP_SUBST(SHELL)
 PHP_SUBST(SHARED_LIBTOOL)
 PHP_SUBST(TSRM_DIR)
@@ -1210,7 +1118,6 @@ PHP_SUBST(TSRM_LIB)
 PHP_SUBST(WARNING_LEVEL)
 PHP_SUBST(PHP_FRAMEWORKS)
 PHP_SUBST(PHP_FRAMEWORKPATH)
-PHP_SUBST_OLD(YACC)
 PHP_SUBST_OLD(SHLIB_SUFFIX_NAME)
 
 old_CC=$CC
index 303ea5cfe2582855c428c62d1ab1564415a7c69f..c6a57302a4326921d6ef1b64a6b91b8c2697c060 100644 (file)
@@ -58,7 +58,7 @@ PHP_BUILD_SHARED
 AC_PREFIX_DEFAULT()
 
 PHP_PROG_RE2C
-AC_PROG_AWK
+PHP_PROG_AWK
     
 sinclude(config.m4)
 
@@ -86,7 +86,6 @@ PHP_SUBST(libdir)
 PHP_SUBST(prefix)
 PHP_SUBST(phplibdir)
 
-PHP_SUBST(PHP_COMPILE)
 PHP_SUBST(CC)
 PHP_SUBST(CFLAGS)
 PHP_SUBST(CFLAGS_CLEAN)
@@ -98,15 +97,11 @@ PHP_SUBST(EXTENSION_DIR)
 PHP_SUBST(EXTRA_LDFLAGS)
 PHP_SUBST(EXTRA_LIBS)
 PHP_SUBST(INCLUDES)
-PHP_SUBST(LEX)
-PHP_SUBST(LEX_OUTPUT_ROOT)
 PHP_SUBST(LFLAGS)
 PHP_SUBST(LDFLAGS)
 PHP_SUBST(SHARED_LIBTOOL)
 PHP_SUBST(LIBTOOL)
 PHP_SUBST(SHELL)
-PHP_SUBST(AWK)
-PHP_SUBST(RE2C)
 
 PHP_GEN_BUILD_DIRS
 PHP_GEN_GLOBAL_MAKEFILE