[lfs-book] [LFS Trac] #4226: automake-1.16

LFS Trac trac at linuxfromscratch.org
Sat Mar 3 09:33:44 PST 2018

#4226: automake-1.16
 Reporter:  bdubbs@…  |       Owner:  lfs-book@…
     Type:  task      |      Status:  new
 Priority:  normal    |   Milestone:  8.3
Component:  Book      |     Version:  SVN
 Severity:  normal    |  Resolution:
 Keywords:            |

Comment (by bdubbs@…):

 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

     then "make all" will create 'foo.o' and 's/bar.o' in $(builddir)
     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
     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
     the reproducible build effort.  (automake bug#20314)

   - The elisp byte-compilation rule now uses byte-compile-dest-file-
     rather than byte-compile-dest-file, which was obsoleted in 2009. We
     that Emacs-26 will continue to support the old function, but will
     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
     to the "contrib" section.  This allows a more convenient way to test
     code without having to use low primitives such as exit status.  See
     SRFI-64 API specification for more details:

Ticket URL: <http://wiki.linuxfromscratch.org/lfs/ticket/4226#comment:1>
LFS Trac <http://wiki.linuxfromscratch.org/lfs/>
Linux From Scratch: Your Distro, Your Rules.

More information about the lfs-book mailing list