]> sourceware.org Git - automake.git/commitdiff
* lib/Automake/VarDef.pm (append): Turn VAR_ASIS variables into
authorAlexandre Duret-Lutz <adl@gnu.org>
Sat, 24 Apr 2004 14:18:49 +0000 (14:18 +0000)
committerAlexandre Duret-Lutz <adl@gnu.org>
Sat, 24 Apr 2004 14:18:49 +0000 (14:18 +0000)
VAR_PRETTY variables to work around make implementation with
limited line length, such as OSF1/Tru64 make.
* tests/longline.test: New file.
* tests/Makefile.am (TESTS): Add it.
* tests/pluseq3.test, tests/pluseq8.test: Adjust.
Report from Simon Josefsson.

12 files changed:
ChangeLog
Makefile.in
NEWS
doc/Makefile.in
lib/Automake/Makefile.in
lib/Automake/VarDef.pm
lib/Makefile.in
tests/Makefile.am
tests/Makefile.in
tests/longline.test [new file with mode: 0755]
tests/pluseq3.test
tests/pluseq8.test

index b8e7815ed690afe1abdf36203faec4cf973fef46..acd88edeab96679c86124531464a519410a0d75b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2004-04-24  Alexandre Duret-Lutz  <adl@gnu.org>
 
+       * lib/Automake/VarDef.pm (append): Turn VAR_ASIS variables into
+       VAR_PRETTY variables to work around make implementation with
+       limited line length, such as OSF1/Tru64 make.
+       * tests/longline.test: New file.
+       * tests/Makefile.am (TESTS): Add it.
+       * tests/pluseq3.test, tests/pluseq8.test: Adjust.
+       Report from Simon Josefsson.
+
        * lib/am/tags.am (TAGS): Pass `.' to Exuberant Ctags if
        --etags-include is used but no other files are supplied, so it
        creates the TAGS file anyway.
index 46ea90991af1a600370ac82dc0b2ac29f91af9cb..35e70f7338d8209456d173cb6f6bd0018205cd31 100644 (file)
@@ -304,8 +304,10 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
+         empty_fix=.; \
        else \
          include_option=--include; \
+         empty_fix=; \
        fi; \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
@@ -319,9 +321,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          done | \
          $(AWK) '    { files[$$0] = 1; } \
               END { for (i in files) print i; }'`; \
-       test -z "$(ETAGS_ARGS)$$tags$$unique" \
-         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-            $$tags $$unique
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -z "$$unique" && unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
diff --git a/NEWS b/NEWS
index 0bc8c04f6cf28c39aa42788e073141f7897b6f03..e504bda07796fc3b4aee765deb60af29c901fe8a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -46,7 +46,21 @@ New in 1.8a:
 
 * Tar format can be chosen with the new options tar-v7, tar-ustar, and
   tar-pax.  The new option filename-length-max=99 helps diagnosing
-  filenames that are too long for tar-v7.
+  filenames that are too long for tar-v7.  (PR/414)
+
+* Variables aumented with `+=' are now automatically flattened (i.e.,
+  trailing backslashes removed) and then wrapped around 80 colummns
+  (adding trailing backslashes).  In previous versions, a long series
+  of
+     VAR += value1
+     VAR += value2
+     VAR += value3
+     ...
+  would result in a single-line definition of VAR that could possibly
+  exceed the maximum line length of some make implementations.
+
+  Non-augmented variables are still output as they are defined in
+  the Makefile.am.
 \f
 New in 1.8:
 
index d29cb3f6818c6a30cd8eaaf62edbf0742bf74eb0..fd86d67cc0147346bf4eac0b04e41c4e021f5dbe 100644 (file)
@@ -315,9 +315,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          done | \
          $(AWK) '    { files[$$0] = 1; } \
               END { for (i in files) print i; }'`; \
-       test -z "$(ETAGS_ARGS)$$tags$$unique" \
-         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-            $$tags $$unique
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -z "$$unique" && unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
index 8f69874cab0d86f82322286b9fb1928efa6bcde9..d36d0740712becab968e47ec1ce26cc30099195f 100644 (file)
@@ -318,8 +318,10 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
+         empty_fix=.; \
        else \
          include_option=--include; \
+         empty_fix=; \
        fi; \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
@@ -333,9 +335,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          done | \
          $(AWK) '    { files[$$0] = 1; } \
               END { for (i in files) print i; }'`; \
-       test -z "$(ETAGS_ARGS)$$tags$$unique" \
-         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-            $$tags $$unique
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -z "$$unique" && unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
index ea0044408da2e785a35008983df1a279e00a63d3..78ed30ea0c94f5cbcb7c7376130c87925abbe609 100644 (file)
@@ -189,6 +189,9 @@ sub append ($$$)
       $val .= ' ';
     }
   $self->{'value'} = $val . $value;
+  # Turn ASIS appended variables into PRETTY variables.  This is to
+  # cope with `make' implementation that cannot read very long lines.
+  $self->{'pretty'} = VAR_PRETTY if $self->{'pretty'} == VAR_ASIS;
 }
 
 =item C<$def-E<gt>value>
index 516eb861fe193747c4a37e24bc3ea5811e6c05dc..1bc991bc5574aba71fa455c1aad82fd7cebc42ae 100644 (file)
@@ -294,8 +294,10 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
+         empty_fix=.; \
        else \
          include_option=--include; \
+         empty_fix=; \
        fi; \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
@@ -309,9 +311,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
          done | \
          $(AWK) '    { files[$$0] = 1; } \
               END { for (i in files) print i; }'`; \
-       test -z "$(ETAGS_ARGS)$$tags$$unique" \
-         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-            $$tags $$unique
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -z "$$unique" && unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
index 6e1f64112c58ae427e9aed57fddd7028e000328a..56402194e967f55f36e4674c9cb0c30028ce0738 100644 (file)
@@ -306,6 +306,7 @@ lisp5.test \
 lisp6.test \
 listval.test \
 location.test \
+longline.test \
 ltcond.test \
 ltcond2.test \
 ltconv.test \
index 2eaf4db4ef4e317770c8b872852aa1ce92fb3b92..36f41c7699ee62188d7d1a91bb5fbca73d78250e 100644 (file)
@@ -423,6 +423,7 @@ lisp5.test \
 lisp6.test \
 listval.test \
 location.test \
+longline.test \
 ltcond.test \
 ltcond2.test \
 ltconv.test \
diff --git a/tests/longline.test b/tests/longline.test
new file mode 100755 (executable)
index 0000000..dc435fb
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2004  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.
+
+# Long lines of += should be wrapped.
+# Report from Simon Josefsson.
+
+. ./defs || exit 1
+
+set -e
+
+(echo DUMMY = some_long_filename_1;
+for i in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20;
+do
+  echo DUMMY += some_long_filename_$i
+done) > Makefile.am
+
+$ACLOCAL
+$AUTOMAKE
+test 80 -ge `grep DUMMY Makefile.in | wc -c`
index 2a9eee525f4040db16f162a83097bed9eb44533f..85f31ca752f2419e0ac576de0c6956d0baee3156 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1998, 1999, 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 1998, 1999, 2001, 2002, 2004  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -27,7 +27,7 @@ echo 'AM_CONDITIONAL(CHECK, true)' >> configure.in
 cat > Makefile.am << 'END'
 
 if CHECK
-data_DATA = zar
+data_DATA = zarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
 else
 data_DATA =
 endif
@@ -50,8 +50,8 @@ set -e
 $ACLOCAL || exit 1
 $AUTOMAKE
 
-grep '^@CHECK_TRUE@data_DATA = zar \\$' Makefile.in
-grep '^@CHECK_TRUE@ doz$' Makefile.in
+grep '^@CHECK_TRUE@data_DATA = zarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr \\$' Makefile.in
+grep '^@CHECK_TRUE@    doz$' Makefile.in
 
 grep '^@CHECK_FALSE@data_DATA = dog$' Makefile.in
 
index 8475ee49b2604fea5bb1e8261efd3864d479fafa..12c910df4a3452e8f33f0162c91b5ca5895b06ea 100755 (executable)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 1999, 2001, 2002  Free Software Foundation, Inc.
+# Copyright (C) 1999, 2001, 2002, 2004  Free Software Foundation, Inc.
 #
 # This file is part of GNU Automake.
 #
@@ -32,7 +32,7 @@ END
 $ACLOCAL || exit 1
 $AUTOMAKE || exit 1
 
-sed -n -e '/^VAR =.*\\$/ {
+sed -n -e '/^VAR =/ {
    :loop
     p
     n
This page took 0.073621 seconds and 5 git commands to generate.