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
65 lines
2.3 KiB
2 years ago
|
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")
|