* tests/local.at (AT_CHECK_M4SUGAR): Add `m4sugar' to keywords.
(AT_CHECK_ENV): Ignore LTLIBOBJS, FC variables, EGREP, FGREP, and SED.
* tests/m4sugar.at (AT_CHECK_M4SUGAR_TEXT, AT_CHECK_M4RE): New macros.
(Standard regular expressions): New test.
(m4_warn, m4_require: circular dependencies, m4_text_wrap): Strip
excess test name quoting.
* tests/semantics.at (AC_CHECK_HEADERS_OLD, AC_CHECK_HEADERS_NEW): Pass
CPPFLAGS to `configure' instead of setting it in `configure'.
# m4_re_string
# ------------
# Regexp for `[a-zA-Z_0-9]*'
+# m4_dquote provides literal [] for the character class.
m4_define([m4_re_string],
-m4_defn([m4_cr_symbols2])dnl
+m4_dquote(m4_defn([m4_cr_symbols2]))dnl
[*]dnl
)
# ----------
# Regexp for `[a-zA-Z_][a-zA-Z_0-9]*'
m4_define([m4_re_word],
-m4_defn([m4_cr_symbols1])dnl
+m4_dquote(m4_defn([m4_cr_symbols1]))dnl
m4_defn([m4_re_string])dnl
)
# M4 macros used in building Autoconf test suites. -*- Autotest -*-
-# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software
+# Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# AT_CHECK_M4SUGAR(FLAGS, [EXIT-STATUS = 0], STDOUT, STDERR)
# ----------------------------------------------------------
m4_define([AT_CHECK_M4SUGAR],
-[AT_CHECK_AUTOM4TE([--language=m4sugar script.4s -o script $1],
+[AT_KEYWORDS([m4sugar])
+AT_CHECK_AUTOM4TE([--language=m4sugar script.4s -o script $1],
[$2], [$3], [$4])])
[^a[cs]_],
[^((exec_)?prefix|DEFS|CONFIG_STATUS)=],
[^(CC|CFLAGS|CPP|GCC|CXX|CXXFLAGS|CXXCPP|GXX|F77|FFLAGS|FLIBS|G77)=],
- [^(LIBS|LIB@&t@OBJS|LDFLAGS)=],
+ [^(LIBS|LIB@&t@OBJS|LTLIBOBJS|LDFLAGS)=],
[^INSTALL(_(DATA|PROGRAM|SCRIPT))?=],
[^(CYGWIN|ISC|MINGW32|MINIX|EMXOS2|XENIX|EXEEXT|OBJEXT)=],
[^(X_(CFLAGS|(EXTRA_|PRE_)?LIBS)|x_(includes|libraries)|(have|no)_x)=],
[^(cross_compiling)=],
[^(interpval|PATH_SEPARATOR)=],
[^(F77_DUMMY_MAIN|f77_(case|underscore))=],
+ [^(FC_DUMMY_MAIN|FC|FCFLAGS|FCLIBS|FCFLAGS_f)=],
[^(ALLOCA|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB)=],
[^(AWK|LEX|LEXLIB|LEX_OUTPUT_ROOT|LN_S|M4|RANLIB|SET_MAKE|YACC)=],
+ [^(EGREP|FGREP|SED)=],
[^(_|@|.[*#?].|LINENO|OLDPWD|PIPESTATUS|RANDOM|SECONDS)=])' 2>/dev/null |
# There maybe variables spread on several lines, eg IFS, remove the dead
# lines.
# 02111-1307, USA.
+# AT_CHECK_M4SUGAR_TEXT(CODE, STDOUT, STDER)
+# ------------------------------------------
+# Check that m4sugar CODE expands to STDOUT and emits STDERR.
+m4_define([AT_CHECK_M4SUGAR_TEXT],
+[
+AT_DATA_M4SUGAR([script.4s],
+[[m4_init
+m4_divert_push(0)[]dnl
+]$1[[]dnl
+m4_divert_pop(0)
+]])
+
+AT_CHECK_M4SUGAR([-o-],, [$2], [$3])
+])# AT_CHECK_M4SUGAR_TEXT
+
+
# Order of the tests:
# - m4_warn
#
## m4_warn. ##
## --------- ##
-AT_SETUP([[m4@&t@_warn]])
+AT_SETUP([m4@&t@_warn])
# m4_text_wrap is used to display the help strings. Also, check that
# commas are not swallowed. This can easily happen because of
## m4_require: circular dependencies. ##
## ----------------------------------- ##
-AT_SETUP([[m4@&t@_require: circular dependencies]])
+AT_SETUP([m4@&t@_require: circular dependencies])
# m4_text_wrap is used to display the help strings. Also, check that
# commas are not swallowed. This can easily happen because of
## m4_text_wrap. ##
## -------------- ##
-AT_SETUP([[m4@&t@_text_wrap]])
+AT_SETUP([m4@&t@_text_wrap])
# m4_text_wrap is used to display the help strings. Also, check that
# commas are not swallowed. This can easily happen because of
AT_CHECK_M4SUGAR([-o-], 0, [expout])
AT_CLEANUP
+
+## ------------------------------ ##
+## Standard regular expressions. ##
+## ------------------------------ ##
+
+AT_SETUP([Standard regular expressions])
+
+# AT_CHECK_M4RE(RE-NAME, TEXT, INTENT = `ok' | `')
+# ------------------------------------------------
+# Check whether RE-NAME (a macro whose definition is a regular expression)
+# matches TEXT. INTENT = `ok' if the match should succeed or else empty.
+m4_define([AT_CHECK_M4RE],
+[AT_CHECK_M4SUGAR_TEXT(
+[[m4_bregexp([$2], ^m4_defn([$1])$, [ok])
+]], [$3
+])])
+
+AT_CHECK_M4RE([m4_re_word], [ab9_c], [ok])
+AT_CHECK_M4RE([m4_re_word], [_9abc], [ok])
+AT_CHECK_M4RE([m4_re_word], [9ab_c])
+
+AT_CHECK_M4RE([m4_re_string], [ab9_c], [ok])
+AT_CHECK_M4RE([m4_re_string], [_9abc], [ok])
+AT_CHECK_M4RE([m4_re_string], [9ab_c], [ok])
+AT_CHECK_M4RE([m4_re_string], [9a@_c])
+
+AT_CLEANUP
AT_BANNER([Semantics.])
-# Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
[typedef foo bar;
])
-AT_CONFIGURE_AC(
-[CPPFLAGS="$CPPFLAGS -I."
-AC_CHECK_HEADERS(header2.h, [], [], -)])
+AT_CONFIGURE_AC([AC_CHECK_HEADERS(header2.h, [], [], -)])
AT_CHECK_AUTOCONF([-W obsolete])
AT_CHECK_AUTOHEADER
-AT_CHECK_CONFIGURE
+AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
AT_CHECK_ENV
AT_CHECK_DEFINES(
[#define HAVE_HEADER2_H 1
])
AT_CONFIGURE_AC(
-[CPPFLAGS="$CPPFLAGS -I."
-AC_CHECK_HEADERS(header2.h header3.h, [], [], [[@%:@include "header1.h"]])])
+[AC_CHECK_HEADERS(header2.h header3.h, [], [], [[@%:@include "header1.h"]])])
AT_CHECK_AUTOCONF([-W obsolete])
AT_CHECK_AUTOHEADER
-AT_CHECK_CONFIGURE
+AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
AT_CHECK_ENV
AT_CHECK_DEFINES(
[#define HAVE_HEADER2_H 1