src.dualinventive.com/dinet/libdi-php/common/cmake/modules_fw/ChibiOS18.cmake

124 lines
3.9 KiB
CMake

if(NOT ChibiOS_FIND_COMPONENTS)
SET(ChibiOS_FIND_COMPONENTS nil hal 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)
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_rt} LESS 0))
SET(CHIBIOS_KERNEL rt)
add_definitions(-DCHIBIOS_KERNEL_RT=TRUE)
else()
message(FATAL_ERROR "No OS selected")
endif()
if(${ChibiOS_FIND_COMPONENTS_hal} LESS 0)
list(APPEND ChibiOS_FIND_COMPONENTS hal)
endif()
include(ChibiOS18_LD)
include(ChibiOS18_HAL)
if(${CHIBIOS_KERNEL} STREQUAL rt)
include(ChibiOS18_RT)
endif()
include(ChibiOS18_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")
message(STATUS "source(${comp}): ${CHIBIOS_${comp}_SOURCES}")
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()