Files
incphub_test/app/CMakeLists.txt

102 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 3.22)
# ===========================
# === Configs and Options ===
# ===========================
# Project name for CMake
set(FW_PROJECT_NAME freertos-incp-handler-app)
# Linker script
set(FW_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/STM32F411XX_FLASH.ld)
# OpenOCD target for flashing
set(FW_OPENOCD_TARGET stm32f4x.cfg)
# ========================
# === Project building ===
# ========================
project(${FW_PROJECT_NAME}
VERSION 0.1.0
LANGUAGES C)
set(CMAKE_C_STANDARD 17)
set(CMAKE_C_STANDARD_REQUIRED True)
set(EXECUTABLE ${FW_PROJECT_NAME})
add_executable(${EXECUTABLE} "")
# Set compiler/linker options
target_compile_definitions(${EXECUTABLE} PRIVATE
${COMPILER_DEFINES}
INCPHUB_LOCAL_NIL_ADDR=1
)
target_compile_options(${EXECUTABLE} PRIVATE
-Wall
-Wextra
-Wpedantic
-O0
-g
-ffunction-sections
-fdata-sections
-flto
)
target_link_options(${EXECUTABLE} PRIVATE
-T ${FW_LINKER_SCRIPT}
--specs=nano.specs
-Wl,--gc-sections
-flto
)
# Recurse subdirectories
add_subdirectory(src)
# Add libraries
target_link_libraries(${EXECUTABLE} PRIVATE cubemx)
# =============================
# === Dependency management ===
# =============================
# Add CPM
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake)
# Add FetchContent
include(FetchContent)
# ==========================
# === External libraries ===
# ==========================
# == CPM Packages ==
#CPMAddPackage(...)
# == FetchContent Packages ==
#FetchContent_Declare(...)
#FetchContent_MakeAvailable(...)
# Add FreeRTOS
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/FreeRTOS.cmake)
# == Library linking ==
#target_link_libraries(${EXECUTABLE} ...)
target_link_libraries(${EXECUTABLE} PRIVATE freertos_kernel)
# =====================
# === Flashing code ===
# =====================
find_program(OPENOCD openocd)
add_custom_target(flash
COMMAND ${OPENOCD} -f interface/stlink.cfg -f target/${FW_OPENOCD_TARGET} -c "program $<TARGET_FILE:${EXECUTABLE}> verify reset exit"
)