mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-24 20:32:58 +00:00
90 lines
2.3 KiB
Makefile
90 lines
2.3 KiB
Makefile
# based on Makefile exported form mbed.org
|
|
# see http://mbed.org/handbook/Exporting-to-GCC-ARM-Embedded
|
|
|
|
GCC_BIN =
|
|
AS = $(GCC_BIN)arm-none-eabi-as
|
|
CC = $(GCC_BIN)arm-none-eabi-gcc
|
|
CPP = $(GCC_BIN)arm-none-eabi-g++
|
|
LD = $(GCC_BIN)arm-none-eabi-gcc
|
|
OBJCOPY = $(GCC_BIN)arm-none-eabi-objcopy
|
|
OBJDUMP = $(GCC_BIN)arm-none-eabi-objdump
|
|
SIZE = $(GCC_BIN)arm-none-eabi-size
|
|
CHKSUM = $(TMK_DIR)/tool/mbed/lpc-vector-checksum
|
|
|
|
CC_FLAGS += \
|
|
$(CPU) \
|
|
-c \
|
|
-g \
|
|
-fno-common \
|
|
-fmessage-length=0 \
|
|
-Wall \
|
|
-fno-exceptions \
|
|
-ffunction-sections \
|
|
-fdata-sections \
|
|
-fomit-frame-pointer
|
|
CC_FLAGS += -MMD -MP
|
|
|
|
LD_FLAGS = $(CPU) -Wl,--gc-sections --specs=nano.specs
|
|
#LD_FLAGS += -u _printf_float -u _scanf_float
|
|
LD_FLAGS += -Wl,-Map=$(OBJDIR)/$(PROJECT).map,--cref
|
|
LD_SYS_LIBS = -lstdc++ -lsupc++ -lm -lc -lgcc -lnosys
|
|
|
|
ifeq ($(DEBUG), 1)
|
|
CC_FLAGS += -DDEBUG -O0
|
|
else
|
|
CC_FLAGS += -DNDEBUG -Os
|
|
endif
|
|
|
|
all: $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).hex
|
|
|
|
clean:
|
|
rm -f $(OBJDIR)/$(PROJECT).bin $(OBJDIR)/$(PROJECT).elf $(OBJDIR)/$(PROJECT).hex $(OBJDIR)/$(PROJECT).map $(OBJDIR)/$(PROJECT).lst $(OBJECTS) $(DEPS)
|
|
rm -fr $(OBJDIR)
|
|
|
|
$(OBJDIR)/%.o: %.s
|
|
mkdir -p $(@D)
|
|
$(AS) $(CPU) -o $@ $<
|
|
|
|
$(OBJDIR)/%.o: %.c
|
|
mkdir -p $(@D)
|
|
$(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -o $@ $<
|
|
|
|
$(OBJDIR)/%.o: %.cpp
|
|
mkdir -p $(@D)
|
|
$(CPP) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu++98 -fno-rtti $(INCLUDE_PATHS) -o $@ $<
|
|
|
|
|
|
$(OBJDIR)/$(PROJECT).elf: $(OBJECTS) $(SYS_OBJECTS)
|
|
$(LD) $(LD_FLAGS) -T$(LINKER_SCRIPT) $(LIBRARY_PATHS) -o $@ $^ $(LIBRARIES) $(LD_SYS_LIBS) $(LIBRARIES) $(LD_SYS_LIBS)
|
|
$(SIZE) $@
|
|
|
|
$(OBJDIR)/$(PROJECT).bin: $(OBJDIR)/$(PROJECT).elf
|
|
@$(OBJCOPY) -O binary $< $@
|
|
ifneq (,$(findstring TARGET_NXP,$(CC_SYMBOLS)))
|
|
@echo
|
|
@echo "For NXP writing vector checksum value into $@ ..."
|
|
@$(CHKSUM) $@
|
|
@echo
|
|
endif
|
|
|
|
$(OBJDIR)/$(PROJECT).hex: $(OBJDIR)/$(PROJECT).elf
|
|
@$(OBJCOPY) -O ihex $< $@
|
|
|
|
$(OBJDIR)/$(PROJECT).lst: $(OBJDIR)/$(PROJECT).elf
|
|
@$(OBJDUMP) -Sdh $< > $@
|
|
|
|
lst: $(OBJDIR)/$(PROJECT).lst
|
|
|
|
size:
|
|
$(SIZE) $(OBJDIR)/$(PROJECT).elf
|
|
|
|
prog: $(OBJDIR)/$(PROJECT).bin
|
|
@echo "Program..."
|
|
ifneq ($(shell mount | grep 'CRP DISABLD'),)
|
|
umount /dev/nxpisp >/dev/null 2>&1
|
|
endif
|
|
dd if=$< of=/dev/nxpisp seek=4
|
|
|
|
DEPS = $(OBJECTS:.o=.d) $(SYS_OBJECTS:.o=.d)
|
|
-include $(DEPS)
|