cmake_minimum_required(VERSION 3.6) set(MCU_CHIP stm32f103C6) set(MCU_USE_STM32CUBEMX TRUE) set(MCU_LTO_MODE OFF) include(thirdparty/mcu.cmake/mcu.cmake) project(radio-controller C CXX ASM) set(CMAKE_CXX_STANDARD 14) add_executable(firmware src/radio-controller.cpp) target_compile_definitions(firmware PUBLIC MCUCMAKE_USING_STM32CUBEMX=1) target_link_libraries(firmware PUBLIC gcc) mcu_add_executable(TARGET firmware) # mcu.cmake sources target_include_directories(firmware PUBLIC thirdparty/mcu.cmake/stm32f103/include ) target_sources(firmware PUBLIC # thirdparty/mcu.cmake/stm32f103/src/default_handler.cpp thirdparty/mcu.cmake/stm32f103/src/init_high.cpp # thirdparty/mcu.cmake/stm32f103/src/init_low.s thirdparty/mcu.cmake/stm32f103/src/init_stm32f103_ld.cpp thirdparty/mcu.cmake/stm32f103/src/init_low_halt.s thirdparty/mcu.cmake/stm32f103/src/init_low_Reset_Handler.s thirdparty/mcu.cmake/stm32f103/src/breakpoint.s $ENV{HOME}/opt/STM32CubeMX/Repository/STM32Cube_FW_F1_V1.4.0/Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103x6.s ) # mcucpp sources target_include_directories(firmware PUBLIC thirdparty/mcucpp/include thirdparty/mcucpp/thirdparty/tinyprintf ) target_sources(firmware PUBLIC thirdparty/mcucpp/src/arm/semihosting.cpp thirdparty/mcucpp/src/arm/semihosting-putc.cpp thirdparty/mcucpp/src/arm/semihosting-putchar.cpp thirdparty/mcucpp/src/generic/tinyprintf-printf.cpp thirdparty/mcucpp/src/generic/tinyprintf-snprintf.cpp thirdparty/mcucpp/thirdparty/tinyprintf/tinyprintf.c ) # stm32cubemx sources mcu_include_directories_from_sources( SOURCE_DIR stm32cubemx EXCLUDE Templates EXCLUDE _template.c EXCLUDE Examples EXCLUDE DSP_Lib EXCLUDE stm32f1xx_it.c SOURCES_VAR STM32_CUBEMX_SOURCES HEADERS_VAR STM32_CUBEMX_HEADERS INCLUDES_VAR STM32_CUBEMX_INCLUDES ) target_include_directories(firmware PUBLIC ${STM32_CUBEMX_INCLUDES}) target_sources(firmware PUBLIC ${STM32_CUBEMX_SOURCES} ${STM32_CUBEMX_HEADERS})