1AINCLUDE_DIRS	 = $(LINCLUDES)	   $(EINCLUDES)     $(GINCLUDES)
2ALIBRARY_DIRS	 = $(LLIBRARY_DIRS) $(ELIBRARY_DIRS) $(GLIBRARY_DIRS)
3ALIBRARIES		 = $(LLIBRARIES)	   $(ELIBRARIES)    $(GLIBRARIES)
4
5# ISDBG_LIBS is in a location that cannot be searched by vpath
6ALIBRARIES_DEPEND = $(filter-out $(ISDBG_LIBS),$(ALIBRARIES))
7
8# Convert Unix and Windows format paths
9AINCLUDE_DIRS_M	:= $(if $(filter-out 	,$(AINCLUDE_DIRS)),$(call cygpathm_multi,$(AINCLUDE_DIRS)))
10ALIBRARY_DIRS_M	:= $(if $(filter-out 	,$(ALIBRARY_DIRS)),$(call cygpathm_multi,$(ALIBRARY_DIRS)))
11ALIBRARY_DIRS_U	:= $(if $(filter-out 	,$(ALIBRARY_DIRS)),$(call cygpathu_multi,$(ALIBRARY_DIRS)))
12
13#
14# VPATH does not support the path name included white space like "C:/Program Files"
15#	Please, be careful !!!
16#
17ifdef	MSYSTEM
18ALIBVPATH		 = $(subst \:,\ ,$(subst $(SPACE),:,$(ALIBRARY_DIRS)))
19else
20ALIBVPATH		 = $(foreach DIR,$(ALIBRARY_DIRS_U),$(call decode_specialchar,$(DIR)))
21endif
22
23vpath	%.a		$(ALIBVPATH)
24vpath	%.o		$(ALIBVPATH)
25
26INCLUDE_DIRS	 = $(call decode_specialchar,$(foreach DIR,$(AINCLUDE_DIRS_M),-I'$(DIR)'))
27LIBRARY_DIRS	 = $(call decode_specialchar,$(foreach DIR,$(ALIBRARY_DIRS_M),-L'$(DIR)'))
28LIBRARIES		 = $(subst \ -l,\ ,$(addprefix -l,$(ALIBRARIES)))
29INCLUDES		 = -gccinc -I. $(INCLUDE_DIRS)
30
31#
32# Generate dependency files
33#
34
35ifdef	MSYSTEM
36DEPEND_RULE		 = $(QUOTE)/ARM_EABI_Support/d;s/\\x0D//g;s/\\([^ ]\\)\\\\\([^ ]\\)/\\1\\/\\2/g;$(QUOTE)
37else
38DEPEND_RULE		 = $(QUOTE)/ARM_EABI_Support/d;s/\\x0D//g;s!\\([A-Za-z]\\):[\\\\\/]!$(CYGPATH_MOUNTPOINT)\\/\\l\\1\\/!g;s/\\([^ ]\\)\\\\\([^ ]\\)/\\1\\/\\2/g;$(QUOTE)
39endif
40
41ifneq ($(MAKEFLAGS_ALWAYS),TRUE)
42define MOVE_SRC_DEPEND
43	$(SED) -e $(DEPEND_RULE) $(dir $@)/$(*F).d > $(DEPENDDIR)/$(*F).d && $(RM) $(dir $@)/$(*F).d
44endef
45else
46define MOVE_SRC_DEPEND
47$(EMPTY)
48endef
49endif
50
51
52#
53# Precompiled header
54#
55
56#----------------------------------------
57# if USE_STD_PCHDR == TRUE
58ifeq ($(USE_STD_PCHDR),TRUE)
59
60.PHONY:	sdk-mch
61
62PCHDR_C_DEFS	 = $(sort $(filter -DSDK_%,$(CCFLAGS)))
63PCHDR_C_NODEF	 = $(filter-out -D%,$(CCFLAGS))
64PCHDR_C_NAME	 = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_C_DEFS))))
65PCHDR_C_BASE	 = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_C_NAME).C
66PCHDR_C_MCH		 = $(PCHDR_C_BASE).mch
67PCHDR_C_DEPEND	 = $(PCHDR_C_BASE).depend
68PCHDR_CCFLAGS	 = -include $(call empath,$(PCHDR_C_MCH))
69CCFLAGS_NOLDEF	 = $(PCHDR_C_DEFS) $(PCHDR_C_NODEF)
70
71PCHDR_CXX_DEFS	 = $(sort $(filter -DSDK_%,$(CXXFLAGS)))
72PCHDR_CXX_NODEF	 = $(filter-out -D%,$(CXXFLAGS))
73PCHDR_CXX_NAME	 = $(subst $(SPACE),,$(subst -DSDK_,.,$(subst =,-,$(PCHDR_CXX_DEFS))))
74PCHDR_CXX_BASE	 = $(PCHDR_CACHE)/$(notdir $(PCHDR_SRC))$(PCHDR_CXX_NAME).CXX
75PCHDR_CXX_MCH	 = $(PCHDR_CXX_BASE).mch
76PCHDR_CXX_DEPEND = $(PCHDR_CXX_BASE).depend
77PCHDR_CXXFLAGS	 = -include $(call empath,$(PCHDR_CXX_MCH))
78CXXFLAGS_NOLDEF	 = $(PCHDR_CXX_DEFS) $(PCHDR_CXX_NODEF)
79
80
81#----------------------------------------
82# if MAKECMDGOALS contains build_and_install or sdk-mch
83ifneq	($(filter build_and_install sdk-mch,$(MAKECMDGOALS)),)
84
85SYSTEM_GINCLUDES_M	 = $(if $(filter-out 	,$(SYSTEM_GINCLUDES)),$(call cygpathm_multi,$(SYSTEM_GINCLUDES)))
86SYSTEM_INCLUDE_DIRS	 = $(call decode_specialchar,$(foreach DIR,$(SYSTEM_GINCLUDES_M),-I'$(DIR)'))
87SYSTEM_INCLUDES		 = -gccinc -I. $(SYSTEM_INCLUDE_DIRS)
88
89
90## $(call BUILD_PCHDR,$(MCH))
91ifdef SILENT
92define BUILD_PCHDR_ECHO
93	echo $(TWLSDK_MSG_MAKE_MCH) $(1)
94endef
95else
96define BUILD_PCHDR_ECHO
97	true
98endef
99endif
100
101.DELETE_ON_ERROR: $(PCHDR_CACHE)/%_lock
102
103## $(call BUILD_PCHDR,$(BASE),$(CCFLAGS))
104# $(BASE) must be a full path
105define BUILD_PCHDR
106	$(call BUILD_PCHDR_ECHO,$(notdir $(1).mch)) &&	\
107	$(CP) $(PCHDR_SRC) $(1).h &&			\
108	($(CD) $(dir $(1).mch) &&				\
109	 $(RM) $(1).mch	&&						\
110	 $(RM) $(1).depend &&					\
111	 $(CC) $(subst -include ,-DSDK_PCHDR_DUMMY_,$(2)) $(SYSTEM_INCLUDES) -MD -precompile $(notdir $(1).m) $(call empath,$(1).h)) && \
112	 $(MV) $(1).m $(1).mch &&				\
113	(($(ECHO) $(1).mch: $(PCHDR_SRC) \\; $(SED) -e '1d' -e $(DEPEND_RULE) $(1).d) > $(1).dep \
114	  && $(MV) $(1).dep $(1).depend			\
115	  && $(RM) $(1).d $(1).h)
116endef
117
118## $(call J_SAFE_BUILD_PCHDR,$(BASE),$(CCFLAGS),CCFLAGS)
119define J_SAFE_BUILD_PCHDR
120	trap 'rm -rf $(1)_lock 2> /dev/null ; exit 1' 1 2 3 15; \
121	until mkdir $(1)_lock 2> /dev/null; do					\
122		sleep 1;											\
123	done;													\
124	$(REMAKE) sdk-mch $(3)="$(subst ",\",$(2))" $(4)=TRUE;	\
125	rmdir $(1)_lock;										\
126	trap 1 2 3 15
127endef
128
129
130# precompiled header for C
131
132#----------------------------------------
133# if OBJS_CC != ""
134ifneq	($(strip $(OBJS_CC)),)
135
136-include $(PCHDR_C_DEPEND)
137
138$(PCHDR_C_DEPEND): $(PCHDR_C_MCH)
139sdk-mch: $(PCHDR_C_MCH)
140
141$(PCHDR_C_MCH):
142ifneq	($(filter sdk-mch,$(MAKECMDGOALS)),)
143ifeq	($(PCHDR_C_FLAG),TRUE)
144	$(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF))
145endif
146else
147	+$(if $(findstring j,$(MAKEFLAGS)),														\
148		$(call J_SAFE_BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF),CCFLAGS,PCHDR_C_FLAG),	\
149		$(call BUILD_PCHDR,$(PCHDR_C_BASE),$(CCFLAGS_NOLDEF)) )
150endif
151
152endif
153# endif OBJS_CC != ""
154#----------------------------------------
155
156
157# precompiled header for C++
158
159#----------------------------------------
160# if OBJS_CXX != ""
161ifneq	($(strip $(OBJS_CXX)),)
162
163-include $(PCHDR_CXX_DEPEND)
164
165$(PCHDR_CXX_DEPEND): $(PCHDR_CXX_MCH)
166sdk-mch: $(PCHDR_CXX_MCH)
167
168$(PCHDR_CXX_MCH):
169ifneq	($(filter sdk-mch,$(MAKECMDGOALS)),)
170ifeq	($(PCHDR_CXX_FLAG),TRUE)
171	$(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF))
172endif
173else
174	+$(if $(findstring j,$(MAKEFLAGS)),																\
175		$(call J_SAFE_BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF),CXXFLAGS,PCHDR_CXX_FLAG),	\
176		$(call BUILD_PCHDR,$(PCHDR_CXX_BASE),$(CXXFLAGS_NOLDEF)) )
177endif
178
179endif
180# endif OBJS_CXX != ""
181#----------------------------------------
182
183endif
184# endif MAKECMDGOALS contain build_and_install or sdk-mch
185#----------------------------------------
186
187endif
188# endif USE_STD_PCHDR == TRUE
189#----------------------------------------
190
191
192
193#----------------------------------------------------------------------------
194# Get SDK_CW_BUILD_VERSION SDK_CW_BUILD_NUMBER
195#
196# IRIS	V0.2 Hotfix 1
197#	SDK_CW_BUILD_VERSION_CC=2.0
198#	SDK_CW_BUILD_VERSION_LD=2.0
199#	SDK_CW_BUILD_NUMBER_CC=0038
200#	SDK_CW_BUILD_NUMBER_LD=0050
201#
202# NITRO V0.3
203#	SDK_CW_BUILD_NUMBER_CC=0038
204#	SDK_CW_BUILD_NUMBER_LD=0056
205#
206# NITRO V0.4.1
207#	SDK_CW_BUILD_NUMBER_CC=0043
208#	SDK_CW_BUILD_NUMBER_LD=0057
209#
210# NITRO V0.5
211#	SDK_CW_BUILD_NUMBER_CC=0046
212#	SDK_CW_BUILD_NUMBER_LD=0058
213#
214# NITRO V0.5 + HotFix1
215#	SDK_CW_BUILD_NUMBER_CC=0049
216#	SDK_CW_BUILD_NUMBER_LD=0061
217#
218# NITRO V0.6
219#	SDK_CW_BUILD_NUMBER_CC=0050
220#	SDK_CW_BUILD_NUMBER_LD=0062
221#
222# NITRO V0.6.1
223#	SDK_CW_BUILD_NUMBER_CC=0050
224#	SDK_CW_BUILD_NUMBER_LD=0063
225#
226# NITRO V0.7
227#	SDK_CW_BUILD_NUMBER_CC=0050
228#	SDK_CW_BUILD_NUMBER_LD=0063
229#
230# NITRO V1.0
231#	SDK_CW_BUILD_NUMBER_CC=0056
232#	SDK_CW_BUILD_NUMBER_LD=0067
233#
234# NITRO V1.0.2
235#	SDK_CW_BUILD_NUMBER_CC=0068
236#	SDK_CW_BUILD_NUMBER_LD=0068
237#
238# NITRO V1.2
239#	SDK_CW_BUILD_NUMBER_CC=0073
240#	SDK_CW_BUILD_NUMBER_LD=0072
241#
242# NITRO V1.2SP1
243#	SDK_CW_BUILD_NUMBER_CC=0074
244#	SDK_CW_BUILD_NUMBER_LD=0072
245#
246# NITRO V1.2SP2+patch
247#	SDK_CW_BUILD_NUMBER_CC=0080
248#	SDK_CW_BUILD_NUMBER_LD=0074
249#
250# NITRO V1.2SP3
251#	SDK_CW_BUILD_NUMBER_CC=0084
252#	SDK_CW_BUILD_NUMBER_LD=0077
253#
254# NITRO V1.2SP4
255#	SDK_CW_BUILD_NUMBER_CC=0087
256#	SDK_CW_BUILD_NUMBER_LD=7702
257#
258# NITRO V2.0beta
259#	SDK_CW_BUILD_VERSION_CC=3.0
260#	SDK_CW_BUILD_VERSION_LD=2.0
261#	SDK_CW_BUILD_NUMBER_CC=0107
262#	SDK_CW_BUILD_NUMBER_LD=0077
263#
264# NITRO V2.0
265#	SDK_CW_BUILD_NUMBER_CC=0114
266#	SDK_CW_BUILD_NUMBER_LD=0082
267#
268
269
270ifneq	($(findstring $(MAKECMDGOALS),build_and_install make-verinfo clean-verinfo),)
271
272.PHONY: make-verinfo
273make-verinfo: $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD)
274
275$(SDK_VERINFO_CW_CC): $(MWCC)
276ifdef SILENT
277	echo $(TWLSDK_MSG_VERSION) $@
278endif
279	@$(MWCC) -version | \
280	 $(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,4\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_CC=\1\nSDK_CW_BUILD_NUMBER_CC=\3\nSDK_CW_BUILD_NUMBER2_CC=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_CC)
281	@$(TOUCH) -r $(MWCC) $(SDK_VERINFO_CW_CC)
282
283$(SDK_VERINFO_CW_LD): $(MWLD)
284ifdef SILENT
285	echo $(TWLSDK_MSG_VERSION) $@
286endif
287	@$(MWLD) -version | \
288	 $(SED) -e $(QUOTE)/^Version /!d;s/\(build [0-9]\{2,4\}\) /\100 /;s/^Version \([0-9.]*\).*build \([0-9]*\).*(build \([0-9]*\)).*/SDK_CW_BUILD_VERSION_LD=\1\nSDK_CW_BUILD_NUMBER_LD=\3\nSDK_CW_BUILD_NUMBER2_LD=\2/i;$(QUOTE) >$(SDK_VERINFO_CW_LD)
289	@$(TOUCH) -r $(MWLD) $(SDK_VERINFO_CW_LD)
290
291endif
292
293.PHONY: clean-verinfo
294clean-verinfo:
295	@$(RM) $(SDK_VERINFO_CW_CC) $(SDK_VERINFO_CW_LD)
296
297
298