93 lines
2.9 KiB
Plaintext
93 lines
2.9 KiB
Plaintext
ifndef VERBOSE
|
|
MAKEFLAGS += --no-print-directory
|
|
endif
|
|
|
|
CFLAGS += -mcpu=cortex-m0plus
|
|
CFLAGS += -mthumb
|
|
CFLAGS += -g3
|
|
CFLAGS += -O2
|
|
CFLAGS += -Wall
|
|
CFLAGS += -ffunction-sections
|
|
CFLAGS += -fdata-sections
|
|
CFLAGS += -Wpointer-arith
|
|
|
|
ifneq ($(findstring -T, $(LDFLAGS)), -T)
|
|
LDFLAGS += -T$(SDK_BASE_DIR)/flash.ld
|
|
endif
|
|
LDFLAGS += -mcpu=cortex-m0plus
|
|
LDFLAGS += -mthumb
|
|
LDFLAGS += -g3
|
|
LDFLAGS += -O2
|
|
LDFLAGS += -Wall
|
|
LDFLAGS += -Wl,--gc-sections
|
|
LDFLAGS += -nostartfiles
|
|
LDFLAGS += -Wl,-Map=$(EXAMPLE_NAME).map
|
|
LDFLAGS += -Wl,--print-memory-usage
|
|
ifndef BOOT2_PRE_CRC
|
|
LDFLAGS += -ufw_header
|
|
endif
|
|
|
|
CMAKE := cmake
|
|
ELF2UF2 := $(SDK_BASE_DIR)/tools/elf2uf2
|
|
|
|
# The command to remove a file.
|
|
RM = $(CMAKE) -E remove_directory
|
|
|
|
COMX ?=COM1
|
|
BAUDRATE ?=2000000
|
|
|
|
# cmake definition config
|
|
# toolchain
|
|
cmake_definition+= -DCMAKE_C_COMPILER=$(CROSS_COMPILE)gcc
|
|
cmake_definition+= -DCMAKE_CXX_COMPILER=$(CROSS_COMPILE)g++
|
|
cmake_definition+= -DCMAKE_ASM_COMPILER=$(CROSS_COMPILE)gcc
|
|
cmake_definition+= -DCMAKE_LINKER=$(CROSS_COMPILE)ld
|
|
cmake_definition+= -DCMAKE_OBJCOPY=$(CROSS_COMPILE)objcopy
|
|
cmake_definition+= -DCMAKE_OBJDUMP=$(CROSS_COMPILE)objdump
|
|
cmake_definition+= -DCMAKE_AR=$(CROSS_COMPILE)ar
|
|
cmake_definition+= -DCMAKE_RANLIB=$(CROSS_COMPILE)ranlib
|
|
cmake_definition+= -DCMAKE_C_FLAGS="$(CFLAGS)"
|
|
cmake_definition+= -DCMAKE_CXX_FLAGS="$(CFLAGS)"
|
|
cmake_definition+= -DCMAKE_EXE_LINKER_FLAGS="$(LDFLAGS)"
|
|
|
|
cmake_definition+= -DCONFIG_COMX=$(COMX)
|
|
cmake_definition+= -DSDK_BASE_DIR=$(SDK_BASE_DIR)
|
|
cmake_definition+= -DEXAMPLE_NAME=$(EXAMPLE_NAME)
|
|
cmake_definition+= -DEXAMPLE_BASE_DIR=$(EXAMPLE_BASE_DIR)
|
|
|
|
cmake_definition+= -DCONFIG_FREERTOS=$(CONFIG_FREERTOS)
|
|
cmake_definition+= -DCONFIG_TLSF=$(CONFIG_TLSF)
|
|
cmake_definition+= -DCONFIG_SHELL=$(CONFIG_SHELL)
|
|
|
|
FINAL_NAME_PRE := $(EXAMPLE_BASE_DIR)/build/$(EXAMPLE_NAME)
|
|
|
|
FW_HEADER_CHECKSUM ?= fw_header_checksum.bin
|
|
|
|
post:build
|
|
ifdef BOOT2_PRE_CRC
|
|
@$(CROSS_COMPILE)objcopy -O binary --only-section=.boot2_pre $(FINAL_NAME_PRE).elf $(BOOT2_PRE_CRC)
|
|
@python3 $(SDK_BASE_DIR)/tools/boot2_pre_crc.py $(BOOT2_PRE_CRC)
|
|
@$(CROSS_COMPILE)objcopy --update-section .boot2_pre=$(BOOT2_PRE_CRC) $(FINAL_NAME_PRE).elf
|
|
@rm $(BOOT2_PRE_CRC)
|
|
else
|
|
@$(CROSS_COMPILE)objcopy -O binary --only-section=.fw_header $(FINAL_NAME_PRE).elf $(FW_HEADER_CHECKSUM)
|
|
@python3 $(SDK_BASE_DIR)/tools/checksum.py $(FW_HEADER_CHECKSUM)
|
|
@$(CROSS_COMPILE)objcopy --update-section .fw_header=$(FW_HEADER_CHECKSUM) $(FINAL_NAME_PRE).elf
|
|
@rm $(FW_HEADER_CHECKSUM)
|
|
endif
|
|
@$(CROSS_COMPILE)objcopy -O binary $(FINAL_NAME_PRE).elf $(FINAL_NAME_PRE).bin
|
|
@$(CROSS_COMPILE)objdump -d -S $(FINAL_NAME_PRE).elf > $(FINAL_NAME_PRE).asm
|
|
@$(CROSS_COMPILE)nm $(FINAL_NAME_PRE).elf > $(FINAL_NAME_PRE).nm
|
|
@$(ELF2UF2) $(FINAL_NAME_PRE).elf $(FINAL_NAME_PRE).uf2
|
|
@size $(FINAL_NAME_PRE).elf
|
|
@sha256sum $(FINAL_NAME_PRE).bin
|
|
|
|
build:Makefile
|
|
$(CMAKE) -S . -B build -G "Unix Makefiles" $(cmake_definition)
|
|
$(MAKE) -C build -j
|
|
|
|
clean:
|
|
$(RM) build
|
|
|
|
.PHONY:post build clean
|