summaryrefslogtreecommitdiff
path: root/acinclude.m4
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-03-14 05:42:27 +0000
committer <>2013-04-03 16:25:08 +0000
commitc4dd7a1a684490673e25aaf4fabec5df138854c4 (patch)
tree4d57c44caae4480efff02b90b9be86f44bf25409 /acinclude.m4
downloadphp2-c4dd7a1a684490673e25aaf4fabec5df138854c4.tar.gz
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'acinclude.m4')
-rw-r--r--acinclude.m42971
1 files changed, 2971 insertions, 0 deletions
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644
index 0000000..adb9599
--- /dev/null
+++ b/acinclude.m4
@@ -0,0 +1,2971 @@
+dnl
+dnl $Id$
+dnl
+dnl This file contains local autoconf functions.
+dnl
+
+dnl -------------------------------------------------------------------------
+dnl Output stylize macros for configure (help/runtime)
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_HELP_SEPARATOR(title)
+dnl
+dnl Adds separator title into the configure --help display.
+dnl
+AC_DEFUN([PHP_HELP_SEPARATOR],[
+AC_ARG_ENABLE([],[
+$1
+],[])
+])
+
+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
+dnl PHP_DEFINE(WHAT [, value[, directory]])
+dnl
+dnl Creates builddir/include/what.h and in there #define WHAT value
+dnl
+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],[
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ AC_REQUIRE([AC_CANONICAL_TARGET])dnl
+ dnl Make sure we do not continue if host_alias is empty.
+ if test -z "$host_alias" && test -n "$host"; then
+ host_alias=$host
+ fi
+ if test -z "$host_alias"; then
+ AC_MSG_ERROR([host_alias is not set!])
+ fi
+])
+
+dnl
+dnl PHP_INIT_BUILD_SYSTEM
+dnl
+AC_DEFUN([PHP_INIT_BUILD_SYSTEM],[
+AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl
+test -d include || $php_shtool mkdir include
+> Makefile.objects
+> Makefile.fragments
+dnl We need to play tricks here to avoid matching the grep line itself
+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.
+dnl
+AC_DEFUN([PHP_GEN_GLOBAL_MAKEFILE],[
+ cat >Makefile <<EOF
+srcdir = $abs_srcdir
+builddir = $abs_builddir
+top_srcdir = $abs_srcdir
+top_builddir = $abs_builddir
+EOF
+ for i in $PHP_VAR_SUBST; do
+ eval echo "$i = \$$i" >> Makefile
+ done
+
+ cat $abs_srcdir/Makefile.global Makefile.fragments Makefile.objects >> Makefile
+])
+
+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)
+ test -f "$src" && $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
+dnl special-flags which are passed to the compiler. Sources
+dnl can be either written in C or C++ (filenames shall end in .c
+dnl or .cpp, respectively).
+dnl
+dnl Note: If source-path begins with a "/", the "/" is removed and
+dnl the path is interpreted relative to the top build-directory.
+dnl
+dnl which array to append to?
+AC_DEFUN([PHP_ADD_SOURCES],[
+ PHP_ADD_SOURCES_X($1, $2, $3, ifelse($4,sapi,PHP_SAPI_OBJS,PHP_GLOBAL_OBJS))
+])
+
+dnl
+dnl _PHP_ASSIGN_BUILD_VARS(type)
+dnl internal, don't use
+AC_DEFUN([_PHP_ASSIGN_BUILD_VARS],[
+ifelse($1,shared,[
+ b_c_pre=$shared_c_pre
+ b_cxx_pre=$shared_cxx_pre
+ b_c_meta=$shared_c_meta
+ b_cxx_meta=$shared_cxx_meta
+ b_c_post=$shared_c_post
+ b_cxx_post=$shared_cxx_post
+],[
+ b_c_pre=$php_c_pre
+ b_cxx_pre=$php_cxx_pre
+ b_c_meta=$php_c_meta
+ b_cxx_meta=$php_cxx_meta
+ b_c_post=$php_c_post
+ b_cxx_post=$php_cxx_post
+])dnl
+ 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.
+dnl
+dnl Should not be used directly.
+dnl
+AC_DEFUN([PHP_ADD_SOURCES_X],[
+dnl relative to source- or build-directory?
+dnl ac_srcdir/ac_bdir include trailing slash
+ case $1 in
+ ""[)] ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;;
+ /*[)] ac_srcdir=`echo "$1"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;;
+ *[)] ac_srcdir="$abs_srcdir/$1/"; ac_bdir="$1/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;;
+ esac
+
+dnl how to build .. shared or static?
+ ifelse($5,yes,_PHP_ASSIGN_BUILD_VARS(shared),_PHP_ASSIGN_BUILD_VARS(php))
+
+dnl iterate over the sources
+ old_IFS=[$]IFS
+ for ac_src in $2; do
+
+dnl remove the suffix
+ IFS=.
+ set $ac_src
+ ac_obj=[$]1
+ IFS=$old_IFS
+
+dnl append to the array which has been dynamically chosen at m4 time
+ $4="[$]$4 [$]ac_bdir[$]ac_obj.lo"
+
+dnl choose the right compiler/flags/etc. for the source-file
+ case $ac_src in
+ *.c[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;;
+ *.s[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;;
+ *.S[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;;
+ *.cpp|*.cc|*.cxx[)] ac_comp="$b_cxx_pre $3 $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_cxx_post" ;;
+ esac
+
+dnl create a rule for the object/source combo
+ cat >>Makefile.objects<<EOF
+$ac_bdir[$]ac_obj.lo: $ac_srcdir[$]ac_src
+ $ac_comp
+EOF
+ done
+])
+
+dnl -------------------------------------------------------------------------
+dnl Compiler characteristics checks
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_TARGET_RDYNAMIC
+dnl
+dnl Checks whether -rdynamic is supported by the compiler. This
+dnl is necessary for some targets to populate the global symbol
+dnl table. Otherwise, dynamic modules would not be able to resolve
+dnl PHP-related symbols.
+dnl
+dnl If successful, adds -rdynamic to PHP_LDFLAGS.
+dnl
+AC_DEFUN([PHP_TARGET_RDYNAMIC],[
+ if test -n "$GCC"; then
+ dnl we should use a PHP-specific macro here
+ 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
+if test "$PHP_RPATH" = "no"; then
+ ld_runpath_switch=
+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
+ case [$]i in
+ -L/usr/$PHP_LIBDIR|-L/usr/$PHP_LIBDIR/[)] ;;
+ *[)] ac_new_flags="[$]ac_new_flags [$]i" ;;
+ esac
+ done
+ $1=[$]ac_new_flags
+])
+
+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
+dnl notation.
+dnl
+AC_DEFUN([PHP_EVAL_LIBLINE],[
+ for ac_i in $1; do
+ case $ac_i in
+ -pthread[)]
+ if test "$ext_shared" = "yes"; then
+ $2="[$]$2 -pthread"
+ else
+ PHP_RUN_ONCE(EXTRA_LDFLAGS, [$ac_i], [EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ac_i"])
+ fi
+ ;;
+ -l*[)]
+ ac_ii=`echo $ac_i|cut -c 3-`
+ PHP_ADD_LIBRARY($ac_ii,1,$2)
+ ;;
+ -L*[)]
+ ac_ii=`echo $ac_i|cut -c 3-`
+ PHP_ADD_LIBPATH($ac_ii,$2)
+ ;;
+ esac
+ done
+])
+
+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.
+dnl
+AC_DEFUN([PHP_EVAL_INCLINE],[
+ for ac_i in $1; do
+ case $ac_i in
+ -I*[)]
+ ac_ii=`echo $ac_i|cut -c 3-`
+ PHP_ADD_INCLUDE($ac_ii)
+ ;;
+ esac
+ done
+])
+
+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 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" && test "$1" != "/usr/lib"; then
+ PHP_EXPAND_PATH($1, ai_p)
+ ifelse([$2],,[
+ _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
+ ],[
+ if test "$ext_shared" = "yes"; then
+ $2="-L$ai_p [$]$2"
+ test -n "$ld_runpath_switch" && $2="$ld_runpath_switch$ai_p [$]$2"
+ else
+ _PHP_ADD_LIBPATH_GLOBAL([$ai_p])
+ fi
+ ])
+ fi
+])
+
+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
+
+ 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
+
+ if test "$PHP_RPATH" = "no"; then
+ unset PHP_RPATHS
+ unset NATIVE_RPATHS
+ fi
+])
+
+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)
+ ],[
+ 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])
+])
+
+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])
+])
+
+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
+])
+])
+
+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
+ else
+ PHP_ADD_LIBRARY_DEFER_WITH_PATH($1,$2)
+ 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
+ ])
+])
+
+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
+ ])
+])
+
+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_SET_LIBTOOL_VARIABLE(var)
+dnl
+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
+case [$]$1 in
+shared,*[)]
+ $1=`echo "[$]$1"|$SED 's/^shared,//'`
+ ;;
+shared[)]
+ $1=yes
+ ;;
+no[)]
+ ext_output=no
+ ext_shared=no
+ ;;
+*[)]
+ ext_output=yes
+ ext_shared=no
+ ;;
+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])])
+])
+
+dnl
+dnl PHP_ARG_WITH(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_WITH],[
+php_with_[]translit($1,A-Z0-9-,a-z0-9_)=ifelse($4,,no,$4)
+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)
+ ifelse($6,yes,[test "$PHP_ENABLE_ALL" && $5=$PHP_ENABLE_ALL])
+])
+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_enable_[]translit($1,A-Z0-9-,a-z0-9_)=ifelse($4,,no,$4)
+PHP_REAL_ARG_ENABLE([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z0-9-,A-Z0-9_),[ifelse($5,,yes,$5)])
+])
+
+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)
+ ifelse($6,yes,[test "$PHP_ENABLE_ALL" && $5=$PHP_ENABLE_ALL])
+])
+PHP_ARG_ANALYZE($5,[$2],$6)
+])
+
+dnl -------------------------------------------------------------------------
+dnl Build macros
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_BUILD_THREAD_SAFE
+dnl
+AC_DEFUN([PHP_BUILD_THREAD_SAFE],[
+ enable_maintainer_zts=yes
+ if test "$pthreads_working" != "yes"; then
+ AC_MSG_ERROR([ZTS currently requires working POSIX threads. We were unable to verify that your system supports Pthreads.])
+ fi
+])
+
+dnl
+dnl PHP_REQUIRE_CXX
+dnl
+AC_DEFUN([PHP_REQUIRE_CXX],[
+ if test -z "$php_cxx_done"; then
+ AC_PROG_CXX
+ AC_PROG_CXXCPP
+ PHP_ADD_LIBRARY(stdc++)
+ php_cxx_done=yes
+ fi
+])
+
+dnl
+dnl PHP_BUILD_SHARED
+dnl
+AC_DEFUN([PHP_BUILD_SHARED],[
+ PHP_BUILD_PROGRAM
+ OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.la]
+ php_sapi_module=shared
+
+ php_c_pre=$shared_c_pre
+ php_c_meta=$shared_c_meta
+ php_c_post=$shared_c_post
+ php_cxx_pre=$shared_cxx_pre
+ php_cxx_meta=$shared_cxx_meta
+ php_cxx_post=$shared_cxx_post
+ php_lo=$shared_lo
+])
+
+dnl
+dnl PHP_BUILD_STATIC
+dnl
+AC_DEFUN([PHP_BUILD_STATIC],[
+ PHP_BUILD_PROGRAM
+ OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.la]
+ php_sapi_module=static
+])
+
+dnl
+dnl PHP_BUILD_BUNDLE
+dnl
+AC_DEFUN([PHP_BUILD_BUNDLE],[
+ PHP_BUILD_PROGRAM
+ OVERALL_TARGET=libs/libphp[]$PHP_MAJOR_VERSION[.bundle]
+ php_sapi_module=static
+])
+
+dnl
+dnl PHP_BUILD_PROGRAM
+dnl
+AC_DEFUN([PHP_BUILD_PROGRAM],[
+ php_c_pre='$(LIBTOOL) --mode=compile $(CC)'
+ php_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)'
+ php_c_post=
+ php_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)'
+ php_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS)'
+ php_cxx_post=
+ php_lo=lo
+
+ case $with_pic in
+ yes) pic_setting='-prefer-pic';;
+ no) pic_setting='-prefer-non-pic';;
+ esac
+
+ shared_c_pre='$(LIBTOOL) --mode=compile $(CC)'
+ shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) '$pic_setting
+ shared_c_post=
+ shared_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)'
+ shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) '$pic_setting
+ shared_cxx_post=
+ shared_lo=lo
+])
+
+dnl
+dnl PHP_SHARED_MODULE(module-name, object-var, build-dir, cxx, zend_ext)
+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
+ *aix*[)]
+ suffix=so
+ link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -Wl,-G -o '$3'/$1.la -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD) && mv -f '$3'/.libs/$1.so '$3'/$1.so'
+ ;;
+ *netware*[)]
+ suffix=nlm
+ link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -shared -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) ifelse($1, php5lib, , -L$(top_builddir)/netware -lphp5lib) $(translit(ifelse($1, php5lib, $1, m4_substr($1, 3)),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
+
+ if test "x$5" = "xyes"; then
+ PHP_ZEND_EX="$PHP_ZEND_EX \$(phplibdir)/$1.$suffix"
+ else
+ PHP_MODULES="$PHP_MODULES \$(phplibdir)/$1.$suffix"
+ fi
+ 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, bundle, program)
+dnl and optionally also the source-files for the SAPI-specific
+dnl objects.
+dnl
+AC_DEFUN([PHP_SELECT_SAPI],[
+ if test "$2" = "program"; then
+ PHP_BINARIES="$PHP_BINARIES $1"
+ elif test "$PHP_SAPI" != "none"; then
+ AC_MSG_ERROR([
++--------------------------------------------------------------------+
+| *** ATTENTION *** |
+| |
+| You've configured multiple SAPIs to be build. You can build only |
+| one SAPI module plus CGI, CLI and FPM binaries at the same time. |
++--------------------------------------------------------------------+
+])
+ else
+ PHP_SAPI=$1
+ fi
+
+ PHP_ADD_BUILD_DIR([sapi/$1])
+
+ PHP_INSTALLED_SAPIS="$PHP_INSTALLED_SAPIS $1"
+
+ ifelse($2,program,[
+ PHP_BUILD_PROGRAM
+ install_binaries="install-binaries"
+ install_binary_targets="$install_binary_targets install-$1"
+ PHP_SUBST(PHP_[]translit($1,a-z0-9-,A-Z0-9_)[]_OBJS)
+ ifelse($3,,,[PHP_ADD_SOURCES_X([sapi/$1],[$3],[$4],PHP_[]translit($1,a-z0-9-,A-Z0-9_)[]_OBJS)])
+ ],[
+ case "$2" in
+ static[)] PHP_BUILD_STATIC;;
+ shared[)] PHP_BUILD_SHARED;;
+ bundle[)] PHP_BUILD_BUNDLE;;
+ esac
+ install_sapi="install-sapi"
+ 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],[
+ ifelse($2,,[
+ BUILD_DIR="$BUILD_DIR $1"
+ ], [
+ $php_shtool mkdir -p $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 [, zend_ext]]]]])
+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
+dnl @ext_srcdir@ and @ext_builddir@ being substituted.
+dnl "cxx" can be used to indicate that a C++ shared module is desired.
+dnl "zend_ext" indicates a zend extension.
+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|$SED s#@ext_builddir@#$ext_builddir#g`])
+
+ if test "$3" != "shared" && test "$3" != "yes" && test "$4" != "cli"; then
+dnl ---------------------------------------------- Static module
+ [PHP_]translit($1,a-z_-,A-Z__)[_SHARED]=no
+ 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_]translit($1,a-z_-,A-Z__)[_SHARED]=yes
+ PHP_ADD_SOURCES_X(PHP_EXT_DIR($1),$2,$ac_extra,shared_objects_$1,yes)
+ case $host_alias in
+ *netware*[)]
+ PHP_SHARED_MODULE(php$1,shared_objects_$1, $ext_builddir, $6, $7)
+ ;;
+ *[)]
+ PHP_SHARED_MODULE($1,shared_objects_$1, $ext_builddir, $6, $7)
+ ;;
+ esac
+ 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
+ [PHP_]translit($1,a-z_-,A-Z__)[_SHARED]=no
+ case "$PHP_SAPI" in
+ cgi|embed[)]
+ PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,)
+ EXT_STATIC="$EXT_STATIC $1"
+ ;;
+ *[)]
+ PHP_ADD_SOURCES(PHP_EXT_DIR($1),$2,$ac_extra,cli)
+ ;;
+ esac
+ EXT_CLI_STATIC="$EXT_CLI_STATIC $1"
+ fi
+ PHP_ADD_BUILD_DIR($ext_builddir)
+
+dnl Set for phpize builds only
+dnl ---------------------------
+ if test "$ext_builddir" = "."; then
+ PHP_PECL_EXTENSION=$1
+ PHP_SUBST(PHP_PECL_EXTENSION)
+ fi
+])
+
+dnl
+dnl PHP_WITH_SHARED
+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_ADD_EXTENSION_DEP(extname, depends [, depconf])
+dnl
+dnl This macro 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 To be effective, this macro must be invoked *after* PHP_NEW_EXTENSION.
+dnl The extension on which it depends must also have been configured.
+dnl See ADD_EXTENSION_DEP in win32 build
+dnl
+AC_DEFUN([PHP_ADD_EXTENSION_DEP], [
+ am_i_shared=$[PHP_]translit($1,a-z_-,A-Z__)[_SHARED]
+ is_it_shared=$[PHP_]translit($2,a-z_-,A-Z__)[_SHARED]
+ is_it_enabled=$[PHP_]translit($2,a-z_-,A-Z__)
+ if test "$am_i_shared" = "no" && test "$is_it_shared" = "yes" ; then
+ AC_MSG_ERROR([
+You've configured extension $1 to build statically, but it
+depends on extension $2, which you've configured to build shared.
+You either need to build $1 shared or build $2 statically for the
+build to be successful.
+])
+ fi
+ if test "x$is_it_enabled" = "xno" && test "x$3" != "xtrue"; then
+ AC_MSG_ERROR([
+You've configured extension $1, which depends on extension $2,
+but you've either not enabled $2, or have disabled it.
+])
+ fi
+ dnl Some systems require that we link $2 to $1 when building
+])
+
+dnl -------------------------------------------------------------------------
+dnl Checks for structures, typedefs, broken functions, etc.
+dnl -------------------------------------------------------------------------
+
+dnl Internal helper macros
+dnl
+dnl _PHP_DEF_HAVE_FILE(what, filename)
+AC_DEFUN([_PHP_DEF_HAVE_FILE], [
+ php_def_have_what=HAVE_[]`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz-' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_' `
+ echo "#define $php_def_have_what 1" >> $2
+])
+dnl
+dnl _PHP_CHECK_SIZEOF(type, cross-value, extra-headers [, found-action [, not-found-action]])
+dnl
+AC_DEFUN([_PHP_CHECK_SIZEOF], [
+ php_cache_value=php_cv_sizeof_[]$1
+ AC_CACHE_VAL(php_cv_sizeof_[]$1, [
+ old_LIBS=$LIBS
+ LIBS=
+ old_LDFLAGS=$LDFLAGS
+ LDFLAGS=
+ AC_TRY_RUN([#include <stdio.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+$3
+
+int main()
+{
+ FILE *fp = fopen("conftestval", "w");
+ if (!fp) return(1);
+ fprintf(fp, "%d\n", sizeof($1));
+ return(0);
+}
+ ], [
+ eval $php_cache_value=`cat conftestval`
+ ], [
+ eval $php_cache_value=0
+ ], [
+ ifelse([$2],,[eval $php_cache_value=0], [eval $php_cache_value=$2])
+])
+ LDFLAGS=$old_LDFLAGS
+ LIBS=$old_LIBS
+])
+ if eval test "\$$php_cache_value" != "0"; then
+ifelse([$4],[],:,[$4])
+ifelse([$5],[],,[else $5])
+ fi
+])
+
+dnl
+dnl PHP_CHECK_SIZEOF(type, cross-value, extra-headers)
+dnl
+AC_DEFUN([PHP_CHECK_SIZEOF], [
+ AC_MSG_CHECKING([size of $1])
+ _PHP_CHECK_SIZEOF($1, $2, $3, [
+ AC_DEFINE_UNQUOTED([SIZEOF_]translit($1,a-z,A-Z_), [$]php_cv_sizeof_[]$1, [Size of $1])
+ AC_DEFINE_UNQUOTED([HAVE_]translit($1,a-z,A-Z_), 1, [Whether $1 is available])
+ ])
+ AC_MSG_RESULT([[$][php_cv_sizeof_]translit($1, ,_)])
+])
+
+dnl
+dnl PHP_CHECK_TYPES(type-list, include-file [, extra-headers])
+dnl
+AC_DEFUN([PHP_CHECK_TYPES], [
+ for php_typename in $1; do
+ AC_MSG_CHECKING([whether $php_typename exists])
+ _PHP_CHECK_SIZEOF($php_typename, 0, $3, [
+ _PHP_DEF_HAVE_FILE($php_typename, $2)
+ AC_MSG_RESULT([yes])
+ ], [
+ AC_MSG_RESULT([no])
+ ])
+ done
+])
+
+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_TIME_R_TYPE
+dnl
+dnl Check type of reentrant time-related functions
+dnl Type can be: irix, hpux or POSIX
+dnl
+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
+ ])
+],[
+ 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_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 PHP_PWRITE_TEST
+dnl
+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
+ ])
+
+ 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_PREAD_TEST
+dnl
+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
+ ])
+
+ 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_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
+
+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_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 PHP_STRUCT_FLOCK
+dnl
+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_SOCKLEN_T
+dnl
+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
+dnl PHP_MISSING_FCLOSE_DECL
+dnl
+dnl See if we have broken header files like SunOS has.
+dnl
+AC_DEFUN([PHP_MISSING_FCLOSE_DECL],[
+ AC_MSG_CHECKING([for fclose declaration])
+ AC_TRY_COMPILE([#include <stdio.h>],[int (*func)() = fclose],[
+ AC_DEFINE(MISSING_FCLOSE_DECL,0,[ ])
+ AC_MSG_RESULT([ok])
+ ],[
+ AC_DEFINE(MISSING_FCLOSE_DECL,1,[ ])
+ AC_MSG_RESULT([missing])
+ ])
+])
+
+dnl
+dnl PHP_AC_BROKEN_SPRINTF
+dnl
+dnl Check for broken sprintf(), C99 conformance
+dnl
+AC_DEFUN([PHP_AC_BROKEN_SPRINTF],[
+ AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[
+ AC_TRY_RUN([main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }],[
+ ac_cv_broken_sprintf=no
+ ],[
+ ac_cv_broken_sprintf=yes
+ ],[
+ ac_cv_broken_sprintf=no
+ ])
+ ])
+ if test "$ac_cv_broken_sprintf" = "yes"; then
+ AC_DEFINE(PHP_BROKEN_SPRINTF, 1, [Whether sprintf is C99 conform])
+ else
+ AC_DEFINE(PHP_BROKEN_SPRINTF, 0, [Whether sprintf is C99 conform])
+ fi
+])
+
+dnl
+dnl PHP_AC_BROKEN_SNPRINTF
+dnl
+dnl Check for broken snprintf(), C99 conformance
+dnl
+AC_DEFUN([PHP_AC_BROKEN_SNPRINTF],[
+ AC_CACHE_CHECK(whether snprintf is broken, ac_cv_broken_snprintf,[
+ AC_TRY_RUN([
+#define NULL (0L)
+main() {
+ char buf[20];
+ int res = 0;
+ res = res || (snprintf(buf, 2, "marcus") != 6);
+ res = res || (buf[1] != '\0');
+ /* Implementations may consider this as an encoding error */
+ snprintf(buf, 0, "boerger");
+ /* However, they MUST ignore the pointer */
+ res = res || (buf[0] != 'm');
+ res = res || (snprintf(NULL, 0, "boerger") != 7);
+ res = res || (snprintf(buf, sizeof(buf), "%f", 0.12345678) != 8);
+ exit(res);
+}
+ ],[
+ ac_cv_broken_snprintf=no
+ ],[
+ ac_cv_broken_snprintf=yes
+ ],[
+ ac_cv_broken_snprintf=no
+ ])
+ ])
+ if test "$ac_cv_broken_snprintf" = "yes"; then
+ AC_DEFINE(PHP_BROKEN_SNPRINTF, 1, [Whether snprintf is C99 conform])
+ else
+ AC_DEFINE(PHP_BROKEN_SNPRINTF, 0, [Whether snprintf is C99 conform])
+ fi
+])
+
+dnl
+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.
+dnl
+dnl Must be run after all --with-NN options that let the user
+dnl choose dynamic extensions, and after the gcc test.
+dnl
+AC_DEFUN([PHP_SOLARIS_PIC_WEIRDNESS],[
+ AC_MSG_CHECKING([whether -fPIC is required])
+ if test -n "$EXT_SHARED"; then
+ os=`uname -sr 2>/dev/null`
+ case $os in
+ "SunOS 5.6"|"SunOS 5.7"[)]
+ case $CC in
+ gcc*|egcs*)
+ CFLAGS="$CFLAGS -fPIC";;
+ *[)]
+ CFLAGS="$CFLAGS -fpic";;
+ esac
+ AC_MSG_RESULT([yes]);;
+ *[)]
+ AC_MSG_RESULT([no]);;
+ esac
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+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
+ # one of the CPPFLAGS, LDFLAGS, or LIBS variables.
+ AC_MSG_CHECKING([whether large file support needs explicit enabling])
+ ac_getconfs=''
+ ac_result=yes
+ ac_set=''
+ ac_shellvars='CPPFLAGS LDFLAGS LIBS'
+ for ac_shellvar in $ac_shellvars; do
+ case $ac_shellvar in
+ CPPFLAGS[)] ac_lfsvar=LFS_CFLAGS ;;
+ *[)] ac_lfsvar=LFS_$ac_shellvar ;;
+ esac
+ eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar
+ (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; }
+ ac_getconf=`getconf $ac_lfsvar`
+ ac_getconfs=$ac_getconfs$ac_getconf
+ eval ac_test_$ac_shellvar=\$ac_getconf
+ done
+ case "$ac_result$ac_getconfs" in
+ yes[)] ac_result=no ;;
+ esac
+ case "$ac_result$ac_set" in
+ yes?*[)] ac_result="yes, but $ac_set is already set, so use its settings"
+ esac
+ AC_MSG_RESULT([$ac_result])
+ case $ac_result in
+ yes[)]
+ for ac_shellvar in $ac_shellvars; do
+ eval $ac_shellvar=\$ac_test_$ac_shellvar
+ done ;;
+ esac
+])
+
+dnl
+dnl PHP_SOCKADDR_CHECKS
+dnl
+AC_DEFUN([PHP_SOCKADDR_CHECKS], [
+ dnl Check for struct sockaddr_storage exists
+ AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_sockaddr_storage,
+ [AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>],
+ [struct sockaddr_storage s; s],
+ [ac_cv_sockaddr_storage=yes], [ac_cv_sockaddr_storage=no])
+ ])
+ if test "$ac_cv_sockaddr_storage" = "yes"; then
+ AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [Whether you have struct sockaddr_storage])
+ fi
+ dnl Check if field sa_len exists in struct sockaddr
+ AC_CACHE_CHECK([for field sa_len in struct sockaddr],ac_cv_sockaddr_sa_len,[
+ AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>],
+ [static struct sockaddr sa; int n = (int) sa.sa_len; return n;],
+ [ac_cv_sockaddr_sa_len=yes], [ac_cv_sockaddr_sa_len=no])
+ ])
+ if test "$ac_cv_sockaddr_sa_len" = "yes"; then
+ AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Whether struct sockaddr has field sa_len])
+ fi
+])
+
+dnl
+dnl PHP_DECLARED_TIMEZONE
+dnl
+AC_DEFUN([PHP_DECLARED_TIMEZONE],[
+ AC_CACHE_CHECK(for declared timezone, ac_cv_declared_timezone,[
+ AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <time.h>
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+],[
+ time_t foo = (time_t) timezone;
+],[
+ ac_cv_declared_timezone=yes
+],[
+ ac_cv_declared_timezone=no
+])])
+ if test "$ac_cv_declared_timezone" = "yes"; then
+ AC_DEFINE(HAVE_DECLARED_TIMEZONE, 1, [Whether system headers declare timezone])
+ fi
+])
+
+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) {
+ return (unsigned char)'A' != (unsigned char)0xC1;
+}
+],[
+ ac_cv_ebcdic=yes
+],[
+ ac_cv_ebcdic=no
+],[
+ ac_cv_ebcdic=no
+])])
+ if test "$ac_cv_ebcdic" = "yes"; then
+ AC_DEFINE(CHARSET_EBCDIC,1, [Define if system uses EBCDIC])
+ 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`
+ case $os in
+ SunOS*[)]
+ AC_DEFINE(HAVE_BROKEN_GETCWD,1, [Define if system has broken getcwd])
+ AC_MSG_RESULT([yes]);;
+ *[)]
+ AC_MSG_RESULT([no]);;
+ esac
+])
+
+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(_cv_have_broken_glibc_fopen_append,[
+ AC_TRY_RUN([
+#include <stdio.h>
+int main(int argc, char *argv[])
+{
+ FILE *fp;
+ long position;
+ char *filename = "/tmp/phpglibccheck";
+
+ fp = fopen(filename, "w");
+ if (fp == NULL) {
+ perror("fopen");
+ exit(2);
+ }
+ fputs("foobar", fp);
+ fclose(fp);
+
+ fp = fopen(filename, "a+");
+ position = ftell(fp);
+ fclose(fp);
+ unlink(filename);
+ if (position == 0)
+ return 1;
+ return 0;
+}
+],
+[_cv_have_broken_glibc_fopen_append=no],
+[_cv_have_broken_glibc_fopen_append=yes ],
+AC_TRY_COMPILE([
+#include <features.h>
+],[
+#if !__GLIBC_PREREQ(2,2)
+choke me
+#endif
+],
+[_cv_have_broken_glibc_fopen_append=yes],
+[_cv_have_broken_glibc_fopen_append=no ])
+)])
+
+ if test "$_cv_have_broken_glibc_fopen_append" = "yes"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_BROKEN_GLIBC_FOPEN_APPEND,1, [Define if your glibc borks on fopen with mode a+])
+ else
+ AC_MSG_RESULT(no)
+ fi
+])
+
+dnl
+dnl PHP_FOPENCOOKIE
+dnl
+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
+
+dnl even newer glibcs have a different seeker definition...
+AC_TRY_RUN([
+#define _GNU_SOURCE
+#include <stdio.h>
+
+struct cookiedata {
+ __off64_t pos;
+};
+
+__ssize_t reader(void *cookie, char *buffer, size_t size)
+{ return size; }
+__ssize_t writer(void *cookie, const char *buffer, size_t size)
+{ return size; }
+int closer(void *cookie)
+{ return 0; }
+int seeker(void *cookie, __off64_t *position, int whence)
+{ ((struct cookiedata*)cookie)->pos = *position; return 0; }
+
+cookie_io_functions_t funcs = {reader, writer, seeker, closer};
+
+main() {
+ struct cookiedata g = { 0 };
+ FILE *fp = fopencookie(&g, "r", funcs);
+
+ if (fp && fseek(fp, 8192, SEEK_SET) == 0 && g.pos == 8192)
+ exit(0);
+ exit(1);
+}
+
+], [
+ cookie_io_functions_use_off64_t=yes
+], [
+ cookie_io_functions_use_off64_t=no
+], [
+ cookie_io_functions_use_off64_t=no
+])
+
+ 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_NAMES
+dnl
+dnl Determines link library suffix SHLIB_SUFFIX_NAME
+dnl which can be: .so, .sl or .dylib
+dnl
+dnl Determines shared library suffix SHLIB_DL_SUFFIX_NAME
+dnl suffix can be: .so or .sl
+dnl
+AC_DEFUN([PHP_SHLIB_SUFFIX_NAMES],[
+ AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl
+ PHP_SUBST_OLD(SHLIB_SUFFIX_NAME)
+ PHP_SUBST_OLD(SHLIB_DL_SUFFIX_NAME)
+ SHLIB_SUFFIX_NAME=so
+ SHLIB_DL_SUFFIX_NAME=$SHLIB_SUFFIX_NAME
+ case $host_alias in
+ *hpux*[)]
+ SHLIB_SUFFIX_NAME=sl
+ SHLIB_DL_SUFFIX_NAME=sl
+ ;;
+ *darwin*[)]
+ SHLIB_SUFFIX_NAME=dylib
+ SHLIB_DL_SUFFIX_NAME=so
+ ;;
+ 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, 4)
+ 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)
+ 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
+ AC_MSG_RESULT([no])
+ 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
+ LIBZEND_BISON_CHECK
+ PHP_SUBST(YACC)
+])
+
+dnl
+dnl PHP_PROG_LEX
+dnl
+dnl Search for (f)lex and check it's version
+dnl
+AC_DEFUN([PHP_PROG_LEX], [
+dnl we only support certain flex versions
+ flex_version_list="2.5.4"
+
+ AC_PROG_LEX
+ if test "$LEX" = "flex"; then
+dnl AC_DECL_YYTEXT is obsolete since autoconf 2.50 and merged into AC_PROG_LEX
+dnl this is what causes that annoying "PHP_PROG_LEX is expanded from" warning with autoconf 2.50+
+dnl it should be removed once we drop support of autoconf 2.13 (if ever)
+ 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
+
+ if test "$LEX" = "flex"; then
+ AC_CACHE_CHECK([for flex version], php_cv_flex_version, [
+ flex_version=`$LEX -V -v --version 2>/dev/null | $SED -e 's/^.* //'`
+ php_cv_flex_version=invalid
+ for flex_check_version in $flex_version_list; do
+ if test "$flex_version" = "$flex_check_version"; then
+ php_cv_flex_version="$flex_check_version (ok)"
+ fi
+ done
+ ])
+ else
+ flex_version=none
+ fi
+
+ case $php_cv_flex_version in
+ ""|invalid[)]
+ if test -f "$abs_srcdir/Zend/zend_language_scanner.c" && test -f "$abs_srcdir/Zend/zend_ini_scanner.c"; then
+ AC_MSG_WARN([flex versions supported for regeneration of the Zend/PHP parsers: $flex_version_list (found: $flex_version)])
+ else
+ flex_msg="Supported flex versions are: $flex_version_list"
+ if test "$flex_version" = "none"; then
+ flex_msg="flex not found. flex is required to generate the Zend/PHP parsers! $flex_msg"
+ else
+ flex_msg="Found invalid flex version: $flex_version. $flex_msg"
+ fi
+ AC_MSG_ERROR([$flex_msg])
+ fi
+ LEX="exit 0;"
+ ;;
+ esac
+ PHP_SUBST(LEX)
+])
+
+dnl
+dnl PHP_PROG_RE2C
+dnl
+dnl Search for the re2c binary and check the version
+dnl
+AC_DEFUN([PHP_PROG_RE2C],[
+ AC_CHECK_PROG(RE2C, re2c, re2c)
+ if test -n "$RE2C"; then
+ AC_CACHE_CHECK([for re2c version], php_cv_re2c_version, [
+ re2c_vernum=`$RE2C --vernum 2>/dev/null`
+ if test -z "$re2c_vernum" || test "$re2c_vernum" -lt "1304"; then
+ php_cv_re2c_version=invalid
+ else
+ php_cv_re2c_version="`$RE2C --version | cut -d ' ' -f 2 2>/dev/null` (ok)"
+ fi
+ ])
+ fi
+ case $php_cv_re2c_version in
+ ""|invalid[)]
+ AC_MSG_WARN([You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.])
+ RE2C="exit 0;"
+ ;;
+ esac
+ PHP_SUBST(RE2C)
+])
+
+dnl -------------------------------------------------------------------------
+dnl Common setup macros: PHP_SETUP_<what>
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_SETUP_ICU([shared-add])
+dnl
+dnl Common setup macro for ICU
+dnl
+AC_DEFUN([PHP_SETUP_ICU],[
+ PHP_ARG_WITH(icu-dir,,
+ [ --with-icu-dir=DIR Specify where ICU libraries and headers can be found], DEFAULT, no)
+
+ if test "$PHP_ICU_DIR" = "no"; then
+ PHP_ICU_DIR=DEFAULT
+ fi
+
+ if test "$PHP_ICU_DIR" = "DEFAULT"; then
+ dnl Try to find icu-config
+ AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin])
+ else
+ ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config"
+ fi
+
+ AC_MSG_CHECKING([for location of ICU headers and libraries])
+
+ dnl Trust icu-config to know better what the install prefix is..
+ icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null`
+ if test "$?" != "0" || test -z "$icu_install_prefix"; then
+ AC_MSG_RESULT([not found])
+ AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.])
+ else
+ AC_MSG_RESULT([$icu_install_prefix])
+
+ dnl Check ICU version
+ AC_MSG_CHECKING([for ICU 3.4 or greater])
+ icu_version_full=`$ICU_CONFIG --version`
+ ac_IFS=$IFS
+ IFS="."
+ set $icu_version_full
+ IFS=$ac_IFS
+ icu_version=`expr [$]1 \* 1000 + [$]2`
+ AC_MSG_RESULT([found $icu_version_full])
+
+ if test "$icu_version" -lt "3004"; then
+ AC_MSG_ERROR([ICU version 3.4 or later is required])
+ fi
+
+ ICU_VERSION=$icu_version
+ ICU_INCS=`$ICU_CONFIG --cppflags-searchpath`
+ ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio`
+ PHP_EVAL_INCLINE($ICU_INCS)
+ PHP_EVAL_LIBLINE($ICU_LIBS, $1)
+ fi
+])
+
+dnl
+dnl PHP_SETUP_KERBEROS(shared-add [, action-found [, action-not-found]])
+dnl
+dnl Common setup macro for kerberos
+dnl
+AC_DEFUN([PHP_SETUP_KERBEROS],[
+ found_kerberos=no
+ unset KERBEROS_CFLAGS
+ unset KERBEROS_LIBS
+
+ dnl First try to find krb5-config
+ if test -z "$KRB5_CONFIG"; then
+ AC_PATH_PROG(KRB5_CONFIG, krb5-config, no, [$PATH:/usr/kerberos/bin:/usr/local/bin])
+ fi
+
+ dnl If krb5-config is found try using it
+ if test "$PHP_KERBEROS" = "yes" && test -x "$KRB5_CONFIG"; then
+ KERBEROS_LIBS=`$KRB5_CONFIG --libs gssapi`
+ KERBEROS_CFLAGS=`$KRB5_CONFIG --cflags gssapi`
+
+ if test -n "$KERBEROS_LIBS"; then
+ found_kerberos=yes
+ PHP_EVAL_LIBLINE($KERBEROS_LIBS, $1)
+ PHP_EVAL_INCLINE($KERBEROS_CFLAGS)
+ fi
+ fi
+
+ dnl If still not found use old skool method
+ if test "$found_kerberos" = "no"; then
+
+ if test "$PHP_KERBEROS" = "yes"; then
+ PHP_KERBEROS="/usr/kerberos /usr/local /usr"
+ fi
+
+ for i in $PHP_KERBEROS; do
+ if test -f $i/$PHP_LIBDIR/libkrb5.a || test -f $i/$PHP_LIBDIR/libkrb5.$SHLIB_SUFFIX_NAME; then
+ PHP_KERBEROS_DIR=$i
+ break
+ fi
+ done
+
+ if test "$PHP_KERBEROS_DIR"; then
+ found_kerberos=yes
+ PHP_ADD_LIBPATH($PHP_KERBEROS_DIR/$PHP_LIBDIR, $1)
+ PHP_ADD_LIBRARY(gssapi_krb5, 1, $1)
+ PHP_ADD_LIBRARY(krb5, 1, $1)
+ PHP_ADD_LIBRARY(k5crypto, 1, $1)
+ PHP_ADD_LIBRARY(com_err, 1, $1)
+ PHP_ADD_INCLUDE($PHP_KERBEROS_DIR/include)
+ fi
+ fi
+
+ if test "$found_kerberos" = "yes"; then
+ifelse([$2],[],:,[$2])
+ifelse([$3],[],,[else $3])
+ fi
+])
+
+dnl
+dnl PHP_SETUP_OPENSSL(shared-add [, action-found [, action-not-found]])
+dnl
+dnl Common setup macro for openssl
+dnl
+AC_DEFUN([PHP_SETUP_OPENSSL],[
+ found_openssl=no
+ unset OPENSSL_INCDIR
+ unset OPENSSL_LIBDIR
+
+ dnl Empty variable means 'no'
+ test -z "$PHP_OPENSSL" && PHP_OPENSSL=no
+ test -z "$PHP_IMAP_SSL" && PHP_IMAP_SSL=no
+
+ dnl Fallbacks for different configure options
+ if test "$PHP_OPENSSL" != "no"; then
+ PHP_OPENSSL_DIR=$PHP_OPENSSL
+ elif test "$PHP_IMAP_SSL" != "no"; then
+ PHP_OPENSSL_DIR=$PHP_IMAP_SSL
+ fi
+
+ dnl First try to find pkg-config
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+
+ dnl If pkg-config is found try using it
+ if test "$PHP_OPENSSL_DIR" = "yes" && test -x "$PKG_CONFIG" && $PKG_CONFIG --exists openssl; then
+ if $PKG_CONFIG --atleast-version=0.9.6 openssl; then
+ found_openssl=yes
+ OPENSSL_LIBS=`$PKG_CONFIG --libs openssl`
+ OPENSSL_INCS=`$PKG_CONFIG --cflags-only-I openssl`
+ OPENSSL_INCDIR=`$PKG_CONFIG --variable=includedir openssl`
+ else
+ AC_MSG_ERROR([OpenSSL version 0.9.6 or greater required.])
+ fi
+
+ if test -n "$OPENSSL_LIBS" && test -n "$OPENSSL_INCS"; then
+ PHP_EVAL_LIBLINE($OPENSSL_LIBS, $1)
+ PHP_EVAL_INCLINE($OPENSSL_INCS)
+ fi
+ fi
+
+ dnl If pkg-config fails for some reason, revert to the old method
+ if test "$found_openssl" = "no"; then
+
+ if test "$PHP_OPENSSL_DIR" = "yes"; then
+ PHP_OPENSSL_DIR="/usr/local/ssl /usr/local /usr /usr/local/openssl"
+ fi
+
+ for i in $PHP_OPENSSL_DIR; do
+ if test -r $i/include/openssl/evp.h; then
+ OPENSSL_INCDIR=$i/include
+ fi
+ if test -r $i/$PHP_LIBDIR/libssl.a -o -r $i/$PHP_LIBDIR/libssl.$SHLIB_SUFFIX_NAME; then
+ OPENSSL_LIBDIR=$i/$PHP_LIBDIR
+ fi
+ test -n "$OPENSSL_INCDIR" && test -n "$OPENSSL_LIBDIR" && break
+ done
+
+ if test -z "$OPENSSL_INCDIR"; then
+ AC_MSG_ERROR([Cannot find OpenSSL's <evp.h>])
+ fi
+
+ if test -z "$OPENSSL_LIBDIR"; then
+ AC_MSG_ERROR([Cannot find OpenSSL's libraries])
+ fi
+
+ old_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS=-I$OPENSSL_INCDIR
+ AC_MSG_CHECKING([for OpenSSL version])
+ AC_EGREP_CPP(yes,[
+#include <openssl/opensslv.h>
+#if OPENSSL_VERSION_NUMBER >= 0x0090600fL
+ yes
+#endif
+ ],[
+ AC_MSG_RESULT([>= 0.9.6])
+ ],[
+ AC_MSG_ERROR([OpenSSL version 0.9.6 or greater required.])
+ ])
+ CPPFLAGS=$old_CPPFLAGS
+
+ PHP_ADD_INCLUDE($OPENSSL_INCDIR)
+
+ PHP_CHECK_LIBRARY(crypto, CRYPTO_free, [
+ PHP_ADD_LIBRARY(crypto,,$1)
+ ],[
+ AC_MSG_ERROR([libcrypto not found!])
+ ],[
+ -L$OPENSSL_LIBDIR
+ ])
+
+ old_LIBS=$LIBS
+ LIBS="$LIBS -lcrypto"
+ PHP_CHECK_LIBRARY(ssl, SSL_CTX_set_ssl_version, [
+ found_openssl=yes
+ ],[
+ AC_MSG_ERROR([libssl not found!])
+ ],[
+ -L$OPENSSL_LIBDIR
+ ])
+ LIBS=$old_LIBS
+ PHP_ADD_LIBRARY(ssl,,$1)
+ PHP_ADD_LIBRARY(crypto,,$1)
+
+ PHP_ADD_LIBPATH($OPENSSL_LIBDIR, $1)
+ fi
+
+ if test "$found_openssl" = "yes"; then
+ dnl For apache 1.3.x static build
+ OPENSSL_INCDIR_OPT=-I$OPENSSL_INCDIR
+ AC_SUBST(OPENSSL_INCDIR_OPT)
+
+ifelse([$2],[],:,[$2])
+ifelse([$3],[],,[else $3])
+ fi
+])
+
+dnl
+dnl PHP_SETUP_ICONV(shared-add [, action-found [, action-not-found]])
+dnl
+dnl Common setup macro for iconv
+dnl
+AC_DEFUN([PHP_SETUP_ICONV], [
+ found_iconv=no
+ unset ICONV_DIR
+
+ # Create the directories for a VPATH build:
+ $php_shtool mkdir -p ext/iconv
+
+ echo > ext/iconv/php_have_bsd_iconv.h
+ echo > ext/iconv/php_have_ibm_iconv.h
+ echo > ext/iconv/php_have_glibc_iconv.h
+ echo > ext/iconv/php_have_libiconv.h
+ echo > ext/iconv/php_have_iconv.h
+ echo > ext/iconv/php_php_iconv_impl.h
+ echo > ext/iconv/php_iconv_aliased_libiconv.h
+ echo > ext/iconv/php_php_iconv_h_path.h
+ echo > ext/iconv/php_iconv_supports_errno.h
+
+ dnl
+ dnl Check libc first if no path is provided in --with-iconv
+ dnl
+
+ if test "$PHP_ICONV" = "yes"; then
+ dnl Reset LIBS temporarily as it may have already been included
+ dnl -liconv in.
+ LIBS_save="$LIBS"
+ LIBS=
+ AC_CHECK_FUNC(iconv, [
+ found_iconv=yes
+ ],[
+ AC_CHECK_FUNC(libiconv,[
+ PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv])
+ AC_DEFINE(HAVE_LIBICONV, 1, [ ])
+ found_iconv=yes
+ ])
+ ])
+ LIBS="$LIBS_save"
+ fi
+
+ dnl
+ dnl Check external libs for iconv funcs
+ dnl
+ if test "$found_iconv" = "no"; then
+
+ for i in $PHP_ICONV /usr/local /usr; do
+ if test -r $i/include/giconv.h; then
+ AC_DEFINE(HAVE_GICONV_H, 1, [ ])
+ ICONV_DIR=$i
+ iconv_lib_name=giconv
+ break
+ elif test -r $i/include/iconv.h; then
+ ICONV_DIR=$i
+ iconv_lib_name=iconv
+ break
+ fi
+ done
+
+ if test -z "$ICONV_DIR"; then
+ AC_MSG_ERROR([Please specify the install prefix of iconv with --with-iconv=<DIR>])
+ fi
+
+ if test -f $ICONV_DIR/$PHP_LIBDIR/lib$iconv_lib_name.a ||
+ test -f $ICONV_DIR/$PHP_LIBDIR/lib$iconv_lib_name.$SHLIB_SUFFIX_NAME
+ then
+ PHP_CHECK_LIBRARY($iconv_lib_name, libiconv, [
+ found_iconv=yes
+ PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv])
+ AC_DEFINE(HAVE_LIBICONV,1,[ ])
+ PHP_DEFINE([ICONV_ALIASED_LIBICONV],1,[ext/iconv])
+ AC_DEFINE([ICONV_ALIASED_LIBICONV],1,[iconv() is aliased to libiconv() in -liconv])
+ ], [
+ PHP_CHECK_LIBRARY($iconv_lib_name, iconv, [
+ found_iconv=yes
+ ], [], [
+ -L$ICONV_DIR/$PHP_LIBDIR
+ ])
+ ], [
+ -L$ICONV_DIR/$PHP_LIBDIR
+ ])
+ fi
+ fi
+
+ if test "$found_iconv" = "yes"; then
+ PHP_DEFINE(HAVE_ICONV,1,[ext/iconv])
+ AC_DEFINE(HAVE_ICONV,1,[ ])
+ if test -n "$ICONV_DIR"; then
+ PHP_ADD_LIBRARY_WITH_PATH($iconv_lib_name, $ICONV_DIR/$PHP_LIBDIR, $1)
+ PHP_ADD_INCLUDE($ICONV_DIR/include)
+ fi
+ $2
+ifelse([$3],[],,[else $3])
+ fi
+])
+
+dnl
+dnl PHP_SETUP_LIBXML(shared-add [, action-found [, action-not-found]])
+dnl
+dnl Common setup macro for libxml
+dnl
+AC_DEFUN([PHP_SETUP_LIBXML], [
+AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path,
+[
+ for i in $PHP_LIBXML_DIR /usr/local /usr; do
+ if test -x "$i/bin/xml2-config"; then
+ ac_cv_php_xml2_config_path="$i/bin/xml2-config"
+ break
+ fi
+ done
+])
+
+ if test -x "$ac_cv_php_xml2_config_path"; then
+ XML2_CONFIG="$ac_cv_php_xml2_config_path"
+ libxml_full_version=`$XML2_CONFIG --version`
+ ac_IFS=$IFS
+ IFS="."
+ set $libxml_full_version
+ IFS=$ac_IFS
+ LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3`
+ if test "$LIBXML_VERSION" -ge "2006011"; then
+ LIBXML_LIBS=`$XML2_CONFIG --libs`
+ LIBXML_INCS=`$XML2_CONFIG --cflags`
+ PHP_EVAL_LIBLINE($LIBXML_LIBS, $1)
+ PHP_EVAL_INCLINE($LIBXML_INCS)
+
+ dnl Check that build works with given libs
+ AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [
+ PHP_TEST_BUILD(xmlInitParser,
+ [
+ php_cv_libxml_build_works=yes
+ ], [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([build test failed. Please check the config.log for details.])
+ ], [
+ [$]$1
+ ])
+ ])
+ if test "$php_cv_libxml_build_works" = "yes"; then
+ AC_DEFINE(HAVE_LIBXML, 1, [ ])
+ fi
+ $2
+ else
+ AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.])
+ fi
+ifelse([$3],[],,[else $3])
+ fi
+])
+
+dnl -------------------------------------------------------------------------
+dnl Misc. macros
+dnl -------------------------------------------------------------------------
+
+dnl
+dnl PHP_INSTALL_HEADERS(path [, file ...])
+dnl
+dnl PHP header files to be installed
+dnl
+AC_DEFUN([PHP_INSTALL_HEADERS],[
+ ifelse([$2],[],[
+ for header_file in $1; do
+ PHP_RUN_ONCE(INSTALLHEADERS, $header_file, [
+ INSTALL_HEADERS="$INSTALL_HEADERS $header_file"
+ ])
+ done
+ ], [
+ header_path=$1
+ for header_file in $2; do
+ hp_hf="$header_path/$header_file"
+ PHP_RUN_ONCE(INSTALLHEADERS, $hp_hf, [
+ INSTALL_HEADERS="$INSTALL_HEADERS $hp_hf"
+ ])
+ done
+ ])
+])
+
+dnl
+dnl PHP_AP_EXTRACT_VERSION(/path/httpd)
+dnl
+dnl This macro is used to get a comparable
+dnl version for apache1/2.
+dnl
+AC_DEFUN([PHP_AP_EXTRACT_VERSION],[
+ ac_output=`$1 -v 2>&1 | grep version | $SED -e 's/Oracle-HTTP-//'`
+ ac_IFS=$IFS
+IFS="- /.
+"
+ set $ac_output
+ IFS=$ac_IFS
+
+ APACHE_VERSION=`expr [$]4 \* 1000000 + [$]5 \* 1000 + [$]6`
+])
+
+dnl
+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
+dnl PHP_CONFIG_NICE(filename)
+dnl
+dnl Generates the config.nice file
+dnl
+AC_DEFUN([PHP_CONFIG_NICE],[
+ AC_REQUIRE([AC_PROG_EGREP])
+ AC_REQUIRE([LT_AC_PROG_SED])
+ PHP_SUBST_OLD(EGREP)
+ PHP_SUBST_OLD(SED)
+ 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 EXTRA_LDFLAGS_PROGRAM LIBS CC CXX; do
+ eval val=\$$var
+ if test -n "$val"; then
+ echo "$var='$val' \\" >> $1
+ fi
+ done
+
+ echo "'[$]0' \\" >> $1
+ if test `expr -- [$]0 : "'.*"` = 0; then
+ CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'"
+ else
+ CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0"
+ fi
+ for arg in $ac_configure_args; do
+ if test `expr -- $arg : "'.*"` = 0; then
+ if test `expr -- $arg : "--.*"` = 0; then
+ break;
+ fi
+ echo "'[$]arg' \\" >> $1
+ CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS '[$]arg'"
+ else
+ if test `expr -- $arg : "'--.*"` = 0; then
+ break;
+ fi
+ echo "[$]arg \\" >> $1
+ CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS [$]arg"
+ fi
+ done
+ echo '"[$]@"' >> $1
+ chmod +x $1
+ CONFIGURE_COMMAND="$CONFIGURE_COMMAND $CONFIGURE_OPTIONS"
+ PHP_SUBST_OLD(CONFIGURE_COMMAND)
+ PHP_SUBST_OLD(CONFIGURE_OPTIONS)
+])
+
+dnl
+dnl PHP_CHECK_CONFIGURE_OPTIONS
+dnl
+AC_DEFUN([PHP_CHECK_CONFIGURE_OPTIONS],[
+ for arg in $ac_configure_args; do
+ case $arg in
+ --with-*[)]
+ arg_name="`echo [$]arg | $SED -e 's/--with-/with-/g' -e 's/=.*//g'`"
+ ;;
+ --without-*[)]
+ arg_name="`echo [$]arg | $SED -e 's/--without-/with-/g' -e 's/=.*//g'`"
+ ;;
+ --enable-*[)]
+ arg_name="`echo [$]arg | $SED -e 's/--enable-/enable-/g' -e 's/=.*//g'`"
+ ;;
+ --disable-*[)]
+ arg_name="`echo [$]arg | $SED -e 's/--disable-/enable-/g' -e 's/=.*//g'`"
+ ;;
+ *[)]
+ continue
+ ;;
+ esac
+ case $arg_name in
+ # Allow --disable-all / --enable-all
+ enable-all[)];;
+
+ # Allow certain libtool options
+ enable-libtool-lock | with-pic | with-tags | enable-shared | enable-static | enable-fast-install | with-gnu-ld[)];;
+
+ # Allow certain TSRM options
+ with-tsrm-pth | with-tsrm-st | with-tsrm-pthreads[)];;
+
+ # Allow certain Zend options
+ with-zend-vm | enable-maintainer-zts | enable-inline-optimization[)];;
+
+ # All the rest must be set using the PHP_ARG_* macros
+ # PHP_ARG_* macros set php_enable_<arg_name> or php_with_<arg_name>
+ *[)]
+ # Options that exist before PHP 6
+ if test "$PHP_MAJOR_VERSION" -lt "6"; then
+ case $arg_name in
+ enable-zend-multibyte[)] continue;;
+ esac
+ fi
+
+ is_arg_set=php_[]`echo [$]arg_name | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ-' 'abcdefghijklmnopqrstuvwxyz_'`
+ if eval test "x\$$is_arg_set" = "x"; then
+ PHP_UNKNOWN_CONFIGURE_OPTIONS="$PHP_UNKNOWN_CONFIGURE_OPTIONS
+[$]arg"
+ fi
+ ;;
+ esac
+ done
+])
+
+dnl
+dnl PHP_CHECK_PDO_INCLUDES([found [, not-found]])
+dnl
+AC_DEFUN([PHP_CHECK_PDO_INCLUDES],[
+ AC_CACHE_CHECK([for PDO includes], pdo_cv_inc_path, [
+ AC_MSG_CHECKING([for PDO includes])
+ if test -f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h; then
+ pdo_cv_inc_path=$abs_srcdir/ext
+ elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then
+ pdo_cv_inc_path=$abs_srcdir/ext
+ elif test -f $prefix/include/php/ext/pdo/php_pdo_driver.h; then
+ pdo_cv_inc_path=$prefix/include/php/ext
+ fi
+ ])
+ if test -n "$pdo_cv_inc_path"; then
+ifelse([$1],[],:,[$1])
+ else
+ifelse([$2],[],[AC_MSG_ERROR([Cannot find php_pdo_driver.h.])],[$2])
+ fi
+])
+
+dnl
+dnl PHP_DETECT_ICC
+dnl Detect Intel C++ Compiler and unset $GCC if ICC found
+AC_DEFUN([PHP_DETECT_ICC],
+[
+ ICC="no"
+ AC_MSG_CHECKING([for icc])
+ AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
+ ICC="no"
+ AC_MSG_RESULT([no]),
+ ICC="yes"
+ GCC="no"
+ AC_MSG_RESULT([yes])
+ )
+])
+
+dnl PHP_DETECT_SUNCC
+dnl Detect if the systems default compiler is suncc.
+dnl We also set some usefull CFLAGS if the user didn't set any
+AC_DEFUN([PHP_DETECT_SUNCC],[
+ SUNCC="no"
+ AC_MSG_CHECKING([for suncc])
+ AC_EGREP_CPP([^__SUNPRO_C], [__SUNPRO_C],
+ SUNCC="no"
+ AC_MSG_RESULT([no]),
+ SUNCC="yes"
+ GCC="no"
+ test -n "$auto_cflags" && CFLAGS="-O -xs -xstrconst -zlazyload"
+ GCC=""
+ AC_MSG_RESULT([yes])
+ )
+])
+
+dnl
+dnl PHP_CRYPT_R_STYLE
+dnl detect the style of crypt_r() is any is available
+dnl see APR_CHECK_CRYPT_R_STYLE() for original version
+dnl
+AC_DEFUN([PHP_CRYPT_R_STYLE],
+[
+ AC_CACHE_CHECK([which data struct is used by crypt_r], php_cv_crypt_r_style,[
+ php_cv_crypt_r_style=none
+ AC_TRY_COMPILE([
+#define _REENTRANT 1
+#include <crypt.h>
+],[
+CRYPTD buffer;
+crypt_r("passwd", "hash", &buffer);
+],
+php_cv_crypt_r_style=cryptd)
+
+ if test "$php_cv_crypt_r_style" = "none"; then
+ AC_TRY_COMPILE([
+#define _REENTRANT 1
+#include <crypt.h>
+],[
+struct crypt_data buffer;
+crypt_r("passwd", "hash", &buffer);
+],
+php_cv_crypt_r_style=struct_crypt_data)
+ fi
+
+ if test "$php_cv_crypt_r_style" = "none"; then
+ AC_TRY_COMPILE([
+#define _REENTRANT 1
+#define _GNU_SOURCE
+#include <crypt.h>
+],[
+struct crypt_data buffer;
+crypt_r("passwd", "hash", &buffer);
+],
+php_cv_crypt_r_style=struct_crypt_data_gnu_source)
+ fi
+ ])
+
+ if test "$php_cv_crypt_r_style" = "cryptd"; then
+ AC_DEFINE(CRYPT_R_CRYPTD, 1, [Define if crypt_r has uses CRYPTD])
+ fi
+ if test "$php_cv_crypt_r_style" = "struct_crypt_data" -o "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then
+ AC_DEFINE(CRYPT_R_STRUCT_CRYPT_DATA, 1, [Define if crypt_r uses struct crypt_data])
+ fi
+ if test "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then
+ AC_DEFINE(CRYPT_R_GNU_SOURCE, 1, [Define if struct crypt_data requires _GNU_SOURCE])
+ fi
+ if test "$php_cv_crypt_r_style" = "none"; then
+ AC_MSG_ERROR([Unable to detect data struct used by crypt_r])
+ fi
+])
+
+dnl
+dnl PHP_TEST_WRITE_STDOUT
+dnl
+AC_DEFUN([PHP_TEST_WRITE_STDOUT],[
+ AC_CACHE_CHECK(whether writing to stdout works,ac_cv_write_stdout,[
+ AC_TRY_RUN([
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#define TEXT "This is the test message -- "
+
+main()
+{
+ int n;
+
+ n = write(1, TEXT, sizeof(TEXT)-1);
+ return (!(n == sizeof(TEXT)-1));
+}
+ ],[
+ ac_cv_write_stdout=yes
+ ],[
+ ac_cv_write_stdout=no
+ ],[
+ ac_cv_write_stdout=no
+ ])
+ ])
+ if test "$ac_cv_write_stdout" = "yes"; then
+ AC_DEFINE(PHP_WRITE_STDOUT, 1, [whether write(2) works])
+ fi
+])
+
+dnl
+dnl PHP_INIT_DTRACE(providerdesc, header-file, sources [, module])
+dnl
+AC_DEFUN([PHP_INIT_DTRACE],[
+dnl Set paths properly when called from extension
+ case "$4" in
+ ""[)] ac_srcdir="$abs_srcdir/"; unset ac_bdir;;
+ /*[)] ac_srcdir=`echo "$4"|cut -c 2-`"/"; ac_bdir=$ac_srcdir;;
+ *[)] ac_srcdir="$abs_srcdir/$1/"; ac_bdir="$4/";;
+ esac
+
+dnl providerdesc
+ ac_provsrc=$1
+ old_IFS=[$]IFS
+ IFS=.
+ set $ac_provsrc
+ ac_provobj=[$]1
+ IFS=$old_IFS
+
+dnl header-file
+ ac_hdrobj=$2
+
+dnl Add providerdesc.o into global objects when needed
+ case $host_alias in
+ *freebsd*)
+ PHP_GLOBAL_OBJS="[$]PHP_GLOBAL_OBJS [$]ac_bdir[$]ac_provsrc.o"
+ PHP_LDFLAGS="$PHP_LDFLAGS -lelf"
+ ;;
+ *solaris*)
+ PHP_GLOBAL_OBJS="[$]PHP_GLOBAL_OBJS [$]ac_bdir[$]ac_provsrc.o"
+ ;;
+ esac
+
+dnl DTrace objects
+ old_IFS=[$]IFS
+ for ac_src in $3; do
+ IFS=.
+ set $ac_src
+ ac_obj=[$]1
+ IFS=$old_IFS
+
+ PHP_DTRACE_OBJS="[$]PHP_DTRACE_OBJS [$]ac_bdir[$]ac_obj.lo"
+ done;
+
+ case [$]php_sapi_module in
+ shared[)]
+ for ac_lo in $PHP_DTRACE_OBJS; do
+ dtrace_objs="[$]dtrace_objs `echo $ac_lo | $SED -e 's,\.lo$,.o,' -e 's#\(.*\)\/#\1\/.libs\/#'`"
+ done;
+ ;;
+ *[)]
+ dtrace_objs='$(PHP_DTRACE_OBJS:.lo=.o)'
+ ;;
+ esac
+
+dnl Generate Makefile.objects entries
+ cat>>Makefile.objects<<EOF
+
+$ac_bdir[$]ac_hdrobj: $abs_srcdir/$ac_provsrc
+ dtrace -h -C -s $ac_srcdir[$]ac_provsrc -o \$[]@ && \$(SED) -ibak 's,PHP_,DTRACE_,g' \$[]@
+
+\$(PHP_DTRACE_OBJS): $ac_bdir[$]ac_hdrobj
+
+$ac_bdir[$]ac_provsrc.o: \$(PHP_DTRACE_OBJS)
+ dtrace -G -o \$[]@ -s $abs_srcdir/$ac_provsrc $dtrace_objs
+
+EOF
+])