47 lines
1.6 KiB
CMake
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)
|