2006-09-29 Stepan Kasal * 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. Index: lib/autoconf/functions.m4 =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/functions.m4,v retrieving revision 1.111 diff -u -r1.111 functions.m4 --- lib/autoconf/functions.m4 26 Sep 2006 20:57:16 -0000 1.111 +++ lib/autoconf/functions.m4 29 Sep 2006 12:10:53 -0000 @@ -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 Index: lib/autoconf/general.m4 =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/general.m4,v retrieving revision 1.931 diff -u -r1.931 general.m4 --- lib/autoconf/general.m4 26 Sep 2006 20:43:43 -0000 1.931 +++ lib/autoconf/general.m4 29 Sep 2006 12:10:56 -0000 @@ -2506,15 +2506,15 @@ [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 @@ -2543,15 +2543,15 @@ # 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 Index: lib/autoconf/headers.m4 =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/headers.m4,v retrieving revision 1.53 diff -u -r1.53 headers.m4 --- lib/autoconf/headers.m4 19 Sep 2006 09:35:41 -0000 1.53 +++ lib/autoconf/headers.m4 29 Sep 2006 12:10:56 -0000 @@ -104,8 +104,8 @@ # 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 @@ ) | 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 @@ # 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 @@ # 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(address@hidden:@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 @@ # 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 #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 Index: lib/autoconf/libs.m4 =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/libs.m4,v retrieving revision 1.23 diff -u -r1.23 libs.m4 --- lib/autoconf/libs.m4 19 Sep 2006 09:35:41 -0000 1.23 +++ lib/autoconf/libs.m4 29 Sep 2006 12:10:57 -0000 @@ -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 @@ 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 @@ 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" ])], Index: lib/autoconf/types.m4 =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/autoconf/types.m4,v retrieving revision 1.45 diff -u -r1.45 types.m4 --- lib/autoconf/types.m4 25 Sep 2006 17:50:06 -0000 1.45 +++ lib/autoconf/types.m4 29 Sep 2006 12:10:58 -0000 @@ -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_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 Index: lib/autotest/general.m4 =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/autotest/general.m4,v retrieving revision 1.214 diff -u -r1.214 general.m4 --- lib/autotest/general.m4 20 Jun 2006 05:35:38 -0000 1.214 +++ lib/autotest/general.m4 29 Sep 2006 12:10:59 -0000 @@ -220,8 +220,8 @@ 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 Index: lib/m4sugar/m4sh.m4 =================================================================== RCS file: /cvsroot/autoconf/autoconf/lib/m4sugar/m4sh.m4,v retrieving revision 1.193 diff -u -r1.193 m4sh.m4 --- lib/m4sugar/m4sh.m4 12 Sep 2006 07:07:32 -0000 1.193 +++ lib/m4sugar/m4sh.m4 29 Sep 2006 12:11:00 -0000 @@ -1131,7 +1131,7 @@ # 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])]) Index: tests/m4sh.at =================================================================== RCS file: /cvsroot/autoconf/autoconf/tests/m4sh.at,v retrieving revision 1.47 diff -u -r1.47 m4sh.at --- tests/m4sh.at 24 Apr 2006 19:36:02 -0000 1.47 +++ tests/m4sh.at 29 Sep 2006 13:07:54 -0000 @@ -632,3 +632,37 @@ ]]) AT_CLEANUP + + +## --------------- ## +## AS_LITERAL_IF. ## +## --------------- ## + +AT_SETUP([AS@&address@hidden) + +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