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} )