ChibiOS17.cmake 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. IF(NOT ChibiOS_FIND_COMPONENTS)
  2. SET(ChibiOS_FIND_COMPONENTS nil hal st)
  3. MESSAGE(STATUS "No ChibiOS components specified, using default: ${ChibiOS_FIND_COMPONENTS}")
  4. ENDIF()
  5. LIST(FIND ChibiOS_FIND_COMPONENTS nil ChibiOS_FIND_COMPONENTS_nil)
  6. LIST(FIND ChibiOS_FIND_COMPONENTS rt ChibiOS_FIND_COMPONENTS_rt)
  7. IF((${ChibiOS_FIND_COMPONENTS_nil} LESS 0) AND (${ChibiOS_FIND_COMPONENTS_rt} LESS 0))
  8. MESSAGE(STATUS "No kernel component selected, using Nil kernel")
  9. LIST(APPEND ChibiOS_FIND_COMPONENTS nil)
  10. SET(CHIBIOS_KERNEL nil)
  11. ELSE()
  12. IF((NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0)) AND (NOT (${ChibiOS_FIND_COMPONENTS_rt} LESS 0)))
  13. MESSAGE(FATAL_ERROR "Cannot use RT and Nil kernel at the same time")
  14. ENDIF()
  15. IF(NOT (${ChibiOS_FIND_COMPONENTS_nil} LESS 0))
  16. SET(CHIBIOS_KERNEL nil)
  17. ELSE()
  18. SET(CHIBIOS_KERNEL rt)
  19. ENDIF()
  20. ENDIF()
  21. INCLUDE(ChibiOS/ChibiOS17_LD)
  22. INCLUDE(ChibiOS/ChibiOS17_Kernel)
  23. INCLUDE(ChibiOS/ChibiOS17_HAL)
  24. #INCLUDE(ChibiOS/ChibiOS17_Various)
  25. #INCLUDE(ChibiOS/ChibiOS17_Community)
  26. SET(CHIBIOS_COMPONENTS nil rt hal ${CHIBIOS_HAL_MODULES} ${CHIBIOS_HAL_LIB_MODULES} ${CHIBIOS_VARIOUS_MODULES} ${CHIBIOS_COMMUNITY_MODULES})
  27. IF(NOT ChibiOS_LINKER_SCRIPT)
  28. MESSAGE(STATUS "ChibiOS doesn't have linker script for your chip, please specify it directly using ChibiOS_LINKER_SCRIPT variable.")
  29. ENDIF()
  30. FOREACH(comp ${ChibiOS_FIND_COMPONENTS})
  31. LIST(FIND CHIBIOS_COMPONENTS ${comp} INDEX)
  32. IF(INDEX EQUAL -1)
  33. MESSAGE(FATAL_ERROR "Unknown ChibiOS component: ${comp}\nSupported ChibiOS components: ${CHIBIOS_COMPONENTS}")
  34. ENDIF()
  35. FOREACH(source ${CHIBIOS_${comp}_SOURCES})
  36. FIND_FILE(CHIBIOS_${comp}_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  37. LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_${source}})
  38. ENDFOREACH()
  39. IF(CHIBIOS_${comp}_SEARCH_HEADERS)
  40. FOREACH(header ${CHIBIOS_${comp}_SEARCH_HEADERS})
  41. FIND_PATH(CHIBIOS_${comp}_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  42. LIST(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_${header}_INCLUDE_DIR})
  43. ENDFOREACH()
  44. ENDIF()
  45. IF(CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS)
  46. FOREACH(header ${CHIBIOS_${comp}_PLATFORM_SEARCH_HEADERS})
  47. FIND_PATH(CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR NAMES ${header} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  48. LIST(APPEND ChibiOS_INCLUDE_DIRS ${CHIBIOS_${comp}_PLATFORM_${header}_INCLUDE_DIR})
  49. ENDFOREACH()
  50. ENDIF()
  51. IF(CHIBIOS_${comp}_PLATFORM_SOURCES)
  52. FOREACH(source ${CHIBIOS_${comp}_PLATFORM_SOURCES})
  53. FIND_FILE(CHIBIOS_${comp}_PLATFORM_${source} NAMES ${source} PATHS ${CHIBIOS_${comp}_PLATFORM_SEARCH_PATH} NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH)
  54. LIST(APPEND ChibiOS_SOURCES ${CHIBIOS_${comp}_PLATFORM_${source}})
  55. ENDFOREACH()
  56. ENDIF()
  57. ENDFOREACH()