98 lines
2.9 KiB
CMake
98 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
|
|
# Toolchain setup (Must be before project())
|
|
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchain_arm_gcc.cmake")
|
|
|
|
# Project Name
|
|
project(rtthread-nano-stm32f407ve C ASM)
|
|
|
|
# Toolchain setup
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
|
|
# set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/cmake/toolchain_arm_gcc.cmake")
|
|
|
|
set(CMAKE_C_LINK_EXECUTABLE
|
|
"<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
|
set(CMAKE_CXX_LINK_EXECUTABLE
|
|
"<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
|
set(CMAKE_ASM_LINK_EXECUTABLE
|
|
"<CMAKE_ASM_COMPILER> <FLAGS> <CMAKE_ASM_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
|
|
|
# Clear Windows libraries
|
|
set(CMAKE_C_STANDARD_LIBRARIES "")
|
|
set(CMAKE_CXX_STANDARD_LIBRARIES "")
|
|
set(CMAKE_ASM_STANDARD_LIBRARIES "")
|
|
|
|
# Definitions
|
|
add_definitions(
|
|
-DSTM32F407xx
|
|
-DUSE_HAL_DRIVER
|
|
-DRT_USING_NEWLIB
|
|
)
|
|
|
|
# Include Directories
|
|
include_directories(
|
|
app
|
|
board/stm32f407ve
|
|
rt-thread/include
|
|
rt-thread/components/finsh
|
|
drivers/CMSIS/Include
|
|
drivers/CMSIS/Device/ST/STM32F4xx/Include
|
|
drivers/STM32F4xx_HAL_Driver/Inc
|
|
drivers/STM32F4xx_HAL_Driver/Inc/Legacy
|
|
osal/include
|
|
lwip/lwip-2.2.1/src/include
|
|
lwip/port
|
|
lwip/port/arch
|
|
)
|
|
|
|
# Source Files
|
|
file(GLOB_RECURSE APP_SOURCES "app/*.c")
|
|
file(GLOB_RECURSE BOARD_SOURCES "board/stm32f407ve/*.c")
|
|
file(GLOB_RECURSE DRIVER_SOURCES "drivers/STM32F4xx_HAL_Driver/Src/*.c")
|
|
list(FILTER DRIVER_SOURCES EXCLUDE REGEX ".*_template.c$")
|
|
file(GLOB_RECURSE RTTHREAD_SOURCES "rt-thread/src/*.c")
|
|
file(GLOB_RECURSE OSAL_SOURCES "osal/src/rtthread/*.c")
|
|
file(GLOB_RECURSE LWIP_SOURCES "lwip/lwip-2.2.1/src/core/*.c" "lwip/lwip-2.2.1/src/api/*.c" "lwip/lwip-2.2.1/src/netif/*.c")
|
|
file(GLOB_RECURSE LWIP_PORT_SOURCES "lwip/port/*.c")
|
|
|
|
# System & Startup
|
|
set(SYSTEM_SOURCES
|
|
drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c
|
|
drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s
|
|
)
|
|
|
|
# Kernel Port (Cortex-M4)
|
|
set(KERNEL_PORT_SOURCES
|
|
rt-thread/libcpu/arm/cortex-m4/cpuport.c
|
|
rt-thread/libcpu/arm/cortex-m4/context_gcc.S
|
|
)
|
|
|
|
# Linker Script
|
|
set(LINKER_SCRIPT "${CMAKE_SOURCE_DIR}/board/stm32f407ve/link.lds")
|
|
|
|
# Executable
|
|
add_executable(${PROJECT_NAME}
|
|
${APP_SOURCES}
|
|
${BOARD_SOURCES}
|
|
${DRIVER_SOURCES}
|
|
${RTTHREAD_SOURCES}
|
|
${OSAL_SOURCES}
|
|
${LWIP_SOURCES}
|
|
${LWIP_PORT_SOURCES}
|
|
${SYSTEM_SOURCES}
|
|
${KERNEL_PORT_SOURCES}
|
|
)
|
|
|
|
# Linker Options
|
|
target_link_options(${PROJECT_NAME} PUBLIC
|
|
-T${LINKER_SCRIPT}
|
|
-Wl,-Map=${PROJECT_NAME}.map
|
|
)
|
|
|
|
# Output Binary & Hex
|
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_OBJCOPY} -O binary ${PROJECT_NAME}.elf ${PROJECT_NAME}.bin
|
|
COMMAND ${CMAKE_OBJCOPY} -O ihex ${PROJECT_NAME}.elf ${PROJECT_NAME}.hex
|
|
COMMAND ${CMAKE_SIZE} ${PROJECT_NAME}.elf
|
|
)
|