diff options
author | Craig Scott <craig.scott@crascit.com> | 2021-10-04 10:47:12 (GMT) |
---|---|---|
committer | Craig Scott <craig.scott@crascit.com> | 2021-10-05 12:41:34 (GMT) |
commit | 1851aa49be01076e0869ce14b22b9a860454bba4 (patch) | |
tree | 932ff1917d20679cc1d6335138d1848881b949f7 /Modules | |
parent | 96937438b74469eea5b0ae46b4e13489ac3faec7 (diff) | |
download | CMake-1851aa49be01076e0869ce14b22b9a860454bba4.zip CMake-1851aa49be01076e0869ce14b22b9a860454bba4.tar.gz CMake-1851aa49be01076e0869ce14b22b9a860454bba4.tar.bz2 |
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')
-rw-r--r-- | Modules/FetchContent.cmake | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/Modules/FetchContent.cmake b/Modules/FetchContent.cmake index 5ea8b2a..be75689 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}]==]) |