71 TRACE_HEADERS:= |
71 TRACE_HEADERS:= |
72 |
72 |
73 TRACE_SOURCE_LIST:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
73 TRACE_SOURCE_LIST:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
74 TRACE_VARIANT_SOURCE_LIST:=$(OUTPUTPATH)/$(VARIANTPLATFORM)/$(VARIANTTYPE)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
74 TRACE_VARIANT_SOURCE_LIST:=$(OUTPUTPATH)/$(VARIANTPLATFORM)/$(VARIANTTYPE)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
75 |
75 |
|
76 # The sourcelist_grouped_write macro allows us to construct a source list file, 10 objects at a time |
|
77 # to avoid limits on argument lengths and sizes on Windows. |
|
78 # $1 = list of source files |
|
79 # $2 = ">" or ">>" i.e. for creating the file. |
|
80 define sourcelist_grouped_write |
|
81 $(call startrule,sourcelist_write) \ |
|
82 $(if $1,echo -en '$(subst $(CHAR_SPACE),\n,$(strip $(wordlist 1,10,$1)))\n' $2 $$@,true;echo $1) \ |
|
83 $(call endrule,sourcelist_write) |
|
84 $(if $1,$(call sourcelist_grouped_write,$(wordlist 11,$(words $1),$1),>>),) |
|
85 endef |
|
86 |
76 # Write the list of sources for this variant to a file |
87 # Write the list of sources for this variant to a file |
77 # Make the combined sourcelist for this target depend on it |
88 # Make the combined sourcelist for this target depend on it |
|
89 # It's all to do with how make treats this file when it |
|
90 # does exist. We are forcing it evaluate the target rule here |
|
91 # even if the file is in place by making it PHONY. In other |
|
92 # words, this is forcing the variant source list to always |
|
93 # be written but later on we might not write to the combined |
|
94 # source list if it isn't going to change. |
78 define sourcelist_write |
95 define sourcelist_write |
79 $(TRACE_SOURCE_LIST): $(TRACE_VARIANT_SOURCE_LIST) |
96 $(TRACE_SOURCE_LIST): $(TRACE_VARIANT_SOURCE_LIST) |
80 |
97 |
81 .PHONY:: $(TRACE_VARIANT_SOURCE_LIST) |
98 .PHONY:: $(TRACE_VARIANT_SOURCE_LIST) |
82 |
99 |
83 $(TRACE_VARIANT_SOURCE_LIST): $(SOURCE) |
100 $(TRACE_VARIANT_SOURCE_LIST): $(SOURCE) |
84 $(call startrule,sourcelist_write) \ |
101 $(call sourcelist_grouped_write,$(SOURCE),>) |
85 echo -en '$$(subst $$(CHAR_SPACE),\n,$$(strip $$^))\n' > $$@ \ |
|
86 $(call endrule,sourcelist_write) |
|
87 |
102 |
88 endef |
103 endef |
89 |
104 |
90 $(eval $(sourcelist_write)) |
105 $(eval $(sourcelist_write)) |
91 $(eval $(call GenerateStandardCleanTarget,$(TRACE_VARIANT_SOURCE_LIST),,)) |
106 $(eval $(call GenerateStandardCleanTarget,$(TRACE_VARIANT_SOURCE_LIST),,)) |
92 |
107 |
93 |
108 |
94 $(if $(FLMDEBUG),$(info <debug>Trace Compiler sourcelist generation output: $(X)</debug>)) |
109 $(if $(FLMDEBUG),$(info <debug>Trace Compiler SOURCES: $(SOURCE)</debug>)) |
95 |
110 |
96 $(TRACE_MARKER) : $(SOURCE) |
111 $(TRACE_MARKER) : $(SOURCE) |
97 |
112 |
98 TRACE_HEADERS:=$(foreach SRC,$(SOURCE),$(TRACE_PATH)/$(basename $(notdir $(SRC)))Traces.h) |
113 TRACE_HEADERS:=$(foreach SRC,$(SOURCE),$(TRACE_PATH)/$(basename $(notdir $(SRC)))Traces.h) |
99 |
114 |
155 $(TRACE_MARKER) : $(PROJECT_META) $(TRACE_SOURCE_LIST) |
170 $(TRACE_MARKER) : $(PROJECT_META) $(TRACE_SOURCE_LIST) |
156 $(call startrule,tracecompile) \ |
171 $(call startrule,tracecompile) \ |
157 ( $(GNUCAT) $(TRACE_SOURCE_LIST); \ |
172 ( $(GNUCAT) $(TRACE_SOURCE_LIST); \ |
158 echo -en "*ENDOFSOURCEFILES*\n" ) | \ |
173 echo -en "*ENDOFSOURCEFILES*\n" ) | \ |
159 $(JAVA_COMMAND) $(TRACE_COMPILER_START) $(if $(FLMDEBUG),-d,) --uid=$(UID_TC) --project=$(TRACE_PRJNAME) --mmp=$(PROJECT_META) --traces=$(TRACE_PATH) && \ |
174 $(JAVA_COMMAND) $(TRACE_COMPILER_START) $(if $(FLMDEBUG),-d,) --uid=$(UID_TC) --project=$(TRACE_PRJNAME) --mmp=$(PROJECT_META) --traces=$(TRACE_PATH) && \ |
160 $(GNUMD5SUM) $(TRACE_SOURCE_LIST).new > $(TRACE_MARKER) 2>/dev/null && \ |
175 $(GNUMD5SUM) $(TRACE_SOURCE_LIST).new > $$@ 2>/dev/null && \ |
161 { $(GNUTOUCH) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER); \ |
176 { $(GNUTOUCH) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER); \ |
162 $(GNUCAT) $(TRACE_SOURCE_LIST) ; true ; } \ |
177 $(GNUCAT) $(TRACE_SOURCE_LIST) ; true ; } \ |
163 $(call endrule,tracecompile) |
178 $(call endrule,tracecompile) |
164 endef |
179 endef |
165 |
180 |
179 $(call startrule,tracecompile) \ |
194 $(call startrule,tracecompile) \ |
180 ( echo -en "$(OLDTC_TRACE_PRJNAME)\n$(PROJECT_META)\n"; \ |
195 ( echo -en "$(OLDTC_TRACE_PRJNAME)\n$(PROJECT_META)\n"; \ |
181 $(GNUCAT) $(TRACE_SOURCE_LIST); \ |
196 $(GNUCAT) $(TRACE_SOURCE_LIST); \ |
182 echo -en "*ENDOFSOURCEFILES*\n" ) | \ |
197 echo -en "*ENDOFSOURCEFILES*\n" ) | \ |
183 $(JAVA_COMMAND) $(TRACE_COMPILER_START) $(UID_TC) && \ |
198 $(JAVA_COMMAND) $(TRACE_COMPILER_START) $(UID_TC) && \ |
184 $(GNUMD5SUM) $(TRACE_SOURCE_LIST).new > $(TRACE_MARKER) && \ |
199 $(GNUMD5SUM) $(TRACE_SOURCE_LIST).new > $$@ && \ |
185 { $(GNUTOUCH) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER); \ |
200 { $(GNUTOUCH) $(TRACE_DICTIONARY) $(AUTOGEN_HEADER); \ |
186 $(GNUCAT) $(TRACE_SOURCE_LIST) ; true ; } \ |
201 $(GNUCAT) $(TRACE_SOURCE_LIST) ; true ; } \ |
187 $(call endrule,tracecompile) |
202 $(call endrule,tracecompile) |
188 endef |
203 endef |
189 |
204 |