123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- set(WORKSPACE_RELATIVE_DIR "../../../../..")
- set(ZEPHYR_RELATIVE_DIR "../../../..")
- macro(get_search_paths START_PATH SEARCH_PATHS PREFERENCE_LIST)
- get_filename_component(SEARCH_PATH ${START_PATH} DIRECTORY)
- while(NOT (SEARCH_PATH STREQUAL SEARCH_PATH_PREV))
- foreach(preference ${PREFERENCE_LIST})
- list(APPEND SEARCH_PATHS ${SEARCH_PATH}/${preference})
- endforeach()
- list(APPEND SEARCH_PATHS ${SEARCH_PATH}/zephyr)
- list(APPEND SEARCH_PATHS ${SEARCH_PATH})
- set(SEARCH_PATH_PREV ${SEARCH_PATH})
- get_filename_component(SEARCH_PATH ${SEARCH_PATH} DIRECTORY)
- endwhile()
- endmacro()
- macro(check_zephyr_package)
- set(options CHECK_ONLY SEARCH_PARENTS VERSION_CHECK)
- set(single_args WORKSPACE_DIR ZEPHYR_BASE)
- set(list_args CANDIDATES_PREFERENCE_LIST)
- cmake_parse_arguments(CHECK_ZEPHYR_PACKAGE "${options}" "${single_args}" "${list_args}" ${ARGN})
- if(CHECK_ZEPHYR_PACKAGE_ZEPHYR_BASE)
- set(SEARCH_SETTINGS PATHS ${CHECK_ZEPHYR_PACKAGE_ZEPHYR_BASE} NO_DEFAULT_PATH)
- endif()
- if(CHECK_ZEPHYR_PACKAGE_WORKSPACE_DIR)
- set(SEARCH_SETTINGS PATHS ${CHECK_ZEPHYR_PACKAGE_WORKSPACE_DIR}/zephyr ${CHECK_ZEPHYR_PACKAGE_WORKSPACE_DIR} NO_DEFAULT_PATH)
- endif()
- if(CHECK_ZEPHYR_PACKAGE_SEARCH_PARENTS)
- get_search_paths(${CMAKE_CURRENT_SOURCE_DIR} SEARCH_PATHS "${CHECK_ZEPHYR_PACKAGE_CANDIDATES_PREFERENCE_LIST}")
- set(SEARCH_SETTINGS PATHS ${SEARCH_PATHS} NO_DEFAULT_PATH)
- endif()
-
-
- find_package(Zephyr 0.0.0 EXACT QUIET ${SEARCH_SETTINGS})
-
-
-
- if(NOT (NO_DEFAULT_PATH IN_LIST SEARCH_SETTINGS))
- list(REMOVE_ITEM Zephyr_CONSIDERED_CONFIGS ${CMAKE_CURRENT_LIST_DIR}/ZephyrConfig.cmake)
- endif()
- list(REMOVE_DUPLICATES Zephyr_CONSIDERED_CONFIGS)
- foreach(ZEPHYR_CANDIDATE ${Zephyr_CONSIDERED_CONFIGS})
- if(CHECK_ZEPHYR_PACKAGE_WORKSPACE_DIR)
-
- get_filename_component(CANDIDATE_DIR ${ZEPHYR_CANDIDATE}/${ZEPHYR_RELATIVE_DIR} ABSOLUTE)
- else()
- get_filename_component(CANDIDATE_DIR ${ZEPHYR_CANDIDATE}/${WORKSPACE_RELATIVE_DIR} ABSOLUTE)
- endif()
- if(CHECK_ZEPHYR_PACKAGE_ZEPHYR_BASE)
- if(CHECK_ZEPHYR_PACKAGE_VERSION_CHECK)
- string(REGEX REPLACE "\.cmake$" "Version.cmake" ZEPHYR_VERSION_CANDIDATE ${ZEPHYR_CANDIDATE})
- include(${ZEPHYR_VERSION_CANDIDATE} NO_POLICY_SCOPE)
- return()
- else()
- include(${ZEPHYR_CANDIDATE} NO_POLICY_SCOPE)
- return()
- endif()
- endif()
- string(FIND "${CMAKE_CURRENT_SOURCE_DIR}" "${CANDIDATE_DIR}/" COMMON_INDEX)
- if (COMMON_INDEX EQUAL 0)
- if(CHECK_ZEPHYR_PACKAGE_CHECK_ONLY)
-
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
- return()
- elseif(ZEPHYR_CANDIDATE STREQUAL ${CMAKE_CURRENT_LIST_DIR}/ZephyrConfig.cmake)
-
- break()
- else()
- if(CHECK_ZEPHYR_PACKAGE_VERSION_CHECK)
- string(REGEX REPLACE "\.cmake$" "Version.cmake" ZEPHYR_VERSION_CANDIDATE ${ZEPHYR_CANDIDATE})
- include(${ZEPHYR_VERSION_CANDIDATE} NO_POLICY_SCOPE)
- return()
- else()
- include(${ZEPHYR_CANDIDATE} NO_POLICY_SCOPE)
- return()
- endif()
- endif()
- endif()
- endforeach()
- endmacro()
|