repo init (libs)
This commit is contained in:
46
CMakeLists.txt
Normal file
46
CMakeLists.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
cmake_minimum_required(VERSION 3.22)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/arm-none-eabi-gcc.cmake)
|
||||
|
||||
project(rtos_lib C ASM)
|
||||
|
||||
# MCU-specific flags for Cortex-M4 with FPU (STM32G474RE)
|
||||
set(MCU_FLAGS "-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard")
|
||||
|
||||
set(CMAKE_C_FLAGS "${MCU_FLAGS} -Wall -fdata-sections -ffunction-sections -save-temps=obj" CACHE STRING "" FORCE)
|
||||
set(CMAKE_ASM_FLAGS "${MCU_FLAGS} -x assembler-with-cpp" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_C_FLAGS_DEBUG "-Og -g3 -gdwarf-2" CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_FLAGS_RELEASE "-Os" CACHE STRING "" FORCE)
|
||||
|
||||
# Linker script
|
||||
set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/STM32G474XX_FLASH.ld)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${MCU_FLAGS} -specs=nano.specs -T${LINKER_SCRIPT} -Wl,--gc-sections -Wl,-Map=${PROJECT_NAME}.map,--cref" CACHE STRING "" FORCE)
|
||||
|
||||
# Define the STM32 device
|
||||
add_definitions(-DSTM32G474xx)
|
||||
|
||||
# Include paths
|
||||
include_directories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmsis/Include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmsis/Device/ST/STM32G4xx/Include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
)
|
||||
|
||||
# Source files
|
||||
file(GLOB_RECURSE SOURCES
|
||||
"src/*.c"
|
||||
"src/*.s"
|
||||
"startup/*.s"
|
||||
)
|
||||
|
||||
# Build the ELF
|
||||
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||
|
||||
# Generate .hex and .bin after build
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_OBJCOPY} -O ihex $<TARGET_FILE:${PROJECT_NAME}> ${PROJECT_NAME}.hex
|
||||
COMMAND ${CMAKE_OBJCOPY} -O binary $<TARGET_FILE:${PROJECT_NAME}> ${PROJECT_NAME}.bin
|
||||
COMMAND ${CMAKE_SIZE} $<TARGET_FILE:${PROJECT_NAME}>
|
||||
COMMENT "Generating .hex and .bin, printing size"
|
||||
)
|
||||
Reference in New Issue
Block a user