diff options
Diffstat (limited to 'tool/mbed/gcc.mk')
| -rw-r--r-- | tool/mbed/gcc.mk | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tool/mbed/gcc.mk b/tool/mbed/gcc.mk new file mode 100644 index 000000000..0fc41fe27 --- /dev/null +++ b/tool/mbed/gcc.mk | |||
| @@ -0,0 +1,80 @@ | |||
| 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 = ~/Dropbox/MBED/tool/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) | ||
