Files
RTOS/CMakeLists.txt
T
2026-05-19 11:49:22 +08:00

47 lines
1.6 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(RTOS C ASM)
set(CMAKE_C_STANDARD 11)
if (NOT DEFINED RTOS_KERNEL_TYPE)
set(RTOS_KERNEL_TYPE "SingleCore")
endif ()
set(BASE_PATH ${CMAKE_CURRENT_LIST_DIR}/Base)
set(KERNEL_PATH ${CMAKE_CURRENT_LIST_DIR}/Kernel/$ENV{RTOS_KERNEL_TYPE})
set(CPU_PATH ${CMAKE_CURRENT_LIST_DIR}/CPU)
set(APPKIT_PATH ${CMAKE_CURRENT_LIST_DIR}/AppKit)
set(DEVICE_KIT_PATH ${CMAKE_CURRENT_LIST_DIR}/DeviceKit)
if (NOT EXISTS ${KERNEL_PATH})
message(FATAL_ERROR "KERNEL_PATH: ${KERNEL_PATH} doesn't exist!!!")
endif ()
if (NOT DEFINED CPU_PORT_NAME)
set(CPU_PORT_NAME $ENV{RTOS_PORT_NAME})
if(NOT EXISTS ${CPU_PATH}/${RTOS_PORT_NAME})
message(FATAL_ERROR "CPU Port Not Exist: ${CPU_PATH}/${CPU_PORT_NAME}")
endif ()
endif ()
set(CPU_PORT_PATH ${CPU_PATH}/${CPU_PORT_NAME})
configure_file(${KERNEL_PATH}/os_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/os_config.h @ONLY)
file(GLOB BASE_SOURCES ${BASE_PATH}/*.c)
file(GLOB KERNEL_SOURCES ${KERNEL_PATH}/*.c)
file(GLOB CPU_PORT_SOURCES ${CPU_PORT_PATH}/*.c)
file(GLOB APPKIT_SOURCES ${APPKIT_PATH}/*.c)
file(GLOB DEVICE_KIT_SOURCES ${DEVICE_KIT_PATH}/*.c)
if (CMAKE_C_COMPILER_ID MATCHES GNU)
file(GLOB CPU_ASM_SOURCES ${CPU_PORT_PATH}/*_gnu.S)
endif ()
if (CMAKE_C_COMPILER_ID MATCHES ARMCC)
file(GLOB CPU_ASM_SOURCES ${CPU_PORT_PATH}/*_armcc.S)
endif ()
set(RTOS_SOURCES ${BASE_SOURCES} ${KERNEL_SOURCES} ${CPU_PORT_SOURCES} ${CPU_ASM_SOURCES} ${APPKIT_SOURCES} ${DEVICE_KIT_SOURCES} PARENT_SCOPE)
set(RTOS_INCLUDE_PATH ${BASE_PATH} ${KERNEL_PATH} ${CPU_PORT_PATH} ${APPKIT_PATH} ${CMAKE_CURRENT_BINARY_DIR} ${DEVICE_KIT_PATH} PARENT_SCOPE)