summaryrefslogtreecommitdiff
path: root/Modules/FetchContent.cmake
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2021-10-04 21:47:12 +1100
committerCraig Scott <craig.scott@crascit.com>2021-10-05 23:41:34 +1100
commit1851aa49be01076e0869ce14b22b9a860454bba4 (patch)
tree932ff1917d20679cc1d6335138d1848881b949f7 /Modules/FetchContent.cmake
parent96937438b74469eea5b0ae46b4e13489ac3faec7 (diff)
downloadcmake-1851aa49be01076e0869ce14b22b9a860454bba4.tar.gz
FetchContent: Pass through networking-related CMAKE_... variables
CMAKE_TLS_VERIFY, CMAKE_TLS_CAINFO, CMAKE_NETRC and CMAKE_NETRC_FILE are now passed through to the underlying ExternalProject sub-build. Previously, they were silently ignored. Fixes: #22144
Diffstat (limited to 'Modules/FetchContent.cmake')
-rw-r--r--Modules/FetchContent.cmake32
1 files changed, 25 insertions, 7 deletions
diff --git a/Modules/FetchContent.cmake b/Modules/FetchContent.cmake
index 5ea8b2a92c..be75689b0a 100644
--- a/Modules/FetchContent.cmake
+++ b/Modules/FetchContent.cmake
@@ -162,6 +162,13 @@ Commands
This may be needed for things like password prompts or real-time display
of command progress.
+ .. versionadded:: 3.22
+ The :variable:`CMAKE_TLS_VERIFY`, :variable:`CMAKE_TLS_CAINFO`,
+ :variable:`CMAKE_NETRC` and :variable:`CMAKE_NETRC_FILE` variables now
+ provide the defaults for their corresponding content options, just like
+ they do for :command:`ExternalProject_Add`. Previously, these variables
+ were ignored by the ``FetchContent`` module.
+
.. command:: FetchContent_MakeAvailable
.. versionadded:: 3.14
@@ -1016,18 +1023,29 @@ ExternalProject_Add_Step(${contentName}-populate copyfile
unset(subCMakeOpts)
endif()
- if(DEFINED CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY)
- list(APPEND subCMakeOpts
- "-DCMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY=${CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY}")
- endif()
+ set(__FETCHCONTENT_CACHED_INFO "")
+ set(__passthrough_vars
+ CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY
+ CMAKE_TLS_VERIFY
+ CMAKE_TLS_CAINFO
+ CMAKE_NETRC
+ CMAKE_NETRC_FILE
+ )
+ foreach(var IN LISTS __passthrough_vars)
+ if(DEFINED ${var})
+ # Embed directly in the generated CMakeLists.txt file to avoid making
+ # the cmake command line excessively long. It also makes debugging and
+ # testing easier.
+ string(APPEND __FETCHCONTENT_CACHED_INFO "set(${var} [==[${${var}}]==])\n")
+ endif()
+ endforeach()
# Avoid using if(... IN_LIST ...) so we don't have to alter policy settings
- set(__FETCHCONTENT_CACHED_INFO "")
list(FIND ARG_UNPARSED_ARGUMENTS GIT_REPOSITORY indexResult)
if(indexResult GREATER_EQUAL 0)
find_package(Git QUIET)
- set(__FETCHCONTENT_CACHED_INFO
-"# Pass through things we've already detected in the main project to avoid
+ string(APPEND __FETCHCONTENT_CACHED_INFO "
+# Pass through things we've already detected in the main project to avoid
# paying the cost of redetecting them again in ExternalProject_Add()
set(GIT_EXECUTABLE [==[${GIT_EXECUTABLE}]==])
set(GIT_VERSION_STRING [==[${GIT_VERSION_STRING}]==])