| include(FetchContent) |
| |
| macro(null_provider method) |
| message(STATUS "Null provider called") |
| message(STATUS "Provider invoked for method ${method} with args: ${ARGN}") |
| endmacro() |
| |
| macro(find_package_provider method package_name) |
| message(STATUS "Intercepted find_package(${package_name})") |
| message(STATUS "Provider invoked for method ${method} with args: ${ARGN}") |
| set(${package_name}_FOUND TRUE) |
| endmacro() |
| |
| macro(FetchContentSerial_provider method dep_name) |
| message(STATUS "Intercepted FetchContent_MakeAvailable(${dep_name})") |
| message(STATUS "Provider invoked for method ${method} with args: ${ARGN}") |
| FetchContent_SetPopulated(${dep_name}) |
| endmacro() |
| |
| macro(redirect_find_package_provider method package_name) |
| message(STATUS "Redirecting find_package(${package_name}) to FetchContent_MakeAvailable()") |
| message(STATUS "Provider invoked for method ${method} with args: ${ARGN}") |
| FetchContent_Declare(${package_name} |
| SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR} |
| SOURCE_SUBDIR DoesNotExist |
| ) |
| FetchContent_MakeAvailable(${package_name}) |
| set(${package_name}_FOUND TRUE) |
| endmacro() |
| |
| macro(redirect_FetchContentSerial_provider method dep_name) |
| message(STATUS "Redirecting FetchContent_MakeAvailable(${dep_name}) to find_package()") |
| message(STATUS "Provider invoked for method ${method} with args: ${ARGN}") |
| find_package(${dep_name} NO_DEFAULT_PATH |
| PATHS ${CMAKE_CURRENT_LIST_DIR}/Finders |
| REQUIRED |
| ) |
| FetchContent_SetPopulated(${dep_name}) |
| endmacro() |
| |
| macro(forward_find_package method package_name) |
| message(STATUS "Forwarding find_package(${package_name})") |
| message(STATUS "Provider invoked for method ${method} with args: ${ARGN}") |
| find_package(${package_name} |
| BYPASS_PROVIDER |
| PATHS ${CMAKE_CURRENT_LIST_DIR}/ConfigFiles |
| ${ARGN} |
| ) |
| message(STATUS "Leaving provider") |
| endmacro() |
| |
| macro(recurse_FetchContent method dep_name) |
| message(STATUS "Intercepted FetchContent_MakeAvailable(${dep_name})") |
| message(STATUS "Provider invoked for method ${method} with args: ${ARGN}") |
| FetchContent_MakeAvailable(${dep_name}) |
| message(STATUS "Should now be handled") |
| endmacro() |
| |
| message(STATUS "Before cmake_language") |
| cmake_language( |
| SET_DEPENDENCY_PROVIDER ${provider_command} |
| SUPPORTED_METHODS ${provider_methods} |
| ) |
| message(STATUS "After cmake_language") |