# Perform build system version check\r
include $(ROOTDIR)/scripts/version_check.mk\r
\r
+COMPILER?=gcc\r
+ifeq (${COMPILER},gcc)\r
+# Assume that the board have set DEFAULT_CROSS_COMPILE\r
+CROSS_COMPILE?=${DEFAULT_CROSS_COMPILE}\r
+endif\r
+\r
+ifeq (${COMPILER},cw)\r
+CW_COMPILE?=${DEFAULT_CW_COMPILE}\r
+endif\r
+\r
# Check cross compiler setting against default from board config\r
-ifneq (${COMPILER},cw)\r
+ifeq (${COMPILER},cw)\r
+ifneq (${CW_COMPILE},${DEFAULT_CW_COMPILE})\r
+${warning Not using default cross compiler for architecture.}\r
+${warning CW_COMPILE: ${CW_COMPILE} [${origin CW_COMPILE}]}\r
+${warning DEFAULT_CW_COMPILE: ${DEFAULT_CW_COMPILE} [${origin DEFAULT_CW_COMPILE}]}\r
+endif\r
+else\r
ifneq (${DEFAULT_CROSS_COMPILE},)\r
ifneq (${CROSS_COMPILE},${DEFAULT_CROSS_COMPILE})\r
${warning Not using default cross compiler for architecture.}\r
endef\r
\r
$(foreach mod,$(MOD_AVAIL),$(eval $(call MOD_AVAIL_template,${mod})))\r
-$(foreach mod,$(MOD_USE),$(eval $(call MOD_USE_template,${mod})))\r
+$(foreach mod,$(sort $(MOD_USE)),$(eval $(call MOD_USE_template,${mod})))\r
$(foreach mod,$(CFG),$(eval $(call CFG_template,${mod})))\r
#def-y += $(ARCH) $(ARCH_FAM) $(ARCH_MCU) \r
\r
def-y += SELECT_CONSOLE=$(if $(SELECT_CONSOLE),$(SELECT_CONSOLE),TTY_NONE)\r
def-$(USE_DEBUG_PRINTF) += USE_DEBUG_PRINTF \r
\r
-not_avail = $(filter-out $(MOD_AVAIL),$(MOD_USE))\r
+not_avail = $(filter-out $(MOD_AVAIL),$(sort $(MOD_USE)))\r
ifneq ($(not_avail),)\r
$(error Trying to build a module that is not available: $(not_avail))\r
endif\r
ARCH_PATH-y = arch/$(ARCH_FAM)/$(ARCH)\r
\r
# Include compiler settings\r
-COMPILER?=gcc\r
include $(ROOTDIR)/scripts/cc_$(COMPILER).mk\r
\r
# Include pclint or splint settings\r
include $(ROOTDIR)/boards/board_common.mk\r
endif\r
\r
+# Misc tools\r
+ifneq ($(CFG_BOOT),)\r
+include $(ROOTDIR)/boards/$(BOARDDIR)/boot_info.mk\r
+include $(ROOTDIR)/scripts/bootloader_image.mk\r
+endif \r
\r
##### For backwards compatability with older project makefiles:\r
\r
.PHONY clean: \r
clean: FORCE\r
@echo\r
- @echo " >> Cleaning $(CURDIR)"\r
- $(Q)-rm -f *.o *.d *.h *.elf *.a *.ldp *.lcf *.tmp *.s *.c *.map *.out\r
- @echo\r
+ @echo " >> Rules Clean $(CURDIR)"\r
+ $(Q)-rm -v *\r
+ $(Q)-rm -v $(ROOTDIR)/binaries/$(BOARDDIR)/*\r
\r
.PHONY : config \r
config: FORCE\r
- @echo ">>>> Available modules:" $(MOD_AVAIL)\r
- @echo ">>>> Used modules: " $(MOD_USE)\r
+ @echo ">>>> Available modules:" $(sort $(MOD_AVAIL))\r
+ @echo ">>>> Used modules: " $(sort $(MOD_USE)) \r
@echo $(MOD) ${def-y}\r
\r
.PHONY : module_config\r
module_config: FORCE\r
- @echo ">>>> Available modules:" $(MOD_AVAIL)\r
- @echo ">>>> Used modules: " $(MOD_USE)\r
+ @echo ">>>> Available modules:" $(sort $(MOD_AVAIL))\r
+ @echo ">>>> Used modules: " $(sort $(MOD_USE)) \r
\r
\r
FORCE:\r
\r
-$(ROOTDIR)/binaries:\r
+$(ROOTDIR)/binaries/$(BOARDDIR):\r
@mkdir -p $@\r
\r
-.PHONY all:\r
-all: module_config $(build-exe-y) $(build-hex-y) $(build-lib-y) $(build-bin-y) $(ROOTDIR)/binaries\r
- @cp -v $(build-lib-y) $(build-exe-y) $(build-hex-y) $(build-bin-y) $(ROOTDIR)/binaries\r
+all-mod += $(build-hex-y) $(build-exe-y) $(build-srec-y) \r
+all-mod += $(build-lib-y) $(build-bin-y)\r
\r
+.PHONY all:\r
+all: | module_config $(ROOTDIR)/binaries/$(BOARDDIR) $(all-mod) $(all-mod-post)\r
+all: module_config $(all-mod) $(all-mod-post) $(ROOTDIR)/binaries/$(BOARDDIR) \r
+ @cp -v $(all-mod) $(all-mod-post) $(ROOTDIR)/binaries/$(BOARDDIR)\r
\r
.SUFFIXES:\r
\r
\r
-\r
###############################################################################\r
# TARGETS #\r
###############################################################################\r
%.o: %.c\r
@echo\r
@echo " >> CC $(notdir $<)"\r
- $(Q)$(CC) -c $(CFLAGS) -o $(goal) $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $(abspath $<)\r
+ $(Q)$(CC) -c $(CFLAGS) $(CFLAGS_$@) -o $(goal) $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $(abspath $<)\r
+ $(do-compile-post)\r
# run lint if enabled\r
$(run_pclint)\r
$(run_splint)\r
%.s: %.sx\r
@echo\r
@echo " >> CPP $(notdir $<)"\r
- $(Q)$(CPP) $(CPP_ASM_FLAGS) -o $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
+ $(Q)$(CPP) $(CPP_ASM_FLAGS) $(CPPOUT) $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
\r
# Board linker files are in the board directory \r
inc-y += $(ROOTDIR)/boards/$(BOARDDIR)\r
\r
# *.ldf (file on disc) -> *.lcf (preprocessed *.ldf file)\r
# Preprocess linker files..\r
-%.lcf: %.ldf\r
+%.lcf %.ldp: %.ldf\r
@echo\r
@echo " >> CPP $(notdir $<)"\r
- $(Q)$(CPP) -E -P $(CPP_ASM_FLAGS) -o $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
+ $(Q)$(CPP) -P $(CPP_ASM_FLAGS) $(CPPOUT) $@ $(addprefix -I,$(inc-y)) $(addprefix -D,$(def-y)) $<\r
\r
.PHONY $(ROOTDIR)/libs:\r
$(ROOTDIR)/libs:\r
$(Q)$(CROSS_COMPILE)objcopy -O ihex $< $@\r
\r
# bin output\r
-$(build-bin-y): $(build-exe-y)\r
- @echo\r
- @echo " >> OBJCOPY $@" \r
- $(Q)$(CROSS_COMPILE)objcopy -O binary $< $@ \r
+#$(build-bin-y): $(build-exe-y)\r
+# @echo\r
+# @echo " >> OBJCOPY $@" \r
+# $(Q)$(CROSS_COMPILE)objcopy -O binary $< $@ \r
\r
# Linker\r
$(build-exe-y): $(dep-y) $(obj-y) $(sim-y) $(libitem-y) $(ldcmdfile-y)\r
@echo\r
@echo " >> LD $@"\r
-ifeq ($(CROSS_COMPILE),)\r
+ifeq ($(CROSS_COMPILE)$(COMPILER),gcc)\r
$(Q)$(CC) $(LDFLAGS) -o $@ $(libpath-y) $(obj-y) $(lib-y) $(libitem-y) \r
else\r
$(Q)$(LD) $(LDFLAGS) $(LD_FILE) $(ldcmdfile-y) -o $@ $(libpath-y) $(LD_START_GRP) $(obj-y) $(lib-y) $(libitem-y) $(LD_END_GRP) $(LDMAPFILE)\r
- ifdef CFG_HC1X\r
- # Print memory layout\r
- @$(CROSS_COMPILE)objdump -h $@ | gawk -f $(ROOTDIR)/scripts/hc1x_memory.awk\r
- else\r
- ifeq ($(COMPILER),gcc) \r
- # Print memory layout\r
- @echo ""\r
- @gawk --non-decimal-data -f $(ROOTDIR)/scripts/gcc_map_memory.awk $(subst .elf,.map,$@)\r
- endif # ($(COMPILER),gcc)\r
- \r
- ifeq ($(BUILD_LOAD_MODULE),y)\r
- @$(CROSS_COMPILE)objcopy -O srec $@ $@.raw.s19\r
- srec_cat $@.raw.s19 --crop 0x8008000 0x803fffc --fill 0x00 0x8008000 0x803fffc --l-e-crc32 0x803fffc -o $@.lm.s19\r
- endif #($(BUILD_LOAD_MODULE),y)\r
- \r
- endif #CFG_MC912DG128A\r
-\r
+ $(do-memory-footprint)\r
+ $(do-memory-footprint2-y)\r
endif #($(CROSS_COMPILE),)\r
@echo\r
@echo " >>>>>>> DONE <<<<<<<<<"\r