cmake_minimum_required(VERSION 3.29) set(CMAKE_C_COMPILER arm-none-eabi-gcc) set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) set(SIZE arm-none-eabi-size) project(MyProg C ASM) set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11) add_compile_options(-mcpu=cortex-m4 -mthumb -ffunction-sections) add_compile_options($<$:-x$assembler-with-cpp>) set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -mcpu=cortex-m4 -mthumb -Og -ffunction-sections -g -x") set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} assembler-with-cpp -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -c -o "$@" "$<" ") add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) add_definitions(-DTRACE -DOS_USE_TRACE_SEMIHOSTING_DEBUG -DAT32F437ZMT7 -DUSE_STDPERIPH_DRIVER) add_compile_options(-SD:/USER/ANDR/WORK/DMR_CTRL -BD:/USER/ANDR/WORK/DMR_CTRL/DEBUG) if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") message(STATUS "Maximum optimization for speed") add_compile_options(-Ofast) elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") message(STATUS "Maximum optimization for speed, debug info included") add_compile_options(-Ofast -g) elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel") message(STATUS "Maximum optimization for size") add_compile_options(-Os) else () message(STATUS "Minimal optimization, debug info included") add_compile_options(-Og -g) endif () include_directories( ${CMAKE_SOURCE_DIR}/PROJ/libraries/drivers/inc ${CMAKE_SOURCE_DIR}/PROJ/project/inc ) set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/project/AT32_IDE/ldscripts/AT32F437xM_FLASH.ld) add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) add_link_options(-mcpu=${MCPU} -mthumb -mthumb-interwork) add_link_options(-T ${LINKER_SCRIPT}) set(SRC #${CMAKE_SOURCE_DIR} d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/AT32_IDE/startup_at32f435_437.s d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/src/main.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/src/at32f435_437_int.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/src/at32f435_437_wk_config.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/src/dmr_1w.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/src/dmr_com.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/src/dmr_i2c.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/project/src/dmr_spi.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/middlewares/i2c_application_library/i2c_application.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_crm.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_debug.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_flash.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_gpio.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_i2c.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_misc.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_pwc.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/drivers/src/at32f435_437_spi.c d:/USER/ANDR/WORK/DMR_CTRL/PROJ/libraries/cmsis/cm4/device_support/system_at32f435_437.c ) add_executable(${PROJECT_NAME}.elf ${SRC} ${LINKER_SCRIPT}) TARGET_LINK_LIBRARIES( ${APP} -L${CMAKE_CURRENT_SOURCE_DIR}/system/ldscripts -T${CMAKE_CURRENT_SOURCE_DIR}/configs/${CONFIG}/mem.ld -nostartfiles -Xlinker --gc-sections -Wl,-Map,${APP}.map "-u _printf_float" --specs=nano.specs )