FetchContent: Fix FIND_PACKAGE_ARGS not being passed to dep providers

Fixes: #25504
This commit is contained in:
Craig Scott
2023-12-16 16:40:31 +11:00
parent 6ba3bb0563
commit 0415304970
4 changed files with 21 additions and 2 deletions
+2 -2
View File
@@ -1975,12 +1975,12 @@ macro(FetchContent_MakeAvailable)
# This property might be defined but empty. As long as it is defined,
# find_package() can be called.
get_property(__cmake_addfpargs GLOBAL PROPERTY
_FetchContent_${contentNameLower}_find_package_args
_FetchContent_${__cmake_contentNameLower}_find_package_args
DEFINED
)
if(__cmake_addfpargs)
get_property(__cmake_fpargs GLOBAL PROPERTY
_FetchContent_${contentNameLower}_find_package_args
_FetchContent_${__cmake_contentNameLower}_find_package_args
)
string(APPEND __cmake_providerArgs " FIND_PACKAGE_ARGS")
foreach(__cmake_item IN LISTS __cmake_fpargs)
@@ -0,0 +1,6 @@
-- Before cmake_language
-- After cmake_language
-- Intercepted FetchContent_MakeAvailable\(SomeDep\)
-- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/ProviderFirst-build/_deps/somedep-build;EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR;SOURCE_SUBDIR;DoesNotExist;FIND_PACKAGE_ARGS;QUIET;NO_DEFAULT_PATH;COMPONENTS;abc
-- FetchContent_MakeAvailable\(\) succeeded
-- Configuring done
@@ -0,0 +1,8 @@
include(FetchContent)
FetchContent_Declare(SomeDep
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}
SOURCE_SUBDIR DoesNotExist
FIND_PACKAGE_ARGS NO_DEFAULT_PATH COMPONENTS abc
)
FetchContent_MakeAvailable(SomeDep)
message(STATUS "FetchContent_MakeAvailable() succeeded")
@@ -61,6 +61,11 @@ run_cmake_with_options(RedirectFetchContentSerial
-D "provider_command=redirect_FetchContentSerial_provider"
-D "provider_methods=FETCHCONTENT_MAKEAVAILABLE_SERIAL"
)
run_cmake_with_options(ProviderFirst
-D "CMAKE_PROJECT_TOP_LEVEL_INCLUDES=set_provider.cmake"
-D "provider_command=FetchContentSerial_provider"
-D "provider_methods=FETCHCONTENT_MAKEAVAILABLE_SERIAL"
)
run_cmake_with_options(Bypass
-D "CMAKE_PROJECT_TOP_LEVEL_INCLUDES=set_provider.cmake"
-D "provider_command=forward_find_package"