1 #Common makefile include for all projectes
7 SPECS
:= -specs
=nano.specs
14 SYSTEM
:= $(shell ls
-rd
/usr
/local
/gcc-arm-none-eabi-
* 2>/dev
/null |head
-n
1)/bin
/arm-none-eabi
15 S_GCC
:= $(shell which
$(SYSTEM
)-gcc
2>/dev
/null
)
18 SYSTEM
:= arm-none-eabi
19 S_GCC
:= $(shell which
$(SYSTEM
)-gcc
2>/dev
/null
)
22 SYSTEM
:= echo
"arm-none-eabi toolchain not found "; false
-
25 $(info using gcc
: $(S_GCC
) )
29 SRCS_C
+= $(wildcard $(patsubst %,%/*.c
,$(PORTDIRS
)))
30 SRCS_C
+= $(wildcard $(patsubst %,%/*.c
,$(CSRCDIRS
)))
34 GLBL_GCC
= -ffunction-sections
-fdata-sections
-fmessage-length
=0
35 CFLAGS1
= $(CPU_OPT
) $(CMSIS_OPT
) $(OTHER_OPT
) $(LIBS_OPT
) $(GCC_OPT
) $(OPTIMIZE
) $(GLBL_GCC
)
36 CFLAGS
= $(CFLAGS1
) $(patsubst %,-I
%,$(INC
))
37 ASFLAGS
= $(CFLAGS
) -x assembler-with-cpp
38 LDFLAGS
= $(CFLAGS1
) $(SPECS
) -Wl
,--gc-sections
,-Map
=$(MAP
),-cref
$(LDOPT
) -T
$(LDDIR
)/$(LDSCRIPT
) $(patsubst %,-L
%,$(LDINC
))
50 OBJCOPY
= $(SYSTEM
)-objcopy
51 OBJDUMP
= $(SYSTEM
)-objdump
59 BINZ
= $(PJNAME
).bin.gz
66 OBJSC
:= $(patsubst %.c
,%.o
,$(SRCS_C
))
67 OBJSC
:= $(patsubst $(COMDIR
)/%,%,$(OBJSC
))
68 OBJSC
:= $(patsubst %,$(OBJ_OUT
)/%,$(OBJSC
))
69 #OBJSC := $(abspath $(OBJSC))
71 OBJSS
:= $(patsubst %.s
,%.o
,$(SRCS_S
))
72 OBJSS
:= $(patsubst $(COMDIR
)/%,%,$(OBJSS
))
73 OBJSS
:= $(patsubst %,$(OBJ_OUT
)/%,$(OBJSS
))
74 #OBJSS := $(abspath $(OBJSS))
76 SRCS
= $(SRCS_C
) $(SRCS_S
)
77 OBJS
= $(OBJSC
) $(OBJSS
) $(STARTUP_OBJ
) $(SYSTEM_OBJ
)
80 $(info using
cc toolchain
: $(SYSTEM
))
81 $(info project
export to
: $(EXPDIR
)/$(PJNAME
))
82 $(info using
cc options
: $(CFLAGS
))
83 # $(info using as options : $(ASFLAGS))
84 $(info using
ld options
: $(LDFLAGS
))
85 $(info objects to build
: $(OBJS
))
86 $(info archives to build
: $(LIBS
))
87 $(info sources
: $(SRCS
))
88 # $(info c sources : $(SRCS_C))
102 make
--debug
=v |grep
-E
"(Prerequisite )|(makefile )" |sed
-e s
/\
`/\'/ |cut -d "'" -f 2 |sort |uniq |grep -v -E "([.][ado])|([.]out)\$$" >filelist
103 -test -d cube && find cube/ -iname "*.ioc" >>filelist
104 @echo $(FILES_ADD) >>filelist
107 -mkdir -p $(EXPDIR)/$(PJNAME)
108 -mkdir -p $(EXPDIR)/$(PJNAME)/a
109 -mkdir -p $(EXPDIR)/$(PJNAME)/o
110 cp -v --parents `cat filelist
` ../Makefile $(EXPDIR)/$(PJNAME)
125 $(BLTCS) -i $(BIN) -o $(BIN).out
138 boot: $(S19) $(BLTCMD)
144 @$(OBJCOPY) $(OBJCOPYHEX) $(OUT) $(HEX)
146 $(S19): $(BIN) $(BLTCS)
147 $(BLTCS) -i $(BIN) -o $(BIN).out
148 $(SREC) $(BIN).out -binary -offset $(VTOR_INIT) -o $(S19)
154 @$(OBJCOPY) $(OBJCOPYBIN) $(OUT) $(BIN)
156 @$(OBJDUMP) $(OBJDUMPFLAGS) $(OUT) > $(LST)
161 @gzip -c $(BIN) >$(BINZ)
167 # @gzip -c $(BIN) >$(BINZ)
169 $(OUT): $(GEN_ADD) $(LIBS) $(OBJS) $(LDDIR)/$(LDSCRIPT)
171 # @echo $(LD) $(LDFLAGS) -o $@
172 @$(LD) $(LDFLAGS) -o $@ $(OBJS) -Wl,--start-group,--whole-archive $(LIBS) -Wl,--end-group,--no-whole-archive $(STDLIBS)
176 # @$(foreach LIB,$(LIBDIRS),${MAKE} -C $(LIB) || exit 1;)
178 -include $(LIBS:.a=.d)
180 gen: clean-gen $(GEN_ADD)
183 @-rm -f $(OBJS) $(OBJS:.o=.d) $(OBJS:.o=.sl) $(OUT) $(BIN) $(BINZ) $(HEX) $(S19) $(LST) $(MAP) $(DEP) $(CLEAN_ADD)
184 @$(foreach LIB,$(LIBS),${MAKE} -s -C $(LIBDIR) -f $(patsubst $(ARDIR)/%.a,%.mk,$(LIB)) clean || exit 1;)
185 @-rm -f jlink.reset jlink.flash filelist
188 @-rm -f $(OBJS) $(OBJS:.o=.d) $(OBJS:.o=.sl) $(OUT) $(BIN) $(BINZ) $(HEX) $(S19) $(LST) $(MAP) $(DEP)
189 # @$(foreach LIB,$(LIBS),${MAKE} -s -C $(LIBDIR) -f $(patsubst $(ARDIR)/%.a,%.mk,$(LIB)) clean || exit 1;)
190 @-rm -f jlink.reset jlink.flash filelist
201 # $(CCDEP) $(CFLAGS) -MM $^ | sed -e 's@.*.o:@Src/&@' > $(DEP)
203 #$(DEP): $(LIB_SRCS_C)
204 # $(CCDEP) $(CFLAGS) -MM $^ > $(DEP)
208 # @$(foreach SRC,$(SRCS_S),echo dep $(SRC); $(CCDEP) $(CFLAGS) -MM -MT $(OBJ_OUT)/$(SRC:.s=.o) $(SRC) >> $(DEP);)
209 # @$(foreach SRC,$(SRCS_C),echo dep $(SRC); $(CCDEP) $(CFLAGS) -MM -MT $(OBJ_OUT)/$(SRC:.c=.o) $(SRC) >> $(DEP);)
213 ${MAKE} -C $(LIBDIR) -f $(patsubst $(ARDIR)/%,%,$*).mk
215 $(SYSTEM_OBJ): $(SYSTEM_SRC)
217 @$(CC) $(CFLAGS) -MMD -c -o $@ $<
219 $(STARTUP_OBJ): $(STARTUP_SRC)
221 @$(AS) $(CFLAGS) -MMD -c -o $@ $<
223 $(OBJSC): $(OBJ_OUT)/%.o: %.c
226 @echo cc \[$(PJNAME)\] $<
231 @$(CC) $(CFLAGS) -MMD -c -o $@ -Wa,-adhln=$(@:.o=.sl) $<
232 # @$(CC) $(CFLAGS) --save-temps -MMD -c -o $@ $<
233 # @$(CC) $(CFLAGS) -MMD -c -o $@ $<
235 $(OBJSS): $(OBJ_OUT)/%.o: %.s
238 @$(AS) $(ASFLAGS) -MMD -c -o $@ $<
240 -include $(OBJS:.o=.d)
243 $(OBJS) $(LIBS): Makefile $(COMDIR)/pj/pjhdr.mk $(COMDIR)/pj/pj.mk $(COMDIR)/lib/lib.mk