[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Automake-commit] [SCM] GNU Automake branch, experimental/subdir-objects
From: |
Stefano Lattarini |
Subject: |
[Automake-commit] [SCM] GNU Automake branch, experimental/subdir-objects-work, created. v1.13.1-53-g211f50a |
Date: |
Thu, 10 Jan 2013 21:51:14 +0000 |
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".
http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=211f50a1b958b13545bcb096d36efe108b603e6c
The branch, experimental/subdir-objects-work has been created
at 211f50a1b958b13545bcb096d36efe108b603e6c (commit)
- Log -----------------------------------------------------------------
commit 211f50a1b958b13545bcb096d36efe108b603e6c
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 21:52:18 2013 +0100
depend: reduce code duplication, de-uglify make verbose output
Verbose output from compilation recipes had been made more messy by
the previous "simplifying" commit XXX. With this patch, not only we
reduce some code duplication, but also improve that output again, for
the joy of users who dislike silent-rules :-)
* lib/am/depend2.am: Use the new '%XSOURCE%' transform, instead of
copying and pasting the idiom for VPATH rewrite emulation over and
over. Fix some indentation and line-wrapping issues while at it.
* automake.in (handle_languages): Implement the new transform.
* t/silent-nested-vars.sh: Adjust to avoid spurious failures.
Signed-off-by: Stefano Lattarini <address@hidden>
commit 064b83b831687d711ae11a2d1a36a131dfe38def
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 21:42:28 2013 +0100
depend: prefer $(...) over `...` in Cygwin-specific recipes
On Cygwin, we can happily assume only POSIX-conforming shells exist.
This commit is useless by itself, but is useful as a preparatory
refactoring in view of a future change.
* lib/am/depend2.am: In recipes for producing '.obj' objects, use
the POSIX form $(...) for command substitution, rather than the
classic Bourne one `...`.
Signed-off-by: Stefano Lattarini <address@hidden>
commit 789d43339087e5acaa1677df91069cb8b4b4e955
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 21:31:57 2013 +0100
depend2.am: reduce code duplication
Just a simplification; no semantic change is intended.
* lib/am/depend2.am (am__set_depbase): New. Use it in all the three
flavours of recipes (.o, .obj, .lo), instead of duplicating its code.
Signed-off-by: Stefano Lattarini <address@hidden>
commit e0d235f420e94a8653e93fbf5e6c52da3baeaa01
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 20:47:57 2013 +0100
depend2.am: preparatory refactoring
This is just a preparatory change in view of a future refactoring.
No semantic change is intended.
* lib/am/depend2.am: Adjust; for example, using '$@' in all recipes
to indicate the output file (rather than recipe-specific transforms
like '%OBJ%' and '%LTOBJ%'), and not assuming to know the exact
file extension of the output file (e.g., whether it's '.o' or '.lo').
Signed-off-by: Stefano Lattarini <address@hidden>
commit 8fe2971ff64c3a8daf56b49572419ccec43565d7
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 18:04:33 2013 +0100
depend2.am: refactor and remove code duplication
* lib/am/depend2.am: Here. The obsolescent comments removed from this
same file in commit 'v1.13.1-42-g8f06bfb' of 2012-01-09, "depend2.am: fix
comments on verbosity of compilation rules", gave the rationale for why
that code duplication was there in the first place (rationale that, like
those comments, has been obsolete by the silent-rules introduction).
* automake.in: Given the refactoring in 'depend2.am', there's no longer
need to add extra trailing whitespace to the entries of the '%sourceflags'
hash (which are used for the '%SOURCEFLAG%' transform when 'depend2.am'
is processed.
Signed-off-by: Stefano Lattarini <address@hidden>
commit c9ccc32542823cba40dd5ab2c6ecd98bcb75dda1
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 19:54:13 2013 +0100
Automake::Language: drop unused fields 'compile_flag' and 'output_flag'
They are unused after the recent flurry of changes. This is just a
simplification; no semantic change is intended.
* automake.in: Here, in the Automake::Language 'Class::Struct' definition
and in all the 'register_language()' invocations.
Signed-off-by: Stefano Lattarini <address@hidden>
commit 89bc1b7b3494aaa5591d195c0cffae1523e73057
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 19:48:14 2013 +0100
depend: assume '-c' compiler flag always means to produce object files
Rather than fully-fledged executables. This is the case for all the
compilers of all languages supported by Automake.
This is just a simplification; no semantic changes are intended.
* automake.in (handle_languages): Drop transform '%-c%'.
* lib/am/depend2.am: Adjust to just assume the '%-c%' transform
expands to "-c".
Signed-off-by: Stefano Lattarini <address@hidden>
commit 55f5fd2ae7f3c8419b43f585d796a79cf4df616d
Author: Stefano Lattarini <address@hidden>
Date: Thu Jan 10 19:38:58 2013 +0100
depend: assume we can always pass "-o" to the C compiler
This is the case after the change in commit XXX of YYYY-MM-DD,
``compile: use 'compile' script when "-c -o" is used with losing compilers''
This is just a simplification; no semantic changes are intended.
* automake.in (handle_languages): Drop transform '%-o%', and definitions
of '$output_flag'.
* lib/am/depend2.am: Adjust to just assume the '?-o?' transform is true,
and the '%-o%' transform expands to "-o".
Signed-off-by: Stefano Lattarini <address@hidden>
commit 410f9471c9bef88fd1cec7abd1640ebee0ad6f26
Author: Stefano Lattarini <address@hidden>
Date: Tue Jan 8 14:04:00 2013 +0100
cleanup: having subdir-objects mandatory allow us some simplifications
Few minor cleanups made possible by earlier changes, plus other minor
cleanups triggered in cascade. No semantic change is intended.
This is a follow-up on previous commit 'XXX', and an adjusted backport
of Automake-NG commit 'v1.12.1-315-gc97d41b' of 2012-06-08, "[ng] cleanup:
after enabling of subdir-objects unconditionally".
* automake.in (LANG_IGNORE, LANG_SUBDIR): Remove.
(handle_languages): Drop the '%DEPBASE%' transform when processing
the '$rule_file'.
(register_language ('name' => 'vala', ...)): Add '.vapi' to the entry
'extensions', and simplify the entry 'output_extensions' to point to
a dummy subroutine (since it wasn't really used anyway).
(handle_single_transform): No longer expect the 'lang_*_rewrite'
subroutines to return a 'LANG_*' constant, but only a transformed
extension, if required. To decide whether further processing of the
source file should be stopped, rely on a new set of 'lang_*_ignore'
subroutines, defaulting to a subroutine that returns false.
Accordingly, don't special case the handling of '.vapi' files anymore,
instead rely on ...
(lang_vala_ignore, lang_header_ignore): ... these new subroutines to
avoid extra processing of C/C++ headers and Vala '.vapi' headers.
(lang_java_rewrite): Remove.
Remove an outdated comment.
* lib/am/depend2.am: Partial rewrite to reduce code duplication and
drop use of the '%DEPBASE%' transform.
* t/compile_f_c_cxx.sh: Adjust.
Signed-off-by: Stefano Lattarini <address@hidden>
commit c6e0b88d7a9917d9372e701c96f6485e84d4d117
Author: Stefano Lattarini <address@hidden>
Date: Wed Jun 6 10:27:46 2012 +0200
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 not anymore 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
be used outside of the directory where their sources lie.
(List of Automake options): Don't document the 'subdir-objects'
option anymore.
Other related minor adjustments.
* automake.in (LANG_PROCESS): Remove, it's not needed anymore.
(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 use accordingly.
* t/ax/depcomp.sh: Adjust.
* t/compile_f_c_cxx.sh: Likewise.
* 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/lex-line.sh: Likewise.
* t/yacc-line.sh: Likewise.
* t/parallel-tests-suffix-prog.sh: Likewise.
* t/yacc5.sh: Likewise.
* t/vala-libs.sh: Likewise.
* t/fort2.sh: Likewise, and extend a bit.
* t/fort4.sh: Likewise.
* 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 <address@hidden>
commit 135e3111b3be0c92debc37a391e83b005e80e3b4
Author: Stefano Lattarini <address@hidden>
Date: Wed Jan 9 23:16:53 2013 +0100
compile: use 'compile' script when "-c -o" is used with losing compilers
Do so seen when only source files in the "current" directory are present.
This commit is part of a series of related changes addressing automake
bug#13378 (see also the plan 'PLANS/subdir-objects.txt').
Before this change, Automake-generated C compilation rules mistakenly
passed the "-c -o" options combination unconditionally (even to losing
compiler) when the 'subdir-objects' was used but sources were only
present in the top-level directory. Issue spotted by Nick Bowler:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#35>
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#44>
We fix this by having Automake redefine AC_PROG_CC to take over the role
of AM_PROG_CC_C_O and to require the 'compile' script unconditionally
(albeit that will continue to be invoked only when inferior compilers
are detected).
Among other things, this means AM_PROG_CC_C_O explicitly is no longer
required; that macro is still supported for backward-compatibility, but
calling it is basically a no-op now.
This change has some pros and some cons (obviously, we believe the former
outweighs the latter). Here are the most relevant ones:
+ Pros 1:
Some logic in the Automake script has been simplified
+ Pros 2:
That simplification has automatically fixed an actual bug (admittedly,
it was present only in corner situations, but still) XXX
The test 't/ccnoco4.sh', which demonstrated that bug and has been
failing so far, now passes.
+ Pros 3:
Things works more "automagically" now (no need to manually add the
AM_PROG_CC_C_O macro to configure.ac anymore)
* Cons 1:
The 'compile' script will be required in all projects using C
compilation; this will only be a problem for packages not using
'--add-missing'. However, such packages are definitely more rare
than the ones using '--add-missing', and adjusting them will be
trivial -- just copy the compile script over from the new Automake
installation.
* Cons 2:
The copy & paste of autoconf internals hack this change has introduced
in our "rewrite" of AC_PROG_CC is really an egregious abomination. It
can only be justified with the fact that we expect future versions of
autoconf to implement the semantics we need directly in AC_PROG_CC, so
that we'll be able to leverage that (since Automake 1.14 will require
the latest Autoconf version released).
Now, the detailed list of file-by-file changes ...
* automake.in ($seen_cc_c_o): Remove this global variable.
(scan_autoconf_traces): Don't set it, and do not trace the
'AM_PROG_CC_C_O' m4 macro.
(lang_c_rewrite): Remove, no longer needed.
* doc/automake.texi: Adjust expected "autoreconf --install" output
in the amhello example. Remove statements about the need for the
AM_PROG_CC_C_O macro. Report it is obsolete now.
* m4/init.m4: Re-write AC_PROG_CC to append checks about whether the
C compiler supports "-c -o" together. These checks have basically
been ripped out (with adaptations) from the 'AC_PROG_CC_C_O' macro
of Autoconf and ...
* m4/minuso.m4 (AM_PROG_CC_C_O): ... this macro of ours, which has
thus basically become a no-op.
* t/ax/am-test-lib.sh (am_setup_testdir): Also copy the 'compile'
script in the test directory; if we don't do so, every test using
AC_PROG_CC should call automake with the "--add-missing" option, or
copy the 'compile' script itself.
* t/cond11.sh: No need to create a dummy 'compile' script: that is
already brought in by 'am_setup_testdir()', that is automatically
invoked when 'test-lib.sh' is sourced.
* t/add-missing.tap: Adjust: we expect the 'compile' script to be
required by a mere AC_PROG_CC call now.
* t/dist-auxdir-many-subdirs.sh: Likewise.
* t/specflg6.sh: Likewise.
* t/subobj4.sh: Likewise.
* t/cxx-lt-demo.sh: Likewise, and update comments to match.
* t/distcom2.sh: Enhance a little.
* t/dollarvar2.sh: Adjust.
* t/extra-portability.sh: Likewise.
* t/libobj19.sh: Likewise.
* t/per-target-flags.sh: Likewise.
* t/repeated-options.sh: Likewise.
* t/subobj.sh: Likewise, and enhance a little.
* t/ccnoco2.sh: Remove as obsolete.
* t/list-of-tests.mk (handwritten_TESTS): Adjust.
(XFAIL_TESTS): Remove 't/ccnoco4.sh'.
* NEWS: Update.
Signed-off-by: Stefano Lattarini <address@hidden>
-----------------------------------------------------------------------
hooks/post-receive
--
GNU Automake
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Automake-commit] [SCM] GNU Automake branch, experimental/subdir-objects-work, created. v1.13.1-53-g211f50a,
Stefano Lattarini <=