You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.3 KiB

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")