This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/36994] New: gcc/makefile contains one very long line (over 2k)
- From: "jayk123 at hotmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Aug 2008 08:23:53 -0000
- Subject: [Bug other/36994] New: gcc/makefile contains one very long line (over 2k)
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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