Akim Demaille [Tue, 8 May 2001 10:58:48 +0000 (10:58 +0000)]
Support `if !COND', `else COND', `end COND'.
* automake.texi (Conditionals): Document it.
* automake.in ($WHITE_PATTERN, $MACRO_PATTERN, $BOGUS_MACRO_PATTERN)
($GNITS_VERSION_PATTERN, $INCLUDE_PATTERN): Use `d' and `s'.
($IF_PATTERN, $ELSE_PATTERN, $ENDIF_PATTERN): Likewise, and accept
a leading `!' before the condition.
(&handle_options): Use `d'.
(&cond_stack_if, &cond_stack_else, &&cond_stack_endif): New.
(&read_am_file, &file_contents_internal): Use them.
(&transform): No longer substitute `%!COND%', forcing the use of
`! %?COND%'.
* ansi2knr.am, lex.am, tags.am, texinfos.am, yacc.am: Adjust.
Akim Demaille [Tue, 8 May 2001 10:42:20 +0000 (10:42 +0000)]
Uniform handling of per-object compilation rules.
Note: Automake is repaired.
* automake.in (&handle_languages): Output per object rules for all
the objects, not only for those which language supports dependency
tracking.
Fix Automake: when outputting per-object rules, use `-o' if the
language has no `output_flag', as it's really needed.
(&handle_single_transform_list): Instead of special casing files
which need per object rules but which language don't support
dependency tracking, keep them in the queue for processing by
`&handle_languages'.
Akim Demaille [Tue, 8 May 2001 10:39:49 +0000 (10:39 +0000)]
* automake.in (&handle_languages): `ext-compile.am' and
`depend2.am' are now equivalent for generic rules: output only the
latter.
* ext-compile.am: Remove.
Akim Demaille [Tue, 8 May 2001 10:38:11 +0000 (10:38 +0000)]
Note: This patch breaks Automake. Repaired within two patches.
* automake.in (Language): Replace the attribute `output_arg' with
`compile_flag' and `output_flag'.
(Automake): Adjust language registrations.
(&handle_languages): Transform `-c' and `-o' for both suffix and
per object rules, instead of `OUTARG' and `LTOUTARG' only for
generic rules.
(&handle_single_transform_list): Adjust to `compile_flag' and
`output_flag'.
* depend2.am, ext-compile.am: Use `%-c%' and `%-o%'.
Akim Demaille [Tue, 8 May 2001 09:46:11 +0000 (09:46 +0000)]
* automake.in (&handle_languages): Don't transform %COMPILER%.
Use `$lang->compiler' instead of `$pfx' to transform generic
%COMPILE% and %LTCOMPILE%.
* ext-compile.am: Use %COMPILE%, %LTCOMPILE% and %SOURCE% instead
of %COMPILER% and $<.
Akim Demaille [Mon, 7 May 2001 21:41:18 +0000 (21:41 +0000)]
* automake.in (&handle_languages): Use the same `%transform' for
both `depend2.am' and `ext-compile.am'.
Move the definition of `$flag' where it is used, and rename as
`$flags'.
Akim Demaille [Mon, 7 May 2001 17:51:54 +0000 (17:51 +0000)]
* automake.in (&handle_languages): Compute `$ltoutarg' and
`$outarg' independently from dependency code.
There is no use looping on a language's possible extensions since
we loop over used extensions.
Therefore, there is no use for a local `%transform'.
Tom Tromey [Sun, 6 May 2001 23:01:34 +0000 (23:01 +0000)]
Fix for PR automake/132:
* automake.in (c, c++, objc, asm, ppf77): Add DEFAULT_INCLUDES to
compilation.
(java): Remove INCLUDES and DEFS from compilation.
(lang_c_finish): Add DEFAULT_INCLUDES to compilation.
* compile.am (DEFS): Don't include %DEFAULT_INCLUDES%.
(DEFAULT_INCLUDES): New macro.
Tom Tromey [Sun, 6 May 2001 05:25:58 +0000 (05:25 +0000)]
* automake.in (conditional_true_when): Use a hash, not index().
Also, a TRUE component always results in a true return.
Fixes test cond10.test. For PR automake/164.
* tests/Makefile.am (XFAIL_TESTS): Removed cond10.test.
Tom Tromey [Sat, 5 May 2001 20:47:29 +0000 (20:47 +0000)]
Fix bug reported by Robert Boehne:
* automake.in (output_lex_build_rule): Don't let AMDEP_TRUE be
substituted.
(handle_dependencies): Likewise.
* Makefile.am (maintainer-check): Look for AMDEP_TRUE
substitution. Correct diff now has 30 lines. Look for space
after losing `undef'.
* automake.in (&read_am_file, &file_contents_internal): Don't
define macros when `FALSE', to avoid errors on doubly defined
variables but under condition `FALSE'. In order to allow...
(&am_install_var): When reading the associated file for the first
time, enable `%?FIRST%'.
(&handle_libraries): Let libs.am define $(AR) and $(RANLIB).
* libs.am: Do it when `%?FIRST%'.
* automake.in (®ister_language, &finish_languages): Use `pure'
as a Boolean.
(®ister_language): Use %done properly with objects, not names.
(&finish_languages): Replace `$non_c' with `$needs_c'.
Unify LISP, PYTHON and JAVA primaries.
* automake.in (&handle_emacs_lisp): Be like &handle_python, i.e.,
return if there are no files, hook elist-comp on the Autoconf
macro, rely on lisp.am to define variables.
(&handle_python, &handle_java): Likewise.
(&scan_one_autoconf_file): Pseudo AC_SUBST of `pythondir' and
`PYTHON' must be handled here, not in `&handle_python'.
* java.am: Define needed variables and rules.
* automake.in (&finish_languages, &handle_single_transform_list)
(&add_depend2, &handle_dependencies): No longer use the language
name in `$lang'. Rename `$lang_obj' as `$lang'.
* automake.in (®ister_language): Rename `output-arg' and
`derived-autodep' as `output_arg' and `derived_autodep' to match
the Language attribute.
Set the defaults in %option instead of $lang.
* Automake/: New directory.
* Automake/Struct.pm: New file, based on Perl 5.6's Class::Struct.
* automake.in (Language): Use Automake::Struct.
* tests/defs: Adjust to find Struct.
* automake.in (Language): Add attribute `name'.
(®ister_language): The name of the language is now given in the
hash.
No longer use `$lang' as the name of the language.
Rename `$lang_obj' as `$lang'.
* automake.in (Language): Add attribute `extensions'.
(Automake): Pass a hash to `®ister_language' instead of a
list of pseudo assignments.
(®ister_language): Adjust.
(&finish_languages): Initialize `$ltoutarg'.
* automake.in (Language): Add attribute `output_arg'.
(%language_map): Remove.
(®ister_language): Build only the object, and store in
%languages only.
(&finish_languages, &handle_single_transform_list): Adjust.
* automake.in (Language): Add attributes `flags', `compile' and
`compiler'.
(&finish_languages, &handle_single_transform_list, &handle_dist)
(&add_depend2, ®ister_language): Use them and the `linker' and
`pure' attributes.
* automake.in (&handle_single_transform_list, &finish_languages)
(&handle_dist, &handle_dependencies): Use the language object for
autodep and derived-autodep too.
* automake.in (Language): New package, temporarily in this file.
Use Class::Struct.
(Automake): New package.
(%languages): New.
(&handle_single_transform_list): Use the language object's `ansi'
attribute instead of `$language_map{"$lang-ansi-p"}'.
(®ister_language): Build and register the language too.
* automake.in (&scan_aclocal_m4): Handle $relative_dir and special
variables.
Specify to the caller whether $regen_aclocal_m4.
(&handle_configure): Adjust.
Transform `REGEN-ACLOCAL-M4'.
* configure.am: Use it.
* tests/defs (me): New.
* tests/configdeps.test: New.
* automake.in (&handle_single_transform_list): Remove $xbase,
unused.
(&handle_source_transform): All the variables have conditions now,
simplify.
(&variable_delete): Admit an argument @conds.
* ext-compile.am: New file.
* automake.in (&finish_languages): Output it.
Require a C linker if there are several registered source suffixes.
(&handle_compile): No longer push the `.c', `.o', `.obj', `.lo'
extensions, which are discovered in ext-compile.am.
With the help from Robert Boehne.
Use AM_CONDITIONAL and if/endif for AMDEP.
* m4/depend.m4 (AM_DEP_TRACK): Use AM_CONDITIONAL to define AMDEP.
* automake.in (&add_depend2): Transform %AMDEP% into `AMDEP' (leading
to a configure time if/endif), or to `FALSE' (static removal of
the code).
(&handle_dependencies): Adjust to use `AMDEP_TRUE'.
* depend2.am: Use if/endif.
Adjust the 101 tests that use dependencies so that they
properly invoke aclocal before automake. They need to `see'
`AM_CONDITIONAL([AMDEP], ...)'.
* automake.in: Use simple quotes to define the _PATTERN variables
to unobfuscate the regexps.
($AM_CONDITIONAL_PATTERN): Let the user quote the variable.
* automake.in (&rule_define): When you discover a suffix rules,
register the extensions for .SUFFIXES.
(&handle_texinfo): Don't register the suffixes.
(&get_object_extension): Don't register suffixes, let them be
discovered in depend2.am.
(&handle_emacs_lisp): Depend on your lisp.am.
* lisp.am: Include the rule &handle_emacs_lisp used to output.
* subdirs.am (RECURSIVE_TARGETS): New variable.
Use it.
* automake.in (&handle_subdirs): Output it.
(&file_contents_internal): Support value spread on several lines.