From a4e4a2d60e11be4b4a5184f5187f35da11162e0b Mon Sep 17 00:00:00 2001 From: Ralf Wildenhues Date: Mon, 14 Jul 2008 18:26:45 +0000 Subject: [PATCH] Makefile.in (write_entries_to_file, [...]): New macros. gcc/ * Makefile.in (write_entries_to_file, write_entries_to_file_split): New macros. (s-gtyp-input): Use them to write tmp-gi.list. (echo_to_gi.list): Remove. From-SVN: r137791 --- gcc/ChangeLog | 7 +++++++ gcc/Makefile.in | 26 +++++++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c619f7ec166..f7924f4514e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-07-14 Ralf Wildenhues + + * Makefile.in (write_entries_to_file, write_entries_to_file_split): + New macros. + (s-gtyp-input): Use them to write tmp-gi.list. + (echo_to_gi.list): Remove. + 2008-07-14 Richard Guenther * tree-ssa-sccvn.c (pre_info): Remove. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index a247f91251e..856dbc30c0a 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -257,6 +257,22 @@ build_file_translate = @build_file_translate@ # Locate mkinstalldirs. mkinstalldirs=$(SHELL) $(srcdir)/../mkinstalldirs +# write_entries_to_file - writes each entry in a list +# to the specified file. Entries are written in chunks of +# $(write_entries_to_file_split) to accomodate systems with +# severe command-line-length limitations. +# Parameters: +# $(1): variable containing entries to iterate over +# $(2): output file +write_entries_to_file_split = 50 +write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \ + $(foreach range, \ + $(shell i=1; while test $$i -le $(words $(1)); do \ + echo $$i; i=`expr $$i + $(write_entries_to_file_split)`; done), \ + $(shell echo $(wordlist $(range), \ + $(shell expr $(range) + $(write_entries_to_file_split) - 1), $(1)) \ + | tr ' ' '\n' >> $(2))) + # -------- # UNSORTED # -------- @@ -3196,20 +3212,12 @@ ALL_GTFILES_H := $(sort $(GTFILES_H) $(GTFILES_LANG_H)) # $(GTFILES) may be too long to put on a command line, so we have to # write it out to a file (taking care not to do that in a way that # overflows a command line!) and then have gengtype read the file in. -# The extra blank line in this definition is crucial: it makes the -# $(foreach ...) below expand to many lines instead of one. - -define echo_to_gi.list -echo '$(gtyp)' >> tmp-gi.list - -endef $(ALL_GTFILES_H) gtype-desc.c gtype-desc.h : s-gtype ; @true gtyp-input.list: s-gtyp-input ; @true s-gtyp-input: Makefile - rm -f tmp-gi.list - $(foreach gtyp, $(GTFILES), $(echo_to_gi.list)) + @: $(call write_entries_to_file,$(GTFILES),tmp-gi.list) $(SHELL) $(srcdir)/../move-if-change tmp-gi.list gtyp-input.list $(STAMP) s-gtyp-input -- 2.30.2