 acinclude.m4: fix krb5-config detection and usage in PHP_SETUP_KERBEROS.
When building with kerberos support (--with-kerberos), a few libraries
and flags need to be added to various parts of the build system. The
most reliable way to get those flags is through the krb5-config
program that ships with both major implementations of kerberos. The
PHP_SETUP_KERBEROS macro in acinclude.m4 attempts to detect
krb5-config, and use it.
However, there's a bug in that macro. The --with-kerberos parameter
accepts a directory where the kerberos libraries can be found. When a
directory is given, it is stored in the PHP_KERBEROS variable. The
following test,
if test "$PHP_KERBEROS" = "yes" && test -x "$KRB5_CONFIG"; then
thus fails whenever a directory is passed to --with-kerberos, since it
compares a directory name against the string "yes". This causes
krb5-config to go unused, and some unreliable fallback logic is
attempted instead. One consequence of this is that the Heimdal
kerberos implementation cannot be substituted for the MIT one, at
least when a directory is passed to --with-kerberos.
This commit reverses the logic and checks for "$PHP_KERBEROS" != "no".
To confirm that this fixes the issue, one can inspect the "-l" library
flags that get appended to the command-line. On a machine with Heimdal
and the unmodified acinclude.m4, running
./configure --with-openssl --with-kerberos=/usr
will log (for example) to config.log,
configure:18082: checking for krb5-config
configure:18101: found /usr/bin/krb5-config
configure:18114: result: /usr/bin/krb5-config
configure:18450: checking for RAND_egd
configure:18450: cc ... conftest.c ... -lgssapi_krb5 -lkrb5 ...
which are the library names for the MIT implementation. After patching
acinclude.m4 to negate the logic, the same command on the same machine
outputs (to config.log):
configure:18450: cc ... conftest.c -lgssapi -lheimntlm ...
These are the correct library names for the Heimdal implementation.
PHP-Bug: 73214
10 years ago 1. PHP_CHECK_FUNC(func, lib1, lib2, ..., libn) searches for
func and __func using LIBS, and if unsuccessful, searches
each specified lib. Defines HAVE_FUNC, if found. If func/__func is
found in library foo, HAVE_LIBFOO is defined.
(Jani, me)
2. Autoconf 2.5x is more pedantic regarding locating header files.
We include the proper header files now in the check. (me)
3. The nsl/bind/socket/etc checks have been rewritten using PHP_CHECK_FUNC.
This ensures that no extra library is used, if the symbol is
available in libc which avoids issues on BSD/OS, OpenBSD and others.
(Jani)
24 years ago  Use AX_CHECK_COMPILE_FLAG macro to check for -fvisibility=hidden support.
The existing check for -fvisibility=hidden support came from a time
when only GCC had it. The test for it used a regular expression to
parse the GCC major version from the output of `$CC --version`, and
would look for version 4 or greater.
The regular expression used to accomplish this is doomed, however,
since GCC can be built with a custom version string
(--with-pkgversion). Moreover, the $CC variable can be set to
something that confuses it but is otherwise valid. For example, it
would fail with CC=x86_64-pc-linux-gnu-gcc.
This commit fixes two aspects of the feature test. First, it no longer
limits the test to GCC. At least clang now supports the flag, and can
make use of it when GCC is its backend. Second, support for the flag
is tested directly, by attempting to pass it to the compiler, rather
than by parsing its version string. The latter is accomplished with a
new macro, AX_CHECK_COMPILE_FLAG, taken from the autoconf archive.
The new macro has been added to acinclude.m4, and the test stanza in
configure.in has been replaced with a single call to the new macro.
Note that the new macro calls AC_PREREQ(2.64) -- a more stringent
requirement than the existing AC_PREREQ(2.59) in configure.in. The
difference represents about six years of autoconf releases, from v2.59
in December of 2003 to v2.64 in July of 2009.
This problem was noticed by Brian Evans, who also suggested the fix.
PHP-Bug: 73062
10 years ago |
|
dnldnl $Id$dnldnl This file contains local autoconf functions.dnl
dnl -------------------------------------------------------------------------dnl Output stylize macros for configure (help/runtime)dnl -------------------------------------------------------------------------
dnldnl PHP_HELP_SEPARATOR(title)dnldnl Adds separator title into the configure --help display.dnl AC_DEFUN([PHP_HELP_SEPARATOR],[AC_ARG_ENABLE([],[$1],[])])
dnldnl PHP_CONFIGURE_PART(title)dnldnl Adds separator title configure output (idea borrowed from mm)dnlAC_DEFUN([PHP_CONFIGURE_PART],[ AC_MSG_RESULT() AC_MSG_RESULT([${T_MD}$1${T_ME}])])
dnl -------------------------------------------------------------------------dnl Build system helper macrosdnl -------------------------------------------------------------------------
dnldnl PHP_DEF_HAVE(what)dnldnl Generates 'AC_DEFINE(HAVE_WHAT, 1, [ ])'dnlAC_DEFUN([PHP_DEF_HAVE],[AC_DEFINE([HAVE_]translit($1,a-z_.-,A-Z___), 1, [ ])])
dnldnl PHP_RUN_ONCE(namespace, variable, code)dnldnl execute code, if variable is not set in namespacednlAC_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])
dnldnl PHP_EXPAND_PATH(path, variable)dnldnl expands path to an absolute path and assigns it to variablednlAC_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])
dnldnl PHP_DEFINE(WHAT [, value[, directory]])dnldnl Creates builddir/include/what.h and in there #define WHAT valuednlAC_DEFUN([PHP_DEFINE],[ [echo "#define ]$1[]ifelse([$2],,[ 1],[ $2])[" > ]ifelse([$3],,[include],[$3])[/php_]translit($1,A-Z,a-z)[.h]])
dnldnl PHP_SUBST(varname)dnldnl Adds variable with it's value into Makefile, e.g.:dnl CC = gccdnlAC_DEFUN([PHP_SUBST],[ PHP_VAR_SUBST="$PHP_VAR_SUBST $1"])
dnldnl PHP_SUBST_OLD(varname)dnldnl Same as PHP_SUBST() but also substitutes all @VARNAME@dnl instances in every file passed to AC_OUTPUT()dnlAC_DEFUN([PHP_SUBST_OLD],[ PHP_SUBST($1) AC_SUBST($1)])
dnldnl PHP_OUTPUT(file)dnldnl Adds "file" to the list of files generated by AC_OUTPUTdnl This macro can be used several times.dnlAC_DEFUN([PHP_OUTPUT],[ PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES $1"])
dnl -------------------------------------------------------------------------dnl Build system base macrosdnl -------------------------------------------------------------------------
dnldnl PHP_CANONICAL_HOST_TARGETdnlAC_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])
dnldnl PHP_INIT_BUILD_SYSTEMdnlAC_DEFUN([PHP_INIT_BUILD_SYSTEM],[AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnltest -d include || $php_shtool mkdir include> Makefile.objects> Makefile.fragmentsdnl We need to play tricks here to avoid matching the grep line itselfpattern=define$EGREP $pattern'.*include/php' $srcdir/configure|$SED 's/.*>//'|xargs touch 2>/dev/null])
dnldnl PHP_GEN_GLOBAL_MAKEFILEdnl dnl Generates the global makefile.dnlAC_DEFUN([PHP_GEN_GLOBAL_MAKEFILE],[ cat >Makefile <<EOFsrcdir = $abs_srcdirbuilddir = $abs_builddirtop_srcdir = $abs_srcdirtop_builddir = $abs_builddirEOF for i in $PHP_VAR_SUBST; do eval echo "$i = \$$i" >> Makefile done
cat $abs_srcdir/Makefile.global Makefile.fragments Makefile.objects >> Makefile])
dnldnl PHP_ADD_MAKEFILE_FRAGMENT([srcfile [, ext_srcdir [, ext_builddir]]])dnldnl Processes a file called Makefile.frag in the source directorydnl of the most recently added extension. $(srcdir) and $(builddir)dnl are substituted with the proper paths. Can be used to supplydnl custom rules and/or additional targets.dnlAC_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])
dnldnl PHP_ADD_SOURCES(source-path, sources [, special-flags [, type]])dnldnl 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. Sourcesdnl can be either written in C or C++ (filenames shall end in .c dnl or .cpp, respectively).dnldnl Note: If source-path begins with a "/", the "/" is removed anddnl the path is interpreted relative to the top build-directory.dnldnl 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))])
dnldnl _PHP_ASSIGN_BUILD_VARS(type)dnl internal, don't useAC_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])
dnldnl PHP_ADD_SOURCES_X(source-path, sources[, special-flags[, target-var[, shared[, special-post-flags]]]])dnldnl Additional to PHP_ADD_SOURCES (see above), this lets you set thednl name of the array target-var directly, as well as whetherdnl shared objects will be built from the sources.dnldnl 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_compEOF done])
dnl -------------------------------------------------------------------------dnl Compiler characteristics checksdnl -------------------------------------------------------------------------
dnldnl PHP_TARGET_RDYNAMICdnldnl Checks whether -rdynamic is supported by the compiler. Thisdnl is necessary for some targets to populate the global symboldnl table. Otherwise, dynamic modules would not be able to resolvednl PHP-related symbols.dnldnl If successful, adds -rdynamic to PHP_LDFLAGS.dnlAC_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])
dnldnl PHP_RUNPATH_SWITCHdnldnl Checks for -R, etc. switchdnlAC_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=-Relse 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 fifiif test "$PHP_RPATH" = "no"; then ld_runpath_switch=fi])
dnldnl PHP_CHECK_GCC_ARG(arg, action-if-found, action-if-not-found)dnlAC_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])
dnldnl PHP_LIBGCC_LIBPATH(gcc)dnldnl Stores the location of libgcc in libgcc_libpathdnlAC_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 -------------------------------------------------------------------------
dnldnl PHP_REMOVE_USR_LIB(NAME)dnldnl Removes all -L/usr/$PHP_LIBDIR entries from variable NAMEdnlAC_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])
dnldnl PHP_EVAL_LIBLINE(libline, SHARED-LIBADD)dnldnl Use this macro, if you need to add libraries and or library searchdnl paths to the PHP build system which are only given in compilerdnl notation.dnlAC_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])
dnldnl PHP_EVAL_INCLINE(headerline)dnldnl Use this macro, if you need to add header search paths to the PHPdnl build system which are only given in compiler notation.dnlAC_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 useAC_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" ])])dnldnldnldnl PHP_ADD_LIBPATH(path [, SHARED-LIBADD])dnldnl Adds a path to linkpath/runpath (LDFLAGS)dnlAC_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])
dnldnl PHP_UTILIZE_RPATHS()dnldnl builds RPATHS/LDFLAGS from PHP_RPATHSdnlAC_DEFUN([PHP_UTILIZE_RPATHS],[ OLD_RPATHS=$PHP_RPATHS unset PHP_RPATHS
for i in $OLD_RPATHS; dodnl 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])
dnldnl PHP_ADD_INCLUDE(path [,before])dnldnl add an include path. dnl if before is 1, add in the beginning of INCLUDES.dnlAC_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 useAC_DEFUN([_PHP_X_ADD_LIBRARY],[dnl ifelse([$2],,$3="-l$1 [$]$3", $3="[$]$3 -l$1") dnl])dnldnldnl internal, don't useAC_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])dnldnldnldnl PHP_ADD_LIBRARY(library[, append[, shared-libadd]])dnldnl add a library to the link linednlAC_DEFUN([PHP_ADD_LIBRARY],[ _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY],[LIBS])])
dnldnl PHP_ADD_LIBRARY_DEFER(library[, append[, shared-libadd]])dnldnl add a library to the link line (deferred, not used during configure)dnlAC_DEFUN([PHP_ADD_LIBRARY_DEFER],[ _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY_DEFER],[DLIBS])])
dnldnl PHP_ADD_LIBRARY_WITH_PATH(library, path[, shared-libadd])dnldnl 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 informationdnlAC_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])])
dnldnl PHP_ADD_LIBRARY_DEFER_WITH_PATH(library, path[, shared-libadd])dnldnl 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 informationdnlAC_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])])
dnldnl PHP_ADD_FRAMEWORK(framework [,before])dnldnl add a (Darwin / Mac OS X) framework to the linkdnl line. if before is 1, the framework is addeddnl to the beginning of the line.dnlAC_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 ])])
dnldnl PHP_ADD_FRAMEWORKPATH(path [,before])dnldnl add a (Darwin / Mac OS X) framework path to the linkdnl and include lines. default paths include (but arednl not limited to) /Local/Library/Frameworks anddnl /System/Library/Frameworks, so these don't needdnl to be specifically added. if before is 1, thednl framework path is added to the beginning of thednl relevant lines.dnlAC_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 ])])
dnldnl PHP_ADD_FRAMEWORK_WITH_PATH(framework, path)dnldnl Adds a (Darwin / Mac OS X) framework path and thednl framework itself to the link and include lines.dnlAC_DEFUN([PHP_ADD_FRAMEWORK_WITH_PATH], [ PHP_ADD_FRAMEWORKPATH($2) PHP_ADD_FRAMEWORK($1)])
dnldnl PHP_SET_LIBTOOL_VARIABLE(var)dnldnl Set libtool variablednlAC_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_ENABLEdnl -------------------------------------------------------------------------
dnl PHP_ARG_ANALYZE_EXdnl internalAC_DEFUN([PHP_ARG_ANALYZE_EX],[ext_output="yes, shared"ext_shared=yescase [$]$1 inshared,*[)] $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_ANALYZEdnl internalAC_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])])])
dnldnl 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 rundnl the PHP_ARG_ANALYZE_EX.dnlAC_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_WITHdnl internalAC_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)])
dnldnl 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 rundnl the PHP_ARG_ANALYZE_EX.dnlAC_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_ENABLEdnl internalAC_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 macrosdnl -------------------------------------------------------------------------
dnldnl PHP_BUILD_THREAD_SAFEdnlAC_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])
dnldnl PHP_REQUIRE_CXXdnlAC_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])
dnldnl PHP_BUILD_SHAREDdnlAC_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])
dnldnl PHP_BUILD_STATICdnlAC_DEFUN([PHP_BUILD_STATIC],[ PHP_BUILD_PROGRAM OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.la] php_sapi_module=static])
dnldnl PHP_BUILD_BUNDLEdnlAC_DEFUN([PHP_BUILD_BUNDLE],[ PHP_BUILD_PROGRAM OVERALL_TARGET=libs/libphp[]$PHP_MAJOR_VERSION[.bundle] php_sapi_module=static])
dnldnl PHP_BUILD_PROGRAMdnlAC_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])
dnldnl PHP_SHARED_MODULE(module-name, object-var, build-dir, cxx, zend_ext)dnldnl Basically sets up the link-stage for building module-namednl from object_var in build-dir.dnlAC_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' ;; *[)] 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])
dnldnl PHP_SELECT_SAPI(name, type[, sources [, extra-cflags [, build-target]]])dnldnl Selects the SAPI name and type (static, shared, bundle, program)dnl and optionally also the source-files for the SAPI-specificdnl objects.dnlAC_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 deprecatedAC_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])
dnldnl PHP_NEW_EXTENSION(extname, sources [, shared [, sapi_class [, extra-cflags [, cxx [, zend_ext]]]]])dnldnl Includes an extension in the build.dnldnl "extname" is the name of the extension.dnl "sources" is a list of files relative to the subdir which are useddnl to build the extension.dnl "shared" can be set to "shared" or "yes" to build the extension asdnl a dynamically loadable library. Optional parameter "sapi_class" candnl 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) ext_dir=[]PHP_EXT_DIR($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"; thendnl ---------------------------------------------- Static module [PHP_]translit($1,a-z_-,A-Z__)[_SHARED]=no PHP_ADD_SOURCES($ext_dir,$2,$ac_extra,) EXT_STATIC="$EXT_STATIC $1;$ext_dir" if test "$3" != "nocli"; then EXT_CLI_STATIC="$EXT_CLI_STATIC $1;$ext_dir" fi else if test "$3" = "shared" || test "$3" = "yes"; thendnl ---------------------------------------------- Shared module [PHP_]translit($1,a-z_-,A-Z__)[_SHARED]=yes PHP_ADD_SOURCES_X($ext_dir,$2,$ac_extra,shared_objects_$1,yes) PHP_SHARED_MODULE($1,shared_objects_$1, $ext_builddir, $6, $7) 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"; thendnl ---------------------------------------------- CLI static module [PHP_]translit($1,a-z_-,A-Z__)[_SHARED]=no case "$PHP_SAPI" in cgi|embed[)] PHP_ADD_SOURCES($ext_dir,$2,$ac_extra,) EXT_STATIC="$EXT_STATIC $1;$ext_dir" ;; *[)] PHP_ADD_SOURCES($ext_dir,$2,$ac_extra,cli) ;; esac EXT_CLI_STATIC="$EXT_CLI_STATIC $1;$ext_dir" fi PHP_ADD_BUILD_DIR($ext_builddir)
dnl Set for phpize builds onlydnl --------------------------- if test "$ext_builddir" = "."; then PHP_PECL_EXTENSION=$1 PHP_SUBST(PHP_PECL_EXTENSION) fi])
dnldnl PHP_WITH_SHAREDdnldnl Checks whether $withval is "shared" or starts with "shared,XXX"dnl and sets $shared to "yes" or "no", and removes "shared,?" stuffdnl from $withval.dnlAC_DEFUN([PHP_WITH_SHARED],[ PHP_ARG_ANALYZE_EX(withval) shared=$ext_shared unset ext_shared ext_output])
dnldnl PHP_ADD_EXTENSION_DEP(extname, depends [, depconf])dnldnl This macro is scanned by genif.sh when it builds the internal functionsdnl list, so that modules can be init'd in the correct orderdnl $1 = name of extension, $2 = extension upon which it dependsdnl $3 = optional: if true, it's ok for $2 to have not been configureddnl 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 dnlAC_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 itdepends on extension $2, which you've configured to build shared.You either need to build $1 shared or build $2 statically for thebuild 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 macrosdnldnl _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])dnldnl _PHP_CHECK_SIZEOF(type, cross-value, extra-headers [, found-action [, not-found-action]])dnlAC_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"; thenifelse([$4],[],:,[$4])ifelse([$5],[],,[else $5]) fi])
dnldnl PHP_CHECK_SIZEOF(type, cross-value, extra-headers)dnlAC_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, ,_)])])
dnldnl PHP_CHECK_TYPES(type-list, include-file [, extra-headers])dnlAC_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])
dnldnl PHP_CHECK_IN_ADDR_TdnlAC_DEFUN([PHP_CHECK_IN_ADDR_T], [dnl AIX keeps in_addr_t in /usr/include/netinet/in.hAC_MSG_CHECKING([for in_addr_t])AC_CACHE_VAL(ac_cv_type_in_addr_t,[AC_EGREP_CPP(dnlchangequote(<<,>>)dnl<<in_addr_t[^a-zA-Z_0-9]>>dnlchangequote([,]), [#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)])dnlAC_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])
dnldnl PHP_TIME_R_TYPEdnldnl Check type of reentrant time-related functionsdnl Type can be: irix, hpux or POSIXdnlAC_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])
dnldnl PHP_DOES_PWRITE_WORKdnl internalAC_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_WORKdnl internalAC_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])
dnldnl PHP_PWRITE_TESTdnlAC_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 ])
dnldnl PHP_PREAD_TESTdnlAC_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 ])
dnldnl PHP_MISSING_TIME_R_DECLdnlAC_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])])
dnldnl PHP_READDIR_R_TYPEdnl 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) { close(dir); exit(0); } close(dir); 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])
dnldnl PHP_TM_GMTOFFdnl 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])
dnldnl PHP_STRUCT_FLOCKdnlAC_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])
dnldnl PHP_SOCKLEN_TdnlAC_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])
dnldnl PHP_MISSING_FCLOSE_DECLdnldnl See if we have broken header files like SunOS has.dnlAC_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]) ])])
dnldnl PHP_AC_BROKEN_SPRINTFdnldnl Check for broken sprintf(), C99 conformancednlAC_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])
dnldnl PHP_AC_BROKEN_SNPRINTFdnldnl Check for broken snprintf(), C99 conformancednlAC_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])
dnldnl PHP_SOLARIS_PIC_WEIRDNESSdnldnl Solaris requires main code to be position independent in orderdnl to let shared objects find symbols. Weird. Ugly.dnldnl Must be run after all --with-NN options that let the userdnl choose dynamic extensions, and after the gcc test.dnlAC_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])
dnldnl PHP_SYS_LFSdnldnl The problem is that the default compilation flags in Solaris 2.6 won'tdnl let programs access large files; you need to tell the compiler thatdnl you actually want your programs to work on large files. For morednl details about this brain damage please see:dnl http://www.sas.com/standards/large.file/x_open.20Mar96.htmldnldnl Written by Paul Eggert <eggert@twinsun.com>.dnlAC_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])
dnldnl PHP_SOCKADDR_CHECKSdnlAC_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])
dnldnl PHP_DECLARED_TIMEZONEdnlAC_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])
dnldnl PHP_EBCDICdnlAC_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])
dnldnl PHP_BROKEN_GETCWDdnldnl Some systems, notably Solaris, cause getcwd() or realpath to fail if adnl component of the path has execute but not read permissionsdnlAC_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])
dnldnl PHP_BROKEN_GLIBC_FOPEN_APPENDdnlAC_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 = tmpnam(NULL); 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])
dnldnl PHP_FOPENCOOKIEdnlAC_DEFUN([PHP_FOPENCOOKIE], [ AC_CHECK_FUNC(fopencookie, [have_glibc_fopencookie=yes])
if test "$have_glibc_fopencookie" = "yes"; thendnl this comes in two flavors:dnl newer glibcs (since 2.1.2 ? )dnl have a type called cookie_io_functions_tAC_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_tAC_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 existence and build sanity checksdnl -------------------------------------------------------------------------
dnldnl PHP_CHECK_LIBRARY(library, function [, action-found [, action-not-found [, extra-libs]]])dnldnl Wrapper for AC_CHECK_LIBdnlAC_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])
dnldnl PHP_CHECK_FRAMEWORK(framework, function [, action-found [, action-not-found ]])dnldnl El cheapo wrapper for AC_CHECK_LIBdnlAC_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 ])])
dnldnl PHP_CHECK_FUNC_LIB(func, libs)dnldnl This macro checks whether 'func' or '__func' existsdnl 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_FUNCdnldnldnl autoconf undefines the builtin "shift" :-(dnl If possible, we use the builtin shift anyway, otherwise we usednl the ubercool definition I have tested so far with FreeBSD/GNU m4ifdef([builtin],[builtin(define, phpshift, [builtin(shift, $@)])],[define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,])))])])])dnlAC_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 ])])
dnldnl PHP_CHECK_FUNC(func, ...)dnldnl This macro checks whether 'func' or '__func' existsdnl 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.dnlAC_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])
dnldnl PHP_TEST_BUILD(function, action-if-ok, action-if-not-ok [, extra-libs [, extra-source]])dnldnl This macro checks whether build works and given function exists.dnlAC_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 checksdnl -------------------------------------------------------------------------
dnldnl PHP_SHLIB_SUFFIX_NAMESdnldnl Determines link library suffix SHLIB_SUFFIX_NAMEdnl which can be: .so, .sl or .dylibdnldnl Determines shared library suffix SHLIB_DL_SUFFIX_NAMEdnl suffix can be: .so or .sldnlAC_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])
dnldnl PHP_CHECK_64BIT([do if 32], [do if 64])dnldnl 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.dnlAC_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])
dnldnl PHP_C_BIGENDIANdnldnl Replacement macro for AC_C_BIGENDIANdnlAC_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 -------------------------------------------------------------------------
dnldnl PHP_PROG_SENDMAILdnldnl Search for the sendmail binarydnlAC_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)])
dnldnl PHP_PROG_AWKdnldnl Some vendors force mawk before gawk; mawk is broken so we don't like thatdnlAC_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)])
dnldnl PHP_PROG_BISONdnldnl Search for bison and check it's versiondnlAC_DEFUN([PHP_PROG_BISON], [ AC_PROG_YACC LIBZEND_BISON_CHECK PHP_SUBST(YACC)])
dnldnl PHP_PROG_LEXdnldnl Search for (f)lex and check it's versiondnlAC_DEFUN([PHP_PROG_LEX], [dnl we only support certain flex versions flex_version_list="2.5.4" AC_PROG_LEX if test "$LEX" = "flex"; thendnl AC_DECL_YYTEXT is obsolete since autoconf 2.50 and merged into AC_PROG_LEXdnl 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)])
dnldnl PHP_PROG_RE2Cdnldnl Search for the re2c binary and check the versiondnlAC_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 -------------------------------------------------------------------------
dnldnl PHP_SETUP_ICU([shared-add])dnldnl Common setup macro for ICUdnlAC_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 4.0 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 "4000"; then AC_MSG_ERROR([ICU version 4.0 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)
ICU_CXXFLAGS=`$ICU_CONFIG --cxxflags` if test "$icu_version" -ge "49000"; then ICU_CXXFLAGS="$ICU_CXXFLAGS -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit" ICU_CFLAGS="-DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1" fi if test "$icu_version" -ge "60000"; then ICU_CFLAGS="$ICU_CFLAGS -DU_HIDE_OBSOLETE_UTF_OLD_H=1" fi fi])
dnldnl PHP_SETUP_KERBEROS(shared-add [, action-found [, action-not-found]])dnldnl Common setup macro for kerberosdnlAC_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" != "no" && 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"; thenifelse([$2],[],:,[$2])ifelse([$3],[],,[else $3]) fi])
dnl dnl PHP_SETUP_OPENSSL(shared-add [, action-found [, action-not-found]])dnldnl Common setup macro for openssldnlAC_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=1.0.1 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 1.0.1 or greater required.]) fi
if test -n "$OPENSSL_LIBS"; then PHP_EVAL_LIBLINE($OPENSSL_LIBS, $1) fi if test -n "$OPENSSL_INCS"; then 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 >= 0x10001001L yes#endif ],[ AC_MSG_RESULT([>= 1.0.1]) ],[ AC_MSG_ERROR([OpenSSL version 1.0.1 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]])dnldnl Common setup macro for iconvdnlAC_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 $2ifelse([$3],[],,[else $3]) fi])
dnl dnl PHP_SETUP_LIBXML(shared-add [, action-found [, action-not-found]])dnldnl Common setup macro for libxmldnlAC_DEFUN([PHP_SETUP_LIBXML], [ found_libxml=no
dnl First try to find xml2-config 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 found_libxml=yes LIBXML_LIBS=`$XML2_CONFIG --libs` LIBXML_INCS=`$XML2_CONFIG --cflags` else AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.]) fi fi
dnl If xml2-config fails, try pkg-config if test "$found_libxml" = "no"; then 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 -x "$PKG_CONFIG" && $PKG_CONFIG --exists libxml-2.0; then if $PKG_CONFIG --atleast-version=2.6.11 libxml-2.0; then found_libxml=yes LIBXML_LIBS=`$PKG_CONFIG --libs libxml-2.0` LIBXML_INCS=`$PKG_CONFIG --cflags-only-I libxml-2.0` else AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.]) fi fi fi
if test "$found_libxml" = "yes"; then 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 $2ifelse([$3],[],,[else $3]) fi])
dnl -------------------------------------------------------------------------dnl Misc. macrosdnl -------------------------------------------------------------------------
dnl dnl PHP_INSTALL_HEADERS(path [, file ...])dnldnl PHP header files to be installeddnlAC_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 ])])
dnldnl PHP_AP_EXTRACT_VERSION(/path/httpd)dnldnl This macro is used to get a comparablednl version for apache1/2.dnlAC_DEFUN([PHP_AP_EXTRACT_VERSION],[ ac_output=`$1 -v 2>&1 | grep version | $SED -e 's/Oracle-HTTP-//'` ac_IFS=$IFSIFS="- /." set $ac_output IFS=$ac_IFS
APACHE_VERSION=`expr [$]4 \* 1000000 + [$]5 \* 1000 + [$]6`])
dnldnl PHP_DEBUG_MACRO(filename)dnl AC_DEFUN([PHP_DEBUG_MACRO],[ DEBUG_LOG=$1 cat >$1 <<XCONFIGURE: $CONFIGURE_COMMANDCC: $CCCFLAGS: $CFLAGSCPPFLAGS: $CPPFLAGSCXX: $CXXCXXFLAGS: $CXXFLAGSINCLUDES: $INCLUDESLDFLAGS: $LDFLAGSLIBS: $LIBSDLIBS: $DLIBSSAPI: $PHP_SAPIPHP_RPATHS: $PHP_RPATHSuname -a: `uname -a`
X cat >conftest.$ac_ext <<Xmain(){ exit(0);}X (eval echo \"$ac_link\"; eval $ac_link && ./conftest) >>$1 2>&1 rm -fr conftest*])
dnldnl PHP_CONFIG_NICE(filename)dnldnl Generates the config.nice filednlAC_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
clean_configure_args=$ac_configure_args 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 if test `expr "X$ac_configure_args" : ".*${var}.*"` != 0; then clean_configure_args=$(echo $clean_configure_args | sed -e "s#'$var=$val'##") fi fi done
echo "'[$]0' \\" >> $1 if test `expr " [$]0" : " '.*"` = 0; then CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'" else CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0" fi CONFIGURE_ARGS="$clean_configure_args" while test "X$CONFIGURE_ARGS" != "X"; do if CURRENT_ARG=`expr "X$CONFIGURE_ARGS" : "X *\('[[^']]*'\)"` then CONFIGURE_ARGS=`expr "X$CONFIGURE_ARGS" : "X *'[[^']]*' \(.*\)"` elif CURRENT_ARG=`expr "X$CONFIGURE_ARGS" : "X *\([[^ ]]*\)"` then CONFIGURE_ARGS=`expr "X$CONFIGURE_ARGS" : "X *[[^ ]]* \(.*\)"` CURRENT_ARG="'$CURRENT_ARG'" else break fi $as_echo "$CURRENT_ARG \\" >>$1 CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS $CURRENT_ARG" done echo '"[$]@"' >> $1 chmod +x $1 CONFIGURE_COMMAND="$CONFIGURE_COMMAND $CONFIGURE_OPTIONS" PHP_SUBST_OLD(CONFIGURE_COMMAND) PHP_SUBST_OLD(CONFIGURE_OPTIONS)])
dnldnl PHP_CHECK_CONFIGURE_OPTIONSdnlAC_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])
dnldnl PHP_CHECK_PDO_INCLUDES([found [, not-found]])dnlAC_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 $phpincludedir/ext/pdo/php_pdo_driver.h; then pdo_cv_inc_path=$phpincludedir/ext fi ]) if test -n "$pdo_cv_inc_path"; thenifelse([$1],[],:,[$1]) elseifelse([$2],[],[AC_MSG_ERROR([Cannot find php_pdo_driver.h.])],[$2]) fi])
dnldnl PHP_DETECT_ICCdnl Detect Intel C++ Compiler and unset $GCC if ICC foundAC_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_SUNCCdnl Detect if the systems default compiler is suncc.dnl We also set some useful CFLAGS if the user didn't set anyAC_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]) )])
dnldnl PHP_CRYPT_R_STYLEdnl detect the style of crypt_r() is any is availablednl see APR_CHECK_CRYPT_R_STYLE() for original versiondnlAC_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])
dnldnl PHP_TEST_WRITE_STDOUTdnlAC_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])
dnldnl PHP_INIT_DTRACE(providerdesc, header-file, sources [, module])dnlAC_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 or .lo 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.lo" ;; *linux*) PHP_GLOBAL_OBJS="[$]PHP_GLOBAL_OBJS [$]ac_bdir[$]ac_provsrc.lo" ;; 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 entriesdnl The empty $ac_provsrc command stops an implicit circular dependencydnl in GNU Make which causes the .d file to be overwritten (Bug 61268) cat>>Makefile.objects<<EOF
$abs_srcdir/$ac_provsrc:;
$ac_bdir[$]ac_hdrobj: $abs_srcdir/$ac_provsrc CFLAGS="\$(CFLAGS_CLEAN)" dtrace -h -C -s $ac_srcdir[$]ac_provsrc -o \$[]@.bak && \$(SED) -e 's,PHP_,DTRACE_,g' \$[]@.bak > \$[]@
\$(PHP_DTRACE_OBJS): $ac_bdir[$]ac_hdrobj
EOF
case $host_alias in *solaris*|*linux*) dtrace_prov_name="`echo $ac_provsrc | $SED -e 's#\(.*\)\/##'`.o" dtrace_lib_dir="`echo $ac_bdir[$]ac_provsrc | $SED -e 's#\(.*\)/[^/]*#\1#'`/.libs" dtrace_d_obj="`echo $ac_bdir[$]ac_provsrc | $SED -e 's#\(.*\)/\([^/]*\)#\1/.libs/\2#'`.o" dtrace_nolib_objs='$(PHP_DTRACE_OBJS:.lo=.o)' for ac_lo in $PHP_DTRACE_OBJS; do dtrace_lib_objs="[$]dtrace_lib_objs `echo $ac_lo | $SED -e 's,\.lo$,.o,' -e 's#\(.*\)\/#\1\/.libs\/#'`" done;dnl Always attempt to create both PIC and non-PIC DTrace objects (Bug 63692) cat>>Makefile.objects<<EOF$ac_bdir[$]ac_provsrc.lo: \$(PHP_DTRACE_OBJS) echo "[#] Generated by Makefile for libtool" > \$[]@ @test -d "$dtrace_lib_dir" || mkdir $dtrace_lib_dir if CFLAGS="\$(CFLAGS_CLEAN)" dtrace -G -o $dtrace_d_obj -s $abs_srcdir/$ac_provsrc $dtrace_lib_objs 2> /dev/null && test -f "$dtrace_d_obj"; then [\\] echo "pic_object=['].libs/$dtrace_prov_name[']" >> \$[]@ [;\\] else [\\] echo "pic_object='none'" >> \$[]@ [;\\] fi if CFLAGS="\$(CFLAGS_CLEAN)" dtrace -G -o $ac_bdir[$]ac_provsrc.o -s $abs_srcdir/$ac_provsrc $dtrace_nolib_objs 2> /dev/null && test -f "$ac_bdir[$]ac_provsrc.o"; then [\\] echo "non_pic_object=[']$dtrace_prov_name[']" >> \$[]@ [;\\] else [\\] echo "non_pic_object='none'" >> \$[]@ [;\\] fi
EOF
;; *)cat>>Makefile.objects<<EOF$ac_bdir[$]ac_provsrc.o: \$(PHP_DTRACE_OBJS) CFLAGS="\$(CFLAGS_CLEAN)" dtrace -G -o \$[]@ -s $abs_srcdir/$ac_provsrc $dtrace_objs
EOF ;; esac])
dnldnl PHP_CHECK_STDINT_TYPESdnlAC_DEFUN([PHP_CHECK_STDINT_TYPES], [ AC_CHECK_SIZEOF([short], 2) AC_CHECK_SIZEOF([int], 4) AC_CHECK_SIZEOF([long], 4) AC_CHECK_SIZEOF([long long], 8) AC_CHECK_TYPES([int8, int16, int32, int64, int8_t, int16_t, int32_t, int64_t, uint8, uint16, uint32, uint64, uint8_t, uint16_t, uint32_t, uint64_t, u_int8_t, u_int16_t, u_int32_t, u_int64_t], [], [], [#if HAVE_STDINT_H# include <stdint.h>#endif#if HAVE_SYS_TYPES_H# include <sys/types.h>#endif ]) AC_DEFINE([PHP_HAVE_STDINT_TYPES], [1], [Checked for stdint types])])
dnl PHP_CHECK_BUILTIN_EXPECTAC_DEFUN([PHP_CHECK_BUILTIN_EXPECT], [ AC_MSG_CHECKING([for __builtin_expect])
AC_TRY_LINK(, [ return __builtin_expect(1,1) ? 1 : 0; ], [ have_builtin_expect=1 AC_MSG_RESULT([yes]) ], [ have_builtin_expect=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_EXPECT], [$have_builtin_expect], [Whether the compiler supports __builtin_expect])
])
dnl PHP_CHECK_BUILTIN_CLZAC_DEFUN([PHP_CHECK_BUILTIN_CLZ], [ AC_MSG_CHECKING([for __builtin_clz])
AC_TRY_LINK(, [ return __builtin_clz(1) ? 1 : 0; ], [ have_builtin_clz=1 AC_MSG_RESULT([yes]) ], [ have_builtin_clz=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_CLZ], [$have_builtin_clz], [Whether the compiler supports __builtin_clz])
])
dnl PHP_CHECK_BUILTIN_CTZLAC_DEFUN([PHP_CHECK_BUILTIN_CTZL], [ AC_MSG_CHECKING([for __builtin_ctzl])
AC_TRY_LINK(, [ return __builtin_ctzl(2L) ? 1 : 0; ], [ have_builtin_ctzl=1 AC_MSG_RESULT([yes]) ], [ have_builtin_ctzl=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_CTZL], [$have_builtin_ctzl], [Whether the compiler supports __builtin_ctzl])
])
dnl PHP_CHECK_BUILTIN_CTZLLAC_DEFUN([PHP_CHECK_BUILTIN_CTZLL], [ AC_MSG_CHECKING([for __builtin_ctzll])
AC_TRY_LINK(, [ return __builtin_ctzll(2LL) ? 1 : 0; ], [ have_builtin_ctzll=1 AC_MSG_RESULT([yes]) ], [ have_builtin_ctzll=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_CTZLL], [$have_builtin_ctzll], [Whether the compiler supports __builtin_ctzll])
])
dnl PHP_CHECK_BUILTIN_SMULL_OVERFLOWAC_DEFUN([PHP_CHECK_BUILTIN_SMULL_OVERFLOW], [ AC_MSG_CHECKING([for __builtin_smull_overflow])
AC_TRY_LINK(, [ long tmpvar; return __builtin_smull_overflow(3, 7, &tmpvar); ], [ have_builtin_smull_overflow=1 AC_MSG_RESULT([yes]) ], [ have_builtin_smull_overflow=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_SMULL_OVERFLOW], [$have_builtin_smull_overflow], [Whether the compiler supports __builtin_smull_overflow])
])
dnl PHP_CHECK_BUILTIN_SMULLL_OVERFLOWAC_DEFUN([PHP_CHECK_BUILTIN_SMULLL_OVERFLOW], [ AC_MSG_CHECKING([for __builtin_smulll_overflow])
AC_TRY_LINK(, [ long long tmpvar; return __builtin_smulll_overflow(3, 7, &tmpvar); ], [ have_builtin_smulll_overflow=1 AC_MSG_RESULT([yes]) ], [ have_builtin_smulll_overflow=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_SMULLL_OVERFLOW], [$have_builtin_smulll_overflow], [Whether the compiler supports __builtin_smulll_overflow])
])
dnl PHP_CHECK_BUILTIN_SADDL_OVERFLOWAC_DEFUN([PHP_CHECK_BUILTIN_SADDL_OVERFLOW], [ AC_MSG_CHECKING([for __builtin_saddl_overflow])
AC_TRY_LINK(, [ long tmpvar; return __builtin_saddl_overflow(3, 7, &tmpvar); ], [ have_builtin_saddl_overflow=1 AC_MSG_RESULT([yes]) ], [ have_builtin_saddl_overflow=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_SADDL_OVERFLOW], [$have_builtin_saddl_overflow], [Whether the compiler supports __builtin_saddl_overflow])
])
dnl PHP_CHECK_BUILTIN_SADDLL_OVERFLOWAC_DEFUN([PHP_CHECK_BUILTIN_SADDLL_OVERFLOW], [ AC_MSG_CHECKING([for __builtin_saddll_overflow])
AC_TRY_LINK(, [ long long tmpvar; return __builtin_saddll_overflow(3, 7, &tmpvar); ], [ have_builtin_saddll_overflow=1 AC_MSG_RESULT([yes]) ], [ have_builtin_saddll_overflow=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_SADDLL_OVERFLOW], [$have_builtin_saddll_overflow], [Whether the compiler supports __builtin_saddll_overflow])
])
dnl PHP_CHECK_BUILTIN_SSUBL_OVERFLOWAC_DEFUN([PHP_CHECK_BUILTIN_SSUBL_OVERFLOW], [ AC_MSG_CHECKING([for __builtin_ssubl_overflow])
AC_TRY_LINK(, [ long tmpvar; return __builtin_ssubl_overflow(3, 7, &tmpvar); ], [ have_builtin_ssubl_overflow=1 AC_MSG_RESULT([yes]) ], [ have_builtin_ssubl_overflow=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_SSUBL_OVERFLOW], [$have_builtin_ssubl_overflow], [Whether the compiler supports __builtin_ssubl_overflow])
])
dnl PHP_CHECK_BUILTIN_SSUBLL_OVERFLOWAC_DEFUN([PHP_CHECK_BUILTIN_SSUBLL_OVERFLOW], [ AC_MSG_CHECKING([for __builtin_ssubll_overflow])
AC_TRY_LINK(, [ long long tmpvar; return __builtin_ssubll_overflow(3, 7, &tmpvar); ], [ have_builtin_ssubll_overflow=1 AC_MSG_RESULT([yes]) ], [ have_builtin_ssubll_overflow=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_SSUBLL_OVERFLOW], [$have_builtin_ssubll_overflow], [Whether the compiler supports __builtin_ssubll_overflow])
])
dnl PHP_CHECK_BUILTIN_CPU_INITAC_DEFUN([PHP_CHECK_BUILTIN_CPU_INIT], [ AC_MSG_CHECKING([for __builtin_cpu_init])
AC_TRY_LINK(, [ return __builtin_cpu_init()? 1 : 0; ], [ have_builtin_cpu_init=1 AC_MSG_RESULT([yes]) ], [ have_builtin_cpu_init=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_CPU_INIT], [$have_builtin_cpu_init], [Whether the compiler supports __builtin_cpu_init])
])
dnl PHP_CHECK_BUILTIN_CPU_SUPPORTSAC_DEFUN([PHP_CHECK_BUILTIN_CPU_SUPPORTS], [ AC_MSG_CHECKING([for __builtin_cpu_supports])
AC_TRY_LINK(, [ return __builtin_cpu_supports("sse")? 1 : 0; ], [ have_builtin_cpu_supports=1 AC_MSG_RESULT([yes]) ], [ have_builtin_cpu_supports=0 AC_MSG_RESULT([no]) ])
AC_DEFINE_UNQUOTED([PHP_HAVE_BUILTIN_CPU_SUPPORTS], [$have_builtin_cpu_supports], [Whether the compiler supports __builtin_cpu_supports])])
dnl PHP_CHECK_CPU_SUPPORTSAC_DEFUN([PHP_CHECK_CPU_SUPPORTS], [ AC_REQUIRE([PHP_CHECK_BUILTIN_CPU_INIT]) AC_REQUIRE([PHP_CHECK_BUILTIN_CPU_SUPPORTS]) have_ext_instructions=0 if test $have_builtin_cpu_supports = 1; then AC_MSG_CHECKING([for $1 instructions supports]) AC_TRY_RUN([int main() { return __builtin_cpu_supports("$1")? 0 : 1;} ], [ have_ext_instructions=1 AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) fi AC_DEFINE_UNQUOTED(AS_TR_CPP([PHP_HAVE_$1_INSTRUCTIONS]), [$have_ext_instructions], [Whether the compiler supports $1 instructions])])
dnl Load the AX_CHECK_COMPILE_FLAG macro from the autoconf archive.m4_include([build/ax_check_compile_flag.m4])
m4_include([build/ax_gcc_func_attribute.m4])
|