]> sourceware.org Git - automake.git/commitdiff
* lib/Automake/Variable.pm (output): Add $(am__empty) to variable
authorAlexandre Duret-Lutz <adl@gnu.org>
Mon, 24 Nov 2003 22:13:42 +0000 (22:13 +0000)
committerAlexandre Duret-Lutz <adl@gnu.org>
Mon, 24 Nov 2003 22:13:42 +0000 (22:13 +0000)
definitions that end with a line full of @substitutions@ that
would confuse HP-UX Make if it were blank.
(transform_variable_recursively): Make sure not to erase empty
variables.
* tests/Makefile.am (TESTS): Add subst2.test.
* tests/subst2.test: New file.
Report from Harlan Stenn.

ChangeLog
lib/Automake/Variable.pm
tests/Makefile.am
tests/Makefile.in
tests/subst2.test [new file with mode: 0755]

index 1f8be76e359c2fb11de3d151f199e2b1602f7836..06b4d745e0e11d1cf2f367e46045dff03568d03f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2003-11-24  Alexandre Duret-Lutz  <adl@gnu.org>
 
+       * lib/Automake/Variable.pm (output): Add $(am__empty) to variable
+       definitions that end with a line full of @substitutions@ that
+       would confuse HP-UX Make if it were blank.
+       (transform_variable_recursively): Make sure not to erase empty
+       variables.
+       * tests/Makefile.am (TESTS): Add subst2.test.
+       * tests/subst2.test: New file.
+       Report from Harlan Stenn.
+
        * lib/am/texibuild.am (%SOURCE_SUFFIX%.html): Work around a
        Texinfo 4.1 bug.
        Report from Dalibor Topic.
index 48d21a4ca2ca298bf9a89ffcdde93671640ccbd6..5bdf8e871d2beb6216ee653ec8bc2d23a5e23912 100644 (file)
@@ -516,8 +516,18 @@ sub output ($@)
          # Suppress escaped new lines.  &makefile_wrap will
          # add them back, maybe at other places.
          $val =~ s/\\$//mg;
-         $res .= makefile_wrap ("$str$name $equals", "$str\t",
-                                split (' ' , $val));
+         my $wrap = makefile_wrap ("$str$name $equals", "$str\t",
+                                   split (' ', $val));
+
+         # If the last line of the definition is made only of
+         # @substitutions@, append an empty variable to make sure it
+         # cannot be substituted as a blank line (that would confuse
+         # HP-UX Make).
+         $wrap = makefile_wrap ("$str$name $equals", "$str\t",
+                                split (' ', $val), '$(am__empty)')
+           if $wrap =~ /\n(\s*@\w+@)+\s*$/;
+
+         $res .= $wrap;
        }
       else # ($def->pretty == VAR_SORTED)
        {
@@ -1029,7 +1039,7 @@ sub variable_delete ($@)
     }
 }
 
-=item C<$str = variables_dump ($varname)>
+=item C<$str = variables_dump>
 
 Return a string describing all we know about all variables.
 For debugging.
@@ -1038,8 +1048,6 @@ For debugging.
 
 sub variables_dump ()
 {
-  my ($var) = @_;
-
   my $text = "All variables:\n{\n";
   foreach my $var (sort { $a->name cmp $b->name } variables)
     {
@@ -1473,7 +1481,9 @@ sub transform_variable_recursively ($$$$$&)
           # we are trying to override a user variable.  Delete
           # the old variable first.
           variable_delete ($varname) if $varname eq $var->name;
-          # Define for all conditions.
+          # Define for all conditions.  Make sure we define
+          # an empty variable in condition TRUE otherwise.
+          @allresults = ([TRUE, '']) unless @allresults;
           foreach my $pair (@allresults)
             {
               my ($cond, @result) = @$pair;
index 0792a683ded99acaabdc8f05535d0a7816122555..a5284cb152c6ac6470efdc1b8c11224e82cc71c2 100644 (file)
@@ -443,6 +443,7 @@ subobjname.test \
 subpkg.test \
 subpkg2.test \
 subst.test \
+subst2.test \
 substref.test \
 substtarg.test \
 suffix.test \
index 5b0b5fd7b4b614daed3bbf9d8a8891e5ce5f2f66..1592c3b8b85426750d3980fa67cb8da026a5b5b7 100644 (file)
@@ -557,6 +557,7 @@ subobjname.test \
 subpkg.test \
 subpkg2.test \
 subst.test \
+subst2.test \
 substref.test \
 substtarg.test \
 suffix.test \
diff --git a/tests/subst2.test b/tests/subst2.test
new file mode 100755 (executable)
index 0000000..62fddf5
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 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 Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# Make sure a multi-line definition cannot be terminated by an empty
+# line (when there are @substitutions@ inside).
+. ./defs || exit 1
+
+set -e
+
+cat >> configure.in << 'END'
+AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWX])
+AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXY])
+AC_SUBST([ABCDEFGHIJKLMNOPQRSTUVWXYZ])
+AC_OUTPUT
+END
+
+cat >Makefile.am <<'END'
+bin_PROGRAMS = @ABCDEFGHIJKLMNOPQRSTUVWX@ @ABCDEFGHIJKLMNOPQRSTUVWXY@ @ABCDEFGHIJKLMNOPQRSTUVWXYZ@
+EXTRA_PROGRAMS =
+
+EXEEXT = .bin
+
+print-programs:
+       @echo BEG: $(bin_PROGRAMS) :END
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+$MAKE print-programs >foo
+cat foo
+grep 'BEG: :END' foo
+$MAKE am__empty=X print-programs >foo
+cat foo
+grep 'BEG: X :END' foo
+
+# Test for another bug, where EXTRA_PROGRAMS was removed because it was empty.
+grep EXTRA_PROGRAMS Makefile.in
This page took 0.038056 seconds and 5 git commands to generate.