diff --git a/CMakeLists.txt b/CMakeLists.txt index 04c3cca..7498d81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,8 +11,18 @@ target_link_libraries(sdk component) add_subdirectory(${SDK_BASE_DIR}/CMSIS) target_link_libraries(sdk cmsis) -# add_custom_command(TARGET ${PROJ_NAME}.elf POST_BUILD -# COMMAND ${CMAKE_OBJCOPY} -Obinary $ ${PROJ_NAME}.bin -# COMMAND ${CMAKE_OBJDUMP} -d -S $ >${PROJ_NAME}.asm -# COMMENT "Generate ${BIN_FILE}\r\n" -# ) +# get git tag +execute_process( + COMMAND git describe --abbrev=40 --tags --dirty --always + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET +) +if(GIT_TAG) + set(PROJECT_SDK_VERSION ${GIT_TAG}) +else() + message(WARNING "No Valid version info found for SDK!") + set(PROJECT_SDK_VERSION "version-unknown-panic") +endif() +message(STATUS "Project SDK Version: ${PROJECT_SDK_VERSION}") diff --git a/example/peripherals/gpio/gpio_led/CMakeLists.txt b/example/peripherals/gpio/gpio_led/CMakeLists.txt index fd4ff0f..e07dfed 100644 --- a/example/peripherals/gpio/gpio_led/CMakeLists.txt +++ b/example/peripherals/gpio/gpio_led/CMakeLists.txt @@ -2,9 +2,8 @@ cmake_minimum_required(VERSION 3.10) include(proj.conf) -set(PROJ_NAME "gpio_led") -project(${PROJ_NAME} VERSION 0.1) -add_executable(${PROJ_NAME}.elf main.c) +project(${EXAMPLE_NAME} VERSION 0.1) +add_executable(${EXAMPLE_NAME}.elf main.c) add_subdirectory(${SDK_BASE_DIR} sdk) -target_link_libraries(${PROJ_NAME}.elf sdk) +target_link_libraries(${EXAMPLE_NAME}.elf sdk) diff --git a/example/peripherals/gpio/gpio_led/Makefile b/example/peripherals/gpio/gpio_led/Makefile index 4cb9131..df5330b 100644 --- a/example/peripherals/gpio/gpio_led/Makefile +++ b/example/peripherals/gpio/gpio_led/Makefile @@ -1,5 +1,10 @@ +EXAMPLE_BASE_DIR ?= $(shell realpath .) +EXAMPLE_NAME := $(notdir $(patsubst %/,%,$(CURDIR))) SDK_BASE_DIR ?= $(shell realpath ./../../../..) + export SDK_BASE_DIR +export EXAMPLE_NAME +export EXAMPLE_BASE_DIR GCC_PATH := $(shell which arm-none-eabi-gcc) CROSS_COMPILE := $(patsubst %gcc,%,$(GCC_PATH)) diff --git a/project.build b/project.build index d4d9b00..17175b0 100644 --- a/project.build +++ b/project.build @@ -2,9 +2,24 @@ ifndef VERBOSE MAKEFLAGS += --no-print-directory endif -CFLAGS := -mcpu=cortex-m0plus -mthumb -g3 -O2 -Wall -ffunction-sections -fdata-sections +CFLAGS += -mcpu=cortex-m0plus +CFLAGS += -mthumb +CFLAGS += -g3 +CFLAGS += -O2 +CFLAGS += -Wall +CFLAGS += -ffunction-sections +CFLAGS += -fdata-sections -LDFLAGS := -mcpu=cortex-m0plus -mthumb -g3 -O2 -Wall -ffunction-sections -fdata-sections -nostartfiles -T$(SDK_BASE_DIR)/ram.ld -Wl,-Map=app.map +LDFLAGS += -mcpu=cortex-m0plus +LDFLAGS += -mthumb +LDFLAGS += -g3 +LDFLAGS += -O2 +LDFLAGS += -Wall +LDFLAGS += -Wl,--gc-sections +LDFLAGS += -nostartfiles +LDFLAGS += -T$(SDK_BASE_DIR)/ram.ld +LDFLAGS += -Wl,-Map=$(EXAMPLE_NAME).map +LDFLAGS += -Wl,--print-memory-usage CMAKE := cmake @@ -30,10 +45,13 @@ 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) build:Makefile $(CMAKE) -S . -B build -G "Unix Makefiles" $(cmake_definition) $(MAKE) -C build -j + $(CROSS_COMPILE)objcopy -O binary $(EXAMPLE_BASE_DIR)/build/$(EXAMPLE_NAME).elf $(EXAMPLE_BASE_DIR)/build/$(EXAMPLE_NAME).bin + $(CROSS_COMPILE)objdump -d -S $(EXAMPLE_BASE_DIR)/build/$(EXAMPLE_NAME).elf > $(EXAMPLE_BASE_DIR)/build/$(EXAMPLE_NAME).asm clean:: $(RM) build