Opened 3 years ago

Closed 3 years ago

#4226 closed task (fixed)

automake-1.16

Reported by: bdubbs@… Owned by: lfs-book@…
Priority: normal Milestone: 8.3
Component: Book Version: SVN
Severity: normal Keywords:
Cc:

Description

New minor version.

Change History (2)

comment:1 by bdubbs@…, 3 years ago

New in 1.16:

  • Miscellaneous changes
  • When subdir-objects is in effect, Automake will now construct shorter object file names when no programs and libraries name clashes are encountered. This should make the discouraged use of 'foo_SHORTNAME' unnecessary in many cases.
  • Bugs fixed:
  • Automatic dependency tracking has been fixed to work also when the 'subdir-object' option is used and some 'foo_SOURCES' definition contains unexpanded references to make variables, as in, e.g.:
            a_src = sources/libs/aaa
            b_src = sources/bbb
            foo_SOURCES = $(a_src)/bar.c $(b_src)/baz.c
    
    With such a setup, the created makefile fragment containing dependency tracking information will be correctly placed under the directories named 'sources/libs/aaa/.deps' and 'sources/bbb/.deps', rather than mistakenly under directories named (literally!) '$(src_a)/.deps' and '$(src_b)/.deps' (this was the first part of automake bug#13928).

Notice that in order to fix this bug we had to slightly change the semantics of how config.status bootstraps the makefile fragments required for the dependency tracking to work: rather than attempting to parse the Makefiles via grep and sed trickeries only, we actually invoke 'make' on a slightly preprocessed version of those Makefiles, using a private target that is only meant to bootstrap the required makefile fragments.

  • The 'subdir-object' option no longer causes object files corresponding to source files specified with an explicit '$(srcdir)' component to be placed in the source tree rather than in the build tree.

For example, if Makefile.am contains:

        AUTOMAKE_OPTIONS = subdir-objects
        foo_SOURCES = $(srcdir)/foo.c $(srcdir)/s/bar.c $(top_srcdir)/baz.c

then "make all" will create 'foo.o' and 's/bar.o' in $(builddir) rather than in $(srcdir), and will create 'baz.o' in $(top_builddir) rather than in $(top_srcdir).

This was the second part of automake bug#13928.

  • Installed 'aclocal' m4 macros can now accept installation directories containing '@' characters (automake bug#20903)
  • "./configure && make dist" no longer fails when a distributed file depends on one from BUILT_SOURCES.
  • When combining AC_LIBOBJ or AC_FUNC_ALLOCA with the "--disable-dependency-tracking" configure option in an out of source build, the build sub-directory defined by AC_CONFIG_LIBOBJ_DIR is now properly created. (automake bug#27781)
  • The time printed by 'mdate-sh' is now using the UTC time zone to support the reproducible build effort. (automake bug#20314)
  • The elisp byte-compilation rule now uses byte-compile-dest-file-function, rather than byte-compile-dest-file, which was obsoleted in 2009. We expect that Emacs-26 will continue to support the old function, but will complain loudly, and that Emacs-27 will remove support for it altogether.
  • New features added
  • A custom testsuite driver for the Guile Scheme SRFI-64 API has been added to the "contrib" section. This allows a more convenient way to test Guile code without having to use low primitives such as exit status. See SRFI-64 API specification for more details: <https://srfi.schemers.org/srfi-64/srfi-64.html>

comment:2 by bdubbs@…, 3 years ago

Resolution: fixed
Status: newclosed

Fixed at revision 11382.

Note: See TracTickets for help on using tickets.