# ----------------------------------------------------------------------------- # @author Auto-generated by STM32CubeIDE for Visual Studio Code Extension # ----------------------------------------------------------------------------- # @attention # # Copyright (c) 2025 STMicroelectronics. # All rights reserved. # # This software is licensed under terms that can be found in the LICENSE file # in the root directory of this software component. # If no LICENSE file comes with this software, it is provided AS-IS. # # ----------------------------------------------------------------------------- cmake_minimum_required(VERSION 3.20) # # This file is generated only once, and is not re-generated. # # User is free to modify the file as much as necessary # # Core project settings project("EEP-144_Library") enable_language(C CXX ASM) message("Build type: " ${CMAKE_BUILD_TYPE}) # Setup compiler settings set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS ON) # Core MCU flags, CPU type, instruction set and FPU setup set(cpu_PARAMS # Other parameters # -mthumb # -mcpu, -mfloat, -mfloat-abi, ... ) # Sources file(GLOB_RECURSE sources_SRCS CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c ${CMAKE_CURRENT_SOURCE_DIR}/YEEP144lib/src/*.c #${CMAKE_CURRENT_SOURCE_DIR}/Drivers/BSP/STM32H5xx_Nucleo/stm32h5xx_nucleo.c ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/STM32H5xx_HAL_Driver/Src/*.c ) # Include directories for all compilers set(include_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/YEEP144lib/include ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/STM32H5xx_HAL_Driver/Inc ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/STM32H5xx_HAL_Driver/Inc/Legacy #${CMAKE_CURRENT_SOURCE_DIR}/Drivers/BSP/STM32H5xx_Nucleo ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32H5xx/Include ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/CMSIS/Include ) # Include directories for each compiler set(include_c_DIRS) set(include_cxx_DIRS) set(include_asm_DIRS) # Symbols definition for all compilers set(symbols_SYMB USE_HAL_DRIVER STM32H563xx) # Symbols definition for each compiler set(symbols_c_SYMB) set(symbols_cxx_SYMB) set(symbols_asm_SYMB) # Link directories and names of libraries set(link_DIRS) set(link_LIBS m) # Linker script set(linker_script_SRC) # Compiler options set(compiler_OPTS) # Linker options set(linker_OPTS) # Now call generated cmake # This will add script generated # information to the project include("cmake/vscode_generated.cmake") # Link directories setup # Must be before executable is added link_directories(${CMAKE_PROJECT_NAME} ${link_DIRS}) # Create an executable object type add_executable(${CMAKE_PROJECT_NAME}) # Add sources to executable target_sources(${CMAKE_PROJECT_NAME} PUBLIC ${sources_SRCS}) # Add include paths target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${include_DIRS} $<$: ${include_c_DIRS}> $<$: ${include_cxx_DIRS}> $<$: ${include_asm_DIRS}> ) # Add project symbols (macros) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE ${symbols_SYMB} $<$: ${symbols_c_SYMB}> $<$: ${symbols_cxx_SYMB}> $<$: ${symbols_asm_SYMB}> # Configuration specific $<$:DEBUG> $<$: > ) # Add linked libraries target_link_libraries(${CMAKE_PROJECT_NAME} ${link_LIBS}) # Compiler options target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE ${cpu_PARAMS} ${compiler_OPTS} -fstack-usage # -fcyclomatic-complexity -Wall -Wextra -Wpedantic -Wno-unused-parameter $<$: > $<$: # -Wno-volatile # -Wold-style-cast # -Wuseless-cast # -Wsuggest-override > $<$:-x assembler-with-cpp -MMD -MP> $<$:-O0 -g3 -ggdb> $<$:-Os> ) # Linker options target_link_options(${CMAKE_PROJECT_NAME} PRIVATE -T${linker_script_SRC} ${cpu_PARAMS} ${linker_OPTS} -Wl,-Map=${CMAKE_PROJECT_NAME}.map -u _printf_float #-u _scanf_float --specs=nosys.specs -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-group -Wl,-z,max-page-size=8 # Allow good software remapping across address space (with proper GCC section making) -Wl,--print-memory-usage ) # Conditionally add CMSE linker options if(CMSIS_Dsecure STREQUAL "Secure") target_link_options(${CMAKE_PROJECT_NAME} PRIVATE -Wl,--cmse-implib -Wl,--out-implib=secure_nsclib.o ) endif() # Set linker script as a dependency to force re-link if it changes set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES LINK_DEPENDS ${linker_script_SRC}) # Execute post-build to print size, generate hex and bin add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_SIZE} $ COMMAND ${CMAKE_OBJCOPY} -O ihex $ ${CMAKE_PROJECT_NAME}.hex COMMAND ${CMAKE_OBJCOPY} -O binary $ ${CMAKE_PROJECT_NAME}.bin )