📄 programs.m4
字号:
# --------------------------------------------------------------------------# FEATURE-TEST is called repeatedly with $ac_path_VARIABLE set to the# name of a program in PROGNAME-LIST found in PATH. FEATURE-TEST must set# $ac_cv_path_VARIABLE to the path of an acceptable program, or else# _AC_PATH_PROG_FEATURE_CHECK will report that no acceptable program# was found, and abort. If a suitable $ac_path_VARIABLE is found in the# FEATURE-TEST macro, it can set $ac_path_VARIABLE_found=':' to accept# that value without any further checks.m4_define([_AC_PATH_PROG_FEATURE_CHECK],[# Extract the first word of "$2" to use in msg outputif test -z "$$1"; thenset dummy $2; ac_prog_name=$[2]AC_CACHE_VAL([ac_cv_path_$1],[ac_path_$1_found=false# Loop through the user's path and test for each of PROGNAME-LIST_AS_PATH_WALK([$4],[for ac_prog in $2; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_$1="$as_dir/$ac_prog$ac_exec_ext" AS_EXECUTABLE_P(["$ac_path_$1"]) || continue $3 $ac_path_$1_found && break 3 donedone])])$1="$ac_cv_path_$1"if test -z "$$1"; then AC_MSG_ERROR([no acceptable $ac_prog_name could be found in dnlm4_default([$4], [\$PATH])])fiAC_SUBST([$1])else ac_cv_path_$1=$$1fi])# _AC_FEATURE_CHECK_LENGTH(PROGPATH, CACHE-VAR, CHECK-CMD, [MATCH-STRING])# ------------------------------------------------------------------------# For use as the FEATURE-TEST argument to _AC_PATH_PROG_FEATURE_TEST.# On each iteration run CHECK-CMD on an input file, storing the value# of PROGPATH in CACHE-VAR if the CHECK-CMD succeeds. The input file# is always one line, starting with only 10 characters, and doubling# in length at each iteration until approx 10000 characters or the# feature check succeeds. The feature check is called at each# iteration by appending (optionally, MATCH-STRING and) a newline# to the file, and using the result as input to CHECK-CMD.m4_define([_AC_FEATURE_CHECK_LENGTH],[# Check for GNU $1 and select it if it is found. _AC_PATH_PROG_FLAVOR_GNU([$$1], [$2="$$1" $1_found=:], [ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo '$4' >> "conftest.nl" $3 < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${$1_max-0}; then # Best one so far, save it but keep looking for a better one $2="$$1"dnl # Using $1_max so that each tool feature checked gets itsdnl # own variable. Don't reset it otherwise the implied searchdnl # for best performing tool in a list breaks down. $1_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out])])# _AC_PATH_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE])# ----------------------------------------------------------------m4_define([_AC_PATH_PROG_FLAVOR_GNU],[# Check for GNU $1case `"$1" --version 2>&1` in*GNU*) $2;;m4_ifval([$3],[*) $3;;])esac])# _AC_PATH_PROG_FLAVOR_GNU# AC_PROG_INSTALL# ---------------AN_MAKEVAR([INSTALL], [AC_PROG_INSTALL])AN_PROGRAM([install], [AC_PROG_INSTALL])AC_DEFUN([AC_PROG_INSTALL],[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnlAC_REQUIRE_AUX_FILE([install-sh])dnl# Find a good install program. We prefer a C program (faster),# so one script is as good as another. But avoid the broken or# incompatible versions:# SysV /etc/install, /usr/sbin/install# SunOS /usr/etc/install# IRIX /sbin/install# AIX /bin/install# AmigaOS /C/install, which installs bootblocks on floppy discs# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag# AFS /usr/afsws/bin/install, which mishandles nonexistent args# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"# OS/2's system install, which has a completely different semantic# ./install, which can be erroneously created by make from ./install.sh.AC_MSG_CHECKING([for a BSD-compatible install])if test -z "$INSTALL"; thenAC_CACHE_VAL(ac_cv_path_install,[_AS_PATH_WALK([$PATH],[# Account for people who put trailing slashes in PATH elements.case $as_dir/ in ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if AS_EXECUTABLE_P(["$as_dir/$ac_prog$ac_exec_ext"]); then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;;esac])])dnl if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fifidnl Do special magic for INSTALL instead of AC_SUBST, to getdnl relative names right.AC_MSG_RESULT([$INSTALL])# Use test -z because SunOS4 sh mishandles braces in ${var-val}.# It thinks the first close brace ends the variable substitution.test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'AC_SUBST(INSTALL_PROGRAM)dnltest -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'AC_SUBST(INSTALL_SCRIPT)dnltest -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'AC_SUBST(INSTALL_DATA)dnl])# AC_PROG_INSTALL# AC_PROG_MKDIR_P# ---------------# Check whether `mkdir -p' is known to be thread-safe, and fall back to# install-sh -d otherwise.## Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories# created by `make install' are always world readable, even if the# installer happens to have an overly restrictive umask (e.g. 077).# This was a mistake. There are at least two reasons why we must not# use `-m 0755':# - it causes special bits like SGID to be ignored,# - it may be too restrictive (some setups expect 775 directories).## Do not use -m 0755 and let people choose whatever they expect by# setting umask.## We cannot accept any implementation of `mkdir' that recognizes `-p'.# Some implementations (such as Solaris 8's) are vulnerable to race conditions:# if a parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'# concurrently, both version can detect that a/ is missing, but only# one can create it and the other will error out. Consequently we# restrict ourselves to known race-free implementations.## Automake used to define mkdir_p as `mkdir -p .', in order to# allow $(mkdir_p) to be used without argument. As in# $(mkdir_p) $(somedir)# where $(somedir) is conditionally defined. However we don't do# that for MKDIR_P.# 1. before we restricted the check to GNU mkdir, `mkdir -p .' was# reported to fail in read-only directories. The system where this# happened has been forgotten.# 2. in practice we call $(MKDIR_P) on directories such as# $(MKDIR_P) "$(DESTDIR)$(somedir)"# and we don't want to create $(DESTDIR) if $(somedir) is empty.# To support the latter case, we have to write# test -z "$(somedir)" || $(MKDIR_P) "$(DESTDIR)$(somedir)"# so $(MKDIR_P) always has an argument.# We will have better chances of detecting a missing test if# $(MKDIR_P) complains about missing arguments.# 3. $(MKDIR_P) is named after `mkdir -p' and we don't expect this# to accept no argument.# 4. having something like `mkdir .' in the output is unsightly.## On NextStep and OpenStep, the `mkdir' command does not# recognize any option. It will interpret all options as# directories to create.AN_MAKEVAR([MKDIR_P], [AC_PROG_MKDIR_P])AC_DEFUN([AC_PROG_MKDIR_P],[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnlAC_REQUIRE_AUX_FILE([install-sh])dnlAC_MSG_CHECKING([for a thread-safe mkdir -p])if test -z "$MKDIR_P"; then AC_CACHE_VAL([ac_cv_path_mkdir], [_AS_PATH_WALK([$PATH$PATH_SEPARATOR/opt/sfw/bin], [for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do AS_EXECUTABLE_P(["$as_dir/$ac_prog$ac_exec_ext"]) || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done])]) if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fifidnl Do special magic for MKDIR_P instead of AC_SUBST, to getdnl relative names right.AC_MSG_RESULT([$MKDIR_P])])# AC_PROG_MKDIR_P# AC_PROG_LEX# -----------# Look for flex or lex. Set its associated library to LEXLIB.# Check if lex declares yytext as a char * by default, not a char[].AN_MAKEVAR([LEX], [AC_PROG_LEX])AN_PROGRAM([lex], [AC_PROG_LEX])AN_PROGRAM([flex], [AC_PROG_LEX])AC_DEFUN_ONCE([AC_PROG_LEX],[AC_CHECK_PROGS(LEX, flex lex, :)if test -z "$LEXLIB"then AC_CHECK_LIB(fl, yywrap, LEXLIB="-lfl", [AC_CHECK_LIB(l, yywrap, LEXLIB="-ll")])fiAC_SUBST(LEXLIB)if test "x$LEX" != "x:"; then _AC_PROG_LEX_YYTEXT_DECLfi])# _AC_PROG_LEX_YYTEXT_DECL# ------------------------# Check if lex declares yytext as a char * by default, not a char[].m4_define([_AC_PROG_LEX_YYTEXT_DECL],[AC_CACHE_CHECK(lex output file root, ac_cv_prog_lex_root,[# The minimal lex program is just a single line: %%. But some broken lexes# (Solaris, I think it was) want two %% lines, so accommodate them.cat >conftest.l <<_ACEOF%%%%_ACEOF_AC_DO_VAR(LEX conftest.l)if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yyelif test -f lexyy.c; then ac_cv_prog_lex_root=lexyyelse AC_MSG_ERROR([cannot find output from $LEX; giving up])fi])rm -f conftest.lAC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])dnlAC_CACHE_CHECK(whether yytext is a pointer, ac_cv_prog_lex_yytext_pointer,[# POSIX says lex can declare yytext either as a pointer or an array; the# default is implementation-dependent. Figure out which it is, since# not all implementations provide the %pointer and %array declarations.ac_cv_prog_lex_yytext_pointer=noecho 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.cac_save_LIBS=$LIBSLIBS="$LIBS $LEXLIB"AC_LINK_IFELSE([`cat $LEX_OUTPUT_ROOT.c`], ac_cv_prog_lex_yytext_pointer=yes)LIBS=$ac_save_LIBSrm -f "${LEX_OUTPUT_ROOT}.c"])dnlif test $ac_cv_prog_lex_yytext_pointer = yes; then AC_DEFINE(YYTEXT_POINTER, 1, [Define to 1 if `lex' declares `yytext' as a `char *' by default, not a `char[]'.])fi])# _AC_PROG_LEX_YYTEXT_DECL# Require AC_PROG_LEX in case some people were just calling this macro.AU_DEFUN([AC_DECL_YYTEXT], [AC_PROG_LEX])# AC_PROG_LN_S# ------------AN_MAKEVAR([LN], [AC_PROG_LN_S])AN_PROGRAM([ln], [AC_PROG_LN_S])AC_DEFUN([AC_PROG_LN_S],[AC_MSG_CHECKING([whether ln -s works])AC_SUBST([LN_S], [$as_ln_s])dnlif test "$LN_S" = "ln -s"; then AC_MSG_RESULT([yes])else AC_MSG_RESULT([no, using $LN_S])fi])# AC_PROG_LN_S# AC_PROG_MAKE_SET# ----------------# Define SET_MAKE to set ${MAKE} if Make does not do so automatically. If Make# does not run the test Makefile, we assume that the Make program the user will# invoke does set $(MAKE). This is typical, and emitting `MAKE=foomake' is# always wrong if `foomake' is not available or does not work.AN_MAKEVAR([MAKE], [AC_PROG_MAKE_SET])AN_PROGRAM([make], [AC_PROG_MAKE_SET])AC_DEFUN([AC_PROG_MAKE_SET],[AC_MSG_CHECKING([whether ${MAKE-make} sets \$(MAKE)])set x ${MAKE-make}; ac_make=`echo "$[2]" | sed 's/+/p/g; s/[[^a-zA-Z0-9_]]/_/g'`AC_CACHE_VAL(ac_cv_prog_make_${ac_make}_set,[cat >conftest.make <<\_ACEOFSHELL = /bin/shall: @echo '@@@%%%=$(MAKE)=@@@%%%'_ACEOF# GNU make sometimes prints "make[1]: Entering...", which would confuse us.case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;;esacrm -f conftest.make])dnlif eval test \$ac_cv_prog_make_${ac_make}_set = yes; then AC_MSG_RESULT([yes]) SET_MAKE=else AC_MSG_RESULT([no]) SET_MAKE="MAKE=${MAKE-make}"fiAC_SUBST([SET_MAKE])dnl])# AC_PROG_MAKE_SET# AC_PROG_RANLIB# --------------AN_MAKEVAR([RANLIB], [AC_PROG_RANLIB])AN_PROGRAM([ranlib], [AC_PROG_RANLIB])AC_DEFUN([AC_PROG_RANLIB],[AC_CHECK_TOOL(RANLIB, ranlib, :)])# AC_RSH# ------# I don't know what it used to do, but it no longer does.AU_DEFUN([AC_RSH], [],[$0 is no longer supported. Remove this warning when youadjust the code.])# AC_PROG_SED# -----------# Check for a fully functional sed program that truncates# as few characters as possible. Prefer GNU sed if found.AC_DEFUN([AC_PROG_SED],[AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED, [dnl ac_script should not contain more than 99 commands (for HP-UX sed), dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed. ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" | sed 99q >conftest.sed $as_unset ac_script || ac_script= _AC_PATH_PROG_FEATURE_CHECK(SED, [sed gsed], [_AC_FEATURE_CHECK_LENGTH([ac_path_SED], [ac_cv_path_SED], ["$ac_path_SED" -f conftest.sed])])]) SED="$ac_cv_path_SED" AC_SUBST([SED])dnl rm -f conftest.sed])# AC_PROG_SED# AC_PROG_YACC# ------------AN_MAKEVAR([BISON], [AC_PROG_YACC])AN_MAKEVAR([YACC], [AC_PROG_YACC])AN_MAKEVAR([YFLAGS], [AC_PROG_YACC])AN_PROGRAM([yacc], [AC_PROG_YACC])AN_PROGRAM([byacc], [AC_PROG_YACC])AN_PROGRAM([bison], [AC_PROG_YACC])AC_DEFUN([AC_PROG_YACC],[AC_CHECK_PROGS(YACC, 'bison -y' byacc, yacc)dnlAC_ARG_VAR(YACC,[The `Yet Another C Compiler' implementation to use. Defaults to the firstprogram found out of: `bison -y', `byacc', `yacc'.])dnlAC_ARG_VAR(YFLAGS,[The list of arguments that will be passed by default to $YACC. This scriptwill default YFLAGS to the empty string to avoid a default value of `-d' givenby some make applications.])])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -