]> rtime.felk.cvut.cz Git - arc.git/blob - scripts/rules.mk.orig
Regenerated examples for TMS570.
[arc.git] / scripts / rules.mk.orig
1 \r
2 \r
3 ###############################################################################\r
4 # BUILD SETTINGS                                                              #\r
5 ###############################################################################\r
6 \r
7 # Board settings\r
8 include $(ROOTDIR)/boards/$(BOARDDIR)/build_config.mk\r
9 \r
10 # Project settings\r
11 -include ../build_config.mk\r
12 \r
13 # Perform build system version check\r
14 include $(ROOTDIR)/scripts/version_check.mk\r
15 \r
16 COMPILER?=gcc\r
17 ifeq (${COMPILER},gcc)\r
18 # Assume that the board have set DEFAULT_CROSS_COMPILE\r
19 CROSS_COMPILE?=${DEFAULT_CROSS_COMPILE}\r
20 endif\r
21 \r
22 ifeq (${COMPILER},cw)\r
23 CW_COMPILE?=${DEFAULT_CW_COMPILE}\r
24 endif\r
25 \r
26 # Check cross compiler setting against default from board config\r
27 ifeq (${COMPILER},cw)\r
28 ifneq (${CW_COMPILE},${DEFAULT_CW_COMPILE})\r
29 ${warning Not using default cross compiler for architecture.}\r
30 ${warning CROSS_COMPILE:         ${CW_COMPILE} [${origin CW_COMPILE}]}\r
31 ${warning DEFAULT_CROSS_COMPILE: ${DEFAULT_CW_COMPILE} [${origin DEFAULT_CW_COMPILE}]}\r
32 endif\r
33 else\r
34 ifneq (${DEFAULT_CROSS_COMPILE},)\r
35 ifneq (${CROSS_COMPILE},${DEFAULT_CROSS_COMPILE})\r
36 ${warning Not using default cross compiler for architecture.}\r
37 ${warning CROSS_COMPILE:         ${CROSS_COMPILE} [${origin CROSS_COMPILE}]}\r
38 ${warning DEFAULT_CROSS_COMPILE: ${DEFAULT_CROSS_COMPILE} [${origin DEFAULT_CROSS_COMPILE}]}\r
39 endif\r
40 endif\r
41 endif\r
42 \r
43 ###############################################################################\r
44 # MODULE CONFIGURATION                                                        #\r
45 ###############################################################################\r
46 \r
47 # Some useful vars\r
48 CFG_ARCH_$(ARCH):=y\r
49 RELDIR := $(subst $(TOPDIR)/,,$(CURDIR))\r
50 target := $(subst /,_,$(SUBDIR))\r
51 goal=$@\r
52 \r
53 define MOD_AVAIL_template\r
54         MOD_$(1)=y\r
55 endef\r
56 \r
57 define MOD_USE_template\r
58         USE_$(1)=y\r
59         def-y += USE_$(1)\r
60 endef\r
61 \r
62 define CFG_template\r
63         CFG_$(1)=y\r
64         def-y += CFG_$(1)\r
65 endef\r
66 \r
67 $(foreach mod,$(MOD_AVAIL),$(eval $(call MOD_AVAIL_template,${mod})))\r
68 $(foreach mod,$(sort $(MOD_USE)),$(eval $(call MOD_USE_template,${mod})))\r
69 $(foreach mod,$(CFG),$(eval $(call CFG_template,${mod})))\r
70 #def-y += $(ARCH) $(ARCH_FAM) $(ARCH_MCU) \r
71 \r
72 # Select console / debug\r
73 $(foreach mod,$(SELECT_OS_CONSOLE),$(eval $(call MOD_USE_template,${mod})))\r
74 $(foreach mod,$(SELECT_CONSOLE),$(eval $(call MOD_USE_template,${mod})))\r
75 \r
76 def-y += SELECT_OS_CONSOLE=$(if $(SELECT_OS_CONSOLE),$(SELECT_OS_CONSOLE),TTY_NONE)\r
77 def-y += SELECT_CONSOLE=$(if $(SELECT_CONSOLE),$(SELECT_CONSOLE),TTY_NONE)\r
78 def-$(USE_DEBUG_PRINTF) += USE_DEBUG_PRINTF \r
79 \r
80 not_avail = $(filter-out $(MOD_AVAIL),$(sort $(MOD_USE)))\r
81 ifneq ($(not_avail),)\r
82 $(error Trying to build a module that is not available: $(not_avail))\r
83 endif\r
84 \r
85 \r
86 \r
87 ###############################################################################\r
88 # TOOLS CONFIGURATION                                                         #\r
89 ###############################################################################\r
90 \r
91 # set debug optimization level as default\r
92 ifeq ($(SELECT_OPT),)\r
93 SELECT_OPT=OPT_DEBUG\r
94 endif\r
95 \r
96 $(eval CFG_$(SELECT_OPT)=y)\r
97 \r
98 ARCH_PATH-y = arch/$(ARCH_FAM)/$(ARCH)\r
99 \r
100 # Include compiler settings\r
101 include $(ROOTDIR)/scripts/cc_$(COMPILER).mk\r
102 \r
103 # Include pclint or splint settings\r
104 ifneq ($(PCLINT),)\r
105 include $(ROOTDIR)/scripts/cc_pclint.mk\r
106 endif\r
107 ifneq ($(SPLINT),)\r
108 include $(ROOTDIR)/scripts/cc_splint.mk\r
109 endif\r
110 \r
111 \r
112 \r
113 ###############################################################################\r
114 # PROJECT MAKEFILE                                                            #\r
115 ###############################################################################\r
116 \r
117 # Include project makefile\r
118 include ../makefile\r
119 \r
120 # All module object files (guarded for backwards compatability)\r
121 ifndef _BOARD_COMMON_MK\r
122 include $(ROOTDIR)/boards/board_common.mk\r
123 endif\r
124 \r
125 \r
126 ##### For backwards compatability with older project makefiles:\r
127 \r
128 # Remove dependency on libkernel\r
129 deprecated-libs += $(ROOTDIR)/libs/libkernel_$(ARCH_MCU).a\r
130 deprecated-libs-included = $(filter $(deprecated-libs),$(libitem-y))\r
131 ifneq ($(deprecated-libs-included),)\r
132 $(info >>>> Ignoring deprecated lib dependencies: $(deprecated-libs-included)')\r
133 libitem-y := $(filter-out $(deprecated-libs),$(libitem-y))\r
134 endif\r
135 \r
136 # Automatic preprocessing of std linkscripts\r
137 old-ldcmdfile = $(ROOTDIR)/$(ARCH_PATH-y)/scripts/linkscript_gcc.ldf\r
138 new-ldcmdfile = linkscript_gcc.ldp\r
139 old-ldcmdfile-used = $(filter $(old-ldcmdfile),$(ldcmdfile-y))\r
140 ifneq ($(old-ldcmdfile-used),)\r
141 $(info >>>> Changing linkscript to preprocessed version: $(old-ldcmdfile) -> $(new-ldcmdfile)')\r
142 ldcmdfile-y := $(subst $(old-ldcmdfile),$(new-ldcmdfile),$(ldcmdfile-y))\r
143 vpath %.ldf $(ROOTDIR)/$(ARCH_PATH-y)/scripts\r
144 endif\r
145 \r
146 #####\r
147 \r
148 inc-y += ../include\r
149 inc-y += $(ROOTDIR)/include\r
150 inc-y += $(ROOTDIR)/include/$(ARCH_FAM)\r
151 inc-y += $(ROOTDIR)/include/$(ARCH_FAM)/$(ARCH)\r
152   \r
153 VPATH += $(ROOTDIR)/$(SUBDIR)/src\r
154 VPATH += $(ROOTDIR)/$(SUBDIR)\r
155 \r
156 \r
157 \r
158 ###############################################################################\r
159 # LINT                                                                        #\r
160 ###############################################################################\r
161 \r
162 LINT_EXCLUDE_PATHS := $(abspath $(LINT_EXCLUDE_PATHS))\r
163 $(info $(LINT_EXCLUDE_PATHS))\r
164 \r
165 LINT_BAD_EXCLUDE_PATHS := $(filter %/,$(LINT_EXCLUDE_PATHS))\r
166 ifneq ($(LINT_BAD_EXCLUDE_PATHS),)\r
167 $(warning LINT_EXCLUDE_PATHS entries must not end in '/'. Ignoring $(LINT_BAD_EXCLUDE_PATHS))\r
168 endif\r
169 \r
170 LINT_NICE_EXCLUDE_PATHS := $(filter-out %/,$(LINT_EXCLUDE_PATHS))\r
171 LINT_NICE_EXCLUDE_PATHS := $(foreach path,$(LINT_NICE_EXCLUDE_PATHS),$(path)/)\r
172 \r
173 ifneq ($(PCLINT),)\r
174 define run_pclint\r
175 $(if \r
176 $(filter $(dir $(abspath $<)),$(LINT_NICE_EXCLUDE_PATHS)),\r
177 $(info $(abspath $<):0:0: Info: Not running lint check on $(abspath $<)),\r
178 $(Q)$(PCLINT) $(lint_extra) $(addprefix $(lintinc_ext),$(inc-y)) $(addprefix $(lintdef_ext),$(def-y)) $(abspath $<))\r
179 endef\r
180 endif\r
181 \r
182 ifneq ($(SPLINT),)\r
183 define run_splint\r
184 $(if \r
185 $(filter $(dir $(abspath $<)),$(LINT_NICE_EXCLUDE_PATHS)),\r
186 $(info $(abspath $<):0:0: Info: Not running lint check on $(abspath $<)),\r
187 $(Q)$(SPLINT) $(splint_extra) $(addprefix $(lintinc_ext),$(inc-y)) $(addprefix $(lintdef_ext),$(def-y)) $(abspath $<))\r
188 endef\r
189 endif\r
190 \r
191 \r
192 \r
193 ###############################################################################\r
194 # TOP-LEVEL TARGETS                                                           #\r
195 ###############################################################################\r
196 \r
197 .PHONY clean: \r
198 clean: FORCE\r
199         @echo\r
200         @echo "  >> Cleaning $(CURDIR)"\r
201         $(Q)-rm -f *.o *.d *.h *.elf *.a *.ldp *.lcf *.tmp *.s *.c *.map *.out\r
202         @echo\r
203         \r
204 .PHONY : config \r
205 config: FORCE\r
206         @echo ">>>> Available modules:" $(sort $(MOD_AVAIL))\r
207         @echo ">>>> Used modules:     " $(sort $(MOD_USE)) \r
208         @echo $(MOD) ${def-y}\r
209 \r
210 .PHONY : module_config\r
211 module_config: FORCE\r
212         @echo ">>>> Available modules:" $(sort $(MOD_AVAIL))\r
213         @echo ">>>> Used modules:     " $(sort $(MOD_USE)) \r
214 \r
215 \r
216 FORCE:\r
217 \r
218 $(ROOTDIR)/binaries/$(BOARDDIR):\r
219         @mkdir -p $@\r
220 \r
221 .PHONY all:\r
222 all: module_config $(build-exe-y) $(build-hex-y) $(build-lib-y) $(build-bin-y) $(ROOTDIR)/binaries/$(BOARDDIR)\r
223         $(Q)cp -v $(build-lib-y) $(build-exe-y) $(build-hex-y) $(build-bin-y) $(ROOTDIR)/binaries/$(BOARDDIR)\r
224         \r
225 \r
226 \r
227 .SUFFIXES:\r
228 \r
229 \r
230 ###############################################################################\r
231 # TARGETS                                                                     #\r
232 ###############################################################################\r
233         \r
234 # Simple depencendy stuff\r
235 -include $(subst .o,.d,$(obj-y))\r
236 # Some dependency for xxx_offset.c/h also\r
237 -include $(subst .h,.d,$(dep-y))\r
238 \r
239 # Compile\r
240 %.o: %.c\r
241         @echo\r
242         @echo "  >> CC $(notdir $<)"\r
243         $(Q)$(CC) -c $(CFLAGS) -o $(goal) $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $(abspath $<)\r
244         $(do-compile-post)\r
245 # run lint if enabled\r
246         $(run_pclint)\r
247         $(run_splint)\r
248 \r
249 # Assembler\r
250 %.o: %.s\r
251         @echo\r
252         @echo "  >> AS $(notdir $<)"\r
253         $(Q)$(AS) $(ASFLAGS) -o $(goal) $<\r
254         \r
255 # PP Assembler  \r
256 \r
257 .SECONDARY %.s: # Don't remove *.s files (needed for debugging)\r
258 \r
259 %.s: %.sx\r
260         @echo\r
261         @echo "  >> CPP $(notdir $<)"\r
262         $(Q)$(CPP) $(CPP_ASM_FLAGS) -o $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
263 \r
264 # Board linker files are in the board directory \r
265 inc-y += $(ROOTDIR)/boards/$(BOARDDIR)\r
266 \r
267 \r
268 # *.ldf (file on disc) -> *.lcf (preprocessed *.ldf file)\r
269 # Preprocess linker files..\r
270 %.lcf %.ldp: %.ldf\r
271         @echo\r
272         @echo "  >> CPP $(notdir $<)"\r
273         $(Q)$(CPP) -P $(CPP_ASM_FLAGS) $(CPPOUT) $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
274 \r
275 .PHONY $(ROOTDIR)/libs:\r
276 $(ROOTDIR)/libs:\r
277         $(Q)mkdir -p $@\r
278 \r
279 dep-y += $(ROOTDIR)/libs\r
280         \r
281 # lib output\r
282 $(build-lib-y): $(dep-y) $(obj-y)\r
283         @echo\r
284         @echo "  >> AR $@"   \r
285         $(Q)$(AR) -r -o $@ $(obj-y) 2> /dev/null\r
286 \r
287 # hex output\r
288 $(build-hex-y): $(build-exe-y)\r
289         @echo\r
290         @echo "  >> OBJCOPY $@"   \r
291         $(Q)$(CROSS_COMPILE)objcopy -O ihex $< $@\r
292         \r
293 # bin output\r
294 $(build-bin-y): $(build-exe-y)\r
295         @echo\r
296         @echo "  >> OBJCOPY $@"   \r
297         $(Q)$(CROSS_COMPILE)objcopy -O binary $< $@     \r
298 \r
299 # Linker\r
300 $(build-exe-y): $(dep-y) $(obj-y) $(sim-y) $(libitem-y) $(ldcmdfile-y)\r
301         @echo\r
302         @echo "  >> LD $@"\r
303 ifeq ($(CROSS_COMPILE)$(COMPILER),gcc)\r
304         $(Q)$(CC) $(LDFLAGS) -o $@ $(libpath-y) $(obj-y) $(lib-y) $(libitem-y)  \r
305 else\r
306         $(Q)$(LD) $(LDFLAGS) $(LD_FILE) $(ldcmdfile-y) -o $@ $(libpath-y) $(LD_START_GRP) $(obj-y) $(lib-y) $(libitem-y) $(LD_END_GRP) $(LDMAPFILE)\r
307         $(do-memory-footprint)\r
308         $(do-memory-footprint2-y)\r
309 endif #($(CROSS_COMPILE),)\r
310         @echo\r
311         @echo "  >>>>>>>  DONE  <<<<<<<<<"\r
312         @echo\r
313         \r