]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
* lib/m4sugar/m4sh.m4 (AS_LITERAL_IF): Expand $1 before
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 15 Oct 2006 01:12:02 +0000 (01:12 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 15 Oct 2006 01:12:02 +0000 (01:12 +0000)
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.

ChangeLog
lib/autoconf/functions.m4
lib/autoconf/general.m4
lib/autoconf/headers.m4
lib/autoconf/libs.m4
lib/autoconf/types.m4
lib/autotest/general.m4
lib/m4sugar/m4sh.m4
tests/m4sh.at

index f2662067c6d271bab13567304caf7bb9bcd0ddc2..b03cc4b01d449f4bf7cd29208f4005e6280c9950 100644 (file)
--- a/ChangeLog
+++ b/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.)
index 6f2cb12173c6dd93ff75246568d728f94d7a4daf..ec22aa987c774933887f4859a73a7e6d2c411884 100644 (file)
 # -----------------------------------------------------------------
 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 7dd2e1f1124988fed8da855a47b815206dc04ff6..01e0371b6f1687cf86b2ebae1f010cb3153c6e9e 100644 (file)
@@ -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
 
index 7695c81eaaa2ccc10984bf4a20a84d2bdfbe0e98..85b580c21ad74408160e66e5eec19c1963c3f6b9 100644 (file)
@@ -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
 
index eb77ba0fee7ff2172c2b3f38ab2228feb1bc380d..d70babf3ed777cf580ab40def6a341cdf87fa18e 100644 (file)
@@ -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"
 ])],
index 31c06415eec6ddced78c8a9ae898bc00df6dad6f..7a1796a51e86222952fff4071a5564672e6524b1 100644 (file)
 # 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
 
index 1faecd28b4faefdf3ee6e5a151ae2b88c4a9a678..6ce6dfa214a9161cd2756e1e8d292cb3f569ab36 100644 (file)
@@ -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
 
index aec050da7c6f2c66e175eaff09216bc8859c243c..9fa40b1cab6925bf5bcb3921146556c69bac68e9 100644 (file)
@@ -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])])
 
 
index 7339fc941e0b9ca98c8b4b31525118fd9b1906c0..f0ce9a3bf7ac156d04ef387f75579ef2d6ad32cf 100644 (file)
@@ -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