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 |
|
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 case $host_alias in *darwin*) PHP_ADD_LIBRARY(stdc++) ;; esac 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' ;; *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])
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 ext/ subdir where the extension resides.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)
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(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"; thendnl ---------------------------------------------- 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"; thendnl ---------------------------------------------- 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 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) 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])
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 = "/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])
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 existance 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 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])
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" = "yes" && test -x "$KRB5_CONFIG"; then KERBEROS_LIBS=`$KRB5_CONFIG --libs gssapi` KERBEROS_CFLAGS=`$KRB5_CONFIG --cflags gssapi`
if test -n "$KERBEROS_LIBS" && test -n "$KERBEROS_CFLAGS"; 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=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]])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 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 ]) ]) 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], [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.]) fiifelse([$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
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)])
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 $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"; 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 usefull 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 into global objects when needed case $host_alias in *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])
|