📄 apr_common.m4
字号:
dnl string.dnldnlAC_DEFUN(APR_CHECK_STRERROR_R_RC,[AC_MSG_CHECKING(for type of return code from strerror_r)AC_TRY_RUN([#include <errno.h>#include <string.h>#include <stdio.h>main(){ 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]) msg="int"else msg="pointer"fiAC_MSG_RESULT([$msg])] )dnldnl APR_CHECK_CRYPT_R_STYLEdnldnl Decide which of a couple of flavors of crypt_r() is necessary fordnl this platform.dnlAC_DEFUN(APR_CHECK_CRYPT_R_STYLE,[AC_CACHE_CHECK(style of crypt_r, ac_cv_crypt_r_style,[dnlac_cv_crypt_r_style=nonednlAC_TRY_COMPILE([#include <crypt.h>],[CRYPTD buffer;crypt_r("passwd", "hash", &buffer);], ac_cv_crypt_r_style=cryptd)dnlif test "$ac_cv_crypt_r_style" = "none"; thenAC_TRY_COMPILE([#include <crypt.h>],[struct crypt_data buffer;crypt_r("passwd", "hash", &buffer);], ac_cv_crypt_r_style=struct_crypt_data)fidnl])if test "$ac_cv_crypt_r_style" = "cryptd"; then AC_DEFINE(CRYPT_R_CRYPTD, 1, [Define if crypt_r has uses CRYPTD])fi# if we don't combine these conditions, CRYPT_R_STRUCT_CRYPT_DATA# will end up defined twiceif test "$ac_cv_crypt_r_style" = "struct_crypt_data"; then AC_DEFINE(CRYPT_R_STRUCT_CRYPT_DATA, 1, [Define if crypt_r uses struct crypt_data])fi])dnldnl APR_CHECK_DIRENT_INODEdnldnl Decide if d_fileno or d_ino are available in the direntdnl structure on this platform. Single UNIX Spec says d_ino,dnl BSD uses d_fileno. Undef to find the real beast.dnlAC_DEFUN(APR_CHECK_DIRENT_INODE, [AC_CACHE_CHECK([for inode member of struct dirent], apr_cv_dirent_inode, [apr_cv_dirent_inode=noAC_TRY_COMPILE([#include <sys/types.h>#include <dirent.h>],[#ifdef d_ino#undef d_ino#endifstruct dirent de; de.d_fileno;], apr_cv_dirent_inode=d_fileno)if test "$apr_cv_dirent_inode" = "no"; thenAC_TRY_COMPILE([#include <sys/types.h>#include <dirent.h>],[#ifdef d_fileno#undef d_fileno#endifstruct 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)fi])dnldnl APR_CHECK_DIRENT_TYPEdnldnl 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, sodnl look for one while we are at it.dnlAC_DEFUN(APR_CHECK_DIRENT_TYPE,[AC_CACHE_CHECK([for file type member of struct dirent], apr_cv_dirent_type,[apr_cv_dirent_type=noAC_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) fi])dnl the following is a newline, a space, a tab, and a backslash (thednl 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],[ \])dnldnl APR_COMMA_ARGS(ARG1 ...)dnl convert the whitespace-separated arguments into comman-separateddnl arguments.dnldnl 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.dnlchangequote({,})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 0dnl if FLAG-TO-SET is null, we automagically determine it's namednl by changing all "/" to "_" in the HEADER-FILE and droppingdnl all "." and "-" chars. If the 3rd parameter is "yes" then instead ofdnl 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 $1do 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)" fidone])dnl APR_FLAG_FUNCS(FUNC ... [, FLAG-TO-SET] [, "yes" ])dnl if FLAG-TO-SET is null, we automagically determine it's namednl prepending "have_" to the function name in FUNC, otherwisednl we use what's provided as FLAG-TO-SET. If the 3rd parameterdnl is "yes" then instead of setting to 1 or 0, we set FLAG-TO-SETdnl to yes or no.dnlAC_DEFUN(APR_FLAG_FUNCS,[AC_CHECK_FUNCS($1)for aprt_j in $1do 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)" fidone])dnl Iteratively interpolate the contents of the second argumentdnl until interpolation offers no new result. Then assign thednl final result to $1.dnldnl Example:dnldnl foo=1dnl 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}"])dnldnl Removes the value of $3 from the string in $2, strips of any leadingdnl slashes, and returns the value in $1.dnldnl 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 successfulif 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 returneddnl as the help string. When using this macro with a multi-line RHS, ensurednl that you surround the macro invocation with []sAC_DEFUN(APR_HELP_STRING,[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING([$1],[$2]),[ ][$1] substr([ ],len($1))[$2])])dnldnl APR_LAYOUT(configlayout, layoutname [, extravars])dnlAC_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 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([,])])dnldnldnl APR_ENABLE_LAYOUT(default layout name [, extra vars])dnlAC_DEFUN(APR_ENABLE_LAYOUT,[AC_ARG_ENABLE(layout,[ --enable-layout=LAYOUT],[ LAYOUT=$enableval])if test -z "$LAYOUT"; then LAYOUT="$1"fiAPR_LAYOUT($srcdir/config.layout, $LAYOUT, $2)AC_MSG_CHECKING(for chosen layout)AC_MSG_RESULT($layout_name)])dnldnl APR_PARSE_ARGUMENTSdnl a reimplementation of autoconf's argument parser,dnl used here to allow us to co-exist layouts and argument baseddnl 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"shiftfor ac_optiondo # 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" ;; esacdone# Be sure to have absolute paths.for ac_var in exec_prefix prefixdo eval ac_val=$`echo $ac_var` case $ac_val in [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;; *) AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);; esacdone])dnldnldnl APR_CHECK_DEPENDdnldnl Determine what program we can use to generate .deps-style dependenciesdnlAC_DEFUN(APR_CHECK_DEPEND,[dnl Try to determine what depend program we can usednl 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.cdnl <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.cfiAC_SUBST(MKDEP)])dnldnl APR_CHECK_TYPES_COMPATIBLE(TYPE-1, TYPE-2, [ACTION-IF-TRUE])dnldnl Try to determine whether two types are the same. Only worksdnl for gcc and icc.dnlAC_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])])])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -