diff options
author | Brad King <brad.king@kitware.com> | 2020-10-27 11:32:37 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-10-27 11:32:37 (GMT) |
commit | 3969c86b518f3246d7dad25292df880bf6742e85 (patch) | |
tree | 8eb56d1f89b0d0729a5f7e5b508c61a52a3d4752 | |
parent | e9109dec360043d700ac9cb206b116e6f934a5ec (diff) | |
parent | dd77dec18d66a2e20480d9bf2ab06231765720a4 (diff) | |
download | CMake-3969c86b518f3246d7dad25292df880bf6742e85.zip CMake-3969c86b518f3246d7dad25292df880bf6742e85.tar.gz CMake-3969c86b518f3246d7dad25292df880bf6742e85.tar.bz2 |
Merge branch 'cuda_vs_skip_computation' into release-3.18
Merge-request: !5422
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 8 | ||||
-rw-r--r-- | Source/cmGeneratorTarget.h | 2 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 6 | ||||
-rw-r--r-- | Tests/RunCMake/CMP0104/CMP0104-Common.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CMP0104/main.cxx | 3 |
5 files changed, 21 insertions, 2 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index ab6a26c..b7bf4a6 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -6914,6 +6914,14 @@ void cmGeneratorTarget::GetLanguages(std::set<std::string>& languages, } } +bool cmGeneratorTarget::IsLanguageUsed(std::string const& language, + std::string const& config) const +{ + std::set<std::string> languages; + this->GetLanguages(languages, config); + return languages.count(language); +} + bool cmGeneratorTarget::IsCSharpOnly() const { // Only certain target types may compile CSharp. diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 3aedbf5..ea3a684 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -397,6 +397,8 @@ public: // until we have per-target object file properties. void GetLanguages(std::set<std::string>& languages, std::string const& config) const; + bool IsLanguageUsed(std::string const& language, + std::string const& config) const; bool IsCSharpOnly() const; diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index f58c6fd..2ea2839 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -3018,7 +3018,8 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions() return true; } for (std::string const& c : this->Configurations) { - if (!this->ComputeCudaOptions(c)) { + if (this->GeneratorTarget->IsLanguageUsed("CUDA", c) && + !this->ComputeCudaOptions(c)) { return false; } } @@ -3158,7 +3159,8 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions( void cmVisualStudio10TargetGenerator::WriteCudaOptions( Elem& e1, std::string const& configName) { - if (!this->MSTools || !this->GlobalGenerator->IsCudaEnabled()) { + if (!this->MSTools || !this->GlobalGenerator->IsCudaEnabled() || + !this->GeneratorTarget->IsLanguageUsed("CUDA", configName)) { return; } Elem e2(e1, "CudaCompile"); diff --git a/Tests/RunCMake/CMP0104/CMP0104-Common.cmake b/Tests/RunCMake/CMP0104/CMP0104-Common.cmake index b3568f1..ca4c1aa2 100644 --- a/Tests/RunCMake/CMP0104/CMP0104-Common.cmake +++ b/Tests/RunCMake/CMP0104/CMP0104-Common.cmake @@ -1,2 +1,6 @@ +# Make sure CMP0104 isn't issued for CXX targets created prior to enabling CUDA. See #21341. +enable_language(CXX) +add_library(cxx main.cxx) + enable_language(CUDA) add_library(cuda main.cu) diff --git a/Tests/RunCMake/CMP0104/main.cxx b/Tests/RunCMake/CMP0104/main.cxx new file mode 100644 index 0000000..5047a34 --- /dev/null +++ b/Tests/RunCMake/CMP0104/main.cxx @@ -0,0 +1,3 @@ +int main() +{ +} |