From: Akim Demaille Date: Mon, 22 Jan 2001 09:03:38 +0000 (+0000) Subject: * tests/atgeneral.m4 (AT_INIT): Include a default case for non X-Git-Tag: autoconf-2.50~235 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1304fbbe0b628d728aa9d4745ac8b565bf8eae74;p=thirdparty%2Fautoconf.git * tests/atgeneral.m4 (AT_INIT): Include a default case for non existing tests. * tests/atspecific.m4 (AT_CONFIGURE_AC, AT_CHECK_ENV) (AT_CHECK_AUTOUPDATE, AT_CHECK_AU_MACRO): New. Spread their use. (AT_CHECK_MACRO): Pass `-W obsolete' to autoconf. * tests/semantics.at (AC_HAVE_FUNCS): Obsolete, don't check. * tests/mktest.sh: Create one test file per Autoconf source file instead of separating syntax/update. --- diff --git a/lib/autotest/general.m4 b/lib/autotest/general.m4 index 6fd5b8abf..0f1337089 100644 --- a/lib/autotest/general.m4 +++ b/lib/autotest/general.m4 @@ -218,6 +218,11 @@ do case $at_test in dnl Tests inserted here (TESTS). m4_divert([TAIL])[]dnl + + * ) + echo $as_me: no such test: $at_test + continue + ;; esac case $at_test in banner-*) ;; diff --git a/tests/Makefile.am b/tests/Makefile.am index 834f92add..36524724d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -22,8 +22,9 @@ AUTOMAKE_OPTIONS = gnits SUITE = suite.at \ m4sugar.at m4sh.at \ - base.at tools.at torture.at compile.at semantics.at syntax.at \ - update.at foreign.at + base.at tools.at torture.at compile.at semantics.at \ + acgeneral.at acspecific.at acfunctions.at aclang.at acheaders.at + foreign.at # We don't actually distribute the testsuite, since one only # needs m4 to build it, m4 being required anyway to install Autoconf. @@ -45,13 +46,25 @@ testsuite: $(top_srcdir)/m4sugar.m4 $(top_srcdir)/m4sh.m4 \ # The files which contains macro we check for syntax. -MACRO_FILES = ../acgeneral.m4 ../acspecific.m4 \ - ../acfunctions.m4 ../aclang.m4 ../acheaders.m4 +MACRO_FILES = $(top_srcdir)/acgeneral.m4 \ + $(top_srcdir)/acspecific.m4 \ + $(top_srcdir)/acfunctions.m4 \ + $(top_srcdir)/aclang.m4 \ + $(top_srcdir)/acheaders.m4 -syntax.at: mktests.sh $(MACRO_FILES) +acgeneral.at: mktests.sh $(MACRO_FILES) cd $(srcdir) && ./mktests.sh $(MACRO_FILES) -update.at: mktests.sh $(MACRO_FILES) +acspecific.at: mktests.sh $(MACRO_FILES) + cd $(srcdir) && ./mktests.sh $(MACRO_FILES) + +acfunctions.at: mktests.sh $(MACRO_FILES) + cd $(srcdir) && ./mktests.sh $(MACRO_FILES) + +aclang.at: mktests.sh $(MACRO_FILES) + cd $(srcdir) && ./mktests.sh $(MACRO_FILES) + +acheaders.at: mktests.sh $(MACRO_FILES) cd $(srcdir) && ./mktests.sh $(MACRO_FILES) CLEANFILES = debug-*.sh macro configure configure.in configure.ac \ diff --git a/tests/Makefile.in b/tests/Makefile.in index ba425aa87..fa9ed1605 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1,6 +1,7 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4c from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -10,7 +11,6 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. - SHELL = @SHELL@ srcdir = @srcdir@ @@ -32,8 +32,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -46,9 +44,10 @@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_FLAG = transform = @program_transform_name@ NORMAL_INSTALL = : @@ -57,6 +56,8 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + +@SET_MAKE@ AWK = @AWK@ EXPR = @EXPR@ HELP2MAN = @HELP2MAN@ @@ -65,41 +66,54 @@ PERL = @PERL@ PERLSCRIPTS = @PERLSCRIPTS@ standards_texi = @standards_texi@ + AUTOMAKE_OPTIONS = gnits -SUITE = suite.at m4sugar.at m4sh.at base.at tools.at torture.at compile.at semantics.at syntax.at update.at foreign.at +SUITE = suite.at \ + m4sugar.at m4sh.at \ + base.at tools.at torture.at compile.at semantics.at \ + acgeneral.at acspecific.at acfunctions.at aclang.at acheaders.at # We don't actually distribute the testsuite, since one only # needs m4 to build it, m4 being required anyway to install Autoconf. -EXTRA_DIST = README atgeneral.m4 atspecific.m4 aclocal.m4 $(SUITE) mktests.sh +EXTRA_DIST = README \ + atgeneral.m4 atspecific.m4 aclocal.m4 \ + $(SUITE) mktests.sh # The files which contains macro we check for syntax. -MACRO_FILES = ../acgeneral.m4 ../acspecific.m4 ../acfunctions.m4 ../aclang.m4 ../acheaders.m4 +MACRO_FILES = $(top_srcdir)/acgeneral.m4 \ + $(top_srcdir)/acspecific.m4 \ + $(top_srcdir)/acfunctions.m4 \ + $(top_srcdir)/aclang.m4 \ + $(top_srcdir)/acheaders.m4 -CLEANFILES = debug-*.sh macro configure configure.in configure.ac config.status config.cache config.log config.h.in config.h stderr stdout empty +CLEANFILES = debug-*.sh macro configure configure.in configure.ac \ + config.status config.cache config.log config.h.in config.h \ + stderr stdout empty DISTCLEANFILES = atconfig testsuite +subdir = tests mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = atconfig +DIST_SOURCES = DIST_COMMON = README Makefile.am Makefile.in atconfig.in PACKAGE = @PACKAGE@ VERSION = @VERSION@ -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnits tests/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status @@ -111,22 +125,16 @@ TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -subdir = tests - distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits tests/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ else \ test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ fi; \ done info-am: @@ -152,7 +160,7 @@ uninstall: uninstall-am all-am: Makefile all-redirect: all-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install + $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: @@ -167,6 +175,7 @@ distclean-generic: -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: + -rm -f Makefile.in mostlyclean-am: mostlyclean-generic mostlyclean: mostlyclean-am @@ -188,10 +197,11 @@ maintainer-clean: maintainer-clean-am .PHONY: tags distdir info-am info dvi-am dvi check-local check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-am install-data install-am install uninstall-am uninstall \ -all-redirect all-am all installdirs mostlyclean-generic \ +all-redirect all-am all install-strip installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean + foreign.at check-local: atconfig testsuite $(SHELL) testsuite @@ -205,10 +215,19 @@ testsuite: $(top_srcdir)/m4sugar.m4 $(top_srcdir)/m4sh.m4 \ chmod +x $@-tmp mv $@-tmp $@ -syntax.at: mktests.sh $(MACRO_FILES) +acgeneral.at: mktests.sh $(MACRO_FILES) + cd $(srcdir) && ./mktests.sh $(MACRO_FILES) + +acspecific.at: mktests.sh $(MACRO_FILES) + cd $(srcdir) && ./mktests.sh $(MACRO_FILES) + +acfunctions.at: mktests.sh $(MACRO_FILES) + cd $(srcdir) && ./mktests.sh $(MACRO_FILES) + +aclang.at: mktests.sh $(MACRO_FILES) cd $(srcdir) && ./mktests.sh $(MACRO_FILES) -update.at: mktests.sh $(MACRO_FILES) +acheaders.at: mktests.sh $(MACRO_FILES) cd $(srcdir) && ./mktests.sh $(MACRO_FILES) maintainer-check: maintainer-check-posix maintainer-check-c++ diff --git a/tests/acfunctions.at b/tests/acfunctions.at new file mode 100644 index 000000000..c66dd5dd9 --- /dev/null +++ b/tests/acfunctions.at @@ -0,0 +1,34 @@ +# Generated by mktests.sh, do not edit by hand. -*- autoconf -*- + +AT_BANNER([Testing acfunctions macros.]) + +# Modern macros. +AT_CHECK_MACRO([AC_FUNC_ALLOCA]) +AT_CHECK_MACRO([AC_FUNC_CHOWN]) +AT_CHECK_MACRO([AC_FUNC_CLOSEDIR_VOID]) +AT_CHECK_MACRO([AC_FUNC_ERROR_AT_LINE]) +AT_CHECK_MACRO([AC_FUNC_FNMATCH]) +AT_CHECK_MACRO([AC_FUNC_FSEEKO]) +AT_CHECK_MACRO([AC_FUNC_GETGROUPS]) +AT_CHECK_MACRO([AC_FUNC_GETLOADAVG]) +AT_CHECK_MACRO([AC_FUNC_GETMNTENT]) +AT_CHECK_MACRO([AC_FUNC_GETPGRP]) +AT_CHECK_MACRO([AC_FUNC_MALLOC]) +AT_CHECK_MACRO([AC_FUNC_MEMCMP]) +AT_CHECK_MACRO([AC_FUNC_MKTIME]) +AT_CHECK_MACRO([AC_FUNC_MMAP]) +AT_CHECK_MACRO([AC_FUNC_OBSTACK]) +AT_CHECK_MACRO([AC_FUNC_SELECT_ARGTYPES]) +AT_CHECK_MACRO([AC_FUNC_SETPGRP]) +AT_CHECK_MACRO([AC_FUNC_SETVBUF_REVERSED]) +AT_CHECK_MACRO([AC_FUNC_STAT]) +AT_CHECK_MACRO([AC_FUNC_STRCOLL]) +AT_CHECK_MACRO([AC_FUNC_STRERROR_R]) +AT_CHECK_MACRO([AC_FUNC_STRFTIME]) +AT_CHECK_MACRO([AC_FUNC_STRTOD]) +AT_CHECK_MACRO([AC_FUNC_UTIME_NULL]) +AT_CHECK_MACRO([AC_FUNC_VFORK]) +AT_CHECK_MACRO([AC_FUNC_VPRINTF]) +AT_CHECK_MACRO([AC_FUNC_WAIT3]) + +# Obsolete macros. diff --git a/tests/acgeneral.at b/tests/acgeneral.at new file mode 100644 index 000000000..d892d31ea --- /dev/null +++ b/tests/acgeneral.at @@ -0,0 +1,22 @@ +# Generated by mktests.sh, do not edit by hand. -*- autoconf -*- + +AT_BANNER([Testing acgeneral macros.]) + +# Modern macros. +AT_CHECK_MACRO([AC_ARG_ENABLE]) +AT_CHECK_MACRO([AC_ARG_PROGRAM]) +AT_CHECK_MACRO([AC_ARG_WITH]) +AT_CHECK_MACRO([AC_CANONICAL_TARGET]) +AT_CHECK_MACRO([AC_EGREP_CPP]) +AT_CHECK_MACRO([AC_EGREP_HEADER]) +AT_CHECK_MACRO([AC_PREFIX_DEFAULT]) + +# Obsolete macros. +AT_CHECK_AU_MACRO([AC_CHECKING]) +AT_CHECK_AU_MACRO([AC_CHECK_TOOL_PREFIX]) +AT_CHECK_AU_MACRO([AC_COMPILE_CHECK]) +AT_CHECK_AU_MACRO([AC_ENABLE]) +AT_CHECK_AU_MACRO([AC_HAVE_LIBRARY]) +AT_CHECK_AU_MACRO([AC_OUTPUT_COMMANDS]) +AT_CHECK_AU_MACRO([AC_VALIDATE_CACHED_SYSTEM_TUPLE]) +AT_CHECK_AU_MACRO([AC_WITH]) diff --git a/tests/acheaders.at b/tests/acheaders.at new file mode 100644 index 000000000..93866534d --- /dev/null +++ b/tests/acheaders.at @@ -0,0 +1,14 @@ +# Generated by mktests.sh, do not edit by hand. -*- autoconf -*- + +AT_BANNER([Testing acheaders macros.]) + +# Modern macros. +AT_CHECK_MACRO([AC_HEADER_MAJOR]) +AT_CHECK_MACRO([AC_HEADER_STAT]) +AT_CHECK_MACRO([AC_HEADER_TIOCGWINSZ]) + +# Obsolete macros. +AT_CHECK_AU_MACRO([AC_DIR_HEADER]) +AT_CHECK_AU_MACRO([AC_MEMORY_H]) +AT_CHECK_AU_MACRO([AC_UNISTD_H]) +AT_CHECK_AU_MACRO([AC_USG]) diff --git a/tests/aclang.at b/tests/aclang.at new file mode 100644 index 000000000..c159703a6 --- /dev/null +++ b/tests/aclang.at @@ -0,0 +1,23 @@ +# Generated by mktests.sh, do not edit by hand. -*- autoconf -*- + +AT_BANNER([Testing aclang macros.]) + +# Modern macros. +AT_CHECK_MACRO([AC_C_BIGENDIAN]) +AT_CHECK_MACRO([AC_C_CHAR_UNSIGNED]) +AT_CHECK_MACRO([AC_C_LONG_DOUBLE]) +AT_CHECK_MACRO([AC_C_PROTOTYPES]) +AT_CHECK_MACRO([AC_C_STRINGIZE]) +AT_CHECK_MACRO([AC_F77_WRAPPERS]) +AT_CHECK_MACRO([AC_NO_EXECUTABLES]) +AT_CHECK_MACRO([AC_PROG_CC_C_O]) +AT_CHECK_MACRO([AC_PROG_F77_C_O]) +AT_CHECK_MACRO([AC_PROG_GCC_TRADITIONAL]) +AT_CHECK_MACRO([AC_REQUIRE_CPP]) + +# Obsolete macros. +AT_CHECK_AU_MACRO([AC_C_CROSS]) +AT_CHECK_AU_MACRO([AC_LANG_C]) +AT_CHECK_AU_MACRO([AC_LANG_CPLUSPLUS]) +AT_CHECK_AU_MACRO([AC_LANG_FORTRAN77]) +AT_CHECK_AU_MACRO([AC_LANG_SAVE]) diff --git a/tests/acspecific.at b/tests/acspecific.at new file mode 100644 index 000000000..9f1a4ef5e --- /dev/null +++ b/tests/acspecific.at @@ -0,0 +1,40 @@ +# Generated by mktests.sh, do not edit by hand. -*- autoconf -*- + +AT_BANNER([Testing acspecific macros.]) + +# Modern macros. +AT_CHECK_MACRO([AC_AIX]) +AT_CHECK_MACRO([AC_DECL_SYS_SIGLIST]) +AT_CHECK_MACRO([AC_ISC_POSIX]) +AT_CHECK_MACRO([AC_MINIX]) +AT_CHECK_MACRO([AC_PROG_AWK]) +AT_CHECK_MACRO([AC_PROG_INSTALL]) +AT_CHECK_MACRO([AC_PROG_LEX]) +AT_CHECK_MACRO([AC_PROG_LN_S]) +AT_CHECK_MACRO([AC_PROG_MAKE_SET]) +AT_CHECK_MACRO([AC_PROG_RANLIB]) +AT_CHECK_MACRO([AC_PROG_YACC]) +AT_CHECK_MACRO([AC_STRUCT_ST_BLOCKS]) +AT_CHECK_MACRO([AC_STRUCT_TIMEZONE]) +AT_CHECK_MACRO([AC_SYS_INTERPRETER]) +AT_CHECK_MACRO([AC_SYS_LARGEFILE]) +AT_CHECK_MACRO([AC_SYS_LONG_FILE_NAMES]) +AT_CHECK_MACRO([AC_SYS_RESTARTABLE_SYSCALLS]) +AT_CHECK_MACRO([AC_TYPE_MODE_T]) +AT_CHECK_MACRO([AC_TYPE_OFF_T]) +AT_CHECK_MACRO([AC_TYPE_SIGNAL]) + +# Obsolete macros. +AT_CHECK_AU_MACRO([AC_ARG_ARRAY]) +AT_CHECK_AU_MACRO([AC_DECL_YYTEXT]) +AT_CHECK_AU_MACRO([AC_DYNIX_SEQ]) +AT_CHECK_AU_MACRO([AC_HAVE_POUNDBANG]) +AT_CHECK_AU_MACRO([AC_INT_16_BITS]) +AT_CHECK_AU_MACRO([AC_IRIX_SUN]) +AT_CHECK_AU_MACRO([AC_LONG_64_BITS]) +AT_CHECK_AU_MACRO([AC_RSH]) +AT_CHECK_AU_MACRO([AC_SCO_INTL]) +AT_CHECK_AU_MACRO([AC_STRUCT_ST_BLKSIZE]) +AT_CHECK_AU_MACRO([AC_STRUCT_ST_RDEV]) +AT_CHECK_AU_MACRO([AC_XENIX_DIR]) +AT_CHECK_AU_MACRO([AM_TYPE_PTRDIFF_T]) diff --git a/tests/atgeneral.m4 b/tests/atgeneral.m4 index 6fd5b8abf..0f1337089 100644 --- a/tests/atgeneral.m4 +++ b/tests/atgeneral.m4 @@ -218,6 +218,11 @@ do case $at_test in dnl Tests inserted here (TESTS). m4_divert([TAIL])[]dnl + + * ) + echo $as_me: no such test: $at_test + continue + ;; esac case $at_test in banner-*) ;; diff --git a/tests/atspecific.m4 b/tests/atspecific.m4 index f8eccce2f..3f0788565 100644 --- a/tests/atspecific.m4 +++ b/tests/atspecific.m4 @@ -22,6 +22,23 @@ include(atgeneral.m4) -*- Autoconf -*- ## ---------------------------------------- ## +# AT_CONFIGURE_AC(BODY) +# --------------------- +# Create a full configure.ac running BODY, with a config header set up, +# AC_OUTPUT, and environement checking hooks. +m4_define([AT_CONFIGURE_AC], +[AT_CLEANUP_FILES(env-after state*)dnl +AT_DATA([configure.ac], +[AC_INIT +AC_CONFIG_AUX_DIR($top_srcdir) +AC_CONFIG_HEADER(config.h:config.hin) +AC_STATE_SAVE(before) +$1 +AC_STATE_SAVE(after) +AC_OUTPUT +])]) + + # AT_CHECK_AUTOCONF(FLAGS, [EXIT-STATUS = 0], STDOUT, STDERR) # ----------------------------------------------------------- # Also remove `configure.in', just in case one remained from a previous @@ -55,6 +72,43 @@ AT_CHECK([top_srcdir=$top_srcdir ./configure $1], [test $at_verbose = echo && echo "$srcdir/AT_LINE: config.log" && cat config.log])]) +# AT_CHECK_ENV +# ------------ +# Check that the full configure run remained in its variable name space, +# and cleaned up tmp files. +# me tests might exit prematurely when they find a problem, in +# which case `env-after' is probably missing. Don't check it then. +m4_define([AT_CHECK_ENV], +[if test -f state-env.before -a -f state-env.after; then + mv -f state-env.before expout + AT_CHECK([cat state-env.after], 0, expout) +fi +if test -f state-ls.before -a -f state-ls.after; then + mv -f state-ls.before expout + AT_CHECK([cat state-ls.after], 0, expout) +fi +]) + + +# AT_CHECK_DEFINES(CONTENT) +# ------------------------- +# Verify that config.h, once stripped is CONTENT. +# Stripping consists of keeping CPP lines (i.e. containing a hash), +# but those of automatically checked features (STDC_HEADERS etc.). +# AT_CHECK_HEADER is a better name, but too close from AC_CHECK_HEADER. +m4_define([AT_CHECK_DEFINES], +[AT_CHECK([[fgrep '#' config.h | + egrep -v 'STDC_HEADERS|STDLIB|INTTYPES|MEMORY|STRING|UNISTD']],, [$1])]) + + +# AT_CHECK_AUTOUPDATE +# ------------------- +m4_define([AT_CHECK_AUTOUPDATE], +[AT_CHECK([autoupdate --autoconf-dir $at_top_srcdir], 0, + [], [autoupdate: `configure.ac' is updated +])]) + + # _AT_CHECK_AC_MACRO(AC-BODY, PRE-TESTS) # -------------------------------------- # Create a minimalist configure.ac running the macro named @@ -63,76 +117,66 @@ AT_CHECK([top_srcdir=$top_srcdir ./configure $1], # TOP_SRCDIR is needed to set the auxdir (some macros need `install-sh', # `config.guess' etc.). m4_define([_AT_CHECK_AC_MACRO], -[dnl Produce the configure.ac -AT_CLEANUP_FILES(env-after state*)dnl -AT_DATA([configure.ac], -[AC_INIT -AC_CONFIG_AUX_DIR($top_srcdir) -AC_CONFIG_HEADER(config.h:config.hin) -AC_STATE_SAVE(before) -$1 -AC_STATE_SAVE(after) -AC_OUTPUT -]) +[AT_CONFIGURE_AC([$1]) $2 AT_CHECK_AUTOCONF AT_CHECK_AUTOHEADER AT_CHECK_CONFIGURE - -dnl Some tests might exit prematurely when they find a problem, in -dnl which case `env-after' is probably missing. Don't check it then. -if test -f state-env.before -a -f state-env.after; then - mv -f state-env.before expout - AT_CHECK([cat state-env.after], 0, expout) -fi -if test -f state-ls.before -a -f state-ls.after; then - mv -f state-ls.before expout - AT_CHECK([cat state-ls.after], 0, expout) -fi +AT_CHECK_ENV ])# _AT_CHECK_AC_MACRO -# AT_CHECK_MACRO(NAME-OF-THE-MACRO, [MACRO-USE], [ADDITIONAL-CMDS]) -# ----------------------------------------------------------------- +# AT_CHECK_MACRO(MACRO, [MACRO-USE], [ADDITIONAL-CMDS]) +# ----------------------------------------------------- # Create a minimalist configure.ac running the macro named # NAME-OF-THE-MACRO, check that autoconf runs on that script, # and that the shell runs correctly the configure. # TOP_SRCDIR is needed to set the auxdir (some macros need `install-sh', # `config.guess' etc.). +# +# New macros are not expected to depend upon obsolete macros. m4_define([AT_CHECK_MACRO], [AT_SETUP([$1]) +AT_CONFIGURE_AC([m4_default([$2], [$1])]) -_AT_CHECK_AC_MACRO([m4_default([$2], [$1])]) +AT_CHECK_AUTOCONF([-W obsolete]) +AT_CHECK_AUTOHEADER +AT_CHECK_CONFIGURE +AT_CHECK_ENV $3 AT_CLEANUP()dnl ])# AT_CHECK_MACRO -# AT_CHECK_UPDATE(NAME-OF-THE-MACRO) -# ---------------------------------- +# AT_CHECK_AU_MACRO(MACRO) +# ------------------------ # Create a minimalist configure.ac running the macro named # NAME-OF-THE-MACRO, autoupdate this script, check that autoconf runs # on that script, and that the shell runs correctly the configure. # TOP_SRCDIR is needed to set the auxdir (some macros need # `install-sh', `config.guess' etc.). -m4_define([AT_CHECK_UPDATE], -[AT_SETUP([autoupdating $1]) +# +# Updated configure.ac shall not depend upon obsolete macros, which votes +# in favor of `-W obsolete', but since many of these macros leave a message +# to be removed by the user once her code ajusted, let's not check. +# +# Remove config.hin to avoid `autoheader: config.hin is unchanged'. +m4_define([AT_CHECK_AU_MACRO], +[AT_SETUP([$1]) +AT_CONFIGURE_AC([$1]) -_AT_CHECK_AC_MACRO([$1], -[AT_CHECK([autoupdate --autoconf-dir $at_top_srcdir], 0, - [], [autoupdate: `configure.ac' is updated -])]) +AT_CHECK_AUTOCONF +AT_CHECK_AUTOHEADER +AT_CHECK_CONFIGURE +AT_CHECK_ENV -AT_CLEANUP()dnl -])# AT_CHECK_UPDATE +rm config.hin +AT_CHECK_AUTOUPDATE +AT_CHECK_AUTOCONF +AT_CHECK_AUTOHEADER +AT_CHECK_CONFIGURE +AT_CHECK_ENV -# AT_CHECK_DEFINES(CONTENT) -# ------------------------- -# Verify that config.h, once stripped is CONTENT. -# Stripping consists of keeping CPP lines (i.e. containing a hash), -# but those of automatically checked features (STDC_HEADERS etc.). -# AT_CHECK_HEADER is a better name, but too close from AC_CHECK_HEADER. -m4_define([AT_CHECK_DEFINES], -[AT_CHECK([[fgrep '#' config.h | - egrep -v 'STDC_HEADERS|STDLIB|INTTYPES|MEMORY|STRING|UNISTD']],, [$1])]) +AT_CLEANUP()dnl +])# AT_CHECK_UPDATE diff --git a/tests/mktests.sh b/tests/mktests.sh index 58bbbe057..e49831854 100755 --- a/tests/mktests.sh +++ b/tests/mktests.sh @@ -21,10 +21,15 @@ # If we fail, clean up, but touch the output files. We probably failed # because we used some non portable tool, but we just don't care: this # shell script is a maintainer tool, and we do expect good tools. -trap 'echo "'$0': failed. To proceed run make check." >&2 - rm -f acdefuns audefuns requires syntax.tat update.tat - touch syntax.at - touch update.at + +as_me=`echo "$0" | sed 's,.*/,,'` + +trap 'echo "'"$as_me"': failed. To proceed run make check." >&2 + rm -f acdefuns audefuns requires $as_me.tat + for file in "$@" + do + touch `echo "$file" | sed "s,.*/,,;s/\..*/.at/"` + done trap 0 exit 1' \ 0 1 2 15 @@ -44,9 +49,21 @@ export LANG; LANG=C export LC_ALL; LC_ALL=C +# requires +# -------- +# Get the list of macros that are required: there is little interest +# in testing them since they will be run but the guy who requires +# them. +cat $src | + sed -n 's/dnl.*//;s/.*AC_REQUIRE(\[*\([a-zA-Z0-9_]*\).*$/\1/p' | + sort | + uniq >requires + + # exclude_list # ------------ -# Macros which must not be checked at all (not by syntax.at, not udpate.at). +# Macros which must not be checked at all (not by ac-macros.at, nor +# au-macros.at). # The trailing new line is meant. # # - ac_cv_prog_gcc, gxx, g77 @@ -54,18 +71,12 @@ export LC_ALL; LC_ALL=C exclude_list='^ac_cv_prog_(gcc|gxx|g77)$ ' - - -## ----------- ## -## syntax.at. ## -## ----------- ## - -# syntax_exclude_list -# ------------------- -# The test `syntax.at' tries to run all the macros of Autoconf to check +# ac_exclude_list +# --------------- +# The test `ac-macros.at' tries to run all the macros of Autoconf to check # for syntax problems, etc. Not all the macros can be run without argument, # and some are already tested elsewhere. EGREP_EXCLUDE must filter out -# the macros we don't want to test in syntax.at. +# the macros we don't want to test in ac-macros.at. # # - AC_CANONICALIZE, AC_PREFIX_PROGRAM, AC_PREREQ # Need an argument. @@ -96,7 +107,7 @@ exclude_list='^ac_cv_prog_(gcc|gxx|g77)$ # - AC_PATH_XTRA # Checked in semantics. # -syntax_exclude_list='^AC_ARG_VAR$ +ac_exclude_list='^AC_ARG_VAR$ ^AC_CANONICALIZE|AC_PREFIX_PROGRAM|AC_PREREQ$ ^AC_CHECK_(DECL|FILE|FUNC|HEADER|LIB|MEMBER|PROG|SIZEOF|TOOL|TYPE)S?$ ^AC_CONFIG @@ -118,53 +129,18 @@ syntax_exclude_list='^AC_ARG_VAR$ ^AC_PATH_XTRA$ _AC_' -# syntax_exclude_egrep -- + +# ac_exclude_egrep +# ---------------- # Build a single egrep pattern out of filter_macros_list. # Sed is used to get rid of the trailing `|' coming from the trailing # `\n' from `echo'. -syntax_exclude_egrep=`echo "$exclude_list$syntax_exclude_list" | tr ' +ac_exclude_egrep=`echo "$exclude_list$ac_exclude_list" | tr ' ' '|' | sed 's/.$//'` -sed 's/^ *//' >syntax.tat <acdefuns - -# Get the list of macros that are required: there is little interest -# in testing them since they will be run but the guy who requires -# them. -cat $src | - sed -ne 's/dnl.*//;s/.*AC_REQUIRE(\[*\([a-zA-Z0-9_]*\).*$/\1/p' | - sort | - uniq >requires - -# Filter out. -for macro in `cat acdefuns`; do - if fgrep "$macro" requires >/dev/null 2>&1; then :; else - echo "AT_CHECK_MACRO([$macro])" >>syntax.tat - fi -done - -mv syntax.tat syntax.at - - -## ----------- ## -## update.at. ## -## ----------- ## -# update_exclude_list -# ------------------- +# au_exclude_list +# --------------- # AC_LANG_RESTORE # cannot be used alone. # AC_LINK_FILES, AC_PREREQ @@ -173,38 +149,76 @@ mv syntax.tat syntax.at # are already in `configure.ac'. # AC_CYGWIN, AC_MINGW32, AC_EMXOS2 # are using AC_REQUIRE. -update_exclude_list='^AC_LANG_RESTORE$ +au_exclude_list='^AC_LANG_RESTORE$ ^AC_LINK_FILES|AC_PREREQ$ ^AC_(INIT|OUTPUT)$ ^AC_(CYGWIN|MINGW32|EMXOS2)$' -# syntax_exclude_egrep -- + +# au_exclude_egrep +# ---------------- # Build a single egrep pattern out of filter_macros_list. # Sed is used to get rid of the trailing `|' coming from the trailing # `\n' from `echo'. -update_exclude_egrep=`echo "$exclude_list$update_exclude_list" | tr ' +au_exclude_egrep=`echo "$exclude_list$au_exclude_list" | tr ' ' '|' | sed 's/.$//'` -sed 's/^ *//' >update.tat <acdefuns -# Get the list of macros which are defined in Autoupdate level. -cat $src | - sed -ne 's/^AU_DEFUN(\[*\([a-zA-Z][a-zA-Z0-9_]*\).*$/\1/p' | - sort | - uniq | - egrep -v "$update_exclude_egrep" | - sed 's/.*/AT_CHECK_UPDATE([&])/' >>update.tat + # Get the list of macros which are defined in Autoupdate level. + cat $file | + sed -n 's/^AU_DEFUN(\[*\([a-zA-Z][a-zA-Z0-9_]*\).*$/\1/p' | + sort | + uniq | + ( egrep -v "$au_exclude_egrep";: ) > audefuns + + # Filter out required macros. + { + sed 's/^ *//' </dev/null 2>&1; then :; else + echo "AT_CHECK_MACRO([$macro])" + fi + done + echo + echo "# Obsolete macros." + for macro in `cat audefuns`; do + if fgrep "$macro" requires >/dev/null 2>&1; then :; else + echo "AT_CHECK_AU_MACRO([$macro])" + fi + done + } >$as_me.tat + + # In one atomic step so that if something above fails, the trap + # preserves the old version of the file. + mv $as_me.tat $base.at +done rm -f acdefuns audefuns requires trap 0 - exit 0 diff --git a/tests/semantics.at b/tests/semantics.at index 23feed188..57defd096 100644 --- a/tests/semantics.at +++ b/tests/semantics.at @@ -47,19 +47,6 @@ AT_CHECK_MACRO([AC_CHECK_FUNCS], ])]) -# AC_HAVE_FUNCS -# ------------- -# This macro is an obsolete version of AC_CHECK_FUNCS. Running this -# test allows to check that AU_ALIAS'ed macros work properly. -AT_CHECK_MACRO([AC_HAVE_FUNCS], -[AC_HAVE_FUNCS(printf autoconf_ftnirp)], -[AT_CHECK_DEFINES( -[/* #undef HAVE_AUTOCONF_FTNIRP */ -#define HAVE_PRINTF 1 -])]) - - - # AC_CHECK_HEADERS # ---------------- # Check that it performs the correct actions: @@ -72,7 +59,6 @@ AT_CHECK_MACRO([AC_CHECK_HEADERS], ])]) - # AC_CHECK_MEMBERS # ---------------- # Check that it performs the correct actions. @@ -128,7 +114,6 @@ AT_CHECK_MACRO([AC_CHECK_TYPES], ])]) - # AC_CHECK_TYPES # -------------- # Check that we properly dispatch properly to the old implementation @@ -167,7 +152,6 @@ NEW AT_CLEANUP - # AC_CHECK_FILES # -------------- # FIXME: To really test HAVE_AC_EXISTS2 and HAVE_AC_MISSING2 we need to diff --git a/tests/suite.at b/tests/suite.at index be3404a22..830bcdf78 100644 --- a/tests/suite.at +++ b/tests/suite.at @@ -9,8 +9,8 @@ AT_INIT([autoconf]) AT_BANNER( -[Some tests might be ignored if you don't have the software which the -macros are supposed to test (e.g., a Fortran compiler).]) +[Some tests might be skipped if you don't have the software which the +macros check (e.g., a Fortran compiler).]) # Run the tests from the lowest level to the highest level, and from # the most selective to the easiest. @@ -41,11 +41,12 @@ m4_include([compile.at]) # Checking that AC_CHECK_FOO macros work properly. m4_include([semantics.at]) -# Checking all the AC_DEFUN'd macros. -m4_include([syntax.at]) - -# Checking that updating an obsolete macro produces a valid configure.ac -m4_include([update.at]) +# Blind testing the macros. +m4_include([acgeneral.at]) +m4_include([acspecific.at]) +m4_include([acfunctions.at]) +m4_include([aclang.at]) +m4_include([acheaders.at]) # Compatibility with foreign tools. m4_include([foreign.at]) diff --git a/tests/syntax.at b/tests/syntax.at deleted file mode 100644 index 28b1e4db2..000000000 --- a/tests/syntax.at +++ /dev/null @@ -1,99 +0,0 @@ -# Generated by mktests.sh, do not edit by hand. -*- autoconf -*- - -AT_BANNER([Syntax of macros and completeness of header templates.]) - -AT_CHECK_MACRO([AC_AIX]) -AT_CHECK_MACRO([AC_ARG_ARRAY]) -AT_CHECK_MACRO([AC_ARG_ENABLE]) -AT_CHECK_MACRO([AC_ARG_PROGRAM]) -AT_CHECK_MACRO([AC_ARG_WITH]) -AT_CHECK_MACRO([AC_CANONICAL_TARGET]) -AT_CHECK_MACRO([AC_CHECKING]) -AT_CHECK_MACRO([AC_CHECK_TOOL_PREFIX]) -AT_CHECK_MACRO([AC_COMPILE_CHECK]) -AT_CHECK_MACRO([AC_C_BIGENDIAN]) -AT_CHECK_MACRO([AC_C_CHAR_UNSIGNED]) -AT_CHECK_MACRO([AC_C_CROSS]) -AT_CHECK_MACRO([AC_C_LONG_DOUBLE]) -AT_CHECK_MACRO([AC_C_PROTOTYPES]) -AT_CHECK_MACRO([AC_C_STRINGIZE]) -AT_CHECK_MACRO([AC_DECL_SYS_SIGLIST]) -AT_CHECK_MACRO([AC_DECL_YYTEXT]) -AT_CHECK_MACRO([AC_DIR_HEADER]) -AT_CHECK_MACRO([AC_DYNIX_SEQ]) -AT_CHECK_MACRO([AC_EGREP_CPP]) -AT_CHECK_MACRO([AC_EGREP_HEADER]) -AT_CHECK_MACRO([AC_ENABLE]) -AT_CHECK_MACRO([AC_F77_WRAPPERS]) -AT_CHECK_MACRO([AC_FUNC_ALLOCA]) -AT_CHECK_MACRO([AC_FUNC_CHOWN]) -AT_CHECK_MACRO([AC_FUNC_CLOSEDIR_VOID]) -AT_CHECK_MACRO([AC_FUNC_ERROR_AT_LINE]) -AT_CHECK_MACRO([AC_FUNC_FNMATCH]) -AT_CHECK_MACRO([AC_FUNC_FSEEKO]) -AT_CHECK_MACRO([AC_FUNC_GETGROUPS]) -AT_CHECK_MACRO([AC_FUNC_GETLOADAVG]) -AT_CHECK_MACRO([AC_FUNC_GETMNTENT]) -AT_CHECK_MACRO([AC_FUNC_GETPGRP]) -AT_CHECK_MACRO([AC_FUNC_MALLOC]) -AT_CHECK_MACRO([AC_FUNC_MEMCMP]) -AT_CHECK_MACRO([AC_FUNC_MKTIME]) -AT_CHECK_MACRO([AC_FUNC_MMAP]) -AT_CHECK_MACRO([AC_FUNC_OBSTACK]) -AT_CHECK_MACRO([AC_FUNC_SELECT_ARGTYPES]) -AT_CHECK_MACRO([AC_FUNC_SETPGRP]) -AT_CHECK_MACRO([AC_FUNC_SETVBUF_REVERSED]) -AT_CHECK_MACRO([AC_FUNC_STAT]) -AT_CHECK_MACRO([AC_FUNC_STRCOLL]) -AT_CHECK_MACRO([AC_FUNC_STRERROR_R]) -AT_CHECK_MACRO([AC_FUNC_STRFTIME]) -AT_CHECK_MACRO([AC_FUNC_STRTOD]) -AT_CHECK_MACRO([AC_FUNC_UTIME_NULL]) -AT_CHECK_MACRO([AC_FUNC_VFORK]) -AT_CHECK_MACRO([AC_FUNC_VPRINTF]) -AT_CHECK_MACRO([AC_FUNC_WAIT3]) -AT_CHECK_MACRO([AC_HAVE_LIBRARY]) -AT_CHECK_MACRO([AC_HAVE_POUNDBANG]) -AT_CHECK_MACRO([AC_HEADER_MAJOR]) -AT_CHECK_MACRO([AC_HEADER_STAT]) -AT_CHECK_MACRO([AC_HEADER_TIOCGWINSZ]) -AT_CHECK_MACRO([AC_INT_16_BITS]) -AT_CHECK_MACRO([AC_IRIX_SUN]) -AT_CHECK_MACRO([AC_ISC_POSIX]) -AT_CHECK_MACRO([AC_LONG_64_BITS]) -AT_CHECK_MACRO([AC_MEMORY_H]) -AT_CHECK_MACRO([AC_MINGW32]) -AT_CHECK_MACRO([AC_MINIX]) -AT_CHECK_MACRO([AC_NO_EXECUTABLES]) -AT_CHECK_MACRO([AC_OUTPUT_COMMANDS]) -AT_CHECK_MACRO([AC_PREFIX_DEFAULT]) -AT_CHECK_MACRO([AC_PROG_AWK]) -AT_CHECK_MACRO([AC_PROG_CC_C_O]) -AT_CHECK_MACRO([AC_PROG_F77_C_O]) -AT_CHECK_MACRO([AC_PROG_GCC_TRADITIONAL]) -AT_CHECK_MACRO([AC_PROG_INSTALL]) -AT_CHECK_MACRO([AC_PROG_LEX]) -AT_CHECK_MACRO([AC_PROG_LN_S]) -AT_CHECK_MACRO([AC_PROG_MAKE_SET]) -AT_CHECK_MACRO([AC_PROG_RANLIB]) -AT_CHECK_MACRO([AC_PROG_YACC]) -AT_CHECK_MACRO([AC_REQUIRE_CPP]) -AT_CHECK_MACRO([AC_RSH]) -AT_CHECK_MACRO([AC_SCO_INTL]) -AT_CHECK_MACRO([AC_STRUCT_ST_BLKSIZE]) -AT_CHECK_MACRO([AC_STRUCT_ST_BLOCKS]) -AT_CHECK_MACRO([AC_STRUCT_ST_RDEV]) -AT_CHECK_MACRO([AC_STRUCT_TIMEZONE]) -AT_CHECK_MACRO([AC_SYS_INTERPRETER]) -AT_CHECK_MACRO([AC_SYS_LARGEFILE]) -AT_CHECK_MACRO([AC_SYS_LONG_FILE_NAMES]) -AT_CHECK_MACRO([AC_SYS_RESTARTABLE_SYSCALLS]) -AT_CHECK_MACRO([AC_TYPE_MODE_T]) -AT_CHECK_MACRO([AC_TYPE_OFF_T]) -AT_CHECK_MACRO([AC_TYPE_SIGNAL]) -AT_CHECK_MACRO([AC_UNISTD_H]) -AT_CHECK_MACRO([AC_USG]) -AT_CHECK_MACRO([AC_VALIDATE_CACHED_SYSTEM_TUPLE]) -AT_CHECK_MACRO([AC_WITH]) -AT_CHECK_MACRO([AC_XENIX_DIR]) -AT_CHECK_MACRO([AM_TYPE_PTRDIFF_T]) diff --git a/tests/update.at b/tests/update.at deleted file mode 100644 index 55e5e7d79..000000000 --- a/tests/update.at +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by mktests.sh, do not edit by hand. -*- autoconf -*- - -AT_BANNER([Syntax of autoupdated scripts.]) - -AT_CHECK_UPDATE([AC_ARG_ARRAY]) -AT_CHECK_UPDATE([AC_CHECKING]) -AT_CHECK_UPDATE([AC_CHECK_TOOL_PREFIX]) -AT_CHECK_UPDATE([AC_COMPILE_CHECK]) -AT_CHECK_UPDATE([AC_C_CROSS]) -AT_CHECK_UPDATE([AC_DECL_YYTEXT]) -AT_CHECK_UPDATE([AC_DIR_HEADER]) -AT_CHECK_UPDATE([AC_DYNIX_SEQ]) -AT_CHECK_UPDATE([AC_ENABLE]) -AT_CHECK_UPDATE([AC_F77_NAME_MANGLING]) -AT_CHECK_UPDATE([AC_HAVE_LIBRARY]) -AT_CHECK_UPDATE([AC_HAVE_POUNDBANG]) -AT_CHECK_UPDATE([AC_INT_16_BITS]) -AT_CHECK_UPDATE([AC_IRIX_SUN]) -AT_CHECK_UPDATE([AC_LANG_C]) -AT_CHECK_UPDATE([AC_LANG_CPLUSPLUS]) -AT_CHECK_UPDATE([AC_LANG_FORTRAN77]) -AT_CHECK_UPDATE([AC_LANG_SAVE]) -AT_CHECK_UPDATE([AC_LONG_64_BITS]) -AT_CHECK_UPDATE([AC_MEMORY_H]) -AT_CHECK_UPDATE([AC_OUTPUT_COMMANDS]) -AT_CHECK_UPDATE([AC_RSH]) -AT_CHECK_UPDATE([AC_SCO_INTL]) -AT_CHECK_UPDATE([AC_STRUCT_ST_BLKSIZE]) -AT_CHECK_UPDATE([AC_STRUCT_ST_RDEV]) -AT_CHECK_UPDATE([AC_UNISTD_H]) -AT_CHECK_UPDATE([AC_USG]) -AT_CHECK_UPDATE([AC_VALIDATE_CACHED_SYSTEM_TUPLE]) -AT_CHECK_UPDATE([AC_WITH]) -AT_CHECK_UPDATE([AC_XENIX_DIR]) -AT_CHECK_UPDATE([AM_TYPE_PTRDIFF_T])