Tag
Hash :
738c30a9
Author :
Date :
2003-04-10T19:50:22
Retain all variable definitions until the whole Makefile.am has been processed, then output all variables in one step, at the top of Makefile.in. (Older revisions used to output user variables before generating Automake targets, and to mix Automake variables with Automake targets, preventing redefinitions of previously output variables.) * automake.in (%var_pretty): New variable. (VAR_ASIS, VAR_PRETTY): New constants. (@var_list): Rename as ... (@var_order): ... this. (initialize_per_input): Clear %var_pretty. (handle_variables): New function, extracted from ... (read_main_am_file): ... here. (generate_makefile): Call handle_variable after everything else. (handle_dist): Use define_pretty_variable, not pretty_print. (pretty_print): Delete. (macro_define): Augment with $COMMENT and $PRETTY parameters. Update %var_comment, %var_pretty, and @var_order. Adjust callers. (variable_pretty_output): Merge with ... (variable_output): ... this, and choose the prettiness on a per-condition basis. (append_comments): Delete. This work is now done by macro_define. (read_am_file, file_contents_internal): Don't call append_comments nor update @var_list, adjust calls to macro_define. (handle_subdirs): Don't explicitly output RECURSIVE_TARGETS, just mark it as VAR_PRETTY. * tests/exeext.test: Make sure bin_PROGRAMS is output only once. Report from Jim Meyering.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
#! /bin/sh
# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
#
# This file is part of GNU Automake.
#
# GNU Automake is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU Automake is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with autoconf; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# Test to make sure `.' in an exe name doesn't fool us.
# Report from Robert Collins.
# Also make sure we rewrite conditionals variables.
# Also check for PR/352.
# Also make sure the old definitions of bin_PROGRAMS and friend
# aren't left around. Report from Jim Meyering.
. ./defs || exit 1
cat >> configure.in << 'END'
AC_PROG_CC
AM_CONDITIONAL([WANT_MT], [test -z "$revert"])
AM_CONDITIONAL([WANT_RMT], [test -z "$revert"])
AC_OUTPUT
END
cat > Makefile.am << 'END'
## Use a different dir for each to make grep easy.
bin_PROGRAMS = maude
sbin_PROGRAMS = maude.static
## We don't define this one for now. Probably it is an error.
## noinst_PROGRAMS = maude2.exe
check_PROGRAMS = maude3$(EXEEXT)
if WANT_MT
bin_PROGRAMS += mt
endif
if WANT_RMT
libexec_PROGRAMS = rmt
endif
print:
@echo 1BEG: $(bin_PROGRAMS) :END1
@echo 2BEG: $(sbin_PROGRAMS) :END2
@echo 3BEG: $(check_PROGRAMS) :END3
@echo 4BEG: $(libexec_PROGRAMS) :END4
END
set -e
$ACLOCAL
$AUTOCONF
$AUTOMAKE
grep '^maude$(EXEEXT):' Makefile.in
grep '^maude\.static$(EXEEXT):' Makefile.in
grep '^maude3$(EXEEXT):' Makefile.in
grep '^mt$(EXEEXT):' Makefile.in
grep '^rmt$(EXEEXT):' Makefile.in
test `grep '^bin_PROGRAMS =' Makefile.in | wc -l` = 1
# Make sure $(EXEEXT) gets stripped before canonicalization.
grep 'maude3__EXEEXT__OBJECTS' Makefile.in && exit 1
./configure
EXEEXT=.foo $MAKE -e print > stdout
cat stdout
grep '1BEG: maude.foo mt.foo :END1' stdout
grep '2BEG: maude.static.foo :END2' stdout
grep '3BEG: maude3.foo :END3' stdout
grep '4BEG: rmt.foo :END4' stdout
./configure revert=yes
EXEEXT=.foo $MAKE -e print > stdout
cat stdout
grep '1BEG: maude.foo :END1' stdout
grep '2BEG: maude.static.foo :END2' stdout
grep '3BEG: maude3.foo :END3' stdout
grep '4BEG: :END4' stdout