⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aclocal.m4

📁 Linux下的中文输入法
💻 M4
📖 第 1 页 / 共 3 页
字号:
msg="enabled"],[msg="disabled"])dnlAC_MSG_CHECKING(for compilation optimization mode)AC_MSG_RESULT([$msg])])dnl ##dnl ##  Check for a pre-processor define in a headerdnl ##dnl ##  configure.ac:dnl ##    AC_CHECK_DEFINE(<define>, <header>)dnl ##  acconfig.h:dnl ##    #undef HAVE_<define>dnl ##AC_DEFUN(AC_CHECK_DEFINE,[dnlAC_MSG_CHECKING(for define $1 in $2)AC_CACHE_VAL(ac_cv_define_$1,[AC_EGREP_CPP([YES_IS_DEFINED], [#include <$2>#ifdef $1YES_IS_DEFINED#endif], ac_cv_define_$1=yes, ac_cv_define_$1=no)])dnlAC_MSG_RESULT($ac_cv_define_$1)if test $ac_cv_define_$1 = yes; then    AC_DEFINE(HAVE_[]translit($1, [a-z], [A-Z]), 1,              [define if pre-processor define $1 exists in header $2])fi])dnl ##dnl ##  Check for an ANSI C typedef in a headerdnl ##dnl ##  configure.ac:dnl ##    AC_CHECK_TYPEDEF(<typedef>, <header>)dnl ##  acconfig.h:dnl ##    #undef HAVE_<typedef>dnl ##AC_DEFUN(AC_CHECK_TYPEDEF,[dnlAC_REQUIRE([AC_HEADER_STDC])dnlAC_MSG_CHECKING(for typedef $1)AC_CACHE_VAL(ac_cv_typedef_$1,[AC_EGREP_CPP(dnlchangequote(<<,>>)dnl<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnlchangequote([,]), [#include <$2>], ac_cv_typedef_$1=yes, ac_cv_typedef_$1=no)])dnlAC_MSG_RESULT($ac_cv_typedef_$1)if test $ac_cv_typedef_$1 = yes; then    AC_DEFINE(HAVE_[]translit($1, [a-z], [A-Z]), 1,              [define if typedef $1 exists in header $2])fi])dnl ##dnl ##  Check for an ANSI C struct attribute in a structure defined in a headerdnl ##dnl ##  configure.ac:dnl ##    AC_CHECK_STRUCTATTR(<attr>, <struct>, <header>)dnl ##  acconfig.h:dnl ##    #undef HAVE_<attr>dnl ##AC_DEFUN(AC_CHECK_STRUCTATTR,[dnlAC_REQUIRE([AC_HEADER_STDC])dnlAC_MSG_CHECKING(for attribute $1 in struct $2 from $3)AC_CACHE_VAL(ac_cv_structattr_$1,[dnlAC_TRY_LINK([#include <sys/types.h>#include <$3>],[struct $2 *sp1;struct $2 *sp2;sp1->$1 = sp2->$1;], ac_cv_structattr_$1=yes, ac_cv_structattr_$1=no)])dnlAC_MSG_RESULT($ac_cv_structattr_$1)if test $ac_cv_structattr_$1 = yes; then    AC_DEFINE(HAVE_[]translit($1, [a-z], [A-Z]), 1,              [define if attribute $1 exists in struct $2 from header $3])fi])dnl ##dnl ##  Check for argument type of a functiondnl ##dnl ##  configure.ac:dnl ##    AC_CHECK_ARGTYPE(<header> [...], <func>, <arg-number>,dnl ##                     <max-arg-number>, <action-with-${ac_type}>)dnl ##AC_DEFUN(AC_CHECK_ARGTYPE,[dnlAC_REQUIRE_CPP()dnlAC_MSG_CHECKING([for type of argument $3 for $2()])AC_CACHE_VAL([ac_cv_argtype_$2$3],[cat >conftest.$ac_ext <<EOF[#]line __oline__ "configure"#include "confdefs.h"EOFfor ifile in $1; do    echo "#include <$ifile>" >>conftest.$ac_extdonegpat=''spat=''i=1changequote(, )dnlwhile test $i -le $4; do    gpat="$gpat[^,]*"    if test $i -eq $3; then        spat="$spat\\([^,]*\\)"    else        spat="$spat[^,]*"    fi    if test $i -lt $4; then        gpat="$gpat,"        spat="$spat,"    fi    i=`expr $i + 1`donechangequote([, ])dnl(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC |\changequote(, )dnlsed -e ':join' \    -e '/,[ 	]*$/N' \    -e 's/,[ 	]*\n[ 	]*/, /' \    -e 'tjoin' |\egrep "[^a-zA-Z0-9_]$2[ 	]*\\($gpat\\)" | head -1 |\sed -e "s/.*[^a-zA-Z0-9_]$2[ 	]*($spat).*/\\1/" \    -e 's/(\*[a-zA-Z_][a-zA-Z_0-9]*)/(*)/' \    -e 's/^[ 	]*//' -e 's/[ 	]*$//' \    -e 's/^/arg:/' \    -e 's/^arg:\([^ 	]*\)$/type:\1/' \    -e 's/^arg:\(.*_t\)*$/type:\1/' \    -e 's/^arg:\(.*\*\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]\*\)[_a-zA-Z][_a-zA-Z0-9]*$/type:\1/' \    -e 's/^arg:\(.*[ 	]char\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]short\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]int\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]long\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]float\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]double\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]unsigned\)$/type:\1/' \    -e 's/^arg:\(.*[ 	]signed\)$/type:\1/' \    -e 's/^arg:\(.*struct[ 	][_a-zA-Z][_a-zA-Z0-9]*\)$/type:\1/' \    -e 's/^arg:\(.*\)[ 	]_[_a-zA-Z0-9]*$/type:\1/' \    -e 's/^arg:\(.*\)[ 	]\([^ 	]*\)$/type:\1/' \    -e 's/^type://' >conftest.outputac_cv_argtype_$2$3=`cat conftest.output`changequote([, ])dnlrm -f conftest*])AC_MSG_RESULT([$ac_cv_argtype_$2$3])ac_type="$ac_cv_argtype_$2$3"[$5]])dnl ##dnl ##  Decision Hierachydnl ##m4_define(AC_IFALLYES,[dnlac_rc=yesfor 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"   ;;        lib     [)] ac_var="ac_cv_lib_$ac_item"    ;;        define  [)] ac_var="ac_cv_define_$ac_item" ;;        typedef [)] ac_var="ac_cv_typedef_$ac_item" ;;        custom  [)] ac_var="$ac_item" ;;    esac    eval "ac_val=\$$ac_var"    if test ".$ac_val" != .yes; then        ac_rc=no        break    fidoneif test ".$ac_rc" = .yes; then    :    $2else    :    $3fi])m4_define(AC_BEGIN_DECISION,[dnlac_decision_item='$1'ac_decision_msg='FAILED'ac_decision=''])m4_define(AC_DECIDE,[dnlac_decision='$1'ac_decision_msg='$2'ac_decision_$1=yesac_decision_$1_msg='$2'])m4_define(AC_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])m4_define(AC_DECISION_FORCE,[dnlac_decision="$1"eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\""])m4_define(AC_END_DECISION,[dnlif test ".$ac_decision" = .; then    echo "[$]0:Error: decision on $ac_decision_item failed." 1>&2    echo "[$]0:Hint: see config.log for more details!" 1>&2    exit 1else    if test ".$ac_decision_msg" = .; then        ac_decision_msg="$ac_decision"    fi    AC_MSG_RESULT([decision on $ac_decision_item... ${TB}$ac_decision_msg${TN}])fi])dnl ##dnl ##  Check for existance of a filednl ##dnl ##  configure.ac:dnl ##    AC_TEST_FILE(<file>, <success-action>, <failure-action>)dnl ##AC_DEFUN(AC_TEST_FILE, [ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`AC_MSG_CHECKING([for $1])AC_CACHE_VAL(ac_cv_file_$ac_safe, [if test -r $1; then    eval "ac_cv_file_$ac_safe=yes"else    eval "ac_cv_file_$ac_safe=no"fi])dnlif eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then    AC_MSG_RESULT(yes)    ifelse([$2], , :, [$2])else    AC_MSG_RESULT(no)    ifelse([$3], , :, [$3])fi])dnl ##dnl ##  Check for socket/network size typednl ##dnl ##  configure.ac:dnl ##    AC_CHECK_SOCKLENTYPE(<action-with-${ac_type}>)dnl ##dnl #   Background:dnl #   this exists because of shortsightedness on the POSIX committee.dnl #   BSD systems used "int *" as the parameter to accept(2),dnl #   getsockname(2), getpeername(2) et al. Consequently many Unixdnl #   flavors took an "int *" for that parameter. The POSIX committeednl #   decided that "int" was just too generic and had to be replaceddnl #   with "size_t" almost everywhere. There's no problem with thatdnl #   when you're passing by value. But when you're passing bydnl #   reference (as it is the case for accept(2) and friends) thisdnl #   creates a gross source incompatibility with existing programs.dnl #   On 32-bit architectures it creates only a warning. On 64-bitdnl #   architectures it creates broken code -- because "int *" is adnl #   pointer to a 64-bit quantity and "size_t *" is usually a pointerdnl #   to a 32-bit quantity. Some Unix flavors adopted "size_t *" fordnl #   the sake of POSIX compliance. Others ignored it because it wasdnl #   such a broken interface. Chaos ensued. POSIX finally woke updnl #   and decided that it was wrong and created a new type socklen_t.dnl #   The only useful value for socklen_t is "int", and that's howdnl #   everyone who has a clue implements it. It is almost always thednl #   case that this type should be defined to be an "int", unless thednl #   system being compiled for was created in the window of POSIXdnl #   madness.AC_DEFUN(AC_CHECK_SOCKLENTYPE,[dnlAC_CHECK_TYPEDEF(socklen_t, sys/socket.h)AC_CHECK_ARGTYPE(sys/types.h sys/socket.h, accept, 3, 3, [:])AC_MSG_CHECKING(for fallback socklen_t)AC_CACHE_VAL(ac_cv_check_socklentype, [if test ".$ac_cv_typedef_socklen_t" = .yes; then    ac_cv_check_socklentype='socklen_t'elif test ".$ac_type" != .; then    ac_cv_check_socklentype=`echo "$ac_type" | sed -e 's/[ 	]*\*$//'`else    ac_cv_check_socklentype='int'fi])AC_MSG_RESULT([$ac_cv_check_socklentype])ac_type="$ac_cv_check_socklentype"ifelse([$1], , :, [$1])])dnl ##dnl ##  Check for filedescriptor number typednl ##dnl ##  configure.ac:dnl ##    AC_CHECK_NFDSTYPE(<action-with-${ac_type}>)dnl ##AC_DEFUN(AC_CHECK_NFDSTYPE,[dnlAC_CHECK_TYPEDEF(nfds_t, poll.h)AC_CHECK_ARGTYPE(sys/types.h poll.h, poll, 2, 3, [:])AC_MSG_CHECKING(for fallback nfds_t)AC_CACHE_VAL(ac_cv_check_nfdstype, [if test ".$ac_cv_typedef_nfds_t" = .yes; then    ac_cv_check_nfdstype='nfds_t'elif test ".$ac_type" != .; then    ac_cv_check_nfdstype=`echo "$ac_type" | sed -e 's/[ 	]*\*$//'`else    ac_cv_check_nfdstype='unsigned int'fi])AC_MSG_RESULT([$ac_cv_check_nfdstype])ac_type="$ac_cv_check_nfdstype"ifelse([$1], , :, [$1])])dnl ##dnl ##  Check for direction of stack growthdnl ##dnl ##  configure.ac:dnl ##    AC_CHECK_STACKGROWTH(<define>)dnl ##  acconfig.h:dnl ##    #undef <define>dnl ##  source.c:dnl ##    #include "config.h"dnl ##    #if <define> < 0dnl ##        ...stack grow down...dnl ##    #elsednl ##        ...stack grow up...dnl ##    #endifdnl ##AC_DEFUN(AC_CHECK_STACKGROWTH,[dnlAC_MSG_CHECKING(for direction of stack growth)AC_CACHE_VAL(ac_cv_check_stackgrowth, [cross_compiling=noAC_TRY_RUN(changequote(<<, >>)dnl<<#include <stdio.h>#include <stdlib.h>static int iterate = 10;static int growsdown(int *x){    auto int y;    y = (x > &y);    if (--iterate > 0)        y = growsdown(&y);    if (y != (x > &y))        exit(1);    return y;}int main(int argc, char *argv[]){    FILE *f;    auto int x;    if ((f = fopen("conftestval", "w")) == NULL)        exit(1);    fprintf(f, "%s\n", growsdown(&x) ? "down" : "up");;    fclose(f);    exit(0);}>>changequote([, ])dnl,ac_cv_check_stackgrowth=`cat conftestval`,ac_cv_check_stackgrowth=down,ac_cv_check_stackgrowth=down)dnl])dnlAC_MSG_RESULT([$ac_cv_check_stackgrowth])if test ".$ac_cv_check_stackgrowth" = ".down"; then    val="-1"else    val="+1"fiAC_DEFINE_UNQUOTED($1, $val, [define for stack growth])])dnl ##dnl ##  Check whether and how a POSIX compliant sigsetjmp(3) can be achieveddnl ##dnl ##  configure.ac:dnl ##    AC_CHECK_SJLJ(<success-action>, <failure-action>, <type-var>)dnl ##AC_DEFUN(AC_CHECK_SJLJ,[dnlAC_MSG_CHECKING(for signal-mask aware setjmp(3)/longjmp(3))AC_CACHE_VAL(ac_cv_check_sjlj, [AC_IFALLYES(func:setjmp func:longjmp, ac_cv_check_sjlj=sjlje, ac_cv_check_sjlj=none)cross_compiling=nofor testtype in ssjlj sjlj usjlj; doOCFLAGS="$CFLAGS"CFLAGS="$CFLAGS -DTEST_${testtype}"AC_TRY_RUN(changequote(<<, >>)dnl<<#if defined(TEST_ssjlj)#define __JMP_BUF          sigjmp_buf#define __SETJMP(buf)      sigsetjmp(buf,1)#define __LONGJMP(buf,val) siglongjmp(buf,val)#elif defined(TEST_sjlj)#define __JMP_BUF          jmp_buf#define __SETJMP(buf)      setjmp(buf)#define __LONGJMP(buf,val) longjmp(buf,val)#elif defined(TEST_usjlj)#define __JMP_BUF          jmp_buf#define __SETJMP(buf)      _setjmp(buf)#define __LONGJMP(buf,val) _longjmp(buf,val)#endif#include <stdio.h>#include <sys/types.h>#include <signal.h>#include <setjmp.h>#include <unistd.h>static __JMP_BUF jb;static void sighandler(int sig){    sigset_t sigs;    /* get signal mask */    sigprocmask(SIG_SETMASK, NULL, &sigs);    /* make sure USR1 is still blocked */    if (!sigismember(&sigs, SIGUSR1))        exit(1);    /* block USR2 for us */    sigaddset(&sigs, SIGUSR2);    sigprocmask(SIG_SETMASK, &sigs, NULL);    /* jump back to main */    __LONGJMP(jb, 1);    exit(1);}int main(int argc, char *argv[]){    FILE *fp;    sigset_t sigs;    struct sigaction sa;    /* the default is that it fails */    if ((fp = fopen("conftestval", "w")) == NULL)        exit(1);    fprintf(fp, "failed\n");    fclose(fp);    /* block USR1 and unblock USR2 signal */    sigprocmask(SIG_SETMASK, NULL, &sigs);    sigaddset(&sigs, SIGUSR1);    sigdelset(&sigs, SIGUSR2);    sigprocmask(SIG_SETMASK, &sigs, NULL);    /* set jump buffer */    if (__SETJMP(jb) == 0) {        /* install signal handler for USR1 */        memset((void *)&sa, 0, sizeof(struct sigaction));        sigemptyset(&sa.sa_mask);        sa.sa_handler = sighandler;        sa.sa_flags = 0;        sigaction(SIGUSR1, &sa, NULL);        /* send USR1 signal (which is still blocked) */        kill(getpid(), SIGUSR1);        /* unblock USR1 and wait for it */        sigprocmask(SIG_SETMASK, NULL, &sigs);        sigdelset(&sigs, SIGUSR1);        sigsuspend(&sigs);        exit(1);    }    /* get signal mask again */    sigprocmask(SIG_SETMASK, NULL, &sigs);    /* make sure USR2 is again unblocked */    if (sigismember(&sigs, SIGUSR2))        exit(1);    /* Fine... */    if ((fp = fopen("conftestval", "w")) == NULL)        exit(1);    fprintf(fp, "ok\n");    fclose(fp);    exit(0);}>>changequote([, ]),rc=`cat conftestval`,rc=failed,rc=failed)CFLAGS="$OCFLAGS"if test ".$rc" = .ok; then    ac_cv_check_sjlj=$testtype    breakfidonecase $PLATFORM in    *-*-linux* )        braindead=no        case "x`uname -r`" inchangequote(, )dnl            x2.[23456789]* ) ;;changequote([, ])            * ) braindead=yes ;;        esac        case `grep __GLIBC_MINOR /usr/include/features.h | grep '#define' |\              awk '{ printf("%s", [$]3 >= 1 ? "yes" : "no"); }'` in            yes ) ;;            * ) braindead=yes ;;        esac        case $braindead in            yes ) ac_cv_check_sjlj=sjljlx ;;            no  ) ac_cv_check_sjlj=ssjlj  ;;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -