14 # Run Trace Compiler on source files to generate trace headers and decode files |
14 # Run Trace Compiler on source files to generate trace headers and decode files |
15 |
15 |
16 # Expected inputs: |
16 # Expected inputs: |
17 # TARGETEXT |
17 # TARGETEXT |
18 |
18 |
|
19 # Set macro for TRACES keyword |
|
20 ifneq ($(TRACES),) |
|
21 CDEFS:=$(CDEFS) OST_TRACE_COMPILER_IN_USE |
|
22 $(if $(FLMDEBUG),$(info <debug>CDEFS=$(CDEFS)</debug>)) |
|
23 endif |
|
24 |
19 # Set project name as <mmp_name> |
25 # Set project name as <mmp_name> |
20 TRACE_PRJNAME:=$(basename $(notdir $(PROJECT_META))) |
26 TRACE_PRJNAME:=$(basename $(notdir $(PROJECT_META))) |
21 OLDTC_TRACE_PRJNAME:=$(TRACE_PRJNAME) |
27 OLDTC_TRACE_PRJNAME:=$(TRACE_PRJNAME) |
22 TRACE_RELEASABLE_ID:=$(TARGET)_$(TARGETEXT) |
28 TRACE_RELEASABLE_ID:=$(TARGET)_$(TARGETEXT) |
23 |
29 |
26 endef |
32 endef |
27 |
33 |
28 $(if $(FLMDEBUG),$(info <debug>INCLUDES=$(USERINCLUDE) $(SYSTEMINCLUDE)</debug>)) |
34 $(if $(FLMDEBUG),$(info <debug>INCLUDES=$(USERINCLUDE) $(SYSTEMINCLUDE)</debug>)) |
29 $(if $(FLMDEBUG),$(info <debug>TARGET=$(TARGET) TARGETEXT=$(TARGETEXT)</debug>)) |
35 $(if $(FLMDEBUG),$(info <debug>TARGET=$(TARGET) TARGETEXT=$(TARGETEXT)</debug>)) |
30 |
36 |
31 # Find out TRACE_PATH by looking for the trace folder in SYSTEMINCLUDE and USERINCLUDES |
37 # Find out TRACE_PATH by looking for the trace folder in SYSTEMINCLUDE and USERINCLUDES |
32 # traces/traces_<target_name>_<target_extension> |
38 # traces/<target_name>_<target_extension> |
33 TRACE_PATH:=$(call get_trace_path,/traces/traces_$(TRACE_RELEASABLE_ID)) |
39 TRACE_PATH:=$(call get_trace_path,/traces/$(TRACE_RELEASABLE_ID)) |
34 ifneq ($(TRACE_PATH),) |
40 ifneq ($(TRACE_PATH),) |
35 TRACE_PRJNAME:=$(TRACE_RELEASABLE_ID) |
41 TRACE_PRJNAME:=$(TRACE_RELEASABLE_ID) |
36 else # obsolete forms for compatibility |
42 else # obsolete forms for compatibility |
37 # traces_<target_name>_<target_ext> |
43 # traces_<target_name>_<target_ext> |
38 TRACE_PATH:=$(call get_trace_path,/traces_$(TARGET)_$(TARGETEXT)) |
44 TRACE_PATH:=$(call get_trace_path,/traces_$(TARGET)_$(TARGETEXT)) |
61 |
67 |
62 |
68 |
63 # initialise (so what output will be correct if we don't actually run the TC) |
69 # initialise (so what output will be correct if we don't actually run the TC) |
64 TRACE_DICTIONARY:= |
70 TRACE_DICTIONARY:= |
65 AUTOGEN_HEADER:= |
71 AUTOGEN_HEADER:= |
66 $(if $(FLMDEBUG),$(info <debug>TRACE_PATH='$(TRACE_PATH)' TRACE_RELEASABLE_ID='$(TRACE_RELEASABLE_ID)'</debug>)) |
72 $(if $(FLMDEBUG),$(info <debug>TRACE_PATH='$(TRACE_PATH)' TRACE_RELEASABLE_ID='$(TRACE_RELEASABLE_ID)'</debug>)) |
67 |
73 |
68 # Run trace compiler only if TRACE_PATH exists |
74 # Run trace compiler only if TRACE_PATH exists |
69 ifneq ($(TRACE_PATH),) |
75 ifneq ($(TRACE_PATH),) |
70 TRACE_MARKER:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).done |
76 TRACE_MARKER:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).done |
|
77 TRACE_THISCOMPONENT_ALLRULE:=$(call sanitise,$(COMPONENT_META))_alltracedone |
71 TRACE_HEADERS:= |
78 TRACE_HEADERS:= |
72 |
79 |
73 TRACE_SOURCE_LIST:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
80 TRACE_SOURCE_LIST:=$(TRACE_MARKER_PATH)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
|
81 $(if $(FLMDEBUG),$(info <debug>TRACE_SOURCE_LIST=$(TRACE_SOURCE_LIST)</debug>)) |
74 TRACE_VARIANT_SOURCE_LIST:=$(OUTPUTPATH)/$(VARIANTPLATFORM)/$(VARIANTTYPE)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
82 TRACE_VARIANT_SOURCE_LIST:=$(OUTPUTPATH)/$(VARIANTPLATFORM)/$(VARIANTTYPE)/tracecompile_$(TRACE_RELEASABLE_ID)_$(UID_TC).sourcelist |
|
83 $(if $(FLMDEBUG),$(info <debug>TRACE_VARIANT_SOURCE_LIST=$(TRACE_VARIANT_SOURCE_LIST)</debug>)) |
75 |
84 |
76 # The sourcelist_grouped_write macro allows us to construct a source list file, 10 objects at a time |
85 # 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. |
86 # to avoid limits on argument lengths and sizes on Windows. |
78 # $1 = list of source files |
87 # $1 = list of source files |
79 # $2 = ">" or ">>" i.e. for creating the file. |
88 # $2 = ">" or ">>" i.e. for creating the file. |
106 $(eval $(call GenerateStandardCleanTarget,$(TRACE_VARIANT_SOURCE_LIST),,)) |
115 $(eval $(call GenerateStandardCleanTarget,$(TRACE_VARIANT_SOURCE_LIST),,)) |
107 |
116 |
108 |
117 |
109 $(if $(FLMDEBUG),$(info <debug>Trace Compiler SOURCES: $(SOURCE)</debug>)) |
118 $(if $(FLMDEBUG),$(info <debug>Trace Compiler SOURCES: $(SOURCE)</debug>)) |
110 |
119 |
|
120 |
|
121 .PHONY:: $(TRACE_THISCOMPONENT_ALLRULE) |
|
122 |
|
123 $(TRACE_THISCOMPONENT_ALLRULE):: $(TRACE_MARKER) |
|
124 |
111 $(TRACE_MARKER) : $(SOURCE) |
125 $(TRACE_MARKER) : $(SOURCE) |
112 |
126 |
113 TRACE_HEADERS:=$(foreach SRC,$(SOURCE),$(TRACE_PATH)/$(basename $(notdir $(SRC)))Traces.h) |
127 TRACE_HEADERS:=$(foreach SRC,$(SOURCE),$(TRACE_PATH)/$(basename $(notdir $(SRC)))Traces.h) |
114 |
128 |
115 $(TRACE_HEADERS): $(TRACE_MARKER) |
129 $(TRACE_HEADERS): $(TRACE_MARKER) |
116 |
130 |
117 ifeq ($(GUARD_$(call sanitise,$(TRACE_MARKER))),) |
131 TRACE_GUARD:=GUARD_$(call sanitise,$(TRACE_MARKER)) |
118 GUARD_$(call sanitise,$(TRACE_MARKER)):=1 |
132 $(if $(FLMDEBUG),$(info <debug>TRACE GUARD for '$(TRACE_RELEASABLE_ID)' is: $(TRACE_GUARD)=$($(TRACE_GUARD))</debug>)) |
119 |
133 |
120 $(if $(FLMDEBUG),$(info <debug>PAST MARKER='$(TRACE_RELEASABLE_ID)'</debug>)) |
134 ifeq ($($(TRACE_GUARD)),) |
|
135 $(TRACE_GUARD):=1 |
|
136 |
|
137 $(if $(FLMDEBUG),$(info <debug>PAST GUARD (unique trace) for '$(TRACE_RELEASABLE_ID)'</debug>)) |
121 # The trace compiler likes to change . into _ so we must do the same in the case of mmps with a name like |
138 # The trace compiler likes to change . into _ so we must do the same in the case of mmps with a name like |
122 # fred.prd.mmp we want fred_prd |
139 # fred.prd.mmp we want fred_prd |
123 TRACE_PRJNAME_SANITISED:=$(subst .,_,$(TRACE_PRJNAME)) |
140 TRACE_PRJNAME_SANITISED:=$(subst .,_,$(TRACE_PRJNAME)) |
124 OLDTC_TRACE_PRJNAME_SANITISED:=$(subst .,_,$(OLDTC_TRACE_PRJNAME)) |
141 OLDTC_TRACE_PRJNAME_SANITISED:=$(subst .,_,$(OLDTC_TRACE_PRJNAME)) |
125 |
142 |