]> git.ipfire.org Git - thirdparty/automake.git/commit
subdir-objects: enable unconditionally
authorStefano Lattarini <stefano.lattarini@gmail.com>
Wed, 6 Jun 2012 08:27:46 +0000 (10:27 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Wed, 15 May 2013 13:52:30 +0000 (15:52 +0200)
commit020fb48db730a5661fa8fa38229b439d79fd5217
tree1920dea1d85141189e61d825fd395ab49c3b4e1a
parent83609bfeee6b69ac4d1257bfdafd4f9e04a4d5e3
subdir-objects: enable unconditionally

See automake bug#13378.

The fact that Automake-generated Makefiles places compiled object files
in the current directory by default, also when the corresponding source
file is in a subdirectory, is basically an historical accident, due to
the fact that the 'subdir-objects' option had only been introduced in
April 1999, starting with commit 'user-dep-gen-branchpoint-56-g88b5959',
and never made the default, likely to avoid backwards-compatibility
issues.

Since we believe the behaviour enabled by the 'subdir-objects' is the
only natural and most useful one, we make it the only only one available,
simplifying the Automake implementation and APIs a little in the process.

This change is basically an adjusted backport of Automake-NG commit
'v1.12.1-313-g14fe163' of 2012-06-07, "[ng] subdir-objects: enable
unconditionally".

* NEWS: Update.
* doc/automake.texi (Program and Library Variables): The output
object files are no longer placed in the current directory by
default, but rather in the same directory of the source file.
(LIBOBJS): Now the $(LIBOBJS) and $(ALLOCA) variables can also
be used outside of the directory where their sources lie.
(List of Automake options): Report the 'subdir-objects' option
as a no-op, existing only for compatibility with older versions
of Automake.
Other related minor adjustments.
* bin/automake.in (LANG_PROCESS): Remove, it's no longer needed.
(handle_languages): Don't test whether option 'subdir-objects'
is set (just assume it is), and do not use the '%SUBDIROBJ%'
transform when processing '.am' fragments.
(lang_sub_obj): Delete, it would just return 'LANG_SUBDIR'
unconditionally now.
(lang_lex_rewrite): Adjust.  Don't test whether the option
'subdir-objects' is set (just assume it is).
(lang_yacc_rewrite): Likewise.
(handle_single_transform): Likewise.  Remove an obsolete
comment.  Add a proper "FIXME" comments about a fragment
of code that might have become dead code now.
(handle_LIBOBJS_or_ALLOCA): Simplify assuming that the option
'subdir-objects' is always set.  Accordingly, there's no need
to warn anymore if '$(LIBOBJS)' or '$(ALLOCA)' are used outside
the '$config_libobj_dir' directory (as specified by autoconf
macro 'AC_CONFIG_LIBOBJ_DIR').
* lib/am/depend2.am: Assume the '?SUBDIROBJ?' Automake time
conditional is always true, and remove its uses accordingly.
* t/compile_f_c_cxx.sh: Adjust.
* t/cscope.tap: Likewise.
* t/depcomp8a.sh: Likewise.
* t/depcomp8b.sh: Likewise.
* t/libtool3.sh: Likewise.
* t/ltlibsrc.sh: Likewise.
* t/pr401.sh: Likewise.
* t/pr401b.sh: Likewise.
* t/pr401c.sh: Likewise.
* t/subobj.sh: Likewise.
* t/lex-line.sh: Likewise.
* t/yacc-line.sh: Likewise.
* t/yacc5.sh: Likewise.
* t/vala-libs.sh: Likewise.
* t/fort4.sh: Likewise, and extend a bit.
* t/fort5.sh: Likewise.
* t/gcj.sh: Likewise.
* t/subpkg.sh: Likewise.
* t/subpkg-yacc.sh: Likewise.
* t/xsource.sh: Likewise.
* t/libobj20a.sh: Remove as obsolete.
* t/libobj20b.sh: Adjust heading comments.
* t/libobj20c.sh: Likewise.
* t/subobj4.sh: Remove as obsolete.
* t/sourcefile-in-subdir.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
29 files changed:
NEWS
bin/automake.in
doc/automake.texi
lib/am/depend2.am
t/compile_f_c_cxx.sh
t/cscope.tap
t/depcomp8a.sh
t/depcomp8b.sh
t/fort4.sh
t/fort5.sh
t/gcj.sh
t/lex-line.sh
t/libobj20a.sh [deleted file]
t/libobj20b.sh
t/libobj20c.sh
t/libtool3.sh
t/list-of-tests.mk
t/ltlibsrc.sh
t/pr401.sh
t/pr401b.sh
t/pr401c.sh
t/sourcefile-in-subdir.sh [deleted file]
t/subobj.sh
t/subobj4.sh [deleted file]
t/subpkg-yacc.sh
t/subpkg.sh
t/xsource.sh
t/yacc-grepping2.sh
t/yacc-line.sh