summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS152
-rw-r--r--maintainer/maint.mk2
-rwxr-xr-xmaintainer/rename-tests22
-rwxr-xr-xt/ccnoco-deps.sh2
-rw-r--r--t/exeext.sh35
-rw-r--r--t/extra-sources-no-spurious.sh (renamed from t/extra2.sh)0
-rw-r--r--t/extra-sources.sh (renamed from t/exsource.sh)3
-rw-r--r--t/lflags-cxx.sh (renamed from t/lflags2.sh)8
-rw-r--r--t/lflags.sh6
-rw-r--r--t/pluseq10.sh8
-rw-r--r--t/preproc-demo.sh3
-rw-r--r--t/yflags-cxx.sh (renamed from t/yflags2.sh)8
-rw-r--r--t/yflags-force-override.sh2
-rw-r--r--t/yflags.sh6
14 files changed, 144 insertions, 113 deletions
diff --git a/NEWS b/NEWS
index 400372c2c..56ae09cb3 100644
--- a/NEWS
+++ b/NEWS
@@ -58,24 +58,25 @@ New in 2.0:
* WARNING: New versioning scheme for Automake.
- - Starting with this version onward, Automake will use an update and
- more rational versioning scheme, one that will allow users to know
- which kind of changes can be expected from a new version, based on
- its version number.
-
- + Micro versions (e.g., 1.13.3, 2.0.1, 3.2.8) will introduce only
- documentation updates and bug and regression fixes; they will
- not introduce new features, nor any backward-incompatibility (any
+ - Beginning with the release 1.13.2, Automake has started to use a
+ more rational versioning scheme, that should allow users to know
+ which kind of changes can be expected from a new version, based
+ on its version number.
+
+ + Micro releases (e.g., 1.13.3, 2.0.1, 3.2.8) introduce only bug
+ and regression fixes and documentation updates; they should not
+ introduce new features, nor any backward-incompatibility (any
such incompatibility would be considered a bug, to be fixed with
a further micro release).
- + Minor versions (e.g., 1.14, 2.1) can introduce new backward
+ + Minor releases (e.g., 1.14, 2.1) can introduce new backward
compatible features; the only backward-incompatibilities allowed
in such a release are new *non-fatal* deprecations and warnings,
and possibly fixes for old or non-trivial bugs (or even inefficient
- behaviours) that could unfortunately have been seen, and used, by
- some developers as "corner case features". Possible disruptions
- caused by this kind of fixes should hopefully be quite rare.
+ behaviours) that could unfortunately have been seen and used by
+ some as "corner case features". Possible disruptions caused by
+ this kind of fixes should hopefully be quite rare, and their
+ effects limited in scope.
+ Major versions (now expected to be released every 18 or 24 months,
and not more often) can introduce new big features (possibly with
@@ -87,26 +88,36 @@ New in 2.0:
should be duly implemented in the preceding minor releases.
- According to this new scheme, the next major version of Automake
- (the one that has until now been labelled as '1.14') will actually
- become "Automake 2.0". Automake 1.14 will be the next minor version,
- which will introduce new features, deprecations and bug fixes, but
- no serious backward incompatibility.
+ (the one that had previously been labelled as "1.14") will actually
+ become "Automake 2.0". Automake 1.14 is *this* release (which is
+ a minor one). It introduces new features, deprecations and bug
+ fixes, but no serious backward incompatibility. A partial exception
+ is given by the behavioural changes in the AM_PROG_CC_C_O macro
+ (described in details below) but such changes can also be seen as a
+ fix for the old suboptimal and somewhat confusing behaviour.
- See discussion about automake bug#13578 for more details and
background: <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13578>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
* WARNING: Future backward-incompatibilities!
- Makefile recipes generated by Automake 2.0 will expect to use an
'rm' program that doesn't complain when called without any non-option
argument if the '-f' option is given (so that commands like "rm -f"
and "rm -rf" will act as a no-op, instead of raising usage errors).
- Accordingly, AM_INIT_AUTOMAKE will expand new shell code checking
- that the default 'rm' program in PATH satisfies this requirement, and
- aborting the configure process if this is not the case. This behavior
- of 'rm' is very widespread in the wild, and it will be required in the
- next POSIX version:
- <http://austingroupbugs.net/view.php?id=542>
+ This behavior of 'rm' is very widespread in the wild, and it will be
+ required in the next POSIX version:
+
+ <http://austingroupbugs.net/view.php?id=542>
+
+ Accordingly, AM_INIT_AUTOMAKE now expands some shell code that checks
+ that the default 'rm' program in PATH satisfies this requirement,
+ aborting the configure process if this is not the case. For the
+ moment, it's still possible to force the configuration process to
+ succeed even with a broken 'rm', that that will no longer be the case
+ for Automake 2.0.
- Automake 2.0 will require Autoconf 2.70 or later (which is still
unreleased at the moment of writing, but is planned to be released
@@ -116,11 +127,12 @@ New in 2.0:
name for the Autoconf input file. You are advised to start using the
recommended name 'configure.ac' instead, ASAP.
- - The ACLOCAL_AMFLAGS special make variable will be fully deprecated
- in Automake 2.0 (where it will raise warnings in the "obsolete"
- category). You are advised to start relying on the new Automake
- support for AC_CONFIG_MACRO_DIRS instead (which was introduced in
- Automake 1.13).
+ - The ACLOCAL_AMFLAGS special make variable will be fully deprecated in
+ Automake 2.0: it will raise warnings in the "obsolete" category (but
+ still no hard error of course, for compatibilities with the many, many
+ packages that still relies on that variable). You are advised to
+ start relying on the new Automake support for AC_CONFIG_MACRO_DIRS
+ instead (which was introduced in Automake 1.13).
- Automake 2.0 will remove support for automatic dependency tracking
with the SGI C/C++ compilers on IRIX. The SGI depmode has been
@@ -136,7 +148,11 @@ New in 2.0:
versions will continue to be fully supported.
- Automake-provided scripts and makefile recipes might (finally!)
- start assuming a POSIX shell in Automake 2.0.
+ start assuming a POSIX shell in Automake 2.0. There still is no
+ certainty about this though: we'd first like to wait and see
+ whether future Autoconf versions will be enhanced to guarantee
+ that such a shell is always found and provided by the checks in
+ ./configure.
- Starting from Automake 2.0, third-party m4 files located in the
system-wide aclocal directory, as well as in any directory listed
@@ -153,45 +169,46 @@ New in 1.14:
* C compilation, and the AC_PROG_CC and AM_PROG_CC_C_O macros:
- - The 'compile' script is now unconditionally required for all
- packages that perform C compilation (note that if you are using
- the '--add-missing' option, automake will fetch that script for
- you, so you shouldn't need any explicit adjustment).
- This new behaviour is needed to avoid obscure errors when the
- 'subdir-objects' option is used, and the compiler is an inferior
- one that doesn't grasp the combined use of both the "-c -o"
- options; see discussion about automake bug#13378 for more details:
+ - The 'compile' script is now unconditionally required for all packages
+ that perform C compilation (if you are using the '--add-missing'
+ option, automake will fetch that script for you, so you shouldn't
+ need any explicit adjustment). This new behaviour is needed to avoid
+ obscure errors when the 'subdir-objects' option is used, and the
+ compiler is an inferior one that doesn't grasp the combined use of
+ both the "-c -o" options; see discussion about automake bug#13378 for
+ more details:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#35>
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#44>
- - The next major Automake version (2.0) will unconditionally turn on
+ - The next major Automake version (2.0) will unconditionally activate
the 'subdir-objects' option. In order to smooth out the transition,
we now give a warning (in the category 'unsupported') whenever a
source file is present in a subdirectory but the 'subdir-object' is
not enabled. For example, the following usage will trigger such a
- warning (of course, assuming the 'subdir-objects' option is off):
+ warning:
bin_PROGRAMS = sub/foo
sub_foo_SOURCES = sub/main.c sub/bar.c
- - Automake will automatically enhance the AC_PROG_CC autoconf macro
- to make it check, at configure time, that the C compiler supports
- the combined use of both the "-c -o" options. The result of this
- check is saved in the cache variable 'am_cv_prog_cc_c_o', and said
- result can be overridden by pre-defining that variable.
+ - Automake will automatically enhance the autoconf-provided macro
+ AC_PROG_CC to force it to check, at configure time, that the
+ C compiler supports the combined use of both the '-c' and '-o'
+ options. The result of this check is saved in the cache variable
+ 'am_cv_prog_cc_c_o', and said result can be overridden by
+ pre-defining that variable.
- - The AM_PROG_CC_C_O can still be called, but that should no longer
- be necessary. This macro is now just a thin wrapper around the
+ - The AM_PROG_CC_C_O macro can still be called, albeit that should no
+ longer be necessary. This macro is now just a thin wrapper around the
Automake-enhanced AC_PROG_CC. This means, among the other things,
that its behaviour is changed in three ways:
1. It no longer invokes the Autoconf-provided AC_PROG_CC_C_O
- macros behind the scenes.
+ macro behind the scenes.
- 2. It caches the check result in the 'am_cv_prog_cc_c_o'variable,
- and not in a 'ac_cv_prog_cc_*_c_o' variable whose exact name
- in only dynamically computed at configure runtime (really!)
- from the content of the '$CC' variable.
+ 2. It caches the check result in the 'am_cv_prog_cc_c_o' variable,
+ and not in a 'ac_cv_prog_cc_*_c_o' variable whose exact name is
+ dynamically computed only at configure runtime (really!) from
+ the content of the '$CC' variable.
3. It no longer automatically AC_DEFINE the C preprocessor
symbol 'NO_MINUS_C_MINUS_O'.
@@ -207,10 +224,10 @@ New in 1.14:
- For quite a long time, Automake has been implementing an undocumented
hack which ensured that '.info' files which appeared to be cleaned
- (by e.g. being listed in the CLEANFILES or DISTCLEANFILES variables)
- were built in the builddir rather than in the srcdir; this hack was
- introduced to ensure better backward-compatibility with packages such
- as Texinfo, which did things like:
+ (by being listed in the CLEANFILES or DISTCLEANFILES variables) were
+ built in the builddir rather than in the srcdir; this hack was
+ introduced to ensure better backward-compatibility with package
+ such as Texinfo, which do things like:
info_TEXINFOS = texinfo.txi info-stnd.texi info.texi
DISTCLEANFILES = texinfo texinfo-* info*.info*
@@ -230,19 +247,27 @@ New in 1.14:
- The special Automake-time substitutions '%reldir%' and '%canon_reldir%'
(and their short versions, '%D%' and '%C%' respectively) can now be used
in an included Makefile fragment. The former is substituted with the
- relative directory of the included fragment (compared to the top level
+ relative directory of the included fragment (compared to the top-level
including Makefile), and the latter with the canonicalized version of
- the same relative directory:
+ the same relative directory.
+
+ # in 'Makefile.am':
+ bin_PROGRAMS = # will be updated by included Makefile fragments
+ include src/Makefile.inc
+ # in 'src/Makefile.inc':
bin_PROGRAMS += %reldir%/foo
%canon_reldir%_foo_SOURCES = %reldir%/bar.c
+ This should be especially useful for packages using a non-recursive
+ build system.
+
* Deprecated distribution formats:
- The 'shar' and 'compress' distribution formats are deprecated, and
scheduled for removal in Automake 2.0. Accordingly, the use of the
'dist-shar' and 'dist-tarZ' will cause warnings at automake runtime
- (in the 'obsolete' category), and the recipes for the Automake-generated
+ (in the 'obsolete' category), and the recipes of the Automake-generated
targets 'dist-shar' and 'dist-tarZ' will unconditionally display
(non-fatal) warnings at make runtime.
@@ -251,13 +276,12 @@ New in 1.14:
- To simplify transition to Automake 2.0, the shell code expanded by
AM_INIT_AUTOMAKE now checks (at configure runtime) that the default
'rm' program in PATH doesn't complain when called without any
- non-option argument if the '-f' option is given (so that commands
- like "rm -f" and "rm -rf" act as a no-op, instead of raising usage
- error). If this is not the case,
- the configure script is aborted, to call the attention of the user
- on the issue, and invite him to fix his PATH. The checked 'rm'
- behavior is very widespread in the wild, and will be required by
- future POSIX version:
+ non-option argument if the '-f' option is given (so that commands like
+ "rm -f" and "rm -rf" act as a no-op, instead of raising usage errors).
+ If this is not the case, the configure script is aborted, to call the
+ attention of the user on the issue, and invite him to fix his PATH.
+ The checked 'rm' behavior is very widespread in the wild, and will be
+ required by future POSIX versions:
<http://austingroupbugs.net/view.php?id=542>
diff --git a/maintainer/maint.mk b/maintainer/maint.mk
index 305ef1cd1..cc204d2e7 100644
--- a/maintainer/maint.mk
+++ b/maintainer/maint.mk
@@ -563,7 +563,7 @@ check-minimal-autoconf:
&& autoconf --version | sed -e 's/^/ /; s/$$/ /' -e 1q \
| $(FGREP) '$(ac-v)' >/dev/null \
&& echo === configure \
- && ./configure $(shell ./config.status --config) \
+ && $(srcdir)/configure $(shell ./config.status --config) \
&& echo === build and test \
&& $(MAKE) check
.PHONY: check-minimal-autoconf
diff --git a/maintainer/rename-tests b/maintainer/rename-tests
index 28963fa37..ca65e345c 100755
--- a/maintainer/rename-tests
+++ b/maintainer/rename-tests
@@ -19,6 +19,8 @@
set -e -u
me=${0##*/}
+msg_file=$me.git-msg
+
fatal () { echo "$me: $*" >&2; exit 1; }
case $# in
@@ -36,18 +38,19 @@ SED=${SED-sed}
$SED --version 2>&1 | grep GNU >/dev/null 2>&1 \
|| fatal "GNU sed is required by this script"
-# Validate and cleanup input.
+# Input validation and cleanup.
input=$(
- $AWK -v me="$me" "
+ $AWK -v me="$me" '
/^#/ { next; }
(NF == 0) { next; }
- (NF != 2) { print me \": wrong number of fields at line \" NR;
+ (NF != 2) { print me ": wrong number of fields at line " NR;
exit(1); }
- { printf (\"t/%s t/%s\\n\", \$1, \$2); }
- " <<<"$input")
+ { printf ("t/%s t/%s\n", $1, $2); }
+ ' <<<"$input"
+) || exit $?
# Prepare git commit message.
-exec 5>$me.git-msg
+exec 5>"$msg_file"
echo "tests: more significant names for some tests" >&5
echo >&5
$AWK >&5 <<<"$input" \
@@ -58,10 +61,15 @@ exec 5>&-
eval "$($AWK '{ printf ("git mv %s %s\n", $1, $2) }' <<<"$input")"
# Adjust the list of tests (do this conditionally, since such a
-# list is not required nor used in Automake-NG.
+# list is not required nor used in Automake-NG).
if test -f t/list-of-tests.mk; then
$SED -e "$($AWK '{ printf ("s|^%s |%s |\n", $1, $2) }' <<<"$input")" \
-i t/list-of-tests.mk
+ git add t/list-of-tests.mk
fi
git status
+echo
+echo "NOTICE: pre-filled commit message is in file '$msg_file'"
+
+exit 0
diff --git a/t/ccnoco-deps.sh b/t/ccnoco-deps.sh
index d4931d54a..5d9e9b876 100755
--- a/t/ccnoco-deps.sh
+++ b/t/ccnoco-deps.sh
@@ -42,7 +42,7 @@ check-deps: all
grep 'stdio\.h' $(DEPDIR)/foo.Po
grep 'foobar\.h' $(DEPDIR)/foo.Po
check-updated: all
- is_newest foo foobar.h
+ is_newest foo$(EXEEXT) foobar.h
END
# We deliberately don't invoke AM_PROG_CC_C_O here.
diff --git a/t/exeext.sh b/t/exeext.sh
index 72902333e..414108d24 100644
--- a/t/exeext.sh
+++ b/t/exeext.sh
@@ -32,7 +32,6 @@ AC_OUTPUT
END
cat > Makefile.am << 'END'
-## Use a different dir for each to make grep easy.
bin_PROGRAMS = maude
sbin_PROGRAMS = maude.static
## We don't define this one for now. Probably it is an error.
@@ -46,11 +45,17 @@ if WANT_RMT
libexec_PROGRAMS = rmt
endif
-print:
- @echo 1BEG: $(bin_PROGRAMS) :END1
- @echo 2BEG: $(sbin_PROGRAMS) :END2
- @echo 3BEG: $(check_PROGRAMS) :END3
- @echo 4BEG: $(libexec_PROGRAMS) :END4
+test-default:
+ is $(bin_PROGRAMS) == maude$(EXEEXT) mt$(EXEEXT)
+ is $(sbin_PROGRAMS) == maude.static$(EXEEXT)
+ is $(check_PROGRAMS) == maude3$(EXEEXT)
+ is $(libexec_PROGRAMS) == rmt$(EXEEXT)
+
+test-revert:
+ is $(bin_PROGRAMS) == maude$(EXEEXT)
+ is $(sbin_PROGRAMS) == maude.static$(EXEEXT)
+ is $(check_PROGRAMS) == maude3$(EXEEXT)
+ is $(libexec_PROGRAMS) ==
END
$ACLOCAL
@@ -68,21 +73,11 @@ test $(grep -c '^bin_PROGRAMS =' Makefile.in) -eq 1
grep 'maude3__EXEEXT__OBJECTS' Makefile.in && exit 1
./configure
-
-run_make -O EXEEXT=.foo print
-
-grep '1BEG: maude.foo mt.foo :END1' stdout
-grep '2BEG: maude.static.foo :END2' stdout
-grep '3BEG: maude3.foo :END3' stdout
-grep '4BEG: rmt.foo :END4' stdout
+run_make test-default
+run_make test-default EXEEXT=.foo
./configure revert=yes
-
-run_make -O EXEEXT=.foo print
-
-grep '1BEG: maude.foo :END1' stdout
-grep '2BEG: maude.static.foo :END2' stdout
-grep '3BEG: maude3.foo :END3' stdout
-grep '4BEG: :END4' stdout
+run_make test-revert
+run_make test-revert EXEEXT=.foo
:
diff --git a/t/extra2.sh b/t/extra-sources-no-spurious.sh
index f3c3f5bdb..f3c3f5bdb 100644
--- a/t/extra2.sh
+++ b/t/extra-sources-no-spurious.sh
diff --git a/t/exsource.sh b/t/extra-sources.sh
index ffc1e434b..adafa5326 100644
--- a/t/exsource.sh
+++ b/t/extra-sources.sh
@@ -28,9 +28,6 @@ EXTRA_www_SOURCES = xtra.c
www_LDADD = @extra_stuff@
END
-: > www.c
-: > xtra.c
-
$ACLOCAL
$AUTOMAKE
diff --git a/t/lflags2.sh b/t/lflags-cxx.sh
index b746b3c7f..66599bbf4 100644
--- a/t/lflags2.sh
+++ b/t/lflags-cxx.sh
@@ -15,9 +15,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Check that $(LFLAGS) takes precedence over both $(AM_LFLAGS) and
-# $(foo_LFLAGS).
-# Please keep this in sync with the sister tests lflags.sh, yflags.sh
-# and yflags2.sh.
+# $(foo_LFLAGS). This is the C++ case.
+# Please keep this in sync with the sister tests:
+# - lflags.sh
+# - yflags.sh
+# - yflags-cxx.sh
. test-init.sh
diff --git a/t/lflags.sh b/t/lflags.sh
index b9167cf18..885d5308c 100644
--- a/t/lflags.sh
+++ b/t/lflags.sh
@@ -16,8 +16,10 @@
# Check that $(LFLAGS) takes precedence over both $(AM_LFLAGS) and
# $(foo_LFLAGS).
-# Please keep this in sync with the sister tests lflags2.sh, yflags.sh
-# and yflags2.sh.
+# Please keep this in sync with the sister tests:
+# - lflags-cxx.sh
+# - yflags.sh
+# - yflags-cxx.sh
required=cc
. test-init.sh
diff --git a/t/pluseq10.sh b/t/pluseq10.sh
index c80d23a38..deed6e3ef 100644
--- a/t/pluseq10.sh
+++ b/t/pluseq10.sh
@@ -38,9 +38,8 @@ foo += b0.h \
b1.h
endif
-.PHONY: print
-print:
- @echo BEG: $(foo) :END
+test:
+ is $(foo) == 0.h a0.h a1.h a2.h a3.h
END
$ACLOCAL
@@ -48,7 +47,6 @@ $AUTOCONF
$AUTOMAKE
./configure
-run_make -O print
-$FGREP 'BEG: 0.h a0.h a1.h a2.h a3.h :END' stdout
+$MAKE test
:
diff --git a/t/preproc-demo.sh b/t/preproc-demo.sh
index 1f29057b5..8d16e929f 100644
--- a/t/preproc-demo.sh
+++ b/t/preproc-demo.sh
@@ -142,7 +142,6 @@ END
cat > lib/tests/gnulib-check.am <<'END'
check_PROGRAMS += %D%/safe-print-test
TESTS += $(check_PROGRAMS)
-AM_TESTS_ENVIRONMENT += EXEEXT='$(EXEEXT)'; export EXEEXT;
END
cat > lib/tests/safe-print-test.c <<'END'
@@ -161,6 +160,8 @@ cat > tests/check.am <<'END'
TEST_EXTENSIONS = .sh
SH_LOG_COMPILER = $(SHELL)
+AM_TESTS_ENVIRONMENT += EXEEXT='$(EXEEXT)'; export EXEEXT;
+
handwritten_TESTS = \
%D%/hello.sh \
%D%/built.sh
diff --git a/t/yflags2.sh b/t/yflags-cxx.sh
index b88376585..46a13c889 100644
--- a/t/yflags2.sh
+++ b/t/yflags-cxx.sh
@@ -15,9 +15,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Check that $(YFLAGS) takes precedence over both $(AM_YFLAGS) and
-# $(foo_YFLAGS).
-# Please keep this in sync with the sister tests yflags.sh, lflags.sh
-# and lflags2.sh.
+# $(foo_YFLAGS). This is the C++ case.
+# Please keep this in sync with the sister tests:
+# - yflags.sh
+# - lflags.sh
+# - lflags-cxx.sh
. test-init.sh
diff --git a/t/yflags-force-override.sh b/t/yflags-force-override.sh
index 02ce5ea15..6e52b3238 100644
--- a/t/yflags-force-override.sh
+++ b/t/yflags-force-override.sh
@@ -48,7 +48,7 @@ $ACLOCAL
$AUTOMAKE -a -Wno-gnu
$EGREP '(foo|YFLAGS)' Makefile.in # For debugging.
-grep '^foo.h *:' Makefile.in
+grep '^foo\.h *:' Makefile.in
$AUTOCONF
./configure
diff --git a/t/yflags.sh b/t/yflags.sh
index 84c32da70..894204cac 100644
--- a/t/yflags.sh
+++ b/t/yflags.sh
@@ -16,8 +16,10 @@
# Check that $(YFLAGS) takes precedence over both $(AM_YFLAGS) and
# $(foo_YFLAGS).
-# Please keep this in sync with the sister tests yflags2.sh, lflags.sh
-# and lflags2.sh.
+# Please keep this in sync with the sister tests:
+# - yflags-cxx.sh
+# - lflags.sh
+# - lflags-cxx.sh
. test-init.sh