Files
ETH_TCP_Demo/CMakeLists.txt
2026-03-09 15:34:18 +08:00

101 lines
3.0 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
drivers/hal
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 HAL_SOURCES "drivers/hal/*.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}
${HAL_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
)