初始化版本
This commit is contained in:
97
CMakeLists.txt
Normal file
97
CMakeLists.txt
Normal file
@ -0,0 +1,97 @@
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user