From fd6a73b3a5da365cb567e47cfbcf0ac1fb90d473 Mon Sep 17 00:00:00 2001 From: Yilin Sun Date: Thu, 22 Dec 2022 22:46:31 +0800 Subject: [PATCH] Updated CMakeLists. Signed-off-by: Yilin Sun --- CMakeLists.txt | 41 ++++++++++++++++++++++++++--------------- arm-none-eabi.cmake | 21 ++++++++++++++------- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 96c4342..0251e8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,9 +95,6 @@ set(TARGET_LIB_DIRECTORIES ) -# Device specific settings, goes to CFLAGS and LDFLAGS -set(TARGET_CFLAGS_HARDWARE "-mcpu=cortex-m33 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16") - # Conditional flags # DEBUG set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -O -g") @@ -111,11 +108,10 @@ set(CMAKE_ASM_FLAGS_RELEASE "-DNDEBUG -O2 -flto") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-flto") # Final compiler flags -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_CFLAGS_HARDWARE} -Wall -fno-common -fno-builtin -ffreestanding -fdata-sections -ffunction-sections") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TARGET_CFLAGS_HARDWARE} -Wall -fno-common -fno-builtin -ffreestanding -fdata-sections -ffunction-sections") -set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CMAKE_C_FLAGS} -x assembler-with-cpp") -set(CMAKE_EXE_LINKER_FLAGS "-specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -Wl,--print-memory-usage -Wl,--no-warn-rwx-segments") - +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fno-common -fno-builtin -ffreestanding -fdata-sections -ffunction-sections") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-common -fno-builtin -ffreestanding -fdata-sections -ffunction-sections") +set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections") # Shared sources, includes and definitions add_compile_definitions(${TARGET_C_DEFINES}) @@ -127,30 +123,45 @@ link_libraries(${TARGET_LIBS}) # Create ELF add_executable("${CMAKE_PROJECT_NAME}_FLASH.elf" ${TARGET_SOURCES}) +target_compile_definitions("${CMAKE_PROJECT_NAME}_FLASH.elf" + PRIVATE ${TARGET_C_DEFINES_XIP} + ) target_link_options("${CMAKE_PROJECT_NAME}_FLASH.elf" PRIVATE "-T${TARGET_LDSCRIPT_FLASH}" PRIVATE "-Wl,--Map=${CMAKE_PROJECT_NAME}_FLASH.map" -) + ) set_property(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" APPEND PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}_FLASH.map" -) + ) add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex" COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_FLASH.elf" "${CMAKE_PROJECT_NAME}_FLASH.hex" DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.elf" -) + ) add_custom_target("${CMAKE_PROJECT_NAME}_FLASH_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.hex") +if(DEFINED TARGET_TOOLCHAIN_SIZE) + add_custom_command(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" POST_BUILD + COMMAND ${TARGET_TOOLCHAIN_SIZE} "${CMAKE_PROJECT_NAME}_FLASH.elf" + ) +endif() + # Create ELF add_executable("${CMAKE_PROJECT_NAME}_RAM.elf" ${TARGET_SOURCES}) target_link_options("${CMAKE_PROJECT_NAME}_RAM.elf" PRIVATE "-T${TARGET_LDSCRIPT_RAM}" PRIVATE "-Wl,--Map=${CMAKE_PROJECT_NAME}_RAM.map" -) -set_property(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" APPEND + ) +set_property(TARGET "${CMAKE_PROJECT_NAME}_RAM.elf" APPEND PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}_RAM.map" -) + ) add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_RAM.hex" COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_RAM.elf" "${CMAKE_PROJECT_NAME}_RAM.hex" DEPENDS "${CMAKE_PROJECT_NAME}_RAM.elf" -) + ) add_custom_target("${CMAKE_PROJECT_NAME}_RAM_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_RAM.hex") +if(DEFINED TARGET_TOOLCHAIN_SIZE) + add_custom_command(TARGET "${CMAKE_PROJECT_NAME}_RAM.elf" POST_BUILD + COMMAND ${TARGET_TOOLCHAIN_SIZE} "${CMAKE_PROJECT_NAME}_RAM.elf" + ) +endif() + diff --git a/arm-none-eabi.cmake b/arm-none-eabi.cmake index ab16b40..7c89918 100644 --- a/arm-none-eabi.cmake +++ b/arm-none-eabi.cmake @@ -1,10 +1,17 @@ -set(CMAKE_C_COMPILER arm-none-eabi-gcc) -set(CMAKE_CXX_COMPILER arm-none-eabi-g++) - -# Make CMake happy about those compilers -set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") - # Poor old Windows... if(WIN32) set(CMAKE_SYSTEM_NAME "Generic") -endif() \ No newline at end of file +endif() + +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_CXX_COMPILER arm-none-eabi-g++) + +# Optionally set size binary name, for elf section size reporting. +set(TARGET_TOOLCHAIN_SIZE arm-none-eabi-size) + +set(CMAKE_C_FLAGS_INIT "-mcpu=cortex-m33 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16") +set(CMAKE_CXX_FLAGS_INIT "-mcpu=cortex-m33 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16") +set(CMAKE_EXE_LINKER_FLAGS_INIT "-specs=nano.specs -specs=nosys.specs -Wl,--print-memory-usage -Wl,--no-warn-rwx-segments") + +# Make CMake happy about those compilers +set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")