90 lines
2.5 KiB
CMake
90 lines
2.5 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
|
|
if(NOT CMAKE_TOOLCHAIN_FILE)
|
|
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/CMake/gcc-arm-none-eabi.cmake)
|
|
endif()
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE release CACHE STRING "Build Type" FORCE)
|
|
endif()
|
|
|
|
project(stm32h743_player C CXX ASM)
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS ON)
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS ON)
|
|
set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build)
|
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
|
|
|
|
set(TARGET_BUILD_ARCH_OPTIONS
|
|
-mcpu=cortex-m7 -mthumb # cortex-m7 core
|
|
-mfpu=fpv5-d16 -mfloat-abi=hard # enable hardware fpu
|
|
--specs=nano.specs --specs=nosys.specs # use newlib-nano
|
|
-Wl,-wrap,_malloc_r -Wl,-wrap,_free_r -Wl,-wrap,_realloc_r # wrap newlib memory allocator functions
|
|
)
|
|
|
|
set(TARGET_BUILD_DEFINATIONS
|
|
-DUSE_HAL_DRIVER -DSTM32H743xx
|
|
-DLV_CONF_INCLUDE_SIMPLE
|
|
)
|
|
|
|
set(LINKER_SCRIPT
|
|
${CMAKE_SOURCE_DIR}/STM32H743IITX_FLASH.ld
|
|
)
|
|
|
|
include_directories(PUBLIC
|
|
"${CMAKE_SOURCE_DIR}/Core/Inc"
|
|
"${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Include"
|
|
"${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32H7xx/Include"
|
|
"${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Inc"
|
|
"${CMAKE_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"
|
|
)
|
|
|
|
add_subdirectory(Drivers)
|
|
add_subdirectory(Middlewares/Third_Party)
|
|
|
|
set(TARGET_SOURCE_DIRS
|
|
"${CMAKE_SOURCE_DIR}/Core/Src/*.c"
|
|
"${CMAKE_SOURCE_DIR}/Core/Startup/*.s"
|
|
"${CMAKE_SOURCE_DIR}/User/audio/*.c"
|
|
"${CMAKE_SOURCE_DIR}/User/bsp/*.c"
|
|
"${CMAKE_SOURCE_DIR}/User/ports/*.c"
|
|
"${CMAKE_SOURCE_DIR}/User/tasks/*.c"
|
|
)
|
|
file(GLOB_RECURSE TARGET_SOURCES ${TARGET_SOURCE_DIRS})
|
|
list(REMOVE_ITEM TARGET_SOURCES "${CMAKE_SOURCE_DIR}/Core/Src/sysmem.c")
|
|
|
|
add_executable(${CMAKE_PROJECT_NAME} ${TARGET_SOURCES})
|
|
|
|
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
|
"${CMAKE_SOURCE_DIR}/Core/ThreadSafe"
|
|
"${CMAKE_CURRENT_LIST_DIR}/User/audio"
|
|
"${CMAKE_CURRENT_LIST_DIR}/User/bsp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/User/ports/lvgl"
|
|
"${CMAKE_CURRENT_LIST_DIR}/User/ports/heap"
|
|
"${CMAKE_CURRENT_LIST_DIR}/User/tasks"
|
|
)
|
|
|
|
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE
|
|
hal_driver
|
|
# lvgl
|
|
minimp3
|
|
tlsf
|
|
freertos
|
|
easylogger
|
|
fatfs
|
|
)
|
|
|
|
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE
|
|
${TARGET_BUILD_ARCH_OPTIONS}
|
|
${TARGET_BUILD_DEFINATIONS}
|
|
)
|
|
|
|
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE
|
|
${TARGET_BUILD_ARCH_OPTIONS}
|
|
-T${LINKER_SCRIPT}
|
|
)
|