diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-05-10 13:33:52 +0200 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-05-10 13:33:52 +0200 |
commit | 0dd95c8d51099aaca08fab7815e2c536908250e2 (patch) | |
tree | 0286792251f72c7d982c4d0a4e439c14bde8d671 | |
parent | 1a1c3ac44cf1d831a8b460888c7402d9fec70023 (diff) | |
parent | 0736c67c71d2d8611d48abb253a9058736bd18bd (diff) | |
download | automake-0dd95c8d51099aaca08fab7815e2c536908250e2.tar.gz |
Merge branch 'maint'
* maint:
automake: typofix in comments: s/AC_CONFIG_HEADER/AC_CONFIG_HEADERS/
am: prefer a shorter idiom where possible
cosmetics: fix few typos, grammaros and missing whitespace
fixup: remove an obsolete comment
docs: we still don't have the promised better Java interface
build: move automake and aclocal in 'bin' subdir
build: break up monolithic Makefile.am in subdir-specific fragments
+ Extra non-trivial edits:
* m4/Makefile.inc (dist_automake_ac_DATA): Drop lead-dot.m4 and
mkdirp.m4.
* lib/Automake/Makefile.inc (dist_perllib_DATA): Drop Configure_ac.pm.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | Makefile.am | 639 | ||||
-rw-r--r-- | THANKS | 1 | ||||
-rw-r--r-- | bin/Makefile.inc | 70 | ||||
-rw-r--r-- | bin/aclocal.in (renamed from aclocal.in) | 0 | ||||
-rw-r--r-- | bin/automake.in (renamed from automake.in) | 6 | ||||
-rwxr-xr-x | bin/gen-perl-protos (renamed from lib/gen-perl-protos) | 0 | ||||
-rwxr-xr-x | bootstrap.sh | 12 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | contrib/t/Makefile.inc | 26 | ||||
-rw-r--r-- | contrib/t/local.am | 25 | ||||
-rw-r--r-- | doc/Makefile.inc | 116 | ||||
-rw-r--r-- | doc/automake.texi | 8 | ||||
-rw-r--r-- | lib/Automake/Makefile.inc | 56 | ||||
-rw-r--r-- | lib/Makefile.inc | 68 | ||||
-rw-r--r-- | lib/am/Makefile.inc | 65 | ||||
-rw-r--r-- | lib/am/check.am | 2 | ||||
-rw-r--r-- | lib/am/header-vars.am | 7 | ||||
-rw-r--r-- | lib/am/library.am | 1 | ||||
-rw-r--r-- | lib/am/ltlibrary.am | 1 | ||||
-rw-r--r-- | lib/am/program.am | 1 | ||||
-rw-r--r-- | lib/am/remake-hdr.am | 6 | ||||
-rw-r--r-- | m4/Makefile.inc | 77 | ||||
-rwxr-xr-x | maintainer/rename-tests | 2 | ||||
-rw-r--r-- | maintainer/syntax-checks.mk | 34 | ||||
-rw-r--r-- | t/Makefile.inc | 274 | ||||
-rw-r--r-- | t/ax/tap-setup.sh | 2 | ||||
-rw-r--r-- | t/wrap/aclocal.in | 2 | ||||
-rw-r--r-- | t/wrap/automake.in | 2 |
29 files changed, 827 insertions, 682 deletions
diff --git a/.gitignore b/.gitignore index 4b509d70e..f13fd2101 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,8 @@ /config.status /config.status.lineno /configure.lineno -/aclocal -/automake +/bin/aclocal +/bin/automake /runtest /doc/.dirstamp /doc/automake*.info diff --git a/Makefile.am b/Makefile.am index 3933497cc..143308a11 100644 --- a/Makefile.am +++ b/Makefile.am @@ -22,11 +22,22 @@ CLEANFILES = DISTCLEANFILES = MAINTAINERCLEANFILES = EXTRA_DIST = +TAGS_FILES = +dist_noinst_DATA = +nodist_noinst_DATA = +dist_noinst_SCRIPTS = +nodist_noinst_SCRIPTS = ## ------------ ## ## Top level. ## ## ------------ ## +EXTRA_DIST += \ + bootstrap.sh \ + GNUmakefile \ + HACKING \ + PLANS + # We want a handful of substitutions to be fully-expanded by make; # then use config.status to substitute the remainder where a single # expansion is sufficient. We use a funny notation here to avoid @@ -58,62 +69,11 @@ generated_file_finalize = $(AM_V_at) \ fi; \ chmod a-w $@-t && mv -f $@-t $@ -bin_SCRIPTS = automake aclocal - -CLEANFILES += $(bin_SCRIPTS) -AUTOMAKESOURCES = automake.in aclocal.in - -TAGS_FILES = $(AUTOMAKESOURCES) - -EXTRA_DIST += \ - $(AUTOMAKESOURCES) \ - bootstrap.sh \ - GNUmakefile \ - HACKING \ - PLANS - # For some tests or targets, we need to have the just-build automake and # aclocal scripts avaiable on PATH. extend_PATH = \ { PATH='$(abs_builddir)/t/wrap'$(PATH_SEPARATOR)$$PATH && export PATH; } -# Make versioned links. We only run the transform on the root name; -# then we make a versioned link with the transformed base name. This -# seemed like the most reasonable approach. -install-exec-hook: - @$(POST_INSTALL) - @for p in $(bin_SCRIPTS); do \ - f=`echo $$p | sed '$(transform)'`; \ - fv="$$f-$(APIVERSION)"; \ - rm -f "$(DESTDIR)$(bindir)/$$fv"; \ - echo " $(LN) '$(DESTDIR)$(bindir)/$$f' '$(DESTDIR)$(bindir)/$$fv'"; \ - $(LN) "$(DESTDIR)$(bindir)/$$f" "$(DESTDIR)$(bindir)/$$fv"; \ - done - -uninstall-hook: - @for p in $(bin_SCRIPTS); do \ - f=`echo $$p | sed '$(transform)'`; \ - fv="$$f-$(APIVERSION)"; \ - rm -f "$(DESTDIR)$(bindir)/$$fv"; \ - done - -# These files depend on Makefile so they are rebuilt if $(VERSION), -# $(datadir) or other do_subst'ituted variables change. -automake: automake.in -aclocal: aclocal.in -automake aclocal: Makefile lib/gen-perl-protos - $(AM_V_GEN)rm -f $@ $@-t $@-t2 \ -## Common substitutions. - && in=$@.in && $(do_subst) <$(srcdir)/$$in >$@-t \ -## Auto-compute prototypes of perl subroutines. - && $(PERL) -w $(srcdir)/lib/gen-perl-protos $@-t > $@-t2 \ - && mv -f $@-t2 $@-t \ -## We can't use '$(generated_file_finalize)' here, because currently -## Automake contains occurrences of unexpanded @substitutions@ in -## comments, and that is perfectly legit. - && chmod a+x,a-w $@-t && mv -f $@-t $@ -EXTRA_DIST += lib/gen-perl-protos - # The master location for INSTALL is lib/INSTALL. # This is where "make fetch" will install new versions. # Make sure we also update this copy. @@ -130,560 +90,7 @@ maintainer-clean-local: # (as it is maintainer-specific). ChangeLog: - -## -------------------------------------------------------------------- ## -## Auxiliary scripts and files for use with "automake --add-missing". ## -## -------------------------------------------------------------------- ## - -dist_pkgvdata_DATA = \ - lib/COPYING \ - lib/INSTALL \ - lib/texinfo.tex - -# These must all be executable when installed. However, if we use -# _SCRIPTS, then the program transform will be applied, which is not -# what we want. So we make them executable by hand. -dist_script_DATA = \ - lib/config.guess \ - lib/config.sub \ - lib/install-sh \ - lib/mdate-sh \ - lib/missing \ - lib/mkinstalldirs \ - lib/ylwrap \ - lib/depcomp \ - lib/compile \ - lib/py-compile \ - lib/ar-lib \ - lib/test-driver \ - lib/tap-driver.sh \ - lib/tap-driver.pl - -install-data-hook: - @$(POST_INSTALL) - @for f in $(dist_script_DATA); do echo $$f; done \ - | sed 's,^lib/,,' \ - | ( st=0; \ - while read f; do \ - echo " chmod +x '$(DESTDIR)$(scriptdir)/$$f'"; \ - chmod +x "$(DESTDIR)$(scriptdir)/$$f" || st=1; \ - done; \ - exit $$st ) - -installcheck-local: installcheck-executable-scripts -installcheck-executable-scripts: - @for f in $(dist_script_DATA); do echo $$f; done \ - | sed 's,^lib/,,' \ - | while read f; do \ - path="$(pkgvdatadir)/$$f"; \ - test -x "$$path" || echo $$path; \ - done \ - | sed 's/$$/: not executable/' \ - | grep . 1>&2 && exit 1; exit 0 - - -## ---------------------------------------------------- ## -## Private perl modules used by automake and aclocal. ## -## ---------------------------------------------------- ## - -perllibdir = $(pkgvdatadir)/Automake -dist_perllib_DATA = \ - lib/Automake/ChannelDefs.pm \ - lib/Automake/Channels.pm \ - lib/Automake/Condition.pm \ - lib/Automake/DisjConditions.pm \ - lib/Automake/FileUtils.pm \ - lib/Automake/General.pm \ - lib/Automake/Getopt.pm \ - lib/Automake/Item.pm \ - lib/Automake/ItemDef.pm \ - lib/Automake/Language.pm \ - lib/Automake/Location.pm \ - lib/Automake/Options.pm \ - lib/Automake/Rule.pm \ - lib/Automake/RuleDef.pm \ - lib/Automake/Variable.pm \ - lib/Automake/VarDef.pm \ - lib/Automake/Version.pm \ - lib/Automake/XFile.pm \ - lib/Automake/Wrap.pm - -nodist_perllib_DATA = lib/Automake/Config.pm -CLEANFILES += $(nodist_perllib_DATA) - -lib/Automake/Config.pm: lib/Automake/Config.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_at)test -d lib/Automake || $(MKDIR_P) lib/Automake - $(AM_V_GEN)in=Config.in \ - && $(do_subst) <$(srcdir)/lib/Automake/Config.in >$@-t - $(generated_file_finalize) -EXTRA_DIST += lib/Automake/Config.in - - -## --------------------- ## -## Makefile fragments. ## -## --------------------- ## - -dist_am_DATA = \ - lib/am/check.am \ - lib/am/check2.am \ - lib/am/clean-hdr.am \ - lib/am/clean.am \ - lib/am/compile.am \ - lib/am/configure.am \ - lib/am/data.am \ - lib/am/dejagnu.am \ - lib/am/depend.am \ - lib/am/depend2.am \ - lib/am/distdir.am \ - lib/am/footer.am \ - lib/am/header-vars.am \ - lib/am/header.am \ - lib/am/install.am \ - lib/am/inst-vars.am \ - lib/am/java.am \ - lib/am/lang-compile.am \ - lib/am/lex.am \ - lib/am/library.am \ - lib/am/libs.am \ - lib/am/libtool.am \ - lib/am/lisp.am \ - lib/am/ltlib.am \ - lib/am/ltlibrary.am \ - lib/am/mans-vars.am \ - lib/am/mans.am \ - lib/am/program.am \ - lib/am/progs.am \ - lib/am/python.am \ - lib/am/remake-hdr.am \ - lib/am/scripts.am \ - lib/am/subdirs.am \ - lib/am/tags.am \ - lib/am/texi-vers.am \ - lib/am/texibuild.am \ - lib/am/texinfos.am \ - lib/am/vala.am \ - lib/am/yacc.am - - -## ------------------------------ ## -## Automake-provided m4 macros. ## -## ------------------------------ ## - -dist_automake_ac_DATA = \ - m4/amversion.m4 \ - m4/ar-lib.m4 \ - m4/as.m4 \ - m4/auxdir.m4 \ - m4/cond.m4 \ - m4/cond-if.m4 \ - m4/depend.m4 \ - m4/depout.m4 \ - m4/dmalloc.m4 \ - m4/extra-recurs.m4 \ - m4/gcj.m4 \ - m4/init.m4 \ - m4/install-sh.m4 \ - m4/lex.m4 \ - m4/lispdir.m4 \ - m4/maintainer.m4 \ - m4/make.m4 \ - m4/minuso.m4 \ - m4/missing.m4 \ - m4/obsolete.m4 \ - m4/options.m4 \ - m4/python.m4 \ - m4/runlog.m4 \ - m4/sanity.m4 \ - m4/silent.m4 \ - m4/strip.m4 \ - m4/substnot.m4 \ - m4/tar.m4 \ - m4/upc.m4 \ - m4/vala.m4 - -automake_internal_acdir = $(automake_acdir)/internal -dist_automake_internal_ac_DATA = m4/internal/ac-config-macro-dirs.m4 - -dist_system_ac_DATA = m4/acdir/README - -# We build amversion.m4 here, instead of from config.status, -# because config.status is rerun each time one of configure's -# dependencies change and amversion.m4 happens to be a configure -# dependency. configure and amversion.m4 would be rebuilt in -# loop otherwise. -# Use '$(top_srcdir)/m4' for the benefit of non-GNU makes: this is -# how amversion.m4 appears in our dependencies. -$(top_srcdir)/m4/amversion.m4: $(srcdir)/configure.ac $(srcdir)/m4/amversion.in - $(AM_V_at)rm -f $@-t $@ - $(AM_V_GEN)in=amversion.in \ - && $(do_subst) <$(srcdir)/m4/amversion.in >$@-t - $(generated_file_finalize) -EXTRA_DIST += m4/amversion.in - - -## ------------ ## -## Testsuite. ## -## ------------ ## - -# Run the tests with a proper shell detected at configure time. -LOG_COMPILER = $(AM_TEST_RUNNER_SHELL) - -TEST_EXTENSIONS = .pl .sh .tap -SH_LOG_COMPILER = $(LOG_COMPILER) -TAP_LOG_COMPILER = $(LOG_COMPILER) -PL_LOG_COMPILER = $(PERL) -AM_PL_LOG_FLAGS = -Mstrict -I $(builddir)/lib -I $(srcdir)/lib -w - -TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' $(SHELL) $(srcdir)/lib/tap-driver.sh - -AM_TAP_LOG_DRIVER_FLAGS = --merge - -EXTRA_DIST += t/README t/ax/is t/ax/is_newest - -## Will be updated later. -TESTS = - -# Some testsuite-influential variables should be overridable from the -# test scripts, but not from the environment. -# Keep this in sync with the similar list in 't/ax/runtest.in'. -AM_TESTS_ENVIRONMENT = \ - for v in \ - required \ - am_test_protocol \ - am_serial_tests \ - am_test_prefer_config_shell \ - am_original_AUTOMAKE \ - am_original_ACLOCAL \ - am_test_lib_sourced \ - test_lib_sourced \ - ; do \ - eval test x"\$${$$v}" = x || unset $$v; \ - done; -# We want warning messages and explanations for skipped tests to go to -# the console if possible, so set up 'stderr_fileno_' properly. -AM_TESTS_FD_REDIRECT = 9>&2 -AM_TESTS_ENVIRONMENT += stderr_fileno_=9; export stderr_fileno_; - -# For sourcing of extra "shell libraries" by our test scripts. As per -# POSIX, sourcing a file with '.' will cause it to be looked up in $PATH -# in case it is given with a relative name containing no slashes. -AM_TESTS_ENVIRONMENT += \ - if test $(srcdir) != .; then \ - PATH='$(abs_srcdir)/t/ax'$(PATH_SEPARATOR)$$PATH; \ - fi; \ - PATH='$(abs_builddir)/t/ax'$(PATH_SEPARATOR)$$PATH; \ - export PATH; - -# Hand-written tests. - -include $(srcdir)/t/list-of-tests.mk - -TESTS += $(handwritten_TESTS) -EXTRA_DIST += $(handwritten_TESTS) - -# Automatically-generated tests wrapping hand-written ones. -# Also, automatically-computed dependencies for tests. - -include $(srcdir)/t/testsuite-part.am - -TESTS += $(generated_TESTS) -EXTRA_DIST += $(generated_TESTS) - -$(srcdir)/t/testsuite-part.am: - $(AM_V_at)rm -f t/testsuite-part.tmp $@ - $(AM_V_GEN)$(PERL) $(srcdir)/gen-testsuite-part \ - --srcdir $(srcdir) > t/testsuite-part.tmp - $(AM_V_at)chmod a-w t/testsuite-part.tmp - $(AM_V_at)mv -f t/testsuite-part.tmp $@ -EXTRA_DIST += gen-testsuite-part - -# The dependecies declared here are not truly complete, but such -# completeness would cause more issues than it would solve. See -# automake bug#11347. -$(generated_TESTS): $(srcdir)/gen-testsuite-part -$(srcdir)/t/testsuite-part.am: $(srcdir)/gen-testsuite-part Makefile.am - -# Hand-written tests for stuff in 'contrib/'. -include $(srcdir)/contrib/t/local.am -TESTS += $(contrib_TESTS) -EXTRA_DIST += $(contrib_TESTS) - -# Static dependencies valid for each test case (also further -# extended later). Note that use 'noinst_' rather than 'check_' -# as the prefix, because we really want them to be built by -# "make all". This makes it easier to run the test cases by -# hand after having simply configured and built the package. - -nodist_noinst_SCRIPTS = \ - t/wrap/aclocal-$(APIVERSION) \ - t/wrap/automake-$(APIVERSION) - -dist_noinst_DATA = \ - t/ax/test-init.sh \ - t/ax/test-lib.sh \ - t/ax/am-test-lib.sh \ - t/ax/tap-functions.sh - -# Few more static dependencies. -t/distcheck-missing-m4.log: t/ax/distcheck-hook-m4.am -t/distcheck-outdated-m4.log: t/ax/distcheck-hook-m4.am -EXTRA_DIST += t/ax/distcheck-hook-m4.am - -t/ax/test-defs.sh: t/ax/test-defs.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_at)$(MKDIR_P) t/ax - $(AM_V_GEN)in=t/ax/test-defs.in \ - && $(do_subst) <$(srcdir)/$$in >$@-t - $(generated_file_finalize) -EXTRA_DIST += t/ax/test-defs.in -CLEANFILES += t/ax/test-defs.sh -nodist_noinst_DATA = t/ax/test-defs.sh - -## Will be updated soon. -noinst_SCRIPTS = - -t/ax/shell-no-trail-bslash: t/ax/shell-no-trail-bslash.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_GEN)in=t/ax/shell-no-trail-bslash.in \ - && $(MKDIR_P) t/ax \ - && $(do_subst) <$(srcdir)/$$in >$@-t \ - && chmod a+x $@-t - $(generated_file_finalize) -EXTRA_DIST += t/ax/shell-no-trail-bslash.in -CLEANFILES += t/ax/shell-no-trail-bslash -noinst_SCRIPTS += t/ax/shell-no-trail-bslash - -t/ax/cc-no-c-o: t/ax/cc-no-c-o.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_GEN)in=t/ax/cc-no-c-o.in \ - && $(MKDIR_P) t/ax \ - && $(do_subst) <$(srcdir)/$$in >$@-t \ - && chmod a+x $@-t - $(generated_file_finalize) -EXTRA_DIST += t/ax/cc-no-c-o.in -CLEANFILES += t/ax/cc-no-c-o -noinst_SCRIPTS += t/ax/cc-no-c-o - -runtest: t/ax/runtest.in Makefile - $(AM_V_at)rm -f $@ $@-t - $(AM_V_GEN)in=t/ax/runtest.in \ - && $(MKDIR_P) t/ax \ - && $(do_subst) <$(srcdir)/$$in >$@-t \ - && chmod a+x $@-t - $(generated_file_finalize) -EXTRA_DIST += t/ax/runtest.in -CLEANFILES += runtest -noinst_SCRIPTS += runtest - -# If two test scripts have the same basename, they will end up sharing -# the same log file, leading to all sort of undefined and undesired -# behaviours. -check-no-repeated-test-name: - @LC_ALL=C; export LC_ALL; \ - lst='$(TEST_LOGS)'; for log in $$lst; do echo $$log; done \ - | sort | uniq -c | awk '($$1 > 1) { print }' \ - | sed 's/\.log$$//' | grep . >&2 \ - && { \ - echo $@: test names listed above are duplicated >&2; \ - exit 1; \ - }; : -check-local: check-no-repeated-test-name -.PHONY: check-no-repeated-test-name - -# Check that our test cases are syntactically correct. -# See automake bug#11898. -check-tests-syntax: - @st=0; \ - err () { echo "$@: $$*" >&2; st=1; }; \ -## The user might do something like "make check TESTS=t/foo" or -## "make check TESTS_LOGS=t/foo.log" and expect (say) the test -## 't/foo.sh' to be run; this has worked well until today, and -## we want to continue supporting this use case. - bases=`for log in : $(TEST_LOGS); do echo $$log; done \ - | sed -e '/^:$$/d' -e 's/\.log$$//'`; \ - for bas in $$bases; do \ - for suf in sh tap pl; do \ - tst=$$bas.$$suf; \ -## Emulate VPATH search. - if test -f $$tst; then \ - break; \ - elif test -f $(srcdir)/$$tst; then \ - tst=$(srcdir)/$$tst; \ - break; \ - else \ - tst=''; \ - fi; \ - done; \ - test -n "$$tst" || err "couldn't find test '$$bas'"; \ -## Don't check that perl tests are valid shell scripts! - test $$suf = pl && continue; \ - $(AM_V_P) && echo " $(AM_TEST_RUNNER_SHELL) -n $$tst"; \ - $(AM_TEST_RUNNER_SHELL) -n "$$tst" \ - || err "test '$$tst' syntactically invalid"; \ - done; \ - exit $$st -check-local: check-tests-syntax -.PHONY: check-tests-syntax - -# Recipes with a trailing backslash character (possibly followed by -# blank characters only) can cause spurious syntax errors with at -# least older bash versions (e.g., bash 2.05b), and can be potentially -# be unportable to other weaker shells. Run the testsuite in a way -# that helps catching such problems in Automake-generated recipes. -# See automake bug#10436. -check-no-trailing-backslash-in-recipes: - $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \ - CONFIG_SHELL='$(abs_top_builddir)/t/ax/shell-no-trail-bslash' -.PHONY: check-no-trailing-backslash-in-recipes - -# Some compilers out there (hello, MSVC) still choke on "-c -o" being -# passed together on the command line. Run the whole testsuite faking -# the presence of such a compiler, to help catch regressions that would -# otherwise only present themselves later "in the wild". See also the -# long discussion about automake bug#13378. -check-cc-no-c-o: - $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \ - CC='$(abs_top_builddir)/t/ax/cc-no-c-o' \ - GNU_CC='$(abs_top_builddir)/t/ax/cc-no-c-o' -.PHONY: check-cc-no-c-o - -## Checking the list of tests. -test_subdirs = t t/pm contrib/t -include $(srcdir)/t/CheckListOfTests.am - -# Run the testsuite with the installed aclocal and automake. -installcheck-local: installcheck-testsuite -installcheck-testsuite: - am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check - -# Performance tests. -.PHONY: perf -perf: all - $(MAKE) $(AM_MAKEFLAGS) TEST_SUITE_LOG='$(PERF_TEST_SUITE_LOG)' \ - TESTS='$(perf_TESTS)' check -PERF_TEST_SUITE_LOG = t/perf/test-suite.log -CLEANFILES += $(PERF_TEST_SUITE_LOG) -EXTRA_DIST += $(perf_TESTS) - -clean-local: clean-local-check -.PHONY: clean-local-check -clean-local-check: -## Directories candidate to be test directories match this wildcard. - @globs='t/*.dir t/*/*.dir */t/*.dir */t/*/*.dir'; \ -## The 'nullglob' bash option is not portable, so use perl. - dirs=`$(PERL) -e "print join(' ', glob('$$globs'));"` || exit 1; \ - if test -n "$$dirs"; then \ -## Errors in find are acceptable, errors in rm are not. - find $$dirs -type d ! -perm -700 -exec chmod u+rwx {} ';'; \ - echo " rm -rf $$dirs"; \ - rm -rf $$dirs || exit 1; \ - fi - - -## ---------------- ## -## Documentation. ## -## ---------------- ## - -info_TEXINFOS = doc/automake.texi doc/automake-history.texi -doc_automake_TEXINFOS = doc/fdl.texi -doc_automake_history_TEXINFOS = doc/fdl.texi - -man1_MANS = \ - doc/aclocal.1 \ - doc/automake.1 \ - doc/aclocal-$(APIVERSION).1 \ - doc/automake-$(APIVERSION).1 - -$(man1_MANS): $(srcdir)/configure.ac - -CLEANFILES += $(man1_MANS) -EXTRA_DIST += doc/help2man - -update_mans = \ - $(AM_V_GEN): \ - && $(MKDIR_P) doc \ - && $(extend_PATH) \ - && $(PERL) $(srcdir)/doc/help2man --output=$@ - -doc/aclocal.1 doc/automake.1: - $(AM_V_GEN): \ - && $(MKDIR_P) doc \ - && f=`echo $@ | sed 's|.*/||; s|\.1$$||; $(transform)'` \ - && echo ".so man1/$$f-$(APIVERSION).1" > $@ - -doc/aclocal-$(APIVERSION).1: aclocal.in aclocal lib/Automake/Config.pm - $(update_mans) aclocal-$(APIVERSION) -doc/automake-$(APIVERSION).1: automake.in automake lib/Automake/Config.pm - $(update_mans) automake-$(APIVERSION) - - -## ---------------------------- ## -## Example package "amhello". ## -## ---------------------------- ## - -amhello_sources = \ - doc/amhello/configure.ac \ - doc/amhello/Makefile.am \ - doc/amhello/README \ - doc/amhello/src/main.c \ - doc/amhello/src/Makefile.am - -amhello_configury = \ - aclocal.m4 \ - autom4te.cache \ - Makefile.in \ - config.h.in \ - configure \ - depcomp \ - install-sh \ - missing \ - src/Makefile.in - -dist_noinst_DATA += $(amhello_sources) -dist_doc_DATA = $(srcdir)/doc/amhello-1.0.tar.gz - -setup_autotools_paths = { \ - $(extend_PATH) \ - && ACLOCAL=aclocal-$(APIVERSION) && export ACLOCAL \ - && AUTOMAKE=automake-$(APIVERSION) && export AUTOMAKE \ - && AUTOCONF='$(am_AUTOCONF)' && export AUTOCONF \ - && AUTOM4TE='$(am_AUTOM4TE)' && export AUTOM4TE \ - && AUTORECONF='$(am_AUTORECONF)' && export AUTORECONF \ - && AUTOHEADER='$(am_AUTOHEADER)' && export AUTOHEADER \ - && AUTOUPDATE='$(am_AUTOUPDATE)' && export AUTOUPDATE \ - && true; \ -} - -# We depend on configure.ac so that we regenerate the tarball -# whenever the Automake version changes. -$(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac - $(AM_V_GEN)tmp=amhello-output.tmp \ - && $(am__cd) $(srcdir)/doc/amhello \ - && : Make our aclocal and automake avaiable before system ones. \ - && $(setup_autotools_paths) \ - && ( \ - { $(AM_V_P) || exec 5>&2 >$$tmp 2>&1; } \ - && $(am_AUTORECONF) -vfi \ - && ./configure \ - && $(MAKE) $(AM_MAKEFLAGS) distcheck \ - && $(MAKE) $(AM_MAKEFLAGS) distclean \ - || { \ - if $(AM_V_P); then :; else \ - echo "$@: recipe failed." >&5; \ - echo "See file '`pwd`/$$tmp' for details" >&5; \ - fi; \ - exit 1; \ - } \ - ) \ - && rm -rf $(amhello_configury) $$tmp \ - && mv -f amhello-1.0.tar.gz .. - - -## ------------------------------------------------- ## -## Third-party, obsolescent or experimental stuff. ## -## ------------------------------------------------- ## - +# Third-party, obsolescent or experimental stuff. EXTRA_DIST += \ contrib/check-html.am \ contrib/multilib/README \ @@ -693,11 +100,7 @@ EXTRA_DIST += \ contrib/multilib/multi.m4 \ contrib/README - -## --------------------------------------------------- ## -## Older files, kept mostly for historical interest. ## -## --------------------------------------------------- ## - +# Older files, kept mostly for historical interest. EXTRA_DIST += \ old/ChangeLog-tests \ old/ChangeLog.96 \ @@ -711,13 +114,21 @@ EXTRA_DIST += \ old/ChangeLog.11 \ old/TODO -## ---------------------------------------- ## -## Maintainer-specific files and scripts. ## -## ---------------------------------------- ## - +# Maintainer-specific files and scripts. EXTRA_DIST += \ maintainer/am-ft \ maintainer/am-xft \ maintainer/rename-tests \ maintainer/maint.mk \ maintainer/syntax-checks.mk + +# Most work delegated to sub-dir makefile fragments. +include $(srcdir)/bin/Makefile.inc +include $(srcdir)/doc/Makefile.inc +include $(srcdir)/lib/Makefile.inc +include $(srcdir)/lib/Automake/Makefile.inc +include $(srcdir)/lib/am/Makefile.inc +include $(srcdir)/m4/Makefile.inc +include $(srcdir)/t/Makefile.inc + +# vim: ft=automake noet @@ -261,6 +261,7 @@ Michael Brantley Michael-Brantley@deshaw.com Michael Daniels mdaniels@rim.com Michael Hofmann mhofma@googlemail.com Michael Ploujnikov ploujj@gmail.com +Michael Zucchi notzed@gmail.com Michel de Ruiter mdruiter@cs.vu.nl Mike Castle dalgoda@ix.netcom.com Mike Frysinger vapier@gentoo.org diff --git a/bin/Makefile.inc b/bin/Makefile.inc new file mode 100644 index 000000000..280fff002 --- /dev/null +++ b/bin/Makefile.inc @@ -0,0 +1,70 @@ +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## ----------------------------------- ## +## The automake and aclocal scripts. ## +## ----------------------------------- ## + +bin_SCRIPTS = %D%/automake %D%/aclocal +CLEANFILES += $(bin_SCRIPTS) + +# Used by maintainer checks and such. +automake_in = $(srcdir)/%D%/automake.in +aclocal_in = $(srcdir)/%D%/aclocal.in +automake_script = %D%/automake +aclocal_script = %D%/aclocal + +AUTOMAKESOURCES = $(automake_in) $(aclocal_in) +TAGS_FILES += $(AUTOMAKESOURCES) +EXTRA_DIST += $(AUTOMAKESOURCES) + +# Make versioned links. We only run the transform on the root name; +# then we make a versioned link with the transformed base name. This +# seemed like the most reasonable approach. +install-exec-hook: + @$(POST_INSTALL) + @for p in $(bin_SCRIPTS); do \ + f=`echo $$p | sed -e 's,.*/,,' -e '$(transform)'`; \ + fv="$$f-$(APIVERSION)"; \ + rm -f "$(DESTDIR)$(bindir)/$$fv"; \ + echo " $(LN) '$(DESTDIR)$(bindir)/$$f' '$(DESTDIR)$(bindir)/$$fv'"; \ + $(LN) "$(DESTDIR)$(bindir)/$$f" "$(DESTDIR)$(bindir)/$$fv"; \ + done + +uninstall-hook: + @for p in $(bin_SCRIPTS); do \ + f=`echo $$p | sed -e 's,.*/,,' -e '$(transform)'`; \ + fv="$$f-$(APIVERSION)"; \ + rm -f "$(DESTDIR)$(bindir)/$$fv"; \ + done + +# These files depend on Makefile so they are rebuilt if $(VERSION), +# $(datadir) or other do_subst'ituted variables change. +%D%/automake: %D%/automake.in +%D%/aclocal: %D%/aclocal.in +%D%/automake %D%/aclocal: Makefile %D%/gen-perl-protos + $(AM_V_GEN)rm -f $@ $@-t $@-t2 \ +## Common substitutions. + && in=$@.in && $(do_subst) <$(srcdir)/$$in >$@-t \ +## Auto-compute prototypes of perl subroutines. + && $(PERL) -w $(srcdir)/%D%/gen-perl-protos $@-t > $@-t2 \ + && mv -f $@-t2 $@-t \ +## We can't use '$(generated_file_finalize)' here, because currently +## Automake contains occurrences of unexpanded @substitutions@ in +## comments, and that is perfectly legit. + && chmod a+x,a-w $@-t && mv -f $@-t $@ +EXTRA_DIST += %D%/gen-perl-protos + +# vim: ft=automake noet diff --git a/aclocal.in b/bin/aclocal.in index df60d9c84..df60d9c84 100644 --- a/aclocal.in +++ b/bin/aclocal.in diff --git a/automake.in b/bin/automake.in index 0dcf06bef..acbe48f5d 100644 --- a/automake.in +++ b/bin/automake.in @@ -232,7 +232,7 @@ my $configure_ac = 'configure.ac'; # Files found by scanning configure.ac for LIBOBJS. my %libsources = (); -# Names used in AC_CONFIG_HEADER call. +# Names used in AC_CONFIG_HEADERS call. my @config_headers = (); # Names used in AC_CONFIG_LINKS call. @@ -248,8 +248,8 @@ my @configure_input_files = (); # List of files in AC_CONFIG_FILES/AC_OUTPUT without Makefile.am's, # and their outputs. my @other_input_files = (); -# Where each AC_CONFIG_FILES/AC_OUTPUT/AC_CONFIG_LINK/AC_CONFIG_HEADER appears. -# The keys are the files created by these macros. +# Where each AC_CONFIG_FILES/AC_OUTPUT/AC_CONFIG_LINK/AC_CONFIG_HEADERS +# appears. The keys are the files created by these macros. my %ac_config_files_location = (); # The condition under which AC_CONFIG_FOOS appears. my %ac_config_files_condition = (); diff --git a/lib/gen-perl-protos b/bin/gen-perl-protos index 9e73d8d7a..9e73d8d7a 100755 --- a/lib/gen-perl-protos +++ b/bin/gen-perl-protos diff --git a/bootstrap.sh b/bootstrap.sh index 6e49d278f..c8eb5def9 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -92,9 +92,9 @@ dosubst automake-$APIVERSION/Automake/Config.in \ dosubst m4/amversion.in m4/amversion.m4 # Create temporary replacement for aclocal and automake. -for p in aclocal automake; do +for p in bin/aclocal bin/automake; do dosubst $p.in $p.tmp - $PERL -w lib/gen-perl-protos $p.tmp > $p.tmp2 + $PERL -w bin/gen-perl-protos $p.tmp > $p.tmp2 mv -f $p.tmp2 $p.tmp done @@ -106,11 +106,11 @@ mv -f t/testsuite-part.tmp t/testsuite-part.am # Run the autotools. Bail out if any warning is triggered. # Use '-I' here so that our own *.m4 files in m4/ gets included, # not copied, in aclocal.m4. -$PERL ./aclocal.tmp -Wall -Werror -I m4 \ - --automake-acdir=m4 --system-acdir=m4/acdir +$PERL ./bin/aclocal.tmp -Wall -Werror -I m4 \ + --automake-acdir=m4 --system-acdir=m4/acdir $AUTOCONF -Wall -Werror -$PERL ./automake.tmp -Wall -Werror +$PERL ./bin/automake.tmp -Wall -Werror # Remove temporary files and directories. rm -rf aclocal-$APIVERSION automake-$APIVERSION -rm -f aclocal.tmp automake.tmp +rm -f bin/aclocal.tmp bin/automake.tmp diff --git a/configure.ac b/configure.ac index 497c2b7a1..358208910 100644 --- a/configure.ac +++ b/configure.ac @@ -18,7 +18,7 @@ AC_PREREQ([2.69]) AC_INIT([GNU Automake], [1.99a], [bug-automake@gnu.org]) -AC_CONFIG_SRCDIR([automake.in]) +AC_CONFIG_SRCDIR([bin/automake.in]) AC_CONFIG_AUX_DIR([lib]) AM_SILENT_RULES([yes]) diff --git a/contrib/t/Makefile.inc b/contrib/t/Makefile.inc new file mode 100644 index 000000000..a92b80d96 --- /dev/null +++ b/contrib/t/Makefile.inc @@ -0,0 +1,26 @@ +## Included by top-level Makefile for Automake. + +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## -------------------------------- ## +## Tests for stuff in 'contrib/'. ## +## -------------------------------- ## + +contrib_TESTS = \ + %D%/parallel-tests-html.sh \ + %D%/parallel-tests-html-recursive.sh \ + %D%/help-multilib.sh \ + %D%/multilib.sh diff --git a/contrib/t/local.am b/contrib/t/local.am deleted file mode 100644 index f44df9c4e..000000000 --- a/contrib/t/local.am +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (C) 1995-2013 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 -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -# Automake: tests for stuff in 'contrib/'. - -## Relative to the top-level directory. -contrib_testsuite_dir = contrib/t - -contrib_TESTS = \ - $(contrib_testsuite_dir)/parallel-tests-html.sh \ - $(contrib_testsuite_dir)/parallel-tests-html-recursive.sh \ - $(contrib_testsuite_dir)/help-multilib.sh \ - $(contrib_testsuite_dir)/multilib.sh diff --git a/doc/Makefile.inc b/doc/Makefile.inc new file mode 100644 index 000000000..dd477d6f9 --- /dev/null +++ b/doc/Makefile.inc @@ -0,0 +1,116 @@ +## Included by top-level Makefile for Automake. + +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## ---------------- ## +## Documentation. ## +## ---------------- ## + +info_TEXINFOS = %D%/automake.texi %D%/automake-history.texi +doc_automake_TEXINFOS = %D%/fdl.texi +doc_automake_history_TEXINFOS = %D%/fdl.texi + +man1_MANS = \ + %D%/aclocal.1 \ + %D%/automake.1 \ + %D%/aclocal-$(APIVERSION).1 \ + %D%/automake-$(APIVERSION).1 + +$(man1_MANS): $(top_srcdir)/configure.ac + +CLEANFILES += $(man1_MANS) +EXTRA_DIST += %D%/help2man + +update_mans = \ + $(AM_V_GEN): \ + && $(MKDIR_P) %D% \ + && $(extend_PATH) \ + && $(PERL) $(srcdir)/%D%/help2man --output=$@ + +%D%/aclocal.1 %D%/automake.1: + $(AM_V_GEN): \ + && $(MKDIR_P) %D% \ + && f=`echo $@ | sed 's|.*/||; s|\.1$$||; $(transform)'` \ + && echo ".so man1/$$f-$(APIVERSION).1" > $@ + +%D%/aclocal-$(APIVERSION).1: $(aclocal_script) lib/Automake/Config.pm + $(update_mans) aclocal-$(APIVERSION) +%D%/automake-$(APIVERSION).1: $(automake_script) lib/Automake/Config.pm + $(update_mans) automake-$(APIVERSION) + +## ---------------------------- ## +## Example package "amhello". ## +## ---------------------------- ## + +amhello_sources = \ + %D%/amhello/configure.ac \ + %D%/amhello/Makefile.am \ + %D%/amhello/README \ + %D%/amhello/src/main.c \ + %D%/amhello/src/Makefile.am + +amhello_configury = \ + aclocal.m4 \ + autom4te.cache \ + Makefile.in \ + config.h.in \ + configure \ + depcomp \ + install-sh \ + missing \ + src/Makefile.in + +dist_noinst_DATA += $(amhello_sources) +dist_doc_DATA = $(srcdir)/%D%/amhello-1.0.tar.gz + +setup_autotools_paths = { \ + $(extend_PATH) \ + && ACLOCAL=aclocal-$(APIVERSION) && export ACLOCAL \ + && AUTOMAKE=automake-$(APIVERSION) && export AUTOMAKE \ + && AUTOCONF='$(am_AUTOCONF)' && export AUTOCONF \ + && AUTOM4TE='$(am_AUTOM4TE)' && export AUTOM4TE \ + && AUTORECONF='$(am_AUTORECONF)' && export AUTORECONF \ + && AUTOHEADER='$(am_AUTOHEADER)' && export AUTOHEADER \ + && AUTOUPDATE='$(am_AUTOUPDATE)' && export AUTOUPDATE \ + && true; \ +} + +# We depend on configure.ac so that we regenerate the tarball +# whenever the Automake version changes. +$(srcdir)/%D%/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac + $(AM_V_GEN)tmp=amhello-output.tmp \ + && $(am__cd) $(srcdir)/%D%/amhello \ + && : Make our aclocal and automake avaiable before system ones. \ + && $(setup_autotools_paths) \ + && ( \ + { $(AM_V_P) || exec 5>&2 >$$tmp 2>&1; } \ + && $(am_AUTORECONF) -vfi \ + && ./configure \ + && $(MAKE) $(AM_MAKEFLAGS) distcheck \ + && $(MAKE) $(AM_MAKEFLAGS) distclean \ + || { \ + if $(AM_V_P); then :; else \ + echo "$@: recipe failed." >&5; \ + echo "See file '`pwd`/$$tmp' for details" >&5; \ + fi; \ + exit 1; \ + } \ + ) \ + && rm -rf $(amhello_configury) $$tmp \ + && mv -f amhello-1.0.tar.gz .. + + +# vim: ft=automake noet diff --git a/doc/automake.texi b/doc/automake.texi index db7d8a58d..779116944 100644 --- a/doc/automake.texi +++ b/doc/automake.texi @@ -7590,11 +7590,11 @@ libtool, The Libtool Manual}) with the @code{LTLIBRARIES} primary. Automake provides some minimal support for Java bytecode compilation with the @code{JAVA} primary (in addition to the support for compiling Java to native machine code; @pxref{Java Support with gcj}). Note however that -@emph{the interface and most features described here are deprecated}; the -next automake release will strive to provide a better and cleaner +@emph{the interface and most features described here are deprecated}. +Future Automake releases will strive to provide a better and cleaner interface, which however @emph{won't be backward-compatible}; the present -interface will probably be removed altogether in future automake releases -(1.13 or later), so don't use it in new code. +interface will probably be removed altogether some time after the +introduction of the new interface (if that ever materializes). Any @file{.java} files listed in a @code{_JAVA} variable will be compiled with @code{JAVAC} at build time. By default, @file{.java} diff --git a/lib/Automake/Makefile.inc b/lib/Automake/Makefile.inc new file mode 100644 index 000000000..051915656 --- /dev/null +++ b/lib/Automake/Makefile.inc @@ -0,0 +1,56 @@ +## Included by top-level Makefile for Automake. + +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## ---------------------------------------------------- ## +## Private perl modules used by automake and aclocal. ## +## ---------------------------------------------------- ## + +perllibdir = $(pkgvdatadir)/Automake + +dist_perllib_DATA = \ + %D%/ChannelDefs.pm \ + %D%/Channels.pm \ + %D%/Condition.pm \ + %D%/DisjConditions.pm \ + %D%/FileUtils.pm \ + %D%/General.pm \ + %D%/Getopt.pm \ + %D%/Item.pm \ + %D%/ItemDef.pm \ + %D%/Language.pm \ + %D%/Location.pm \ + %D%/Options.pm \ + %D%/Rule.pm \ + %D%/RuleDef.pm \ + %D%/Variable.pm \ + %D%/VarDef.pm \ + %D%/Version.pm \ + %D%/XFile.pm \ + %D%/Wrap.pm + +nodist_perllib_DATA = %D%/Config.pm +CLEANFILES += $(nodist_perllib_DATA) + +%D%/Config.pm: %D%/Config.in Makefile + $(AM_V_at)rm -f $@ $@-t + $(AM_V_at)$(MKDIR_P) %D% + $(AM_V_GEN)in=Config.in \ + && $(do_subst) <$(srcdir)/%D%/Config.in >$@-t + $(generated_file_finalize) +EXTRA_DIST += %D%/Config.in + +# vim: ft=automake noet diff --git a/lib/Makefile.inc b/lib/Makefile.inc new file mode 100644 index 000000000..d1971f55f --- /dev/null +++ b/lib/Makefile.inc @@ -0,0 +1,68 @@ +## Included by top-level Makefile for Automake. + +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## -------------------------------------------------------------------- ## +## Auxiliary scripts and files for use with "automake --add-missing". ## +## -------------------------------------------------------------------- ## + +dist_pkgvdata_DATA = \ + %D%/COPYING \ + %D%/INSTALL \ + %D%/texinfo.tex + +# These must all be executable when installed. However, if we use +# _SCRIPTS, then the program transform will be applied, which is not +# what we want. So we make them executable by hand. +dist_script_DATA = \ + %D%/config.guess \ + %D%/config.sub \ + %D%/install-sh \ + %D%/mdate-sh \ + %D%/missing \ + %D%/mkinstalldirs \ + %D%/ylwrap \ + %D%/depcomp \ + %D%/compile \ + %D%/py-compile \ + %D%/ar-lib \ + %D%/test-driver \ + %D%/tap-driver.sh \ + %D%/tap-driver.pl + +install-data-hook: + @$(POST_INSTALL) + @for f in $(dist_script_DATA); do echo $$f; done \ + | sed 's,^%D%/,,' \ + | ( st=0; \ + while read f; do \ + echo " chmod +x '$(DESTDIR)$(scriptdir)/$$f'"; \ + chmod +x "$(DESTDIR)$(scriptdir)/$$f" || st=1; \ + done; \ + exit $$st ) + +installcheck-local: installcheck-executable-scripts +installcheck-executable-scripts: + @for f in $(dist_script_DATA); do echo $$f; done \ + | sed 's,^%D%/,,' \ + | while read f; do \ + path="$(pkgvdatadir)/$$f"; \ + test -x "$$path" || echo $$path; \ + done \ + | sed 's/$$/: not executable/' \ + | grep . 1>&2 && exit 1; exit 0 + +# vim: ft=automake noet diff --git a/lib/am/Makefile.inc b/lib/am/Makefile.inc new file mode 100644 index 000000000..da9468284 --- /dev/null +++ b/lib/am/Makefile.inc @@ -0,0 +1,65 @@ +## Included by top-level Makefile for Automake. + +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## --------------------- ## +## Makefile fragments. ## +## --------------------- ## + +amdir = @amdir@ + +dist_am_DATA = \ + %D%/check.am \ + %D%/check2.am \ + %D%/clean-hdr.am \ + %D%/clean.am \ + %D%/compile.am \ + %D%/configure.am \ + %D%/data.am \ + %D%/dejagnu.am \ + %D%/depend.am \ + %D%/depend2.am \ + %D%/distdir.am \ + %D%/footer.am \ + %D%/header-vars.am \ + %D%/header.am \ + %D%/install.am \ + %D%/inst-vars.am \ + %D%/java.am \ + %D%/lang-compile.am \ + %D%/lex.am \ + %D%/library.am \ + %D%/libs.am \ + %D%/libtool.am \ + %D%/lisp.am \ + %D%/ltlib.am \ + %D%/ltlibrary.am \ + %D%/mans-vars.am \ + %D%/mans.am \ + %D%/program.am \ + %D%/progs.am \ + %D%/python.am \ + %D%/remake-hdr.am \ + %D%/scripts.am \ + %D%/subdirs.am \ + %D%/tags.am \ + %D%/texi-vers.am \ + %D%/texibuild.am \ + %D%/texinfos.am \ + %D%/vala.am \ + %D%/yacc.am + +# vim: ft=automake noet diff --git a/lib/am/check.am b/lib/am/check.am index b39395c70..7012d5a2b 100644 --- a/lib/am/check.am +++ b/lib/am/check.am @@ -238,7 +238,7 @@ am__set_TESTS_bases = \ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not -# exand to empty, as could happen e.g. with make check TESTS=''. +# expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: diff --git a/lib/am/header-vars.am b/lib/am/header-vars.am index 4b9cc04cb..1a6f28eb3 100644 --- a/lib/am/header-vars.am +++ b/lib/am/header-vars.am @@ -33,8 +33,7 @@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' ## Shell code that determines whether the current make instance is ## running with a given one-letter option (e.g., -k, -n) that takes -## no argument. Actually, the only supported option at the moment -## is '-n' (support for '-k' will be added soon). +## no argument. am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ @@ -53,7 +52,7 @@ am__make_running_with_option = \ ## brittle, but is the best we can do. case $$MAKEFLAGS in \ ## If we run "make TESTS='snooze nap'", FreeBSD make will export MAKEFLAGS -## to " TESTS=foo\ nap", so that the simpler loop below (on word-splitted +## to " TESTS=foo\ nap", so that the simpler loop below (on word-split ## $$MAKEFLAGS) would see a "make flag" equal to "nap", and would wrongly ## misinterpret that as and indication that make is running in dry mode. ## This has already happened in practice. So we need this hack. @@ -111,7 +110,7 @@ am__make_dryrun = (target_option=n; $(am__make_running_with_option)) ## Shell code that determines whether make is running in "keep-going mode" ## ("make -k") or not. Useful in rules that must recursively descend into -## subdirectories, and decide whther to stop at the first error or not. +## subdirectories, and decide whether to stop at the first error or not. am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) ## Some derived variables that have been found to be useful. diff --git a/lib/am/library.am b/lib/am/library.am index 246298460..c01d221ef 100644 --- a/lib/am/library.am +++ b/lib/am/library.am @@ -13,6 +13,7 @@ ## You should have received a copy of the GNU General Public License ## along with this program. If not, see <http://www.gnu.org/licenses/>. + %LIBRARY%: $(%XLIBRARY%_OBJECTS) $(%XLIBRARY%_DEPENDENCIES) $(EXTRA_%XLIBRARY%_DEPENDENCIES) %DIRSTAMP% %SILENT%-rm -f %LIBRARY% %VERBOSE%$(%XLIBRARY%_AR) %LIBRARY% $(%XLIBRARY%_OBJECTS) $(%XLIBRARY%_LIBADD) diff --git a/lib/am/ltlibrary.am b/lib/am/ltlibrary.am index 0c6f4c63e..642d032ba 100644 --- a/lib/am/ltlibrary.am +++ b/lib/am/ltlibrary.am @@ -13,5 +13,6 @@ ## You should have received a copy of the GNU General Public License ## along with this program. If not, see <http://www.gnu.org/licenses/>. + %LTLIBRARY%: $(%XLTLIBRARY%_OBJECTS) $(%XLTLIBRARY%_DEPENDENCIES) $(EXTRA_%XLTLIBRARY%_DEPENDENCIES) %DIRSTAMP% %VERBOSE%$(%XLINK%) %RPATH% $(%XLTLIBRARY%_OBJECTS) $(%XLTLIBRARY%_LIBADD) $(LIBS) diff --git a/lib/am/program.am b/lib/am/program.am index c3b79626e..131c4a9c6 100644 --- a/lib/am/program.am +++ b/lib/am/program.am @@ -13,6 +13,7 @@ ## You should have received a copy of the GNU General Public License ## along with this program. If not, see <http://www.gnu.org/licenses/>. + %PROGRAM%%EXEEXT%: $(%XPROGRAM%_OBJECTS) $(%XPROGRAM%_DEPENDENCIES) $(EXTRA_%XPROGRAM%_DEPENDENCIES) %DIRSTAMP% ## Remove program before linking. Otherwise the link will fail if the ## program is running somewhere. FIXME: this could be a loss if diff --git a/lib/am/remake-hdr.am b/lib/am/remake-hdr.am index f2a203f2d..979427d41 100644 --- a/lib/am/remake-hdr.am +++ b/lib/am/remake-hdr.am @@ -15,9 +15,9 @@ ## along with this program. If not, see <http://www.gnu.org/licenses/>. %CONFIG_H%: %STAMP% -## Recover from removal of CONFIG_HEADER - @if test ! -f $@; then rm -f %STAMP%; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) %STAMP%; else :; fi +## Recover from removal of CONFIG_HEADER. + @test -f $@ || rm -f %STAMP% + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) %STAMP% %STAMP%: %CONFIG_H_DEPS% $(top_builddir)/config.status diff --git a/m4/Makefile.inc b/m4/Makefile.inc new file mode 100644 index 000000000..ac7067df7 --- /dev/null +++ b/m4/Makefile.inc @@ -0,0 +1,77 @@ +## Included by top-level Makefile for Automake. + +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## ------------------------------ ## +## Automake-provided m4 macros. ## +## ------------------------------ ## + +system_acdir = @system_acdir@ +automake_acdir = @automake_acdir@ + +dist_automake_ac_DATA = \ + %D%/amversion.m4 \ + %D%/ar-lib.m4 \ + %D%/as.m4 \ + %D%/auxdir.m4 \ + %D%/cond.m4 \ + %D%/cond-if.m4 \ + %D%/depend.m4 \ + %D%/depout.m4 \ + %D%/dmalloc.m4 \ + %D%/extra-recurs.m4 \ + %D%/gcj.m4 \ + %D%/init.m4 \ + %D%/install-sh.m4 \ + %D%/lex.m4 \ + %D%/lispdir.m4 \ + %D%/maintainer.m4 \ + %D%/make.m4 \ + %D%/minuso.m4 \ + %D%/missing.m4 \ + %D%/obsolete.m4 \ + %D%/options.m4 \ + %D%/python.m4 \ + %D%/runlog.m4 \ + %D%/sanity.m4 \ + %D%/silent.m4 \ + %D%/strip.m4 \ + %D%/substnot.m4 \ + %D%/tar.m4 \ + %D%/upc.m4 \ + %D%/vala.m4 + +dist_system_ac_DATA = %D%/acdir/README + +automake_internal_acdir = $(automake_acdir)/internal +dist_automake_internal_ac_DATA = %D%/internal/ac-config-macro-dirs.m4 + +# We build amversion.m4 here, instead of from config.status, +# because config.status is rerun each time one of configure's +# dependencies change and amversion.m4 happens to be a configure +# dependency. configure and amversion.m4 would be rebuilt in +# loop otherwise. +# Use '$(top_srcdir)' for the benefit of non-GNU makes: this is +# how amversion.m4 appears in our dependencies. +$(top_srcdir)/%D%/amversion.m4: $(srcdir)/configure.ac \ + $(srcdir)/%D%/amversion.in + $(AM_V_at)rm -f $@-t $@ + $(AM_V_GEN)in=amversion.in \ + && $(do_subst) <$(srcdir)/%D%/amversion.in >$@-t + $(generated_file_finalize) +EXTRA_DIST += %D%/amversion.in + +# vim: ft=automake noet diff --git a/maintainer/rename-tests b/maintainer/rename-tests index a58474862..28963fa37 100755 --- a/maintainer/rename-tests +++ b/maintainer/rename-tests @@ -30,7 +30,7 @@ esac AWK=${AWK-awk} SED=${SED-sed} -[[ -f automake.in && -d lib/Automake ]] \ +[[ -f bin/automake.in && -d lib/Automake ]] \ || fatal "can only be run from the top-level of the Automake source tree" $SED --version 2>&1 | grep GNU >/dev/null 2>&1 \ diff --git a/maintainer/syntax-checks.mk b/maintainer/syntax-checks.mk index 6614820df..6cfa603c2 100644 --- a/maintainer/syntax-checks.mk +++ b/maintainer/syntax-checks.mk @@ -85,17 +85,19 @@ sc_at_in_texi ## aclocal. automake_diff_no = 7 aclocal_diff_no = 9 +sc_diff_automake sc_diff_aclocal: in=$($*_in) +sc_diff_automake sc_diff_aclocal: out=$($*_script) sc_diff_automake sc_diff_aclocal: sc_diff_% : @set +e; \ in=$*-in.tmp out=$*-out.tmp diffs=$*-diffs.tmp \ - && sed '/^#!.*[pP]rototypes/d' $(srcdir)/$*.in > $$in \ - && sed '/^# BEGIN.* PROTO/,/^# END.* PROTO/d' $* > $$out \ + && sed '/^#!.*[pP]rototypes/d' $(in) > $$in \ + && sed '/^# BEGIN.* PROTO/,/^# END.* PROTO/d' $(out) > $$out \ && { diff -u $$in $$out > $$diffs; test $$? -eq 1; } \ && added=`grep -v '^+++ ' $$diffs | grep -c '^+'` \ && removed=`grep -v '^--- ' $$diffs | grep -c '^-'` \ && test $$added,$$removed = $($*_diff_no),$($*_diff_no) \ || { \ - echo "Found unexpected diffs between $*.in and $*"; \ + echo "Found unexpected diffs between $(in) and $(out)"; \ echo "Lines added: $$added" ; \ echo "Lines removed: $$removed"; \ cat $$diffs; \ @@ -150,22 +152,22 @@ sc_pre_normal_post_install_uninstall: ## We never want to use "undef", only "delete", but for $/. sc_perl_no_undef: - @if grep -n -w 'undef ' $(srcdir)/automake.in | \ + @if grep -n -w 'undef ' $(automake_in) | \ grep -F -v 'undef $$/'; then \ - echo "Found undef in automake.in; use delete instead" 1>&2; \ + echo "Found 'undef' in the lines above; use 'delete' instead" 1>&2; \ exit 1; \ fi ## We never want split (/ /,...), only split (' ', ...). sc_perl_no_split_regex_space: - @if grep -n 'split (/ /' $(srcdir)/automake.in; then \ + @if grep -n 'split (/ /' $(automake_in) $(acloca_in); then \ echo "Found bad split in the lines above." 1>&2; \ exit 1; \ fi ## Look for cd within backquotes sc_cd_in_backquotes: - @if grep -n '^[^#]*` *cd ' $(srcdir)/automake.in $(ams); then \ + @if grep -n '^[^#]*` *cd ' $(automake_in) $(ams); then \ echo "Consider using \$$(am__cd) in the lines above." 1>&2; \ exit 1; \ fi @@ -173,7 +175,7 @@ sc_cd_in_backquotes: ## Look for cd to a relative directory (may be influenced by CDPATH). ## Skip some known directories that are OK. sc_cd_relative_dir: - @if grep -n '^[^#]*cd ' $(srcdir)/automake.in $(ams) | \ + @if grep -n '^[^#]*cd ' $(automake_in) $(ams) | \ grep -v 'echo.*cd ' | \ grep -v 'am__cd =' | \ grep -v '^[^#]*cd [./]' | \ @@ -187,22 +189,24 @@ sc_cd_relative_dir: ## Using @_ in a scalar context is most probably a programming error. sc_perl_at_uscore_in_scalar_context: - @if grep -Hn '[^@_A-Za-z0-9][_A-Za-z0-9]*[^) ] *= *@_' $(srcdir)/automake.in; then \ + @if grep -Hn '[^%@_A-Za-z0-9][_A-Za-z0-9]*[^) ] *= *@_' \ + $(automake_in) $(aclocal_in); then \ echo "Using @_ in a scalar context in the lines above." 1>&2; \ exit 1; \ fi -## Allow only few variables to be localized in Automake. +## Allow only few variables to be localized in automake and aclocal. sc_perl_local: - @if egrep -v '^[ \t]*local \$$[_~]( *=|;)' $(srcdir)/automake.in | \ - grep '^[ \t]*local [^*]'; then \ + @if egrep -v '^[ \t]*local \$$[_~]( *=|;)' \ + $(automake_in) $(aclocal_in) | \ + grep '^[ \t]*local [^*]'; then \ echo "Please avoid 'local'." 1>&2; \ exit 1; \ fi ## Don't let AMDEP_TRUE substitution appear in automake.in. sc_AMDEP_TRUE_in_automake_in: - @if grep '@AMDEP''_TRUE@' $(srcdir)/automake.in; then \ + @if grep '@AMDEP''_TRUE@' $(automake_in); then \ echo "Don't put AMDEP_TRUE substitution in automake.in" 1>&2; \ exit 1; \ fi @@ -210,7 +214,7 @@ sc_AMDEP_TRUE_in_automake_in: ## Recursive make invocations should always pass $(AM_MAKEFLAGS) ## to $(MAKE), for portability to non-GNU make. sc_tests_make_without_am_makeflags: - @if grep '^[^#].*(MAKE) ' $(ams) $(srcdir)/automake.in \ + @if grep '^[^#].*(MAKE) ' $(ams) $(automake_in) \ | grep -v 'AM_MAKEFLAGS' \ | grep -v '/am/header-vars\.am:.*am--echo.*| $$(MAKE) -f *-'; \ then \ @@ -528,7 +532,7 @@ sc_at_in_texi: exit 1; \ fi -$(syntax_check_rules): automake aclocal +$(syntax_check_rules): bin/automake bin/aclocal maintainer-check: $(syntax_check_rules) .PHONY: maintainer-check $(syntax_check_rules) diff --git a/t/Makefile.inc b/t/Makefile.inc new file mode 100644 index 000000000..18a57c2c2 --- /dev/null +++ b/t/Makefile.inc @@ -0,0 +1,274 @@ +## Included by top-level Makefile for Automake. + +## Copyright (C) 1995-2013 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 +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## ------------ ## +## Testsuite. ## +## ------------ ## + +# Run the tests with a proper shell detected at configure time. +LOG_COMPILER = $(AM_TEST_RUNNER_SHELL) + +TEST_EXTENSIONS = .pl .sh .tap +SH_LOG_COMPILER = $(LOG_COMPILER) +TAP_LOG_COMPILER = $(LOG_COMPILER) +PL_LOG_COMPILER = $(PERL) +AM_PL_LOG_FLAGS = -Mstrict -I $(builddir)/lib -I $(srcdir)/lib -w + +TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' $(SHELL) $(srcdir)/lib/tap-driver.sh + +AM_TAP_LOG_DRIVER_FLAGS = --merge + +EXTRA_DIST += %D%/README %D%/ax/is %D%/ax/is_newest + +## Will be updated later. +TESTS = + +# Some testsuite-influential variables should be overridable from the +# test scripts, but not from the environment. +# Keep this in sync with the similar list in ax/runtest.in. +AM_TESTS_ENVIRONMENT = \ + for v in \ + required \ + am_test_protocol \ + am_serial_tests \ + am_test_prefer_config_shell \ + am_original_AUTOMAKE \ + am_original_ACLOCAL \ + am_test_lib_sourced \ + test_lib_sourced \ + ; do \ + eval test x"\$${$$v}" = x || unset $$v; \ + done; +# We want warning messages and explanations for skipped tests to go to +# the console if possible, so set up 'stderr_fileno_' properly. +AM_TESTS_FD_REDIRECT = 9>&2 +AM_TESTS_ENVIRONMENT += stderr_fileno_=9; export stderr_fileno_; + +# For sourcing of extra "shell libraries" by our test scripts. As per +# POSIX, sourcing a file with '.' will cause it to be looked up in $PATH +# in case it is given with a relative name containing no slashes. +AM_TESTS_ENVIRONMENT += \ + if test $(srcdir) != .; then \ + PATH='$(abs_srcdir)/%D%/ax'$(PATH_SEPARATOR)$$PATH; \ + fi; \ + PATH='$(abs_builddir)/%D%/ax'$(PATH_SEPARATOR)$$PATH; \ + export PATH; + +# Hand-written tests. + +include $(srcdir)/%D%/list-of-tests.mk + +TESTS += $(handwritten_TESTS) +EXTRA_DIST += $(handwritten_TESTS) + +# Automatically-generated tests wrapping hand-written ones. +# Also, automatically-computed dependencies for tests. + +include $(srcdir)/%D%/testsuite-part.am + +TESTS += $(generated_TESTS) +EXTRA_DIST += $(generated_TESTS) + +$(srcdir)/%D%/testsuite-part.am: + $(AM_V_at)rm -f %D%/testsuite-part.tmp $@ + $(AM_V_GEN)$(PERL) $(srcdir)/gen-testsuite-part \ + --srcdir $(srcdir) > %D%/testsuite-part.tmp + $(AM_V_at)chmod a-w %D%/testsuite-part.tmp + $(AM_V_at)mv -f %D%/testsuite-part.tmp $@ +EXTRA_DIST += gen-testsuite-part + +# The dependecies declared here are not truly complete, but such +# completeness would cause more issues than it would solve. See +# automake bug#11347. +$(generated_TESTS): $(srcdir)/gen-testsuite-part +$(srcdir)/%D%/testsuite-part.am: $(srcdir)/gen-testsuite-part +$(srcdir)/%D%/testsuite-part.am: Makefile.am + +# Hand-written tests for stuff in 'contrib/'. +include $(srcdir)/contrib/%D%/Makefile.inc +TESTS += $(contrib_TESTS) +EXTRA_DIST += $(contrib_TESTS) + +# Static dependencies valid for each test case (also further +# extended later). Note that use 'noinst_' rather than 'check_' +# as the prefix, because we really want them to be built by +# "make all". This makes it easier to run the test cases by +# hand after having simply configured and built the package. + +nodist_noinst_SCRIPTS += \ + %D%/wrap/aclocal-$(APIVERSION) \ + %D%/wrap/automake-$(APIVERSION) + +dist_noinst_DATA += \ + %D%/ax/test-init.sh \ + %D%/ax/test-lib.sh \ + %D%/ax/am-test-lib.sh \ + %D%/ax/tap-functions.sh + +# Few more static dependencies. +%D%/distcheck-missing-m4.log: %D%/ax/distcheck-hook-m4.am +%D%/distcheck-outdated-m4.log: %D%/ax/distcheck-hook-m4.am +EXTRA_DIST += %D%/ax/distcheck-hook-m4.am + +%D%/ax/test-defs.sh: %D%/ax/test-defs.in Makefile + $(AM_V_at)rm -f $@ $@-t + $(AM_V_at)$(MKDIR_P) %D%/ax + $(AM_V_GEN)in=%D%/ax/test-defs.in \ + && $(do_subst) <$(srcdir)/$$in >$@-t + $(generated_file_finalize) +EXTRA_DIST += %D%/ax/test-defs.in +CLEANFILES += %D%/ax/test-defs.sh +nodist_noinst_DATA += %D%/ax/test-defs.sh + +%D%/ax/shell-no-trail-bslash: %D%/ax/shell-no-trail-bslash.in Makefile + $(AM_V_at)rm -f $@ $@-t + $(AM_V_GEN)in=%D%/ax/shell-no-trail-bslash.in \ + && $(MKDIR_P) %D%/ax \ + && $(do_subst) <$(srcdir)/$$in >$@-t \ + && chmod a+x $@-t + $(generated_file_finalize) +EXTRA_DIST += %D%/ax/shell-no-trail-bslash.in +CLEANFILES += %D%/ax/shell-no-trail-bslash +nodist_noinst_SCRIPTS += %D%/ax/shell-no-trail-bslash + +%D%/ax/cc-no-c-o: %D%/ax/cc-no-c-o.in Makefile + $(AM_V_at)rm -f $@ $@-t + $(AM_V_GEN)in=%D%/ax/cc-no-c-o.in \ + && $(MKDIR_P) %D%/ax \ + && $(do_subst) <$(srcdir)/$$in >$@-t \ + && chmod a+x $@-t + $(generated_file_finalize) +EXTRA_DIST += %D%/ax/cc-no-c-o.in +CLEANFILES += %D%/ax/cc-no-c-o +nodist_noinst_SCRIPTS += %D%/ax/cc-no-c-o + +runtest: %D%/ax/runtest.in Makefile + $(AM_V_at)rm -f $@ $@-t + $(AM_V_GEN)in=%D%/ax/runtest.in \ + && $(MKDIR_P) %D%/ax \ + && $(do_subst) <$(srcdir)/$$in >$@-t \ + && chmod a+x $@-t + $(generated_file_finalize) +EXTRA_DIST += %D%/ax/runtest.in +CLEANFILES += runtest +nodist_noinst_SCRIPTS += runtest + +# If two test scripts have the same basename, they will end up sharing +# the same log file, leading to all sort of undefined and undesired +# behaviours. +check-no-repeated-test-name: + @LC_ALL=C; export LC_ALL; \ + lst='$(TEST_LOGS)'; for log in $$lst; do echo $$log; done \ + | sort | uniq -c | awk '($$1 > 1) { print }' \ + | sed 's/\.log$$//' | grep . >&2 \ + && { \ + echo $@: test names listed above are duplicated >&2; \ + exit 1; \ + }; : +check-local: check-no-repeated-test-name +.PHONY: check-no-repeated-test-name + +# Check that our test cases are syntactically correct. +# See automake bug#11898. +check-tests-syntax: + @st=0; \ + err () { echo "$@: $$*" >&2; st=1; }; \ +## The user might do something like "make check TESTS=t/foo" or +## "make check TESTS_LOGS=t/foo.log" and expect (say) the test +## 't/foo.sh' to be run; this has worked well until today, and +## we want to continue supporting this use case. + bases=`for log in : $(TEST_LOGS); do echo $$log; done \ + | sed -e '/^:$$/d' -e 's/\.log$$//'`; \ + for bas in $$bases; do \ + for suf in sh tap pl; do \ + tst=$$bas.$$suf; \ +## Emulate VPATH search. + if test -f $$tst; then \ + break; \ + elif test -f $(srcdir)/$$tst; then \ + tst=$(srcdir)/$$tst; \ + break; \ + else \ + tst=''; \ + fi; \ + done; \ + test -n "$$tst" || err "couldn't find test '$$bas'"; \ +## Don't check that perl tests are valid shell scripts! + test $$suf = pl && continue; \ + $(AM_V_P) && echo " $(AM_TEST_RUNNER_SHELL) -n $$tst"; \ + $(AM_TEST_RUNNER_SHELL) -n "$$tst" \ + || err "test '$$tst' syntactically invalid"; \ + done; \ + exit $$st +check-local: check-tests-syntax +.PHONY: check-tests-syntax + +# Recipes with a trailing backslash character (possibly followed by +# blank characters only) can cause spurious syntax errors with at +# least older bash versions (e.g., bash 2.05b), and can be potentially +# be unportable to other weaker shells. Run the testsuite in a way +# that helps catching such problems in Automake-generated recipes. +# See automake bug#10436. +check-no-trailing-backslash-in-recipes: + $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \ + CONFIG_SHELL='$(abs_top_builddir)/%D%/ax/shell-no-trail-bslash' +.PHONY: check-no-trailing-backslash-in-recipes + +# Some compilers out there (hello, MSVC) still choke on "-c -o" being +# passed together on the command line. Run the whole testsuite faking +# the presence of such a compiler, to help catch regressions that would +# otherwise only present themselves later "in the wild". See also the +# long discussion about automake bug#13378. +check-cc-no-c-o: + $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) check \ + CC='$(abs_top_builddir)/%D%/ax/cc-no-c-o' \ + GNU_CC='$(abs_top_builddir)/%D%/ax/cc-no-c-o' +.PHONY: check-cc-no-c-o + +## Checking the list of tests. +test_subdirs = %D% %D%/pm contrib/%D% +include %D%/CheckListOfTests.am + +# Run the testsuite with the installed aclocal and automake. +installcheck-local: installcheck-testsuite +installcheck-testsuite: + am_running_installcheck=yes $(MAKE) $(AM_MAKEFLAGS) check + +# Performance tests. +.PHONY: perf +perf: all + $(MAKE) $(AM_MAKEFLAGS) TEST_SUITE_LOG='$(PERF_TEST_SUITE_LOG)' \ + TESTS='$(perf_TESTS)' check +PERF_TEST_SUITE_LOG = %D%/perf/test-suite.log +CLEANFILES += $(PERF_TEST_SUITE_LOG) +EXTRA_DIST += $(perf_TESTS) + +clean-local: clean-local-check +.PHONY: clean-local-check +clean-local-check: +## Directories candidate to be test directories match this wildcard. + @globs='%D%/*.dir %D%/*/*.dir */%D%/*.dir */%D%/*/*.dir'; \ +## The 'nullglob' bash option is not portable, so use perl. + dirs=`$(PERL) -e "print join(' ', glob('$$globs'));"` || exit 1; \ + if test -n "$$dirs"; then \ +## Errors in find are acceptable, errors in rm are not. + find $$dirs -type d ! -perm -700 -exec chmod u+rwx {} ';'; \ + echo " rm -rf $$dirs"; \ + rm -rf $$dirs || exit 1; \ + fi + +# vim: ft=automake noet diff --git a/t/ax/tap-setup.sh b/t/ax/tap-setup.sh index 6955c86a0..3c992a388 100644 --- a/t/ax/tap-setup.sh +++ b/t/ax/tap-setup.sh @@ -22,7 +22,7 @@ # Check that we are running from a proper directory: last thing we want # is to overwrite some random user files. -test -f ../../automake && test -f ../../runtest && test -d ../../t \ +test -f ../../bin/automake && test -f ../../runtest && test -d ../../t \ || fatal_ "running from a wrong directory" test ! -f Makefile.am || mv Makefile.am Makefile.am~ \ diff --git a/t/wrap/aclocal.in b/t/wrap/aclocal.in index 3e60eb01e..cdcae1a88 100644 --- a/t/wrap/aclocal.in +++ b/t/wrap/aclocal.in @@ -26,4 +26,4 @@ BEGIN '--automake-acdir=@abs_top_srcdir@/m4', '--system-acdir=@abs_top_srcdir@/m4/acdir'; } -require '@abs_top_builddir@/aclocal'; +require '@abs_top_builddir@/bin/aclocal'; diff --git a/t/wrap/automake.in b/t/wrap/automake.in index bc6eab61b..cf18d7b24 100644 --- a/t/wrap/automake.in +++ b/t/wrap/automake.in @@ -24,4 +24,4 @@ BEGIN if '@srcdir@' ne '.'; unshift @ARGV, '--libdir=@abs_top_srcdir@/lib'; } -require '@abs_top_builddir@/automake'; +require '@abs_top_builddir@/bin/automake'; |