dnl -------------------------------------------------------- -*- autoconf -*- dnl Licensed to the Apache Software Foundation (ASF) under one or more dnl contributor license agreements. See the NOTICE file distributed with dnl this work for additional information regarding copyright ownership. dnl The ASF licenses this file to You under the Apache License, Version 2.0 dnl (the "License"); you may not use this file except in compliance with dnl the License. You may obtain a copy of the License at dnl dnl http://www.apache.org/licenses/LICENSE-2.0 dnl dnl Unless required by applicable law or agreed to in writing, software dnl distributed under the License is distributed on an "AS IS" BASIS, dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. dnl See the License for the specific language governing permissions and dnl limitations under the License. dnl dnl apr_common.m4: APR's general-purpose autoconf macros dnl dnl dnl APR_CONFIG_NICE(filename) dnl dnl Saves a snapshot of the configure command-line for later reuse dnl AC_DEFUN([APR_CONFIG_NICE], [ rm -f $1 cat >$1<<EOF #! /bin/sh # # Created by configure EOF if test -n "$CC"; then echo "CC=\"$CC\"; export CC" >> $1 fi if test -n "$CFLAGS"; then echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> $1 fi if test -n "$CPPFLAGS"; then echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> $1 fi if test -n "$LDFLAGS"; then echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> $1 fi if test -n "$LTFLAGS"; then echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> $1 fi if test -n "$LIBS"; then echo "LIBS=\"$LIBS\"; export LIBS" >> $1 fi if test -n "$INCLUDES"; then echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> $1 fi if test -n "$NOTEST_CFLAGS"; then echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> $1 fi if test -n "$NOTEST_CPPFLAGS"; then echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> $1 fi if test -n "$NOTEST_LDFLAGS"; then echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> $1 fi if test -n "$NOTEST_LIBS"; then echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> $1 fi # Retrieve command-line arguments. eval "set x $[0] $ac_configure_args" shift for arg do APR_EXPAND_VAR(arg, $arg) echo "\"[$]arg\" \\" >> $1 done echo '"[$]@"' >> $1 chmod +x $1 ])dnl dnl APR_MKDIR_P_CHECK(fallback-mkdir-p) dnl checks whether mkdir -p works AC_DEFUN([APR_MKDIR_P_CHECK], [ AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[ test -d conftestdir && rm -rf conftestdir mkdir -p conftestdir/somedir >/dev/null 2>&1 if test -d conftestdir/somedir; then ac_cv_mkdir_p=yes else ac_cv_mkdir_p=no fi rm -rf conftestdir ]) if test "$ac_cv_mkdir_p" = "yes"; then mkdir_p="mkdir -p" else mkdir_p="$1" fi ]) dnl dnl APR_SUBDIR_CONFIG(dir [, sub-package-cmdline-args, args-to-drop]) dnl dnl dir: directory to find configure in dnl sub-package-cmdline-args: arguments to add to the invocation (optional) dnl args-to-drop: arguments to drop from the invocation (optional) dnl dnl Note: This macro relies on ac_configure_args being set properly. dnl dnl The args-to-drop argument is shoved into a case statement, so dnl multiple arguments can be separated with a |. dnl dnl Note: Older versions of autoconf do not single-quote args, while 2.54+ dnl places quotes around every argument. So, if you want to drop the dnl argument called --enable-layout, you must pass the third argument as: dnl [--enable-layout=*|\'--enable-layout=*] dnl dnl Trying to optimize this is left as an exercise to the reader who wants dnl to put up with more autoconf craziness. I give up. dnl AC_DEFUN([APR_SUBDIR_CONFIG], [ # save our work to this point; this allows the sub-package to use it AC_CACHE_SAVE echo "configuring package in $1 now" ac_popdir=`pwd` apr_config_subdirs="$1" test -d $1 || $mkdir_p $1 ac_abs_srcdir=`(cd $srcdir/$1 && pwd)` cd $1 changequote(, )dnl # A "../" for each directory in /$config_subdirs. ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` changequote([, ])dnl # Make the cache file pathname absolute for the subdirs # required to correctly handle subdirs that might actually # be symlinks case "$cache_file" in /*) # already absolute ac_sub_cache_file=$cache_file ;; *) # Was relative path. ac_sub_cache_file="$ac_popdir/$cache_file" ;; esac ifelse($3, [], [apr_configure_args=$ac_configure_args],[ apr_configure_args= apr_sep= for apr_configure_arg in $ac_configure_args do case "$apr_configure_arg" in $3) continue ;; esac apr_configure_args="$apr_configure_args$apr_sep'$apr_configure_arg'" apr_sep=" " done ]) dnl autoconf doesn't add --silent to ac_configure_args; explicitly pass it test "x$silent" = "xyes" && apr_configure_args="$apr_configure_args --silent" dnl AC_CONFIG_SUBDIRS silences option warnings, emulate this for 2.62 apr_configure_args="--disable-option-checking $apr_configure_args" dnl The eval makes quoting arguments work - specifically the second argument dnl where the quoting mechanisms used is "" rather than []. dnl dnl We need to execute another shell because some autoconf/shell combinations dnl will choke after doing repeated APR_SUBDIR_CONFIG()s. (Namely Solaris dnl and autoconf-2.54+) if eval $SHELL $ac_abs_srcdir/configure $apr_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_abs_srcdir $2 then : echo "$1 configured properly" else echo "configure failed for $1" exit 1 fi cd $ac_popdir # grab any updates from the sub-package AC_CACHE_LOAD ])dnl dnl dnl APR_SAVE_THE_ENVIRONMENT(variable_name) dnl dnl Stores the variable (usually a Makefile macro) for later restoration dnl AC_DEFUN([APR_SAVE_THE_ENVIRONMENT], [ apr_ste_save_$1="$$1" ])dnl dnl dnl APR_RESTORE_THE_ENVIRONMENT(variable_name, prefix_) dnl dnl Uses the previously saved variable content to figure out what configure dnl has added to the variable, moving the new bits to prefix_variable_name dnl and restoring the original variable contents. This makes it possible dnl for a user to override configure when it does something stupid. dnl AC_DEFUN([APR_RESTORE_THE_ENVIRONMENT], [ dnl Check whether $apr_ste_save_$1 is empty or dnl only whitespace. The verbatim "X" is token number 1, dnl the following whitespace will be ignored. set X $apr_ste_save_$1 if test ${#} -eq 1; then $2$1="$$1" $1= else if test "x$apr_ste_save_$1" = "x$$1"; then $2$1= else $2$1=`echo "$$1" | sed -e "s%${apr_ste_save_$1}%%"` $1="$apr_ste_save_$1" fi fi if test "x$silent" != "xyes"; then echo " restoring $1 to \"$$1\"" echo " setting $2$1 to \"$$2$1\"" fi AC_SUBST($2$1) ])dnl dnl dnl APR_SETIFNULL(variable, value) dnl dnl Set variable iff it's currently null dnl AC_DEFUN([APR_SETIFNULL], [ if test -z "$$1"; then test "x$silent" != "xyes" && echo " setting $1 to \"$2\"" $1="$2" fi ])dnl dnl dnl APR_SETVAR(variable, value) dnl dnl Set variable no matter what dnl AC_DEFUN([APR_SETVAR], [ test "x$silent" != "xyes" && echo " forcing $1 to \"$2\"" $1="$2" ])dnl dnl dnl APR_ADDTO(variable, value) dnl dnl Add value to variable dnl AC_DEFUN([APR_ADDTO], [ if test "x$$1" = "x"; then test "x$silent" != "xyes" && echo " setting $1 to \"$2\"" $1="$2" else apr_addto_bugger="$2" for i in $apr_addto_bugger; do apr_addto_duplicate="0" for j in $$1; do if test "x$i" = "x$j"; then apr_addto_duplicate="1" break fi done if test $apr_addto_duplicate = "0"; then test "x$silent" != "xyes" && echo " adding \"$i\" to $1" $1="$$1 $i" fi done fi ])dnl dnl dnl APR_REMOVEFROM(variable, value) dnl dnl Remove a value from a variable dnl AC_DEFUN([APR_REMOVEFROM], [ if test "x$$1" = "x$2"; then test "x$silent" != "xyes" && echo " nulling $1" $1="" else apr_new_bugger="" apr_removed=0 for i in $$1; do if test "x$i" != "x$2"; then apr_new_bugger="$apr_new_bugger $i" else apr_removed=1 fi done if test $apr_removed = "1"; then test "x$silent" != "xyes" && echo " removed \"$2\" from $1" $1=$apr_new_bugger fi fi ]) dnl dnl dnl APR_CHECK_DEFINE_FILES( symbol, header_file [header_file ...] ) dnl AC_DEFUN([APR_CHECK_DEFINE_FILES], [ AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[ ac_cv_define_$1=no for curhdr in $2 do AC_EGREP_CPP(YES_IS_DEFINED, [ #include <$curhdr> #ifdef $1 YES_IS_DEFINED #endif ], ac_cv_define_$1=yes) done ]) if test "$ac_cv_define_$1" = "yes"; then AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined]) fi ]) dnl dnl APR_CHECK_DEFINE(symbol, header_file) dnl AC_DEFUN([APR_CHECK_DEFINE], [ AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[ AC_EGREP_CPP(YES_IS_DEFINED, [ #include <$2> #ifdef $1 YES_IS_DEFINED #endif ], ac_cv_define_$1=yes, ac_cv_define_$1=no) ]) if test "$ac_cv_define_$1" = "yes"; then AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined in $2]) fi ]) dnl dnl APR_CHECK_APR_DEFINE( symbol ) dnl AC_DEFUN([APR_CHECK_APR_DEFINE], [ apr_old_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $INCLUDES" AC_EGREP_CPP(YES_IS_DEFINED, [ #include <apr.h> #if $1 YES_IS_DEFINED #endif ], ac_cv_define_$1=yes, ac_cv_define_$1=no) CPPFLAGS=$apr_old_cppflags ]) dnl APR_CHECK_FILE(filename); set ac_cv_file_filename to dnl "yes" if 'filename' is readable, else "no". dnl @deprecated! - use AC_CHECK_FILE instead AC_DEFUN([APR_CHECK_FILE], [ dnl Pick a safe variable name define([apr_cvname], ac_cv_file_[]translit([$1], [./+-], [__p_])) AC_CACHE_CHECK([for $1], [apr_cvname], [if test -r $1; then apr_cvname=yes else apr_cvname=no fi]) ]) define(APR_IFALLYES,[dnl ac_rc=yes for ac_spec in $1; do ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` case $ac_type in header ) ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` ac_var="ac_cv_header_$ac_item" ;; file ) ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` ac_var="ac_cv_file_$ac_item" ;; func ) ac_var="ac_cv_func_$ac_item" ;; struct ) ac_var="ac_cv_struct_$ac_item" ;; define ) ac_var="ac_cv_define_$ac_item" ;; custom ) ac_var="$ac_item" ;; esac eval "ac_val=\$$ac_var" if test ".$ac_val" != .yes; then ac_rc=no break fi done if test ".$ac_rc" = .yes; then : $2 else : $3 fi ]) define(APR_BEGIN_DECISION,[dnl ac_decision_item='$1' ac_decision_msg='FAILED' ac_decision='' ]) AC_DEFUN([APR_DECIDE],[dnl dnl Define the flag (or not) in apr_private.h via autoheader AH_TEMPLATE($1, [Define if $2 will be used]) ac_decision='$1' ac_decision_msg='$2' ac_decision_$1=yes ac_decision_$1_msg='$2' ]) define(APR_DECISION_OVERRIDE,[dnl ac_decision='' for ac_item in $1; do eval "ac_decision_this=\$ac_decision_${ac_item}" if test ".$ac_decision_this" = .yes; then ac_decision=$ac_item eval "ac_decision_msg=\$ac_decision_${ac_item}_msg" fi done ]) define(APR_DECISION_FORCE,[dnl ac_decision="$1" eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\"" ]) define(APR_END_DECISION,[dnl if test ".$ac_decision" = .; then echo "[$]0:Error: decision on $ac_decision_item failed" 1>&2 exit 1 else if test ".$ac_decision_msg" = .; then ac_decision_msg="$ac_decision" fi AC_DEFINE_UNQUOTED(${ac_decision_item}) AC_MSG_RESULT([decision on $ac_decision_item... $ac_decision_msg]) fi ]) dnl dnl APR_TRY_COMPILE_NO_WARNING(INCLUDES, FUNCTION-BODY, dnl [ACTIONS-IF-NO-WARNINGS], [ACTIONS-IF-WARNINGS]) dnl dnl Tries a compile test with warnings activated so that the result dnl is false if the code doesn't compile cleanly. For compilers dnl where it is not known how to activate a "fail-on-error" mode, dnl it is undefined which of the sets of actions will be run. dnl AC_DEFUN([APR_TRY_COMPILE_NO_WARNING], [apr_save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $CFLAGS_WARN" if test "$ac_cv_prog_gcc" = "yes"; then CFLAGS="$CFLAGS -Werror" fi AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [ #ifndef PACKAGE_NAME #include "confdefs.h" #endif ] [[$1]] [int main(int argc, const char *const *argv) {] [[$2]] [ return 0; }] )], [CFLAGS=$apr_save_CFLAGS $3], [CFLAGS=$apr_save_CFLAGS $4]) ]) dnl dnl APR_CHECK_STRERROR_R_RC dnl dnl Decide which style of retcode is used by this system's dnl strerror_r(). It either returns int (0 for success, -1 dnl for failure), or it returns a pointer to the error dnl string. dnl dnl AC_DEFUN([APR_CHECK_STRERROR_R_RC], [ AC_CACHE_CHECK([whether return code from strerror_r has type int], [ac_cv_strerror_r_rc_int], [AC_TRY_RUN([ #include <errno.h> #include <string.h> #include <stdio.h> #include <stdlib.h> int main(void) { char buf[1024]; if (strerror_r(ERANGE, buf, sizeof buf) < 1) { exit(0); } else { exit(1); } }], [ ac_cv_strerror_r_rc_int=yes ], [ ac_cv_strerror_r_rc_int=no ], [ ac_cv_strerror_r_rc_int=no ] ) ] ) if test "x$ac_cv_strerror_r_rc_int" = xyes; then AC_DEFINE(STRERROR_R_RC_INT, 1, [Define if strerror returns int]) fi ] ) dnl dnl APR_CHECK_DIRENT_INODE dnl dnl Decide if d_fileno or d_ino are available in the dirent dnl structure on this platform. Single UNIX Spec says d_ino, dnl BSD uses d_fileno. Undef to find the real beast. dnl AC_DEFUN([APR_CHECK_DIRENT_INODE], [ AC_CACHE_CHECK([for inode member of struct dirent], apr_cv_dirent_inode, [ apr_cv_dirent_inode=no AC_TRY_COMPILE([ #include <sys/types.h> #include <dirent.h> ],[ #ifdef d_ino #undef d_ino #endif struct dirent de; de.d_fileno; ], apr_cv_dirent_inode=d_fileno) if test "$apr_cv_dirent_inode" = "no"; then AC_TRY_COMPILE([ #include <sys/types.h> #include <dirent.h> ],[ #ifdef d_fileno #undef d_fileno #endif struct dirent de; de.d_ino; ], apr_cv_dirent_inode=d_ino) fi ]) if test "$apr_cv_dirent_inode" != "no"; then AC_DEFINE_UNQUOTED(DIRENT_INODE, $apr_cv_dirent_inode, [Define if struct dirent has an inode member]) fi ]) dnl dnl APR_CHECK_DIRENT_TYPE dnl dnl Decide if d_type is available in the dirent structure dnl on this platform. Not part of the Single UNIX Spec. dnl Note that this is worthless without DT_xxx macros, so dnl look for one while we are at it. dnl AC_DEFUN([APR_CHECK_DIRENT_TYPE], [ AC_CACHE_CHECK([for file type member of struct dirent], apr_cv_dirent_type,[ apr_cv_dirent_type=no AC_TRY_COMPILE([ #include <sys/types.h> #include <dirent.h> ],[ struct dirent de; de.d_type = DT_REG; ], apr_cv_dirent_type=d_type) ]) if test "$apr_cv_dirent_type" != "no"; then AC_DEFINE_UNQUOTED(DIRENT_TYPE, $apr_cv_dirent_type, [Define if struct dirent has a d_type member]) fi ]) dnl the following is a newline, a space, a tab, and a backslash (the dnl backslash is used by the shell to skip newlines, but m4 sees it; dnl treat it like whitespace). dnl WARNING: don't reindent these lines, or the space/tab will be lost! define([apr_whitespace],[ \]) dnl dnl APR_COMMA_ARGS(ARG1 ...) dnl convert the whitespace-separated arguments into comman-separated dnl arguments. dnl dnl APR_FOREACH(CODE-BLOCK, ARG1, ARG2, ...) dnl subsitute CODE-BLOCK for each ARG[i]. "eachval" will be set to ARG[i] dnl within each iteration. dnl changequote({,}) define({APR_COMMA_ARGS},{patsubst([$}{1],[[}apr_whitespace{]+],[,])}) define({APR_FOREACH}, {ifelse($}{2,,, [define([eachval], $}{2)$}{1[]APR_FOREACH([$}{1], builtin([shift], builtin([shift], $}{@)))])}) changequote([,]) dnl APR_FLAG_HEADERS(HEADER-FILE ... [, FLAG-TO-SET ] [, "yes" ]) dnl we set FLAG-TO-SET to 1 if we find HEADER-FILE, otherwise we set to 0 dnl if FLAG-TO-SET is null, we automagically determine it's name dnl by changing all "/" to "_" in the HEADER-FILE and dropping dnl all "." and "-" chars. If the 3rd parameter is "yes" then instead of dnl setting to 1 or 0, we set FLAG-TO-SET to yes or no. dnl AC_DEFUN([APR_FLAG_HEADERS], [ AC_CHECK_HEADERS($1) for aprt_i in $1 do ac_safe=`echo "$aprt_i" | sed 'y%./+-%__p_%'` aprt_2=`echo "$aprt_i" | sed -e 's%/%_%g' -e 's/\.//g' -e 's/-//g'` if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,yes,1)" else eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,no,0)" fi done ]) dnl APR_FLAG_FUNCS(FUNC ... [, FLAG-TO-SET] [, "yes" ]) dnl if FLAG-TO-SET is null, we automagically determine it's name dnl prepending "have_" to the function name in FUNC, otherwise dnl we use what's provided as FLAG-TO-SET. If the 3rd parameter dnl is "yes" then instead of setting to 1 or 0, we set FLAG-TO-SET dnl to yes or no. dnl AC_DEFUN([APR_FLAG_FUNCS], [ AC_CHECK_FUNCS($1) for aprt_j in $1 do aprt_3="have_$aprt_j" if eval "test \"`echo '$ac_cv_func_'$aprt_j`\" = yes"; then eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,yes,1)" else eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,no,0)" fi done ]) dnl Iteratively interpolate the contents of the second argument dnl until interpolation offers no new result. Then assign the dnl final result to $1. dnl dnl Example: dnl dnl foo=1 dnl bar='${foo}/2' dnl baz='${bar}/3' dnl APR_EXPAND_VAR(fraz, $baz) dnl $fraz is now "1/2/3" dnl AC_DEFUN([APR_EXPAND_VAR], [ ap_last= ap_cur="$2" while test "x${ap_cur}" != "x${ap_last}"; do ap_last="${ap_cur}" ap_cur=`eval "echo ${ap_cur}"` done $1="${ap_cur}" ]) dnl dnl Removes the value of $3 from the string in $2, strips of any leading dnl slashes, and returns the value in $1. dnl dnl Example: dnl orig_path="${prefix}/bar" dnl APR_PATH_RELATIVE(final_path, $orig_path, $prefix) dnl $final_path now contains "bar" AC_DEFUN([APR_PATH_RELATIVE], [ ap_stripped=`echo $2 | sed -e "s#^$3##"` # check if the stripping was successful if test "x$2" != "x${ap_stripped}"; then # it was, so strip of any leading slashes $1="`echo ${ap_stripped} | sed -e 's#^/*##'`" else # it wasn't so return the original $1="$2" fi ]) dnl APR_HELP_STRING(LHS, RHS) dnl Autoconf 2.50 can not handle substr correctly. It does have dnl AC_HELP_STRING, so let's try to call it if we can. dnl Note: this define must be on one line so that it can be properly returned dnl as the help string. When using this macro with a multi-line RHS, ensure dnl that you surround the macro invocation with []s AC_DEFUN([APR_HELP_STRING], [ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING([$1],[$2]),[ ][$1] substr([ ],len($1))[$2])]) dnl dnl APR_LAYOUT(configlayout, layoutname [, extravars]) dnl AC_DEFUN([APR_LAYOUT], [ if test ! -f $srcdir/config.layout; then echo "** Error: Layout file $srcdir/config.layout not found" echo "** Error: Cannot use undefined layout '$LAYOUT'" exit 1 fi # Catch layout names including a slash which will otherwise # confuse the heck out of the sed script. case $2 in */*) echo "** Error: $2 is not a valid layout name" exit 1 ;; esac pldconf=./config.pld changequote({,}) sed -e "1s/[ ]*<[lL]ayout[ ]*$2[ ]*>[ ]*//;1t" \ -e "1,/[ ]*<[lL]ayout[ ]*$2[ ]*>[ ]*/d" \ -e '/[ ]*<\/Layout>[ ]*/,$d' \ -e "s/^[ ]*//g" \ -e "s/:[ ]*/=\'/g" \ -e "s/[ ]*$/'/g" \ $1 > $pldconf layout_name=$2 if test ! -s $pldconf; then echo "** Error: unable to find layout $layout_name" exit 1 fi . $pldconf rm $pldconf for var in prefix exec_prefix bindir sbindir libexecdir mandir \ sysconfdir datadir includedir localstatedir runtimedir \ logfiledir libdir installbuilddir libsuffix $3; do eval "val=\"\$$var\"" case $val in *+) val=`echo $val | sed -e 's;\+$;;'` eval "$var=\"\$val\"" autosuffix=yes ;; *) autosuffix=no ;; esac val=`echo $val | sed -e 's:\(.\)/*$:\1:'` val=`echo $val | sed -e 's:[\$]\([a-z_]*\):${\1}:g'` if test "$autosuffix" = "yes"; then if echo $val | grep apache >/dev/null; then addtarget=no else addtarget=yes fi if test "$addtarget" = "yes"; then val="$val/apache2" fi fi eval "$var='$val'" done changequote([,]) ])dnl dnl dnl APR_ENABLE_LAYOUT(default layout name [, extra vars]) dnl AC_DEFUN([APR_ENABLE_LAYOUT], [ AC_ARG_ENABLE(layout, [ --enable-layout=LAYOUT],[ LAYOUT=$enableval ]) if test -z "$LAYOUT"; then LAYOUT="$1" fi APR_LAYOUT($srcdir/config.layout, $LAYOUT, $2) AC_MSG_CHECKING(for chosen layout) AC_MSG_RESULT($layout_name) ]) dnl dnl APR_PARSE_ARGUMENTS dnl a reimplementation of autoconf's argument parser, dnl used here to allow us to co-exist layouts and argument based dnl set ups. AC_DEFUN([APR_PARSE_ARGUMENTS], [ ac_prev= # Retrieve the command-line arguments. The eval is needed because # the arguments are quoted to preserve accuracy. eval "set x $ac_configure_args" shift for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[[^=]]*=\(.*\)'` case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix="$ac_optarg" ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir="$ac_optarg" ;; esac done # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;; *) AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);; esac done ])dnl dnl dnl APR_CHECK_DEPEND dnl dnl Determine what program we can use to generate .deps-style dependencies dnl AC_DEFUN([APR_CHECK_DEPEND], [ dnl Try to determine what depend program we can use dnl All GCC-variants should have -MM. dnl If not, then we can check on those, too. if test "$GCC" = "yes"; then MKDEP='$(CC) -MM' else rm -f conftest.c dnl <sys/types.h> should be available everywhere! cat > conftest.c <<EOF #include <sys/types.h> int main() { return 0; } EOF MKDEP="true" for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do AC_MSG_CHECKING([if $i can create proper make dependencies]) if $i conftest.c 2>/dev/null | grep 'conftest.o: conftest.c' >/dev/null; then MKDEP=$i AC_MSG_RESULT(yes) break; fi AC_MSG_RESULT(no) done rm -f conftest.c fi AC_SUBST(MKDEP) ]) dnl dnl APR_CHECK_TYPES_FMT_COMPATIBLE(TYPE-1, TYPE-2, FMT-TAG, dnl [ACTION-IF-TRUE], [ACTION-IF-FALSE]) dnl dnl Try to determine whether two types are the same and accept the given dnl printf formatter (bare token, e.g. literal d, ld, etc). dnl AC_DEFUN([APR_CHECK_TYPES_FMT_COMPATIBLE], [ define([apr_cvname], apr_cv_typematch_[]translit([$1], [ ], [_])_[]translit([$2], [ ], [_])_[][$3]) AC_CACHE_CHECK([whether $1 and $2 use fmt %$3], apr_cvname, [ APR_TRY_COMPILE_NO_WARNING([#include <sys/types.h> #include <stdio.h> #ifdef HAVE_STDINT_H #include <stdint.h> #endif ], [ $1 chk1, *ptr1; $2 chk2, *ptr2 = &chk1; ptr1 = &chk2; *ptr1 = *ptr2 = 0; printf("%$3 %$3", chk1, chk2); ], [apr_cvname=yes], [apr_cvname=no])]) if test "$apr_cvname" = "yes"; then : $4 else : $5 fi ]) dnl dnl APR_CHECK_TYPES_COMPATIBLE(TYPE-1, TYPE-2, [ACTION-IF-TRUE]) dnl dnl Try to determine whether two types are the same. Only works dnl for gcc and icc. dnl dnl @deprecated @see APR_CHECK_TYPES_FMT_COMPATIBLE dnl AC_DEFUN([APR_CHECK_TYPES_COMPATIBLE], [ define([apr_cvname], apr_cv_typematch_[]translit([$1], [ ], [_])_[]translit([$2], [ ], [_])) AC_CACHE_CHECK([whether $1 and $2 are the same], apr_cvname, [ AC_TRY_COMPILE(AC_INCLUDES_DEFAULT, [ int foo[0 - !__builtin_types_compatible_p($1, $2)]; ], [apr_cvname=yes $3], [apr_cvname=no])]) ])