[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
GNU Automake 1.14 released
GNU Automake 1.14 released
Fri, 21 Jun 2013 14:01:00 +0200
We are pleased to announce the GNU Automake 1.14 minor release.
This release comes with two important changes:
1. It introduces a new feature aimed at making the implementation
of non-recursive build systems more convenient and manageable
(thanks to the new support for the '%reldir%' and '%canon_reldir%'
2. It improves the handling of C compiles not supporting the conjunct
use of the '-c' and '-o' options (unfortunately, this improvement
comes with a couple of minor backward-incompatibilities, described
in detail in the NEWS section below). Among th other things, this
means that you no longer need to explicitly call the AM_PROG_CC_C_O
macro yourself in configure.ac (pre-existing invocation of this
macro are of course still accepted and correctly working, for the
sake of backward-compatibility).
The 1.14 release also introduces new (non-fatal) runtime warnings to
simplify the transition to Automake 2.0. You are free to ignore such
warnings for now, but should address them before the transition to
Automake 2.0 (whose ETA is about one year from now, maybe more, so no
need to hurry yet).
See below for the detailed list of changes since the previous version,
as summarized by the NEWS file.
Please report bugs and problems to <address@hidden>,
and send general comments and feedback to <address@hidden>.
Thanks to everyone who has reported problems, contributed
patches, and helped testing Automake!
* WARNING: New versioning scheme for Automake.
- 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 release, 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 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 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
rough edges and not-fully-stabilized APIs), removal of deprecated
features, backward-incompatible changes of behaviour, and possibly
major refactorings (that, while ideally transparent to the user,
could introduce new bugs). Incompatibilities should however not
be introduced gratuitously and abruptly; a proper deprecation path
should be duly implemented in the preceding minor releases.
- According to this new scheme, the next major version of Automake
(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
* 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).
This behavior of 'rm' is very widespread in the wild, and it will be
required in the next POSIX version:
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
before Automake 2.0 is).
- Automake 2.0 will drop support for the long-deprecated 'configure.in'
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: it will raise warnings in the "obsolete" category (but
still no hard error of course, for compatibilities with the many, many
packages that still rely 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
reported broken "in the wild" already, and we don't think investing
time in debugging and fixing is worthwhile, especially considering
that SGI has last updated those compilers in 2006, and is expected
to retire support for them in December 2013:
- Automake 2.0 will remove support for MS-DOS and Windows 95/98/ME
(support for them was offered by relying on the DJGPP project).
Note however that both Cygwin and MSYS/MinGW on modern Windows
versions will continue to be fully supported.
- Automake-provided scripts and makefile recipes might (finally!)
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
- Starting from Automake 2.0, third-party m4 files located in the
system-wide aclocal directory, as well as in any directory listed
in the ACLOCAL_PATH environment variable, will take precedence
over "built-in" Automake macros. For example (assuming Automake
is installed in the /usr/local hierarchy), a definition of the
AM_PROG_VALAC macro found in '/usr/local/share/aclocal/my-vala.m4'
should take precedence over the same-named automake-provided macro
(defined in '/usr/local/share/aclocal-2.0/vala.m4').
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 (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' and '-o' options; see discussion about bug#13378 for
- 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
bin_PROGRAMS = sub/foo
sub_foo_SOURCES = sub/main.c sub/bar.c
- 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 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
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 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
* Texinfo support:
- Automake can now be instructed to place '.info' files generated from
Texinfo input in the builddir rather than in the srcdir; this is done
specifying the new automake option 'info-in-builddir'. This feature
was requested by the developers of GCC, GDB, GNU binutils and the GNU
bfd library. See the extensive discussion about automake bug#11034
for more details.
- For quite a long time, Automake has been implementing an undocumented
hack which ensured that '.info' files which appeared to be cleaned
(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*
# Do not create info files for distribution.
in order not to distribute generated '.info' files.
Now that we have the 'info-in-builddir' option that explicitly causes
generated '.info' files to be placed in the builddir, this hack should
be longer necessary, so we deprecate it with runtime warnings. It will
likely be removed altogether in Automake 2.0.
* Relative directory in Makefile fragments:
- 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
including Makefile), and the latter with the canonicalized version of
the same relative directory.
# in 'Makefile.am':
bin_PROGRAMS = # will be updated by included Makefile fragments
# 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
* 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 of the Automake-generated
targets 'dist-shar' and 'dist-tarZ' will unconditionally display
(non-fatal) warnings at make runtime.
* New configure runtime warnings about "rm -f" support:
- 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 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:
The user can still force the configure process to complete even in the
presence of a broken 'rm' by defining the ACCEPT_INFERIOR_RM_PROGRAM
environment variable to "yes". And the generated Makefiles should
still work correctly even when such broken 'rm' is used. But note
that this will no longer be the case with Automake 2.0 though, so, if
you encounter the warning, please report it to us ASAP (and try to fix
your environment as well).
|[Prev in Thread]
||[Next in Thread]|
- GNU Automake 1.14 released,
Stefano Lattarini <=