gcc-4.3.1/gcc/makefile contains one very long line, via substitution of
gtfiles.
This is "inconvenient" and "annoying" but works.
I have a patch for it. It has been seen to work on Cygwin, but not work on
Linux. Waiting for Autoconf >=2.60 (currently using 2.59) will make this
easier, so maybe just wait. I will see if I can make it work on a few
platforms, possibly by using per-language substitutions, without newlines.
(given that the list of languages is not hardcoded, not obviously trivial, but
maybe easy enough, gotta go read the code again..)

--- /src/gcc.orig/gcc/configure 2008-05-21 01:54:15.000000000 -0700
+++ /src/gcc/gcc/configure      2008-07-28 01:55:52.692206100 -0700
@@ -17026,13 +17026,31 @@
        all_languages="$all_languages $language"
        all_compilers="$all_compilers $compilers"
        all_outputs="$all_outputs $outputs"
-       all_gtfiles="$all_gtfiles [$subdir] $gtfiles"
+    # Three slashes: Later, via sed/AC_SUBST, first two will become one, third
escapes the newline.
+       all_gtfiles="$all_gtfiles"' \\\
+  '"[$subdir] $gtfiles"
 done

 # Pick up gtfiles for c
 gtfiles=
 . ${srcdir}/c-config-lang.in
-all_gtfiles="$all_gtfiles [c] $gtfiles"
+# Three slashes: Later, via sed/AC_SUBST, first two will become one, third
escapes the newline.
+all_gtfiles="$all_gtfiles"' \\\
+  '"[c] $gtfiles"
+
+#
+# Wrap every few elements in all_gtfiles, to keep line lengths
+# somewhat down, unless it has any quotes, which confuse things.
+#
+cat <<EOF > conftest.gt1
+$all_gtfiles
+EOF
+if grep [\"\'] conftest.gt1; then :; else
+  # Six slashes will immediately become three slashes. Later, via
sed/AC_SUBST, first two will become one, third escapes the newline.
+  # The seventh slash is for the newline the first time.
+  sed 's/\([^ \\][^ \\]* \)\{5\}/\0\\\\\\\n  /g' conftest.gt1 > conftest.gt2
+  all_gtfiles=`cat conftest.gt2`
+fi

 check_languages=
 for language in $all_selected_languages
--- /src/gcc.orig/gcc/configure.ac      2008-05-21 01:54:15.000000000 -0700
+++ /src/gcc/gcc/configure.ac   2008-07-28 01:55:43.270331100 -0700
@@ -3639,13 +3639,33 @@
        all_languages="$all_languages $language"
        all_compilers="$all_compilers $compilers"
        all_outputs="$all_outputs $outputs"
-       all_gtfiles="$all_gtfiles [[$subdir]] $gtfiles"
+    # Three slashes: Later, via sed/AC_SUBST, first two will become one, third
escapes the newline.
+       all_gtfiles="$all_gtfiles"' \\\
+  '"[[$subdir]] $gtfiles"
 done

 # Pick up gtfiles for c
 gtfiles=
 . ${srcdir}/c-config-lang.in
-all_gtfiles="$all_gtfiles [[c]] $gtfiles"
+# Three slashes: Later, via sed/AC_SUBST, first two will become one, third
escapes the newline.
+all_gtfiles="$all_gtfiles"' \\\
+  '"[[c]] $gtfiles"
+
+#
+# Wrap every few elements in all_gtfiles, to keep line lengths
+# somewhat down, unless it has any quotes, which confuse things.
+#
+cat <<EOF > conftest.gt1
+$all_gtfiles
+EOF
+changequote(,)dnl
+if grep [\"\'] conftest.gt1; then :; else
+  # Six slashes will immediately become three slashes. Later, via
sed/AC_SUBST, first two will become one, third escapes the newline.
+  # The seventh slash is for the newline the first time.
+  sed 's/\([^ \\][^ \\]* \)\{5\}/\0\\\\\\\n  /g' conftest.gt1 > conftest.gt2
+  all_gtfiles=`cat conftest.gt2`
+fi
+changequote([,])dnl

 check_languages=
 for language in $all_selected_languages


-- 
           Summary: gcc/makefile contains one very long line (over 2k)
           Product: gcc
           Version: 4.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jayk123 at hotmail dot com
 GCC build triplet: any
  GCC host triplet: any
GCC target triplet: any


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36994

Reply via email to