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()