diff options
-rw-r--r-- | NEWS | 152 | ||||
-rw-r--r-- | maintainer/maint.mk | 2 | ||||
-rwxr-xr-x | maintainer/rename-tests | 22 | ||||
-rwxr-xr-x | t/ccnoco-deps.sh | 2 | ||||
-rw-r--r-- | t/exeext.sh | 35 | ||||
-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.sh | 6 | ||||
-rw-r--r-- | t/pluseq10.sh | 8 | ||||
-rw-r--r-- | t/preproc-demo.sh | 3 | ||||
-rw-r--r-- | t/yflags-cxx.sh (renamed from t/yflags2.sh) | 8 | ||||
-rw-r--r-- | t/yflags-force-override.sh | 2 | ||||
-rw-r--r-- | t/yflags.sh | 6 |
14 files changed, 144 insertions, 113 deletions
@@ -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 |