Merge topic 'fix-COMPILE_FEATURES-genex'

45ec182d Features: Fix the COMPILE_FEATURES genex for unavailable features.
2bead0eb cmMakefile: Rename a method to what it really does.
This commit is contained in:
Brad King 2015-01-15 09:54:02 -05:00 committed by CMake Topic Stage
commit 6418eef222
3 changed files with 17 additions and 9 deletions

View File

@ -1368,10 +1368,17 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode
for (LangMap::const_iterator lit = testedFeatures.begin(); for (LangMap::const_iterator lit = testedFeatures.begin();
lit != testedFeatures.end(); ++lit) lit != testedFeatures.end(); ++lit)
{ {
std::vector<std::string> const& langAvailable
= availableFeatures[lit->first];
for (std::vector<std::string>::const_iterator it = lit->second.begin(); for (std::vector<std::string>::const_iterator it = lit->second.begin();
it != lit->second.end(); ++it) it != lit->second.end(); ++it)
{ {
if (!context->Makefile->HaveFeatureAvailable(target, if (std::find(langAvailable.begin(), langAvailable.end(), *it)
== langAvailable.end())
{
return "0";
}
if (!context->Makefile->HaveStandardAvailable(target,
lit->first, *it)) lit->first, *it))
{ {
if (evalLL) if (evalLL)

View File

@ -5271,18 +5271,19 @@ CompileFeaturesAvailable(const std::string& lang, std::string *error) const
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmMakefile::HaveFeatureAvailable(cmTarget const* target, bool cmMakefile::HaveStandardAvailable(cmTarget const* target,
std::string const& lang, std::string const& lang,
const std::string& feature) const const std::string& feature) const
{ {
return lang == "C" return lang == "C"
? this->HaveCFeatureAvailable(target, feature) ? this->HaveCStandardAvailable(target, feature)
: this->HaveCxxFeatureAvailable(target, feature); : this->HaveCxxStandardAvailable(target, feature);
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmMakefile:: bool cmMakefile::
HaveCFeatureAvailable(cmTarget const* target, const std::string& feature) const HaveCStandardAvailable(cmTarget const* target,
const std::string& feature) const
{ {
bool needC90 = false; bool needC90 = false;
bool needC99 = false; bool needC99 = false;
@ -5359,7 +5360,7 @@ bool cmMakefile::IsLaterStandard(std::string const& lang,
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
bool cmMakefile::HaveCxxFeatureAvailable(cmTarget const* target, bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
const std::string& feature) const const std::string& feature) const
{ {
bool needCxx98 = false; bool needCxx98 = false;

View File

@ -965,7 +965,7 @@ public:
const char* CompileFeaturesAvailable(const std::string& lang, const char* CompileFeaturesAvailable(const std::string& lang,
std::string *error) const; std::string *error) const;
bool HaveFeatureAvailable(cmTarget const* target, std::string const& lang, bool HaveStandardAvailable(cmTarget const* target, std::string const& lang,
const std::string& feature) const; const std::string& feature) const;
bool IsLaterStandard(std::string const& lang, bool IsLaterStandard(std::string const& lang,
@ -1197,9 +1197,9 @@ private:
void CheckNeededCxxLanguage(const std::string& feature, bool& needCxx98, void CheckNeededCxxLanguage(const std::string& feature, bool& needCxx98,
bool& needCxx11, bool& needCxx14) const; bool& needCxx11, bool& needCxx14) const;
bool HaveCFeatureAvailable(cmTarget const* target, bool HaveCStandardAvailable(cmTarget const* target,
const std::string& feature) const; const std::string& feature) const;
bool HaveCxxFeatureAvailable(cmTarget const* target, bool HaveCxxStandardAvailable(cmTarget const* target,
const std::string& feature) const; const std::string& feature) const;
mutable bool SuppressWatches; mutable bool SuppressWatches;