mirror of
git://git.sv.gnu.org/autoconf
synced 2025-04-12 15:20:26 +08:00
* lib/m4sugar/m4sh.m4 (AS_LITERAL_IF): Expand $1 before
looking for special shell characters. * lib/autoconf/functions.m4 (AC_CHECK_FUNC): Do not expand the macro defined by AS_VAR_PUSHDEF before passing it as a parameter. * lib/autoconf/general.m4 (AC_CHECK_FILE, AC_CHECK_DECL): * lib/autoconf/libs.m4 (AC_SEARCH_LIBS, AC_CHECK_LIB): * lib/autoconf/types.m4 (_AC_CHECK_TYPE_NEW, AC_CHECK_MEMBER): * lib/autoconf/headers.m4 (_AC_CHECK_HEADER_MONGREL): (_AC_CHECK_HEADER_NEW, _AC_CHECK_HEADER_OLD, _AC_CHECK_HEADER_DIRENT): Likewise. * lib/autotest/general.m4 (AT_INIT): Quote parameters of AS_VAR_* properly. * tests/m4sh.at (AS_LITERAL_IF): New test.
This commit is contained in:
parent
6a414a9d3f
commit
25cb6b0862
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
||||
2006-10-14 Stepan Kasal <kasal@ucw.cz>
|
||||
|
||||
* lib/m4sugar/m4sh.m4 (AS_LITERAL_IF): Expand $1 before
|
||||
looking for special shell characters.
|
||||
* lib/autoconf/functions.m4 (AC_CHECK_FUNC): Do not expand the
|
||||
macro defined by AS_VAR_PUSHDEF before passing it as a
|
||||
parameter.
|
||||
* lib/autoconf/general.m4 (AC_CHECK_FILE, AC_CHECK_DECL):
|
||||
* lib/autoconf/libs.m4 (AC_SEARCH_LIBS, AC_CHECK_LIB):
|
||||
* lib/autoconf/types.m4 (_AC_CHECK_TYPE_NEW, AC_CHECK_MEMBER):
|
||||
* lib/autoconf/headers.m4 (_AC_CHECK_HEADER_MONGREL):
|
||||
(_AC_CHECK_HEADER_NEW, _AC_CHECK_HEADER_OLD, _AC_CHECK_HEADER_DIRENT):
|
||||
Likewise.
|
||||
* lib/autotest/general.m4 (AT_INIT): Quote parameters of
|
||||
AS_VAR_* properly.
|
||||
* tests/m4sh.at (AS_LITERAL_IF): New test.
|
||||
|
||||
2006-10-14 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
(Imported from Automake.)
|
||||
|
@ -66,11 +66,11 @@
|
||||
# -----------------------------------------------------------------
|
||||
AC_DEFUN([AC_CHECK_FUNC],
|
||||
[AS_VAR_PUSHDEF([ac_var], [ac_cv_func_$1])dnl
|
||||
AC_CACHE_CHECK([for $1], ac_var,
|
||||
AC_CACHE_CHECK([for $1], [ac_var],
|
||||
[AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])],
|
||||
[AS_VAR_SET(ac_var, yes)],
|
||||
[AS_VAR_SET(ac_var, no)])])
|
||||
AS_IF([test AS_VAR_GET(ac_var) = yes], [$2], [$3])dnl
|
||||
[AS_VAR_SET([ac_var], [yes])],
|
||||
[AS_VAR_SET([ac_var], [no])])])
|
||||
AS_IF([test AS_VAR_GET([ac_var]) = yes], [$2], [$3])dnl
|
||||
AS_VAR_POPDEF([ac_var])dnl
|
||||
])# AC_CHECK_FUNC
|
||||
|
||||
|
@ -2501,15 +2501,15 @@ AC_DEFUN([AC_CHECK_FILE],
|
||||
[AC_DIAGNOSE([cross],
|
||||
[cannot check for file existence when cross compiling])dnl
|
||||
AS_VAR_PUSHDEF([ac_File], [ac_cv_file_$1])dnl
|
||||
AC_CACHE_CHECK([for $1], ac_File,
|
||||
AC_CACHE_CHECK([for $1], [ac_File],
|
||||
[test "$cross_compiling" = yes &&
|
||||
AC_MSG_ERROR([cannot check for file existence when cross compiling])
|
||||
if test -r "$1"; then
|
||||
AS_VAR_SET(ac_File, yes)
|
||||
AS_VAR_SET([ac_File], [yes])
|
||||
else
|
||||
AS_VAR_SET(ac_File, no)
|
||||
AS_VAR_SET([ac_File], [no])
|
||||
fi])
|
||||
AS_IF([test AS_VAR_GET(ac_File) = yes], [$2], [$3])[]dnl
|
||||
AS_IF([test AS_VAR_GET([ac_File]) = yes], [$2], [$3])[]dnl
|
||||
AS_VAR_POPDEF([ac_File])dnl
|
||||
])# AC_CHECK_FILE
|
||||
|
||||
@ -2538,15 +2538,15 @@ $2],
|
||||
# Check whether SYMBOL (a function, variable, or constant) is declared.
|
||||
AC_DEFUN([AC_CHECK_DECL],
|
||||
[AS_VAR_PUSHDEF([ac_Symbol], [ac_cv_have_decl_$1])dnl
|
||||
AC_CACHE_CHECK([whether $1 is declared], ac_Symbol,
|
||||
AC_CACHE_CHECK([whether $1 is declared], [ac_Symbol],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])],
|
||||
[#ifndef $1
|
||||
(void) $1;
|
||||
#endif
|
||||
])],
|
||||
[AS_VAR_SET(ac_Symbol, yes)],
|
||||
[AS_VAR_SET(ac_Symbol, no)])])
|
||||
AS_IF([test AS_VAR_GET(ac_Symbol) = yes], [$2], [$3])[]dnl
|
||||
[AS_VAR_SET([ac_Symbol], [yes])],
|
||||
[AS_VAR_SET([ac_Symbol], [no])])])
|
||||
AS_IF([test AS_VAR_GET([ac_Symbol]) = yes], [$2], [$3])[]dnl
|
||||
AS_VAR_POPDEF([ac_Symbol])dnl
|
||||
])# AC_CHECK_DECL
|
||||
|
||||
|
@ -104,8 +104,8 @@ AC_DEFUN([AC_CHECK_HEADER],
|
||||
# because of the cache variables, and the `checking...' messages.
|
||||
m4_define([_AC_CHECK_HEADER_MONGREL],
|
||||
[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_$1])dnl
|
||||
AS_VAR_SET_IF(ac_Header,
|
||||
[AC_CACHE_CHECK([for $1], ac_Header, [])],
|
||||
AS_VAR_SET_IF([ac_Header],
|
||||
[AC_CACHE_CHECK([for $1], [ac_Header], [])],
|
||||
[# Is the header compilable?
|
||||
AC_MSG_CHECKING([$1 usability])
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT([$4])
|
||||
@ -140,10 +140,10 @@ case $ac_header_compiler:$ac_header_preproc:$ac_[]_AC_LANG_ABBREV[]_preproc_warn
|
||||
) | sed "s/^/$as_me: WARNING: /" >&2])
|
||||
;;
|
||||
esac
|
||||
AC_CACHE_CHECK([for $1], ac_Header,
|
||||
[AS_VAR_SET(ac_Header, $ac_header_preproc)])
|
||||
AC_CACHE_CHECK([for $1], [ac_Header],
|
||||
[AS_VAR_SET([ac_Header], [$ac_header_preproc])])
|
||||
])dnl ! set ac_HEADER
|
||||
AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnl
|
||||
AS_IF([test AS_VAR_GET([ac_Header]) = yes], [$2], [$3])[]dnl
|
||||
AS_VAR_POPDEF([ac_Header])dnl
|
||||
])# _AC_CHECK_HEADER_MONGREL
|
||||
|
||||
@ -155,12 +155,12 @@ AS_VAR_POPDEF([ac_Header])dnl
|
||||
# Check the compiler accepts HEADER-FILE. The INCLUDES are defaulted.
|
||||
m4_define([_AC_CHECK_HEADER_NEW],
|
||||
[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_$1])dnl
|
||||
AC_CACHE_CHECK([for $1], ac_Header,
|
||||
AC_CACHE_CHECK([for $1], [ac_Header],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT([$4])
|
||||
@%:@include <$1>])],
|
||||
[AS_VAR_SET(ac_Header, yes)],
|
||||
[AS_VAR_SET(ac_Header, no)])])
|
||||
AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnl
|
||||
[AS_VAR_SET([ac_Header], [yes])],
|
||||
[AS_VAR_SET([ac_Header], [no])])])
|
||||
AS_IF([test AS_VAR_GET([ac_Header]) = yes], [$2], [$3])[]dnl
|
||||
AS_VAR_POPDEF([ac_Header])dnl
|
||||
])# _AC_CHECK_HEADER_NEW
|
||||
|
||||
@ -171,11 +171,11 @@ AS_VAR_POPDEF([ac_Header])dnl
|
||||
# Check the preprocessor accepts HEADER-FILE.
|
||||
m4_define([_AC_CHECK_HEADER_OLD],
|
||||
[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_$1])dnl
|
||||
AC_CACHE_CHECK([for $1], ac_Header,
|
||||
AC_CACHE_CHECK([for $1], [ac_Header],
|
||||
[AC_PREPROC_IFELSE([AC_LANG_SOURCE([@%:@include <$1>])],
|
||||
[AS_VAR_SET(ac_Header, yes)],
|
||||
[AS_VAR_SET(ac_Header, no)])])
|
||||
AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnl
|
||||
[AS_VAR_SET([ac_Header], [yes])],
|
||||
[AS_VAR_SET([ac_Header], [no])])])
|
||||
AS_IF([test AS_VAR_GET([ac_Header]) = yes], [$2], [$3])[]dnl
|
||||
AS_VAR_POPDEF([ac_Header])dnl
|
||||
])# _AC_CHECK_HEADER_OLD
|
||||
|
||||
@ -395,15 +395,15 @@ AC_DEFUN([AC_HEADER_ASSERT],
|
||||
# defines the type `DIR'. dirent.h on NextStep 3.2 doesn't.
|
||||
m4_define([_AC_CHECK_HEADER_DIRENT],
|
||||
[AS_VAR_PUSHDEF([ac_Header], [ac_cv_header_dirent_$1])dnl
|
||||
AC_CACHE_CHECK([for $1 that defines DIR], ac_Header,
|
||||
AC_CACHE_CHECK([for $1 that defines DIR], [ac_Header],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
|
||||
#include <$1>
|
||||
],
|
||||
[if ((DIR *) 0)
|
||||
return 0;])],
|
||||
[AS_VAR_SET(ac_Header, yes)],
|
||||
[AS_VAR_SET(ac_Header, no)])])
|
||||
AS_IF([test AS_VAR_GET(ac_Header) = yes], [$2], [$3])[]dnl
|
||||
[AS_VAR_SET([ac_Header], [yes])],
|
||||
[AS_VAR_SET([ac_Header], [no])])])
|
||||
AS_IF([test AS_VAR_GET([ac_Header]) = yes], [$2], [$3])[]dnl
|
||||
AS_VAR_POPDEF([ac_Header])dnl
|
||||
])# _AC_CHECK_HEADER_DIRENT
|
||||
|
||||
|
@ -68,7 +68,7 @@
|
||||
# Search for a library defining FUNC, if it's not already available.
|
||||
AC_DEFUN([AC_SEARCH_LIBS],
|
||||
[AS_VAR_PUSHDEF([ac_Search], [ac_cv_search_$1])dnl
|
||||
AC_CACHE_CHECK([for library containing $1], ac_Search,
|
||||
AC_CACHE_CHECK([for library containing $1], [ac_Search],
|
||||
[ac_func_search_save_LIBS=$LIBS
|
||||
AC_LANG_CONFTEST([AC_LANG_CALL([], [$1])])
|
||||
for ac_lib in '' $2; do
|
||||
@ -78,13 +78,13 @@ for ac_lib in '' $2; do
|
||||
ac_res=-l$ac_lib
|
||||
LIBS="-l$ac_lib $5 $ac_func_search_save_LIBS"
|
||||
fi
|
||||
AC_LINK_IFELSE([], [AS_VAR_SET(ac_Search, [$ac_res])])
|
||||
AS_VAR_SET_IF(ac_Search, [break])dnl
|
||||
AC_LINK_IFELSE([], [AS_VAR_SET([ac_Search], [$ac_res])])
|
||||
AS_VAR_SET_IF([ac_Search], [break])dnl
|
||||
done
|
||||
AS_VAR_SET_IF(ac_Search, , [AS_VAR_SET(ac_Search, [no])])dnl
|
||||
AS_VAR_SET_IF([ac_Search], , [AS_VAR_SET([ac_Search], [no])])dnl
|
||||
rm conftest.$ac_ext
|
||||
LIBS=$ac_func_search_save_LIBS])
|
||||
ac_res=AS_VAR_GET(ac_Search)
|
||||
ac_res=AS_VAR_GET([ac_Search])
|
||||
AS_IF([test "$ac_res" != no],
|
||||
[test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
|
||||
$3],
|
||||
@ -123,14 +123,14 @@ AC_DEFUN([AC_CHECK_LIB],
|
||||
AS_LITERAL_IF([$1],
|
||||
[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$2])],
|
||||
[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1''_$2])])dnl
|
||||
AC_CACHE_CHECK([for $2 in -l$1], ac_Lib,
|
||||
AC_CACHE_CHECK([for $2 in -l$1], [ac_Lib],
|
||||
[ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-l$1 $5 $LIBS"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
|
||||
[AS_VAR_SET(ac_Lib, yes)],
|
||||
[AS_VAR_SET(ac_Lib, no)])
|
||||
[AS_VAR_SET([ac_Lib], [yes])],
|
||||
[AS_VAR_SET([ac_Lib], [no])])
|
||||
LIBS=$ac_check_lib_save_LIBS])
|
||||
AS_IF([test AS_VAR_GET(ac_Lib) = yes],
|
||||
AS_IF([test AS_VAR_GET([ac_Lib]) = yes],
|
||||
[m4_default([$3], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
|
||||
LIBS="-l$1 $LIBS"
|
||||
])],
|
||||
|
@ -149,16 +149,16 @@
|
||||
# constructs in general.
|
||||
m4_define([_AC_CHECK_TYPE_NEW],
|
||||
[AS_VAR_PUSHDEF([ac_Type], [ac_cv_type_$1])dnl
|
||||
AC_CACHE_CHECK([for $1], ac_Type,
|
||||
AC_CACHE_CHECK([for $1], [ac_Type],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])
|
||||
typedef $1 ac__type_new_;],
|
||||
[if ((ac__type_new_ *) 0)
|
||||
return 0;
|
||||
if (sizeof (ac__type_new_))
|
||||
return 0;])],
|
||||
[AS_VAR_SET(ac_Type, yes)],
|
||||
[AS_VAR_SET(ac_Type, no)])])
|
||||
AS_IF([test AS_VAR_GET(ac_Type) = yes], [$2], [$3])[]dnl
|
||||
[AS_VAR_SET([ac_Type], [yes])],
|
||||
[AS_VAR_SET([ac_Type], [no])])])
|
||||
AS_IF([test AS_VAR_GET([ac_Type]) = yes], [$2], [$3])[]dnl
|
||||
AS_VAR_POPDEF([ac_Type])dnl
|
||||
])# _AC_CHECK_TYPE_NEW
|
||||
|
||||
@ -774,23 +774,23 @@ m4_bmatch([$1], [\.], ,
|
||||
[m4_fatal([$0: Did not see any dot in `$1'])])dnl
|
||||
AS_VAR_PUSHDEF([ac_Member], [ac_cv_member_$1])dnl
|
||||
dnl Extract the aggregate name, and the member name
|
||||
AC_CACHE_CHECK([for $1], ac_Member,
|
||||
AC_CACHE_CHECK([for $1], [ac_Member],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])],
|
||||
[dnl AGGREGATE ac_aggr;
|
||||
static m4_bpatsubst([$1], [\..*]) ac_aggr;
|
||||
dnl ac_aggr.MEMBER;
|
||||
if (ac_aggr.m4_bpatsubst([$1], [^[^.]*\.]))
|
||||
return 0;])],
|
||||
[AS_VAR_SET(ac_Member, yes)],
|
||||
[AS_VAR_SET([ac_Member], [yes])],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])],
|
||||
[dnl AGGREGATE ac_aggr;
|
||||
static m4_bpatsubst([$1], [\..*]) ac_aggr;
|
||||
dnl sizeof ac_aggr.MEMBER;
|
||||
if (sizeof ac_aggr.m4_bpatsubst([$1], [^[^.]*\.]))
|
||||
return 0;])],
|
||||
[AS_VAR_SET(ac_Member, yes)],
|
||||
[AS_VAR_SET(ac_Member, no)])])])
|
||||
AS_IF([test AS_VAR_GET(ac_Member) = yes], [$2], [$3])dnl
|
||||
[AS_VAR_SET([ac_Member], [yes])],
|
||||
[AS_VAR_SET([ac_Member], [no])])])])
|
||||
AS_IF([test AS_VAR_GET([ac_Member]) = yes], [$2], [$3])dnl
|
||||
AS_VAR_POPDEF([ac_Member])dnl
|
||||
])# AC_CHECK_MEMBER
|
||||
|
||||
|
@ -220,8 +220,8 @@ if test -n "$at_top_srcdir"; then
|
||||
builddir=../..
|
||||
for at_dir in srcdir top_srcdir top_build_prefix
|
||||
do
|
||||
at_val=AS_VAR_GET(at_$at_dir)
|
||||
AS_VAR_SET($at_dir, $at_val/../..)
|
||||
at_val=AS_VAR_GET([at_$at_dir])
|
||||
AS_VAR_SET([$at_dir], [$at_val/../..])
|
||||
done
|
||||
fi
|
||||
|
||||
|
@ -1165,7 +1165,7 @@ m4_popdef([AS_Prefix])dnl
|
||||
# This is an *approximation*: for instance EXPRESSION = `\$' is
|
||||
# definitely a literal, but will not be recognized as such.
|
||||
m4_define([AS_LITERAL_IF],
|
||||
[m4_bmatch([$1], [[`$]],
|
||||
[m4_bmatch(m4_quote($1), [[`$]],
|
||||
[$3], [$2])])
|
||||
|
||||
|
||||
|
@ -632,3 +632,37 @@ foo9=9 bar9=9
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## --------------- ##
|
||||
## AS_LITERAL_IF. ##
|
||||
## --------------- ##
|
||||
|
||||
AT_SETUP([AS@&t@_LITERAL_IF])
|
||||
|
||||
AT_DATA_M4SH([script.as], [[dnl
|
||||
AS_INIT
|
||||
echo AS_LITERAL_IF([lit], [ok], [ERR]) 1
|
||||
echo AS_LITERAL_IF([l$it], [ERR], [ok]) 2
|
||||
echo AS_LITERAL_IF([l``it], [ERR], [ok]) 3
|
||||
m4_define([mac], [lit])
|
||||
echo AS_LITERAL_IF([mac], [ok], [ERR]) 4
|
||||
echo AS_LITERAL_IF([mac($, ``)], [ok], [ERR]) 5
|
||||
m4_define([mac], [l$it])
|
||||
echo AS_LITERAL_IF([mac], [ERR], [ok]) 6
|
||||
m4_define([mac], [l`it])
|
||||
echo AS_LITERAL_IF([mac], [ERR], [ok]) 7
|
||||
]])
|
||||
|
||||
AT_CHECK_M4SH
|
||||
AT_CHECK([./script], [],
|
||||
[[ok 1
|
||||
ok 2
|
||||
ok 3
|
||||
ok 4
|
||||
ok 5
|
||||
ok 6
|
||||
ok 7
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
Loading…
x
Reference in New Issue
Block a user