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.
* automake.in (&variable_dump): Use %var_type properly.
(¯o_define): Enforce better overriding rules.
Handle the special case that used to handle...
(&define_pretty_variable): this.
Hence, don't.
The variables you define are owned by Automake.
(&generate_makefile): PRE_INSTALL and co must not be defined *by
the user*.
(&variable_defined): Now independent from the owner.
(&variable_output, &variable_pretty_output): Adjust to %var_type.
* automake.in (&variable_output): Admit a list of @CONDS.
(&variable_pretty_output): New.
(&define_pretty_variable): Use it.
(&read_am_file, &file_contents_internal): Prepend a separator to
$am_vars only if there is none yet.
(&file_contents_internal): Rename $separator as $spacing to
harmonize with &read_am_file.
* automake.in (%dist_common): Remove.
(%configure_dist_common): Replace with...
($configure_dist_common): this.
(&generate_makefile): Read the user file before using
push_dist_common, as it sets DIST_COMMON, and read_am_file checks
that no variable is defined before it is run.
(&handle_texinfo): Don't handle DIST_COMMON, let your file do it.
(&dist_cmp): Rename as...
(&for_dist_common): this.
(&handle_dist): Don't handle DIST_COMMON, let `configure.am' do
it.
Adjust to $configure_dist_common.
* configure.am, texi-vers.am: Set DIST_COMMON.
* automake.in (&handle_aclocal_m4): Rename as...
(&scan_aclocal_m4): this.
Return the list of aclocal.m4 dependencies.
(&handle_configure): Invoke it, and use it when loading...
* configure.am: Template the rules to recreate aclocal.m4.
* automake.in (&condition_negate): New.
(&variable_conditions_permutations): Use it.
(&read_am_file, &file_contents): Use it on `else' clauses to
support `if FALSE'.
(&output_yacc_build_rule): Output this...
* yacc.am: New file.
* data.am, header.am, java.am, libs.am, lisp.am, ltlib.am,
* progs.am, python.am: Use if/endif instead of ?INSTALL?.
* java.am (_am_installdirs): Be sure to set it.
* automake.in (&make_condition): Return '#' when FALSE.
(&conditional_string): Return FALSE, not '#' in the corresponding
cases.
(&file_contents_internal): Adjust.
(&check_variable_defined_unconditional): Dump the guilty variable.
Avoid reading twice header-vars.am as now macro_define
complains.
* automake.in (&define_standard_variables): Don't output the
variables.
(&read_main_am_file): Output first user variables, then Automake
variables.
Don't call twice &define_standard_variables.
Save variable comments in $am_vars.
(&variable_output): New.
(&file_contents_internal): New.
Save variable comments in $am_vars.
(&file_contents): Use it.
* automake.in (&variable_dump): If a variable is undefined, say
it.
(&check_ambiguous_conditional): Give finer error messages.
(¯o_define): Check that a `+=' variable is not set with `='.
Check for ambiguous definitions each time you _set_ (even with `+=')
a variable.
(&read_main_am_file): Perform a deep copy of %conditional.
* automake.in (&handle_source_transform): Use
&variable_conditions, don't read $conditional{$var}.
(&variable_conditions_sub): When the call is the top level call,
generate all the permutations of the conditions.
* depend2.am (@AMDEP@%FPFX%DEPMODE): Define it when GENERIC so
that it does not get noticed twice by automake, which now
complains for multiple definitions.
* tests/vartar.test: s/INSTALL/install/g, automake now complains
because we defined INSTALL.
* automake.in (&generate_makefile) Use macro_define to define
SOURCES and OBJECTS.
(&variable_defined): Don't check for $conditional{VAR}{COND} as
this would make perl create $condition{VAR}, which we don't want.
* automake.in (&variable_defined, &define_pretty_variable):
Simplify code which used to handle the cases where not all
variables were in %conditional.
(&define_variable): Use &define_pretty_variable.
(&variable_conditions_sub, &variable_value_as_list_worker)
(&variable_value_as_list, &rule_define): Simplify syntax.
(&read_main_am_file): Dump the guilty predefined variables.