cmake_minimum_required(VERSION 3.26) project(STM32U5 C CXX ASM) set(EXAMPLE_NAME "stimulator") set(CMAKE_EXPORT_COMPILE_COMMANDS on) # for clangd set(CMAKE_SYSTEM_PROCESSOR ARM) set(CMAKE_SYSTEM_NAME Generic) # set(CMAKE_C_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) # set(CMAKE_CXX_COMPILER ${COMPILE_PREFIX}arm-none-eabi-g++) # set(CMAKE_ASM_COMPILER ${COMPILE_PREFIX}arm-none-eabi-gcc) # set(CMAKE_AR ${COMPILE_PREFIX}arm-none-eabi-ar) # set(CMAKE_OBJCOPY ${COMPILE_PREFIX}arm-none-eabi-objcopy) # set(CMAKE_OBJDUMP ${COMPILE_PREFIX}arm-none-eabi-objdump) # set(SIZE ${COMPILE_PREFIX}arm-none-eabi-size) set(CMAKE_C_COMPILER_WORKS 1) set(CMAKE_CXX_COMPILER_WORKS 1) ### set includes and library set(Stm32U5Lib_DIR ../../) find_package(Stm32U5Lib REQUIRED) file(GLOB_RECURSE SOURCES ${CMAKE_SOURCE_DIR}/main.cpp ${CMAKE_SOURCE_DIR}/custom_prephrals.cpp # ../../../startup/startup_stm32u575zitxq.s ${CMAKE_SOURCE_DIR}/startup_stm32u575zitxq.s ${CMAKE_SOURCE_DIR}/syscalls.c ) # if(NOT LIB_SOURCES) # add_executable(${EXAMPLE_NAME}.elf ${SOURCES} ${LINKER_SCRIPT}) # target_link_libraries(${EXAMPLE_NAME}.elf ${LIB_BIN}) # else() # message(STATUS "LIB_SOURCES is not empty") # add_executable(${EXAMPLE_NAME}.elf ${SOURCES} ${LINKER_SCRIPT} ${LIB_SOURCES}) # endif() set(LIB_BIN ${CMAKE_SOURCE_DIR}/libSTM32U5.a) message (STATUS "LIB_BIN: " ${LIB_BIN}) message (STATUS "EXAMPLE_NAME: " ${EXAMPLE_NAME}) add_executable(${EXAMPLE_NAME}.elf ${SOURCES} ${LINKER_SCRIPT}) target_link_libraries(${EXAMPLE_NAME}.elf ${LIB_BIN}) set(HEX_FILE ${EXAMPLE_NAME}.hex) set(BIN_FILE ${EXAMPLE_NAME}.bin) add_custom_command(TARGET ${EXAMPLE_NAME}.elf POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Oihex $ ${HEX_FILE} COMMAND ${CMAKE_OBJCOPY} -Obinary $ ${BIN_FILE} COMMENT "Building ${HEX_FILE} Building ${BIN_FILE}")