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:
commit
6418eef222
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue