sbsv2/raptor/lib/flm/tracecompiler.mk
branchfix
changeset 566 d242e2b48221
parent 564 ee6b33f2ef0e
child 567 d420c77a7248
equal deleted inserted replaced
565:8f040b989279 566:d242e2b48221
    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