diff options
author | Brad King <brad.king@kitware.com> | 2020-06-05 14:04:50 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-06-05 14:09:33 (GMT) |
commit | 5bf9a290e74d14de7f0dc56bf31e273d7a02e282 (patch) | |
tree | f10aa3e1bfd9e49de8ecc120c3d1a2741c6867e9 /Source | |
parent | 7934352e44db7a7afeb4fdd07939ec8394a91a6b (diff) | |
download | CMake-5bf9a290e74d14de7f0dc56bf31e273d7a02e282.zip CMake-5bf9a290e74d14de7f0dc56bf31e273d7a02e282.tar.gz CMake-5bf9a290e74d14de7f0dc56bf31e273d7a02e282.tar.bz2 |
CUDA: Fix CUDA_ARCHITECTURES policy CMP0104 check in try_compile
Since commit e98588aaba (CUDA: Add CUDA_ARCHITECTURES target property,
2020-03-12), `CMAKE_CUDA_ARCHITECTURES` is both initialized and required
by policy CMP0104's `NEW` behavior. Inside a `try_compile` project we
use `cmake_minimum_required(VERSION ...)` with the current running
version of CMake. Now that our version number is 3.18, `CMP0104` gets
set to `NEW` in the `try_compile`. If the outer projects does not set
the policy then `CMAKE_CUDA_ARCHITECTURES` is not available and the
`try_compile` fails to generate.
Teach `try_compile` to check the outer project's policy status and
set policy CMP0104 to `OLD` if needed to match.
Fixes: #20794
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmCoreTryCompile.cxx | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index cc2cd01..a7acadc 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -567,6 +567,14 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, *msvcRuntimeLibraryDefault ? "NEW" : "OLD"); } + /* Set CUDA architectures policy to match outer project. */ + if (this->Makefile->GetPolicyStatus(cmPolicies::CMP0104) != + cmPolicies::NEW && + testLangs.find("CUDA") != testLangs.end() && + this->Makefile->GetSafeDefinition(kCMAKE_CUDA_ARCHITECTURES).empty()) { + fprintf(fout, "cmake_policy(SET CMP0104 OLD)\n"); + } + std::string projectLangs; for (std::string const& li : testLangs) { projectLangs += " " + li; |