diff options
author | Brad King <brad.king@kitware.com> | 2017-06-26 17:52:26 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-06-26 17:54:20 (GMT) |
commit | e03a1b3b6185e36a5905db3d2551c9575fb074aa (patch) | |
tree | 692470eaf5980b30a2631c612fd8bf0227bdab7f /Source/cmMakefile.cxx | |
parent | 869904271ba0e8b855043894360b5dc7fe1e3b56 (diff) | |
download | CMake-e03a1b3b6185e36a5905db3d2551c9575fb074aa.zip CMake-e03a1b3b6185e36a5905db3d2551c9575fb074aa.tar.gz CMake-e03a1b3b6185e36a5905db3d2551c9575fb074aa.tar.bz2 |
target_compile_features: Do not crash on non-enabled language
Fixes: #17011
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r-- | Source/cmMakefile.cxx | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 802a427..608b18a 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4190,6 +4190,23 @@ bool cmMakefile::CompileFeatureKnown(cmTarget const* target, const char* cmMakefile::CompileFeaturesAvailable(const std::string& lang, std::string* error) const { + if (!this->GlobalGenerator->GetLanguageEnabled(lang)) { + std::ostringstream e; + if (error) { + e << "cannot"; + } else { + e << "Cannot"; + } + e << " use features from non-enabled language " << lang; + if (error) { + *error = e.str(); + } else { + this->GetCMakeInstance()->IssueMessage(cmake::FATAL_ERROR, e.str(), + this->Backtrace); + } + return CM_NULLPTR; + } + const char* featuresKnown = this->GetDefinition("CMAKE_" + lang + "_COMPILE_FEATURES"); @@ -4201,9 +4218,9 @@ const char* cmMakefile::CompileFeaturesAvailable(const std::string& lang, e << "No"; } e << " known features for " << lang << " compiler\n\"" - << this->GetDefinition("CMAKE_" + lang + "_COMPILER_ID") + << this->GetSafeDefinition("CMAKE_" + lang + "_COMPILER_ID") << "\"\nversion " - << this->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << "."; + << this->GetSafeDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << "."; if (error) { *error = e.str(); } else { |