ChibiOS17.cmake 3.3 KB

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