Răsfoiți Sursa

Merge topic 'FetchContent-unparsed-arguments' into release-3.27

9ede4cab2b FetchContent: Protect ExternalProject keywords from unknown arguments

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Acked-by: Craig Scott <[email protected]>
Merge-request: !8598
Brad King 2 ani în urmă
părinte
comite
1ac0dea4c8

+ 4 - 0
Modules/ExternalProject.cmake

@@ -4266,6 +4266,10 @@ function(ExternalProject_Add name)
     # Miscellaneous options
     #
     LIST_SEPARATOR
+    #
+    # Internal options (undocumented)
+    #
+    EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR
   )
   _ep_parse_arguments(
     ExternalProject_Add

+ 3 - 1
Modules/FetchContent.cmake

@@ -1336,9 +1336,11 @@ function(FetchContent_Declare contentName)
   endif()
 
   # Add back in the keyword args we pulled out and potentially tweaked/added
+  set(sep EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR)
   foreach(key IN LISTS oneValueArgs)
     if(DEFINED ARG_${key})
-      list(PREPEND ARG_UNPARSED_ARGUMENTS ${key} "${ARG_${key}}")
+      list(PREPEND ARG_UNPARSED_ARGUMENTS ${key} "${ARG_${key}}" ${sep})
+      set(sep "")
     endif()
   endforeach()
 

+ 1 - 1
Tests/RunCMake/DependencyProviders/FetchContentSerial-stdout.txt

@@ -2,6 +2,6 @@
 -- After cmake_language
 -- AThing_FOUND = 0
 -- Intercepted FetchContent_MakeAvailable\(SomeDep\)
--- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/FetchContentSerial-build/_deps/somedep-build;SOURCE_SUBDIR;DoesNotExist
+-- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/FetchContentSerial-build/_deps/somedep-build;EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR;SOURCE_SUBDIR;DoesNotExist
 -- FetchContent_MakeAvailable\(\) succeeded
 -- Configuring done

+ 1 - 1
Tests/RunCMake/DependencyProviders/PassThroughProvider-stdout.txt

@@ -4,4 +4,4 @@
 -- Provider invoked for method FIND_PACKAGE with args: AThing;QUIET
 -- AThing_FOUND = 0
 -- Null provider called
--- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SomeDep;SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/PassThroughProvider-build/_deps/somedep-build;SOURCE_SUBDIR;DoesNotExist
+-- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SomeDep;SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/PassThroughProvider-build/_deps/somedep-build;EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR;SOURCE_SUBDIR;DoesNotExist

+ 1 - 1
Tests/RunCMake/DependencyProviders/Recurse-stdout.txt

@@ -1,7 +1,7 @@
 -- Before cmake_language
 -- After cmake_language
 -- Intercepted FetchContent_MakeAvailable\(SomeDep\)
--- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders/Recurse-build/_deps/somedep-src;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/Recurse-build/_deps/somedep-build;DOWNLOAD_COMMAND;.*/cmake(\.exe)?;-E;echo;Download command called
+-- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders/Recurse-build/_deps/somedep-src;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/Recurse-build/_deps/somedep-build;EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR;DOWNLOAD_COMMAND;.*/cmake(\.exe)?;-E;echo;Download command called
 .*Download command called
 .*-- Should now be handled
 -- Configuring done

+ 1 - 1
Tests/RunCMake/DependencyProviders/RedirectFetchContentSerial-stdout.txt

@@ -2,4 +2,4 @@
 -- After cmake_language
 -- AThing_FOUND = 0
 -- Redirecting FetchContent_MakeAvailable\(SomeDep\) to find_package\(\)
--- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/RedirectFetchContentSerial-build/_deps/somedep-build;SOURCE_SUBDIR;DoesNotExist
+-- Provider invoked for method FETCHCONTENT_MAKEAVAILABLE_SERIAL with args: SOURCE_DIR;.*/Tests/RunCMake/DependencyProviders;BINARY_DIR;.*/Tests/RunCMake/DependencyProviders/RedirectFetchContentSerial-build/_deps/somedep-build;EXTERNALPROJECT_INTERNAL_ARGUMENT_SEPARATOR;SOURCE_SUBDIR;DoesNotExist