[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: am__append drops line continuation chars
From: |
Alexandre Duret-Lutz |
Subject: |
Re: am__append drops line continuation chars |
Date: |
Tue, 03 Dec 2002 21:39:15 +0100 |
User-agent: |
Gnus/5.090008 (Oort Gnus v0.08) Emacs/20.7 (i386-debian-linux-gnu) |
>>> "Ralf" == Ralf Corsepius <address@hidden> writes:
Ralf> Hi,
Ralf> If using a Makefile.am which triggers automake to using am_append, line
Ralf> continuation char get lost:
Wow, that's a nice fish you caught.
I'm installing this on HEAD & branch-1-7.
2002-12-03 Alexandre Duret-Lutz <address@hidden>
* automake.in (macro_define): Do not strip escaped new lines
in Automake's +='ed variables. We don't know whether it will
be pretty printed or not at this point.
(variable_pretty_output): Do this here.
* tests/pluseq10.test: New file.
* tests/Makefile.am (TESTS): Add pluseq10.test.
Reported by Ralf Corsepius.
Index: automake.in
===================================================================
RCS file: /cvs/automake/automake/automake.in,v
retrieving revision 1.1365.2.22
diff -u -r1.1365.2.22 automake.in
--- automake.in 3 Dec 2002 19:07:46 -0000 1.1365.2.22
+++ automake.in 3 Dec 2002 20:30:55 -0000
@@ -6388,11 +6388,6 @@
}
$var_type{$var}{$cond} = $type;
- # When adding, since we rewrite, don't try to preserve the
- # Automake continuation backslashes.
- $value =~ s/\\$//mg
- if $type eq '+' && $owner == VAR_AUTOMAKE;
-
# Differentiate assignment types.
# 1. append (+=) to a variable defined for current condition
@@ -7337,6 +7332,11 @@
my $val = $var_value{$var}{$cond};
my $equals = $var_type{$var}{$cond} eq ':' ? ':=' : '=';
my $make_condition = make_condition ($cond);
+
+ # Suppress escaped new lines. &pretty_print_internal will
+ # add them back, maybe at other places.
+ $val =~ s/\\$//mg;
+
$output_vars .= pretty_print_internal ("$make_condition$var $equals",
"$make_condition\t",
split (' ' , $val));
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.443.2.13
diff -u -r1.443.2.13 Makefile.am
--- tests/Makefile.am 3 Dec 2002 19:07:48 -0000 1.443.2.13
+++ tests/Makefile.am 3 Dec 2002 20:31:17 -0000
@@ -297,6 +297,7 @@
pluseq7.test \
pluseq8.test \
pluseq9.test \
+pluseq10.test \
postproc.test \
ppf77.test \
pr2.test \
Index: tests/pluseq10.test
===================================================================
RCS file: tests/pluseq10.test
diff -N tests/pluseq10.test
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/pluseq10.test 3 Dec 2002 20:31:19 -0000
@@ -0,0 +1,57 @@
+#! /bin/sh
+# Copyright (C) 2002 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 for += and backslashes.
+# Reported by Ralf Corsepius.
+
+. ./defs || exit 1
+
+set -e
+
+cat >>configure.in <<EOF
+AM_CONDITIONAL(A, true)
+AM_CONDITIONAL(B, false)
+AC_OUTPUT
+EOF
+
+cat > Makefile.am << 'END'
+foo = 0.h
+if A
+foo += a0.h \
+ a1.h
+foo += a2.h \
+ a3.h
+endif
+if B
+foo += b0.h \
+ b1.h
+endif
+
+print:
+ @echo BEG: $(foo) :END
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE print >stdout
+cat stdout
+grep 'BEG: 0.h a0.h a1.h a2.h a3.h :END' stdout
--
Alexandre Duret-Lutz