138 lines
4.4 KiB
CMake
138 lines
4.4 KiB
CMake
if(NOT ChibiOS_FIND_COMPONENTS)
|
|
SET(ChibiOS_FIND_COMPONENTS nil hal st osless)
|
|
message(STATUS "No ChibiOS components specified, using default: ${ChibiOS_FIND_COMPONENTS}")
|
|
endif()
|
|
|
|
|
|
list(FIND ChibiOS_FIND_COMPONENTS nil ChibiOS_FIND_COMPONENTS_nil)
|
|
list(FIND ChibiOS_FIND_COMPONENTS rt ChibiOS_FIND_COMPONENTS_rt)
|
|
list(FIND ChibiOS_FIND_COMPONENTS osless ChibiOS_FIND_COMPONENTS_osless)
|
|
list(FIND ChibiOS_FIND_COMPONENTS hal ChibiOS_FIND_COMPONENTS_hal)
|
|
list(FIND ChibiOS_FIND_COMPONENTS st ChibiOS_FIND_COMPONENTS_st)
|
|
|
|
if((NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0)) AND (NOT (${ChibiOS_FIND_COMPONENTS_rt} LESS 0)))
|
|
message(FATAL_ERROR "Cannot use RT and Nil kernel at the same time")
|
|
endif()
|
|
if(NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0))
|
|
SET(CHIBIOS_KERNEL nil)
|
|
add_definitions(-DCHIBIOS_KERNEL_NIL=TRUE)
|
|
elseif(NOT (${ChibiOS_FIND_COMPONENTS_rt} LESS 0))
|
|
SET(CHIBIOS_KERNEL rt)
|
|
add_definitions(-DCHIBIOS_KERNEL_RT=TRUE)
|
|
elseif(NOT (${ChibiOS_FIND_COMPONENTS_osless} LESS 0))
|
|
SET(CHIBIOS_KERNEL osless)
|
|
add_definitions(-DCHIBIOS_KERNEL_OSLESS=TRUE)
|
|
else()
|
|
message(FATAL_ERROR "No OS selected")
|
|
endif()
|
|
|
|
if(${ChibiOS_FIND_COMPONENTS_hal} LESS 0)
|
|
list(APPEND ChibiOS_FIND_COMPONENTS hal)
|
|
endif()
|
|
|
|
if(${ChibiOS_FIND_COMPONENTS_st} LESS 0)
|
|
list(APPEND ChibiOS_FIND_COMPONENTS st)
|
|
endif()
|
|
|
|
include(ChibiOS16_LD)
|
|
include(ChibiOS16_HAL)
|
|
|
|
|
|
if(${CHIBIOS_KERNEL} STREQUAL rt)
|
|
include(ChibiOS16_RT)
|
|
elseif(${CHIBIOS_KERNEL} STREQUAL nil)
|
|
include(ChibiOS16_NIL)
|
|
elseif(${CHIBIOS_KERNEL} STREQUAL osless)
|
|
include(ChibiOS16_OSLESS)
|
|
endif()
|
|
|
|
include(ChibiOS16_Various)
|
|
|
|
SET(CHIBIOS_COMPONENTS nil rt hal osless ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES})
|
|
|
|
if(NOT ChibiOS_LINKER_SCRIPT)
|
|
message(STATUS "ChibiOS doesn't have linker script for your chip, please specify it directly using ChibiOS_LINKER_SCRIPT variable.")
|
|
endif()
|
|
|
|
set(components_definitions
|
|
HAL_USE_PAL
|
|
HAL_USE_ADC
|
|
HAL_USE_CAN
|
|
HAL_USE_DAC
|
|
HAL_USE_EXT
|
|
HAL_USE_GPT
|
|
HAL_USE_I2C
|
|
HAL_USE_I2S
|
|
HAL_USE_ICU
|
|
HAL_USE_MAC
|
|
HAL_USE_MMC_SPI
|
|
HAL_USE_PWM
|
|
HAL_USE_RTC
|
|
HAL_USE_SDC
|
|
HAL_USE_SERIAL
|
|
HAL_USE_SERIAL_USB
|
|
HAL_USE_SPI
|
|
HAL_USE_UART
|
|
HAL_USE_USB
|
|
HAL_USE_WDG)
|
|
|
|
set(HAL_USE_PAL "FALSE")
|
|
set(HAL_USE_ADC "FALSE")
|
|
set(HAL_USE_CAN "FALSE")
|
|
set(HAL_USE_DAC "FALSE")
|
|
set(HAL_USE_EXT "FALSE")
|
|
set(HAL_USE_GPT "FALSE")
|
|
set(HAL_USE_I2C "FALSE")
|
|
set(HAL_USE_I2S "FALSE")
|
|
set(HAL_USE_ICU "FALSE")
|
|
set(HAL_USE_MAC "FALSE")
|
|
set(HAL_USE_MMC_SPI "FALSE")
|
|
set(HAL_USE_PWM "FALSE")
|
|
set(HAL_USE_RTC "FALSE")
|
|
set(HAL_USE_SDC "FALSE")
|
|
set(HAL_USE_SERIAL "FALSE")
|
|
set(HAL_USE_SERIAL_USB "FALSE")
|
|
set(HAL_USE_SPI "FALSE")
|
|
set(HAL_USE_UART "FALSE")
|
|
set(HAL_USE_USB "FALSE")
|
|
set(HAL_USE_WDG "FALSE")
|
|
|
|
foreach(comp ${ChibiOS_FIND_COMPONENTS})
|
|
list(FIND CHIBIOS_COMPONENTS ${comp} INDEX)
|
|
if(INDEX EQUAL -1)
|
|
message(FATAL_ERROR "Unknown ChibiOS component: ${comp}\nSupported ChibiOS components: ${CHIBIOS_COMPONENTS}")
|
|
endif()
|
|
|
|
string(TOUPPER "${comp}" MODULE_UPPER)
|
|
set(HAL_USE_${MODULE_UPPER} "TRUE")
|
|
|
|
foreach(source ${CHIBIOS_${comp}_SOURCES})
|
|
FIND_FILE(CHIBIOS_${comp}_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
|
|
list(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_${source}})
|
|
endforeach()
|
|
|
|
if(CHIBIOS_${comp}_SEARCH_HEADERS)
|
|
foreach(header ${CHIBIOS_${comp}_SEARCH_HEADERS})
|
|
FIND_PATH(CHIBIOS_${comp}_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
|
|
list(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_${header}_INCLUDE_DIR})
|
|
endforeach()
|
|
endif()
|
|
if(CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS)
|
|
foreach(header ${CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS})
|
|
FIND_PATH(CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
|
|
list(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR})
|
|
endforeach()
|
|
endif()
|
|
|
|
if(CHIBIOS_${comp}_PLATFORM_SOURCES)
|
|
foreach(source ${CHIBIOS_${comp}_PLATFORM_SOURCES})
|
|
FIND_FILE(CHIBIOS_${comp}_PLATFORM_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
|
|
list(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_PLATFORM_${source}})
|
|
endforeach()
|
|
endif()
|
|
endforeach()
|
|
|
|
foreach(comp ${components_definitions})
|
|
add_definitions(-D${comp}=${${comp}})
|
|
endforeach()
|