78 lines
3.3 KiB
CMake
78 lines
3.3 KiB
CMake
IF(NOT ChibiOS_FIND_COMPONENTS)
|
|
SET(ChibiOS_FIND_COMPONENTS nil hal st)
|
|
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 hal ChibiOS_FIND_COMPONENTS_hal)
|
|
LIST(FIND ChibiOS_FIND_COMPONENTS st ChibiOS_FIND_COMPONENTS_st)
|
|
|
|
IF((${ChibiOS_FIND_COMPONENTS_nil} LESS 0) AND (${ChibiOS_FIND_COMPONENTS_rt} LESS 0))
|
|
MESSAGE(STATUS "No kernel component selected, using Nil kernel")
|
|
LIST(APPEND ChibiOS_FIND_COMPONENTS nil)
|
|
SET(CHIBIOS_KERNEL nil)
|
|
ELSE()
|
|
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)
|
|
ELSE()
|
|
SET(CHIBIOS_KERNEL rt)
|
|
ENDIF()
|
|
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(ChibiOS3_LD)
|
|
INCLUDE(ChibiOS3_HAL)
|
|
|
|
IF(${CHIBIOS_KERNEL} STREQUAL rt)
|
|
INCLUDE(ChibiOS3_RT)
|
|
ELSE()
|
|
INCLUDE(ChibiOS3_NIL)
|
|
ENDIF()
|
|
|
|
INCLUDE(ChibiOS3_Various)
|
|
|
|
SET(CHIBIOS_COMPONENTS nil rt hal ${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()
|
|
|
|
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()
|
|
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() |