CMakeLists.txt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. set(CMAKE_SYSTEM_NAME Generic)
  2. set(CMAKE_SYSTEM_VERSION 1)
  3. cmake_minimum_required(VERSION 3.8)
  4. cmake_policy(SET CMP0069 NEW)
  5. project(ping-pong VERSION 0.1
  6. DESCRIPTION "ping-pong with rotor light"
  7. LANGUAGES C CXX ASM)
  8. set(CMAKE_CXX_STANDARD 17)
  9. set(CMAKE_C_STANDARD 11)
  10. # Enable assembler files preprocessing
  11. add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>)
  12. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register")
  13. if (NOT ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "Cortex-M7" ))
  14. message(FATAL_ERROR "wrong system processor ${CMAKE_SYSTEM_PROCESSOR}, expected: Cortex-M7")
  15. endif()
  16. add_definitions(-DDEBUG
  17. -DUSE_FULL_LL_DRIVER
  18. -DHSE_VALUE=8000000
  19. -DSTM32H743xx
  20. -DUSE_FULL_ASSERT
  21. )
  22. add_library(board
  23. board.cpp
  24. startup_stm32h743xx.s
  25. Core/Src/main.c
  26. Core/Src/gpio.c
  27. Core/Src/stm32h7xx_it.c
  28. Core/Src/system_stm32h7xx.c
  29. Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_utils.c
  30. Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_rcc.c
  31. Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_pwr.c
  32. Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_gpio.c
  33. Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_exti.c
  34. ${LINKER_SCRIPT}
  35. )
  36. target_include_directories(rotor_light PUBLIC "${LIBSTDCPP_HOME}/include")
  37. target_include_directories(board PUBLIC
  38. "${CMAKE_CURRENT_SOURCE_DIR}"
  39. ${CMAKE_CURRENT_SOURCE_DIR}/Core/Inc
  40. ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/STM32H7xx_HAL_Driver/Inc
  41. ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32H7xx/Include
  42. ${CMAKE_CURRENT_SOURCE_DIR}/Drivers/CMSIS/Include
  43. )
  44. target_link_libraries(board rotor_light)
  45. add_executable(${PROJECT_NAME} ping-pong-poll.cpp)
  46. target_link_libraries(${PROJECT_NAME} board)
  47. target_link_options(${PROJECT_NAME} PUBLIC
  48. LINKER:-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map
  49. -T ${LINKER_SCRIPT})
  50. set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX .elf)