Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- project(cmake_stm32f469 C CXX ASM)
- cmake_minimum_required(VERSION 3.5.0)
- set(ELF_FILE ${PROJECT_NAME}.elf)
- set(HEX_FILE ${PROJECT_NAME}.hex)
- set(BIN_FILE ${PROJECT_NAME}.bin)
- set(HEX_FILEPATH ${CMAKE_BINARY_DIR}/${HEX_FILE})
- set(BIN_FILEPATH ${CMAKE_BINARY_DIR}/${BIN_FILE})
- set(ELF_FILEPATH ${CMAKE_BINARY_DIR}/${ELF_FILE})
- set(CFG_FILEPATH ${CMAKE_SOURCE_DIR}/stm32f469discovery.cfg)
- file(GLOB_RECURSE GENERATED_SOURCES ${CMAKE_SOURCE_DIR}/Src/*.c)
- list(REMOVE_ITEM GENERATED_SOURCES ${CMAKE_SOURCE_DIR}/Src/main.c)
- file(GLOB_RECURSE GENERATED_HEADERS ${CMAKE_SOURCE_DIR}/Inc/*.h)
- file(GLOB_RECURSE CUBE_SOURCES ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Src/*.c
- ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FatFs/src/*.c
- ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FatFs/src/option/*.c)
- file(GLOB_RECURSE CUBE_HEADERS ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/*.h
- ${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/*.h
- ${CMAKE_SOURCE_DIR}/Drivers/CMSIS/Device/ST/STM32F4xx/Include/*.h
- ${CMAKE_SOURCE_DIR}/Middlewares/Third_Party/FatFs/src/*.h)
- list(FILTER CUBE_SOURCES EXCLUDE REGEX "${CMAKE_SOURCE_DIR}/Drivers/STM32F4xx_HAL_Driver/Src/.+_template.c")
- file(GLOB_RECURSE HAL_SOURCES ${CMAKE_SOURCE_DIR}/Srcpp/Hal/*.cpp ${CMAKE_SOURCE_DIR}/Srcpp/Hal/*.c)
- file(GLOB_RECURSE APP_SOURCES ${CMAKE_SOURCE_DIR}/Srcpp/App/*.cpp ${CMAKE_SOURCE_DIR}/Srcpp/App/*.c)
- file(GLOB USER_MAIN ${CMAKE_SOURCE_DIR}/Srcpp/main.cpp)
- file(GLOB_RECURSE HAL_APP_HEADERS ${CMAKE_SOURCE_DIR}/Incpp/*.hpp ${CMAKE_SOURCE_DIR}/Incpp/*.h)
- SET(C_FLAGS "-std=gnu99")
- SET(CXX_FLAGS "-std=gnu++11")
- SET(COMMON_FLAGS "-DSTM32F469xx -DUSE_HAL_DRIVER")
- SET(CMAKE_C_FLAGS "${COMMON_FLAGS} ${C_FLAGS}")
- SET(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${CXX_FLAGS}")
- include_directories(Inc)
- include_directories(Drivers/STM32F4xx_HAL_Driver/Inc)
- include_directories(Drivers/STM32F4xx_HAL_Driver/Inc/Legacy)
- include_directories(Drivers/CMSIS/Include)
- include_directories(Drivers/CMSIS/Device/ST/STM32F4xx/Include)
- include_directories(Middlewares/Third_Party/FatFs/src)
- include_directories(Drivers/CMSIS/Device/ST/STM32F4xx/Include)
- include_directories(Incpp)
- SET(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32F469NIHx_FLASH.ld)
- SET(COMMON_FLAGS "${COMMON_FLAGS} -O0 -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=soft -ffunction-sections -fmessage-length=0 \
- -specs=rdimon.specs -lc -lrdimon")
- SET(CMAKE_C_FLAGS "${COMMON_FLAGS} ${C_FLAGS}")
- SET(CMAKE_CXX_FLAGS "${COMMON_FLAGS} ${CXX_FLAGS}")
- SET(CMAKE_EXE_LINKER_FLAGS "-Wl,-gc-sections -T${LINKER_SCRIPT}")
- include(CMakeForceCompiler)
- SET(CMAKE_C_COMPILER arm-none-eabi-gcc)
- SET(CMAKE_CXX_COMPILER arm-none-eabi-g++)
- SET(CMAKE_ASM_COMPILER arm-none-eabi-as)
- SET(CMAKE_OBJECT_COPY arm-none-eabi-objcopy)
- SET(CMAKE_OBJECT_SIZE arm-none-eabi-size)
- add_library(CMSIS
- ${CMAKE_SOURCE_DIR}/Src/system_stm32f4xx.c
- ${CMAKE_SOURCE_DIR}/startup_stm32f469xx.s)
- add_executable(${ELF_FILE} ${USER_MAIN} ${HAL_SOURCES} ${APP_SOURCES} ${HAL_APP_HEADERS} ${GENERATED_SOURCES} ${GENERATED_HEADERS}
- ${CUBE_SOURCES} ${CUBE_HEADERS} ${LINKER_SCRIPT})
- target_link_libraries(${ELF_FILE} CMSIS m)
- add_custom_target(run_all
- DEPENDS
- ${ELF_FILE}
- run_tests)
- add_custom_command(TARGET ${ELF_FILE} POST_BUILD
- COMMENT "Target size: ${ELF_FILE}"
- COMMAND ${CMAKE_OBJECT_SIZE} ${PROJECT_NAME}.elf)
- add_custom_command(TARGET ${ELF_FILE} POST_BUILD
- COMMENT "Building: ${HEX_FILE}"
- COMMAND ${CMAKE_OBJECT_COPY} -Oihex $<TARGET_FILE:${ELF_FILE}> ${HEX_FILEPATH})
- add_custom_command(TARGET ${ELF_FILE} POST_BUILD
- COMMENT "Building: ${BIN_FILE}"
- COMMAND ${CMAKE_OBJECT_COPY} -Obinary $<TARGET_FILE:${ELF_FILE}> ${BIN_FILEPATH})
- 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