82 lines
2.9 KiB
CMake
Executable File
82 lines
2.9 KiB
CMake
Executable File
cmake_minimum_required(VERSION 3.15)
|
|
set(PROJ_NAME "bootloader")
|
|
set(BIN_FILE ${PROJ_NAME}.bin)
|
|
set(ASM_FILE ${PROJ_NAME}.asm)
|
|
project(${PROJ_NAME} VERSION 0.1)
|
|
|
|
# toolchain path
|
|
set(TOOLCHAIN "arm-none-eabi-")
|
|
set(CMAKE_C_COMPILER "${TOOLCHAIN}gcc")
|
|
set(CMAKE_ASM_COMPILER "${TOOLCHAIN}gcc")
|
|
set(CMAKE_OBJCOPY "${TOOLCHAIN}objcopy")
|
|
set(CMAKE_OBJDUMP "${TOOLCHAIN}objdump")
|
|
set(CMAKE_AR "${TOOLCHAIN}ar")
|
|
set(CMAKE_RANLIB "${TOOLCHAIN}ranlib")
|
|
set(LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/flash.ld")
|
|
|
|
set(CMAKE_C_FLAGS " \
|
|
-mcpu=cortex-m4 \
|
|
-mthumb \
|
|
-g3 \
|
|
-O2 \
|
|
-Wall \
|
|
-nostartfiles \
|
|
-mfloat-abi=hard \
|
|
-mfpu=vfpv4-d16 \
|
|
-ffunction-sections \
|
|
-fdata-sections \
|
|
")
|
|
|
|
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS}")
|
|
|
|
set(CMAKE_EXE_LINKER_FLAGS " \
|
|
-ffunction-sections \
|
|
-fdata-sections \
|
|
-Wl,--gc-sections \
|
|
-T${LINKER_SCRIPT} \
|
|
-Wl,-Map=${PROJ_NAME}.map \
|
|
--specs=nano.specs \
|
|
-Wl,--print-memory-usage \
|
|
-Wl,--print-output-format \
|
|
")
|
|
|
|
add_definitions(-DSTM32F40_41xxx)
|
|
add_definitions(-DUSE_STDPERIPH_DRIVER)
|
|
|
|
enable_language(ASM)
|
|
add_executable(${PROJ_NAME}.elf main.c)
|
|
target_sources(${PROJ_NAME}.elf PUBLIC start.S)
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../driver driver)
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../component/fatfs component/fatfs)
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src)
|
|
|
|
target_link_libraries(${PROJ_NAME}.elf driver)
|
|
target_link_libraries(${PROJ_NAME}.elf fatfs)
|
|
target_link_libraries(${PROJ_NAME}.elf src)
|
|
|
|
add_custom_command(TARGET ${PROJ_NAME}.elf POST_BUILD
|
|
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJ_NAME}.elf> ${BIN_FILE}
|
|
COMMAND ${CMAKE_OBJDUMP} -d -S $<TARGET_FILE:${PROJ_NAME}.elf> >${ASM_FILE}
|
|
# COMMENT "Generate ${BIN_FILE}\r\n"
|
|
COMMAND size ${PROJ_NAME}.elf
|
|
COMMAND echo "Calculating SHA-256 checksum for ${BIN_FILE}:"
|
|
COMMAND sha256sum ${BIN_FILE}
|
|
)
|
|
|
|
# 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}")
|