4 RELDIR := $(subst $(TOPDIR)/,,$(CURDIR))
\r
6 # Create the target name...
\r
7 target := $(subst /,_,$(SUBDIR))
\r
9 #goal=$(subst /cygdrive/c/,c:/,$(abspath $@))
\r
12 #===== MODULE CONFIGURATION =====
\r
13 include $(ROOTDIR)/boards/$(BOARDDIR)/build_config.mk
\r
14 -include ../build_config.mk
\r
16 define MOD_AVAIL_template
\r
20 define MOD_USE_template
\r
31 $(foreach mod,$(MOD_AVAIL),$(eval $(call MOD_AVAIL_template,${mod})))
\r
32 $(foreach mod,$(MOD_USE),$(eval $(call MOD_USE_template,${mod})))
\r
33 $(foreach mod,$(CFG),$(eval $(call CFG_template,${mod})))
\r
34 def-y += $(ARCH) $(ARCH_FAM) $(ARCH_MCU)
\r
36 not_avail = $(filter-out $(MOD_AVAIL),$(MOD_USE))
\r
37 ifneq ($(not_avail),)
\r
38 $(error Trying to build a module that is not available: $(not_avail))
\r
41 #===== COMPILER CONFIG =====
\r
43 ARCH_PATH-y = arch/$(ARCH_FAM)/$(ARCH)
\r
45 # Include compiler generic and arch specific
\r
48 include $(ROOTDIR)/$(ARCH_PATH-y)/scripts/gcc.mk
\r
50 include $(ROOTDIR)/scripts/cc_$(COMPILER).mk
\r
55 inc-y += $(ROOTDIR)/include
\r
56 inc-$(CFG_PPC) += $(ROOTDIR)/include/ppc
\r
57 inc-$(CFG_ARM) += $(ROOTDIR)/include/arm
\r
62 @echo "board modules:" $(MOD_AVAIL)
\r
63 @echo "example modules:" $(MOD_USE)
\r
64 @echo $(MOD) ${def-y}
\r
66 # build- targets are "end" target that the included makefile want's to build
\r
67 all: $(build-lib-y) $(build-exe-y)
\r
69 # Determine what kind of filetype to build from
\r
70 VPATH += $(ROOTDIR)/$(SUBDIR)/src
\r
71 VPATH += $(ROOTDIR)/$(SUBDIR)
\r
77 # Simple depencendy stuff
\r
78 -include $(subst .o,.d,$(obj-y))
\r
79 # Some dependency for xxx_offset.c/h also
\r
80 -include $(subst .h,.d,$(dep-y))
\r
84 @echo " >> CC $(notdir $<)"
\r
85 $(Q)$(CC) -c $(CFLAGS) -o $(goal) $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $(realpath $<)
\r
90 @echo " >> AS $(notdir $<) $(ASFLAGS)"
\r
91 $(Q)$(AS) $(ASFLAGS) -o $(goal) $<
\r
97 @echo " >> CPP $(notdir $<)"
\r
98 $(Q)$(CPP) -o $@ $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $<
\r
101 @echo " >> CPP $(notdir $<)"
\r
102 $(Q)$(CPP) -x assembler-with-cpp -o $@ $(addprefix -I ,$(inc-y)) $(addprefix -D,$(def-y)) $<
\r
107 .PHONY $(ROOTDIR)/libs:
\r
111 dep-y += $(ROOTDIR)/libs
\r
114 $(build-lib-y): $(dep-y) $(obj-y)
\r
116 $(Q)$(AR) -r -o $@ $(obj-y) 2> /dev/null
\r
118 # Could use readelf -S instead of parsing the *.map file.
\r
119 $(build-exe-y): $(obj-y) $(sim-y) $(libitem-y)
\r
121 $(Q)$(LD) $(LDFLAGS) $(ldcmdfile-y) -o $@ $(libpath-y) --start-group $(obj-y) $(lib-y) $(libitem-y) --end-group $(LDMAPFILE)
\r
122 @echo "Image size: (decimal)"
\r
123 @gawk --non-decimal-data '/^\.text/ { print " text:" $$3+0 " bytes"; rom+=$$3 };\
\r
124 /^\.data/ { print " data:" $$3+0 " bytes"; rom+=$$3; ram+=$$3}; \
\r
125 /^\.bss/ { print " bss :" $$3+0 " bytes"; ram+=$$3}; \
\r
126 END { print " ROM: ~" rom " bytes"; print " RAM: ~" ram " bytes"}' $(subst .elf,.map,$@)
\r
127 @echo " >>>>>>> DONE <<<<<<<<<"
\r
130 $(size-exe-y): $(build-exe-y)
\r
131 $(Q)$(OBJDUMP) -h $<
\r
132 @echo TODO: Parse the file....
\r
135 @-rm -f *.o *.d *.h *.elf *.a
\r