]>
Commit | Line | Data |
---|---|---|
1 | # based on Makefile exported form mbed.org | |
2 | # see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded | |
3 | ||
4 | GCC_BIN = | |
5 | AS = $(GCC_BIN)arm-none-eabi-as | |
6 | CC = $(GCC_BIN)arm-none-eabi-gcc | |
7 | CPP = $(GCC_BIN)arm-none-eabi-g++ | |
8 | LD = $(GCC_BIN)arm-none-eabi-gcc | |
9 | OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy | |
10 | OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump | |
11 | SIZE = $(GCC_BIN)arm-none-eabi-size | |
12 | CHKSUM = $(TMK_DIR)/tool/mbed/lpc-vector-checksum | |
13 | ||
14 | CC_FLAGS += \ | |
15 | $(CPU) \ | |
16 | -c \ | |
17 | -g \ | |
18 | -fno-common \ | |
19 | -fmessage-length=0 \ | |
20 | -Wall \ | |
21 | -fno-exceptions \ | |
22 | -ffunction-sections \ | |
23 | -fdata-sections \ | |
24 | -fomit-frame-pointer | |
25 | CC_FLAGS += -MMD -MP | |
26 | ||
27 | LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs | |
28 | #LD_FLAGS += -u _printf_float -u _scanf_float | |
29 | LD_FLAGS += -Wl,-Map=$(OBJDIR)/$(PROJECT).map,--cref | |
30 | LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys | |
31 | ||
32 | ifeq ($(DEBUG), 1) | |
33 | CC_FLAGS += -DDEBUG -O0 | |
34 | else | |
35 | CC_FLAGS += -DNDEBUG -Os | |
36 | endif | |
37 | ||
38 | all: $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).hex | |
39 | ||
40 | clean: | |
41 | rm -f $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).hex $(OBJDIR)/$(PROJECT).map $(OBJDIR)/$(PROJECT).lst $(OBJECTS) $(DEPS) | |
42 | rm -fr $(OBJDIR) | |
43 | ||
44 | $(OBJDIR)/%.o: %.s | |
45 | mkdir -p $(@D) | |
46 | $(AS) $(CPU) -o $@ $< | |
47 | ||
48 | $(OBJDIR)/%.o: %.c | |
49 | mkdir -p $(@D) | |
50 | $(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -o $@ $< | |
51 | ||
52 | $(OBJDIR)/%.o: %.cpp | |
53 | mkdir -p $(@D) | |
54 | $(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $< | |
55 | ||
56 | ||
57 | $(OBJDIR)/$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS) | |
58 | $(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS) | |
59 | $(SIZE) $@ | |
60 | ||
61 | $(OBJDIR)/$(PROJECT).bin: $(OBJDIR)/$(PROJECT).elf | |
62 | @$(OBJCOPY) -O binary $< $@ | |
63 | ifneq (,$(findstring TARGET_NXP,$(CC_SYMBOLS))) | |
64 | @echo | |
65 | @echo "For NXP writing vector checksum value into $@ ..." | |
66 | @$(CHKSUM) $@ | |
67 | @echo | |
68 | endif | |
69 | ||
70 | $(OBJDIR)/$(PROJECT).hex: $(OBJDIR)/$(PROJECT).elf | |
71 | @$(OBJCOPY) -O ihex $< $@ | |
72 | ||
73 | $(OBJDIR)/$(PROJECT).lst: $(OBJDIR)/$(PROJECT).elf | |
74 | @$(OBJDUMP) -Sdh $< > $@ | |
75 | ||
76 | lst: $(OBJDIR)/$(PROJECT).lst | |
77 | ||
78 | size: | |
79 | $(SIZE) $(OBJDIR)/$(PROJECT).elf | |
80 | ||
81 | prog: $(OBJDIR)/$(PROJECT).bin | |
82 | @echo "Program..." | |
83 | ifneq ($(shell mount | grep 'CRP DISABLD'),) | |
84 | umount /dev/nxpisp >/dev/null 2>&1 | |
85 | endif | |
86 | dd if=$< of=/dev/nxpisp seek=4 | |
87 | ||
88 | DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d) | |
89 | -include $(DEPS) |