maint: support new Automake versioning scheme in tagging/uploading rules
[platform/upstream/automake.git] / Makefile.am
index 5686528..15b87c9 100644 (file)
@@ -2,7 +2,7 @@
 
 ## Makefile for Automake.
 
-# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+# 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
@@ -73,13 +73,18 @@ EXTRA_DIST += \
   syntax-checks.mk \
   HACKING
 
-## 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.
+# 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)'`"; \
+         f=`echo $$p | sed '$(transform)'`; \
          fv="$$f-$(APIVERSION)"; \
          rm -f "$(DESTDIR)$(bindir)/$$fv"; \
          echo " $(LN) '$(DESTDIR)$(bindir)/$$f' '$(DESTDIR)$(bindir)/$$fv'"; \
@@ -88,13 +93,13 @@ install-exec-hook:
 
 uninstall-hook:
        @for p in $(bin_SCRIPTS); do \
-         f="`echo $$p|sed '$(transform)'`"; \
+         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.
+# 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
@@ -105,9 +110,9 @@ automake aclocal: Makefile
 ## comments, and that is perfectly legit.
        $(AM_V_at)chmod a+x,a-w $@-t && mv -f $@-t $@
 
-## The master location for INSTALL is lib/INSTALL.
-## This is where "make fetch" will install new versions.
-## Make sure we also update this copy.
+# The master location for INSTALL is lib/INSTALL.
+# This is where "make fetch" will install new versions.
+# Make sure we also update this copy.
 INSTALL: lib/INSTALL
        $(AM_V_GEN)cp $(srcdir)/lib/INSTALL $@
 
@@ -131,9 +136,9 @@ dist_pkgvdata_DATA = \
   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.
+# 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 \
@@ -283,8 +288,8 @@ dist_automake_ac_DATA = \
   m4/minuso.m4 \
   m4/missing.m4 \
   m4/mkdirp.m4 \
+  m4/obsolete.m4 \
   m4/options.m4 \
-  m4/protos.m4 \
   m4/python.m4 \
   m4/runlog.m4 \
   m4/sanity.m4 \
@@ -332,9 +337,10 @@ 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
+EXTRA_DIST += t/README t/ax/is t/ax/is_newest t/ax/deltree.pl
 
-TESTS = ## Will be updated later.
+## Will be updated later.
+TESTS =
 
 # Some testsuite-influential variables should be overridable from the
 # test scripts, but not from the environment.
@@ -390,9 +396,9 @@ $(srcdir)/t/testsuite-part.am:
        $(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.
+# 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
 
@@ -432,7 +438,8 @@ EXTRA_DIST += t/ax/test-defs.in
 CLEANFILES += t/ax/test-defs.sh
 nodist_noinst_DATA = t/ax/test-defs.sh
 
-noinst_SCRIPTS = # Will be updated soon.
+## 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
@@ -517,6 +524,12 @@ check-no-trailing-backslash-in-recipes:
          CONFIG_SHELL='$(abs_top_builddir)/t/ax/shell-no-trail-bslash'
 .PHONY: check-no-trailing-backslash-in-recipes
 
+# Automake-generated Makefiles should work when run with parallel make.
+check-parallel:
+       $(AM_V_GEN)$(MAKE) $(AM_MAKEFLAGS) check \
+         AM_TESTSUITE_MAKE="$${AM_TESTSUITE_MAKE-$${MAKE-make}} -j4"
+.PHONY: check-parallel
+
 ## Checking the list of tests.
 test_subdirs = t t/pm contrib/t
 include $(srcdir)/t/CheckListOfTests.am
@@ -538,16 +551,7 @@ 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
+       $(AM_V_GEN)$(PERL) $(srcdir)/t/ax/deltree.pl t/*.dir t/*/*.dir */t/*.dir
 
 
 ## ---------------- ##
@@ -572,8 +576,7 @@ EXTRA_DIST += doc/help2man
 update_mans = \
   $(AM_V_GEN): \
     && $(MKDIR_P) doc \
-    && PATH="$(abs_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
-    && export PATH \
+    && $(extend_PATH) \
     && $(PERL) $(srcdir)/doc/help2man --output=$@
 
 doc/aclocal.1 doc/automake.1:
@@ -613,27 +616,40 @@ amhello_configury = \
 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.
-# aclocal-$(APIVERSION) and automake-$(APIVERSION) are generated by
-# configure in 't/wrap'.
 $(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
-       $(AM_V_GEN): \
-         && PATH="$(abs_top_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
-         && export PATH \
+       $(AM_V_GEN)tmp=amhello-output.tmp \
          && $(am__cd) $(srcdir)/doc/amhello \
-         && 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 \
-         && $(am_AUTORECONF) -vfi \
-         && ./configure \
-         && $(MAKE) $(AM_MAKEFLAGS) distcheck \
-         && $(MAKE) $(AM_MAKEFLAGS) distclean \
-         && rm -rf $(amhello_configury) \
+         && : 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 ..