From 8dd129dfbb8f8aeefa333a0bfa5f44d835b6913e Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 15 May 2014 11:33:20 +0200 Subject: cmMakefile: Extract CompileFeaturesAvailable method. --- Source/cmMakefile.cxx | 64 ++++++++++++++++++++++++++++++--------------------- Source/cmMakefile.h | 3 +++ 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 1905489..4317fbe 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -5011,37 +5011,14 @@ AddRequiredTargetFeature(cmTarget *target, const std::string& feature, return false; } - const char* featuresKnown = - this->GetDefinition("CMAKE_" + lang + "_COMPILE_FEATURES"); - - if (!featuresKnown || !*featuresKnown) + const char* features = this->CompileFeaturesAvailable(lang, error); + if (!features) { - cmOStringStream e; - if (error) - { - e << "no"; - } - else - { - e << "No"; - } - e << " known features for " << lang << " compiler\n\"" - << this->GetDefinition("CMAKE_" + lang + "_COMPILER_ID") - << "\"\nversion " - << this->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << "."; - if (error) - { - *error = e.str(); - } - else - { - this->IssueMessage(cmake::FATAL_ERROR, e.str()); - } return false; } std::vector availableFeatures; - cmSystemTools::ExpandListArgument(featuresKnown, availableFeatures); + cmSystemTools::ExpandListArgument(features, availableFeatures); if (std::find(availableFeatures.begin(), availableFeatures.end(), feature) == availableFeatures.end()) @@ -5109,6 +5086,41 @@ CompileFeatureKnown(cmTarget const* target, const std::string& feature, } //---------------------------------------------------------------------------- +const char* cmMakefile:: +CompileFeaturesAvailable(const std::string& lang, std::string *error) const +{ + const char* featuresKnown = + this->GetDefinition("CMAKE_" + lang + "_COMPILE_FEATURES"); + + if (!featuresKnown || !*featuresKnown) + { + cmOStringStream e; + if (error) + { + e << "no"; + } + else + { + e << "No"; + } + e << " known features for " << lang << " compiler\n\"" + << this->GetDefinition("CMAKE_" + lang + "_COMPILER_ID") + << "\"\nversion " + << this->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << "."; + if (error) + { + *error = e.str(); + } + else + { + this->IssueMessage(cmake::FATAL_ERROR, e.str()); + } + return 0; + } + return featuresKnown; +} + +//---------------------------------------------------------------------------- bool cmMakefile:: AddRequiredTargetCxxFeature(cmTarget *target, const std::string& feature) const diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 1a7bf20..be384e6 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -892,6 +892,9 @@ public: bool CompileFeatureKnown(cmTarget const* target, const std::string& feature, std::string& lang, std::string *error) const; + const char* CompileFeaturesAvailable(const std::string& lang, + std::string *error) const; + void ClearMatches(); void StoreMatches(cmsys::RegularExpression& re); -- cgit v0.12