Advertisement
Guest User

Untitled

a guest
Sep 4th, 2018
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 3.99 KB | None | 0 0
  1. project(cmake_stm32f469 C CXX ASM)
  2. cmake_minimum_required(VERSION 3.5.0)
  3.  
  4.  
  5. set(ELF_FILE ${PROJECT_NAME}.elf)
  6. set(HEX_FILE ${PROJECT_NAME}.hex)
  7. set(BIN_FILE ${PROJECT_NAME}.bin)
  8. set(HEX_FILEPATH ${CMAKE_BINARY_DIR}/${HEX_FILE})
  9. set(BIN_FILEPATH ${CMAKE_BINARY_DIR}/${BIN_FILE})
  10. set(ELF_FILEPATH ${CMAKE_BINARY_DIR}/${ELF_FILE})
  11.  
  12. set(CFG_FILEPATH ${CMAKE_SOURCE_DIR}/stm32f469discovery.cfg)
  13.  
  14. file(GLOB_RECURSE GENERATED_SOURCES ${CMAKE_SOURCE_DIR}/Src/*.c)
  15. list(REMOVE_ITEM GENERATED_SOURCES ${CMAKE_SOURCE_DIR}/Src/main.c)
  16. file(GLOB_RECURSE GENERATED_HEADERS ${CMAKE_SOURCE_DIR}/Inc/*.h)
  17.  
  18. file(GLOB_RECURSE CUBE_SOURCES ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Src/*.c
  19.      ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FatFs/src/*.c
  20.      ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FatFs/src/option/*.c)
  21. file(GLOB_RECURSE CUBE_HEADERS ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/*.h
  22.      ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/*.h
  23.      ${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Include/*.h
  24.      ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FatFs/src/*.h)
  25. list(FILTER CUBE_SOURCES EXCLUDE REGEX "${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Src/.+_template.c")
  26.  
  27. file(GLOB_RECURSE HAL_SOURCES ${CMAKE_SOURCE_DIR}/Srcpp/Hal/*.cpp ${CMAKE_SOURCE_DIR}/Srcpp/Hal/*.c)
  28. file(GLOB_RECURSE APP_SOURCES ${CMAKE_SOURCE_DIR}/Srcpp/App/*.cpp ${CMAKE_SOURCE_DIR}/Srcpp/App/*.c)
  29. file(GLOB USER_MAIN ${CMAKE_SOURCE_DIR}/Srcpp/main.cpp)
  30.  
  31.  
  32. file(GLOB_RECURSE HAL_APP_HEADERS ${CMAKE_SOURCE_DIR}/Incpp/*.hpp ${CMAKE_SOURCE_DIR}/Incpp/*.h)
  33.  
  34. SET(C_FLAGS "-std=gnu99")
  35. SET(CXX_FLAGS "-std=gnu++11")
  36. SET(COMMON_FLAGS "-DSTM32F469xx -DUSE_HAL_DRIVER")
  37. SET(CMAKE_C_FLAGS "${COMMON_FLAGS} ${C_FLAGS}")
  38. SET(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${CXX_FLAGS}")
  39.  
  40. include_directories(Inc)
  41. include_directories(Drivers/STM32F4xx_HAL_Driver/Inc)
  42. include_directories(Drivers/STM32F4xx_HAL_Driver/Inc/Legacy)
  43. include_directories(Drivers/CMSIS/Include)
  44. include_directories(Drivers/CMSIS/Device/ST/STM32F4xx/Include)
  45. include_directories(Middlewares/Third_Party/FatFs/src)
  46. include_directories(Drivers/CMSIS/Device/ST/STM32F4xx/Include)
  47. include_directories(Incpp)
  48.  
  49. SET(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F469NIHx_FLASH.ld)
  50. SET(COMMON_FLAGS "${COMMON_FLAGS} -O0 -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=soft -ffunction-sections -fmessage-length=0 \
  51.    -specs=rdimon.specs -lc -lrdimon")
  52. SET(CMAKE_C_FLAGS "${COMMON_FLAGS} ${C_FLAGS}")
  53. SET(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${CXX_FLAGS}")
  54. SET(CMAKE_EXE_LINKER_FLAGS "-Wl,-gc-sections -T${LINKER_SCRIPT}")
  55.  
  56. include(CMakeForceCompiler)
  57.  
  58.  
  59. SET(CMAKE_C_COMPILER arm-none-eabi-gcc)
  60. SET(CMAKE_CXX_COMPILER arm-none-eabi-g++)
  61. SET(CMAKE_ASM_COMPILER arm-none-eabi-as)
  62. SET(CMAKE_OBJECT_COPY arm-none-eabi-objcopy)
  63. SET(CMAKE_OBJECT_SIZE arm-none-eabi-size)
  64.  
  65. add_library(CMSIS
  66.             ${CMAKE_SOURCE_DIR}/Src/system_stm32f4xx.c
  67.             ${CMAKE_SOURCE_DIR}/startup_stm32f469xx.s)
  68.  
  69.  
  70. add_executable(${ELF_FILE} ${USER_MAIN} ${HAL_SOURCES} ${APP_SOURCES} ${HAL_APP_HEADERS} ${GENERATED_SOURCES} ${GENERATED_HEADERS}
  71.                ${CUBE_SOURCES} ${CUBE_HEADERS} ${LINKER_SCRIPT})
  72.  
  73. target_link_libraries(${ELF_FILE} CMSIS m)
  74.  
  75. add_custom_target(run_all
  76.                   DEPENDS
  77.                   ${ELF_FILE}
  78.                   run_tests)
  79.  
  80. add_custom_command(TARGET ${ELF_FILE} POST_BUILD
  81.                    COMMENT "Target size: ${ELF_FILE}"
  82.                    COMMAND ${CMAKE_OBJECT_SIZE} ${PROJECT_NAME}.elf)
  83.  
  84. add_custom_command(TARGET ${ELF_FILE} POST_BUILD
  85.                    COMMENT "Building: ${HEX_FILE}"
  86.                    COMMAND ${CMAKE_OBJECT_COPY} -Oihex $<TARGET_FILE:${ELF_FILE}> ${HEX_FILEPATH})
  87.  
  88. add_custom_command(TARGET ${ELF_FILE} POST_BUILD
  89.                    COMMENT "Building: ${BIN_FILE}"
  90.                    COMMAND ${CMAKE_OBJECT_COPY} -Obinary $<TARGET_FILE:${ELF_FILE}> ${BIN_FILEPATH})
  91.  
  92.  
  93. add_custom_target(flash-stm COMMENT "FLASH_STM" COMMAND st-flash write ${BIN_FILEPATH} 0x08000000 DEPENDS ${ELF_FILE})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement