Sorry for the delay. I'm checking this in. 2006-04-09 Alexandre Duret-Lutz <[EMAIL PROTECTED]>
* automake.in (%ignored_configure_vars): New variable. (scan_autoconf_traces): Trace for _AM_SUBST_NOTMAKE and fill %ignored_configure_vars. (define_configure_variable): Declare ignored configure variables as VAR_SILENT. Do not special-case AMDEPBACKSLASH and ANSI2KNR w.r.t. VAR_SILENT. * m4/substign.m4: New file. * m4/Makefile.am (dist_m4data_DATA): Add substign.m4. * m4/cond.m4: _AM_SUBST_IGNORE $1_TRUE and $1_FALSE (PR automake/477). * m4/depend.m4: _AM_SUBST_IGNORE AMDEPBACKSLASH. * m4/protos.m4: _AM_SUBST_IGNORE ANSI2KNR. * tests/cond.test: Make sure TEST_FALSE and TEST_TRUE are not defined. * tests/amsubst.test: New file. * tests/Makefile.am (TESTS): Add it. Index: automake.in =================================================================== RCS file: /cvs/automake/automake/automake.in,v retrieving revision 1.1619 diff -u -r1.1619 automake.in --- automake.in 23 Mar 2006 06:35:15 -0000 1.1619 +++ automake.in 9 Apr 2006 07:42:24 -0000 @@ -390,6 +390,10 @@ # generation. my %configure_vars = (); +# Ignored configure substitutions (i.e., variables not to be output in +# Makefile.in) +my %ignored_configure_vars = (); + # Files included by $configure_ac. my @configure_deps = (); @@ -4807,6 +4811,7 @@ AM_INIT_AUTOMAKE => 0, AM_MAINTAINER_MODE => 0, AM_PROG_CC_C_O => 0, + _AM_SUBST_NOTMAKE => 1, LT_SUPPORTED_TAG => 1, _LT_AC_TAGCONFIG => 0, m4_include => 1, @@ -4918,6 +4923,12 @@ { $libsources{$args[1]} = $here; } + elsif ($macro eq 'AC_REQUIRE_AUX_FILE') + { + # Only remember the first time a file is required. + $required_aux_file{$args[1]} = $where + unless exists $required_aux_file{$args[1]}; + } elsif ($macro eq 'AC_SUBST_TRACE') { # Just check for alphanumeric in AC_SUBST_TRACE. If you do @@ -4975,11 +4986,9 @@ { $seen_cc_c_o = $where; } - elsif ($macro eq 'AC_REQUIRE_AUX_FILE') + elsif ($macro eq '_AM_SUBST_NOTMAKE') { - # Only remember the first time a file is required. - $required_aux_file{$args[1]} = $where - unless exists $required_aux_file{$args[1]}; + $ignored_configure_vars{$args[1]} = $where; } elsif ($macro eq 'm4_include' || $macro eq 'm4_sinclude' @@ -5873,16 +5882,16 @@ my $pretty = VAR_ASIS; my $owner = VAR_CONFIGURE; - # Do not output the ANSI2KNR configure variable -- we AC_SUBST - # it in protos.m4, but later redefine it elsewhere. This is - # pretty hacky. We also don't output AMDEPBACKSLASH: it might - # be subst'd by `\', which certainly would not be appreciated by - # Make. - if ($var eq 'ANSI2KNR' || $var eq 'AMDEPBACKSLASH') - { - $pretty = VAR_SILENT; - $owner = VAR_AUTOMAKE; - } + # Some variables we do not want to output. For instance it + # would be a bad idea to output `U = @[EMAIL PROTECTED] when [EMAIL PROTECTED]@` can be + # substituted as `\`. + $pretty = VAR_SILENT if exists $ignored_configure_vars{$var}; + + # ANSI2KNR is a variable that Automake wants to redefine, so + # it must be owned by Automake. (It is also used as a proof + # that AM_C_PROTOTYPES has been run, that's why we do not simply + # omit the AC_SUBST.) + $owner = VAR_AUTOMAKE if $var eq 'ANSI2KNR'; Automake::Variable::define ($var, $owner, '', TRUE, subst $var, '', $configure_vars{$var}, $pretty); Index: m4/Makefile.am =================================================================== RCS file: /cvs/automake/automake/m4/Makefile.am,v retrieving revision 1.54 diff -u -r1.54 Makefile.am --- m4/Makefile.am 14 May 2005 20:28:53 -0000 1.54 +++ m4/Makefile.am 9 Apr 2006 07:42:26 -0000 @@ -2,7 +2,7 @@ ## Makefile for Automake m4. -## Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 +## Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2006 ## Free Software Foundation, Inc. ## This program is free software; you can redistribute it and/or modify @@ -54,6 +54,7 @@ runlog.m4 \ sanity.m4 \ strip.m4 \ +substnot.m4 \ tar.m4 EXTRA_DIST = dirlist amversion.in Index: m4/cond.m4 =================================================================== RCS file: /cvs/automake/automake/m4/cond.m4,v retrieving revision 1.13 diff -u -r1.13 cond.m4 --- m4/cond.m4 9 Jan 2005 14:46:21 -0000 1.13 +++ m4/cond.m4 9 Apr 2006 07:42:26 -0000 @@ -1,13 +1,13 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 7 +# serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- @@ -16,8 +16,10 @@ [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' Index: m4/depend.m4 =================================================================== RCS file: /cvs/automake/automake/m4/depend.m4,v retrieving revision 1.35 diff -u -r1.35 depend.m4 --- m4/depend.m4 9 Jan 2005 14:46:21 -0000 1.35 +++ m4/depend.m4 9 Apr 2006 07:42:26 -0000 @@ -1,13 +1,12 @@ ## -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 8 +# serial 9 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -152,5 +151,6 @@ AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) Index: m4/protos.m4 =================================================================== RCS file: /cvs/automake/automake/m4/protos.m4,v retrieving revision 1.11 diff -u -r1.11 protos.m4 --- m4/protos.m4 9 Jan 2005 14:46:21 -0000 1.11 +++ m4/protos.m4 9 Apr 2006 07:42:26 -0000 @@ -2,14 +2,14 @@ ## Check for function prototypes. ## ## From Franc,ois Pinard ## ## ------------------------------- ## -# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005 +# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 +# serial 5 AC_DEFUN([AM_C_PROTOTYPES], [AC_REQUIRE([AC_C_PROTOTYPES]) @@ -20,9 +20,10 @@ fi # Ensure some checks needed by ansi2knr itself. AC_REQUIRE([AC_HEADER_STDC]) -AC_CHECK_HEADERS(string.h) -AC_SUBST(U)dnl -AC_SUBST(ANSI2KNR)dnl +AC_CHECK_HEADERS([string.h]) +AC_SUBST([U])dnl +AC_SUBST([ANSI2KNR])dnl +_AM_SUBST_NOTMAKE([ANSI2KNR])dnl ]) AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) Index: m4/substnot.m4 =================================================================== RCS file: m4/substnot.m4 diff -N m4/substnot.m4 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ m4/substnot.m4 9 Apr 2006 07:42:26 -0000 @@ -0,0 +1,12 @@ +## -*- Autoconf -*- +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) Index: tests/Makefile.am =================================================================== RCS file: /cvs/automake/automake/tests/Makefile.am,v retrieving revision 1.599 diff -u -r1.599 Makefile.am --- tests/Makefile.am 26 Mar 2006 07:52:08 -0000 1.599 +++ tests/Makefile.am 9 Apr 2006 07:42:26 -0000 @@ -39,6 +39,7 @@ alpha2.test \ amassign.test \ ammissing.test \ +amsubst.test \ ansi.test \ ansi2.test \ ansi3.test \ Index: tests/amsubst.test =================================================================== RCS file: tests/amsubst.test diff -N tests/amsubst.test --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ tests/amsubst.test 9 Apr 2006 07:42:26 -0000 @@ -0,0 +1,45 @@ +#! /bin/sh +# Copyright (C) 2006 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 Automake; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +# Check for _AM_SUBST_NOTMAKE. + +. ./defs || exit 1 + +set -e + +cat >> configure.in << 'END' +AC_SUBST([backslash], "\\") +_AM_SUBST_NOTMAKE([backslash]) +AC_OUTPUT +END + +cat > Makefile.am << 'END' +test: + @echo $(backslash) @[EMAIL PROTECTED] +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE +./configure + +# If _AM_SUBST_NOTMAKE is not honored, the backslash +# variable will not be empty. +$MAKE test | grep '^[$]$' Index: tests/cond.test =================================================================== RCS file: /cvs/automake/automake/tests/cond.test,v retrieving revision 1.8 diff -u -r1.8 cond.test --- tests/cond.test 14 May 2005 20:28:54 -0000 1.8 +++ tests/cond.test 9 Apr 2006 07:42:26 -0000 @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 1997, 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 1997, 2001, 2002, 2006 Free Software Foundation, Inc. # # This file is part of GNU Automake. # @@ -22,11 +22,11 @@ . ./defs || exit 1 -cat > configure.in << 'END' -AC_INIT -AM_INIT_AUTOMAKE(nonesuch, nonesuch) +set -e + +cat >> configure.in << 'END' AM_CONDITIONAL(TEST, true) -AC_OUTPUT(Makefile) +AC_OUTPUT END cat > Makefile.am << 'END' @@ -37,11 +37,10 @@ endif END -set -e -$ACLOCAL || exit 1 +$ACLOCAL $AUTOMAKE +grep '^TEST_FALSE' Makefile.in && exit 1 +grep '^TEST_TRUE' Makefile.in && exit 1 grep '[EMAIL PROTECTED]@VAR = true$' Makefile.in grep '[EMAIL PROTECTED]@VAR = false$' Makefile.in - -exit 0 -- Alexandre Duret-Lutz Shared books are happy books. http://www.bookcrossing.com/friend/gadl