]> git.donarmstrong.com Git - tmk_firmware.git/blob - tool/mbed/gcc.mk
Add checksum tool for NXP LPC
[tmk_firmware.git] / tool / mbed / gcc.mk
1 ############################################################################### 
2 GCC_BIN = 
3 AS      = $(GCC_BIN)arm-none-eabi-as
4 CC      = $(GCC_BIN)arm-none-eabi-gcc
5 CPP     = $(GCC_BIN)arm-none-eabi-g++
6 LD      = $(GCC_BIN)arm-none-eabi-gcc
7 OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
8 OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
9 SIZE    = $(GCC_BIN)arm-none-eabi-size
10 CHKSUM  = $(TMK_DIR)/tool/mbed/lpc-vector-checksum
11
12 CPU = -mcpu=cortex-m0 -mthumb
13
14 CC_FLAGS += $(CPU) -c -g -fno-common -fmessage-length=0 -Wall -fno-exceptions -ffunction-sections -fdata-sections
15 CC_FLAGS += -MMD -MP
16 CC_SYMBOLS = -DTARGET_LPC11U35_401 -DTARGET_M0 -DTARGET_NXP -DTARGET_LPC11UXX -DTOOLCHAIN_GCC_ARM -DTOOLCHAIN_GCC -D__CORTEX_M0 -DARM_MATH_CM0 -DMBED_BUILD_TIMESTAMP=1399108688.49 -D__MBED__=1 
17
18 LD_FLAGS = -mcpu=cortex-m0 -mthumb -Wl,--gc-sections --specs=nano.specs
19 LD_FLAGS += -Wl,-Map=$(OBJDIR)/$(PROJECT).map,--cref
20 LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys
21
22 ifeq ($(DEBUG), 1)
23   CC_FLAGS += -DDEBUG -O0
24 else
25   CC_FLAGS += -DNDEBUG -Os
26 endif
27
28 all: $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).hex size
29
30 clean:
31         rm -f $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).hex $(OBJDIR)/$(PROJECT).map $(OBJDIR)/$(PROJECT).lst $(OBJECTS) $(DEPS)
32         rm -fr $(OBJDIR)
33
34 $(OBJDIR)/%.o: %.s
35         mkdir -p $(@D)
36         $(AS) $(CPU) -o $@ $<
37
38 $(OBJDIR)/%.o: %.c
39         mkdir -p $(@D)
40         $(CC)  $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99   $(INCLUDE_PATHS) -o $@ $<
41
42 $(OBJDIR)/%.o: %.cpp
43         mkdir -p $(@D)
44         $(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 $(INCLUDE_PATHS) -o $@ $<
45
46
47 $(OBJDIR)/$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
48         $(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
49         @echo ""
50         @echo "*****"
51         @echo "***** You must modify vector checksum value in *.bin and *.hex files."
52         @echo "*****"
53         @echo ""
54
55 $(OBJDIR)/$(PROJECT).bin: $(OBJDIR)/$(PROJECT).elf
56         @$(OBJCOPY) -O binary $< $@
57         @echo "Writing vector checksum value into $@ ..."
58         @$(CHKSUM) $@
59         @echo
60
61 $(OBJDIR)/$(PROJECT).hex: $(OBJDIR)/$(PROJECT).elf
62         @$(OBJCOPY) -O ihex $< $@
63
64 $(OBJDIR)/$(PROJECT).lst: $(OBJDIR)/$(PROJECT).elf
65         @$(OBJDUMP) -Sdh $< > $@
66
67 lst: $(OBJDIR)/$(PROJECT).lst
68
69 size:
70         $(SIZE) $(OBJDIR)/$(PROJECT).elf
71
72 prog:   $(OBJDIR)/$(PROJECT).bin
73         @echo "Program..."
74 ifneq ($(shell mount | grep 'CRP DISABLD'),)
75         umount /dev/nxpisp >/dev/null 2>&1
76 endif
77         dd if=$< of=/dev/nxpisp seek=4
78
79 DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
80 -include $(DEPS)