cmMakefile: Extract CompileFeaturesAvailable method.
This commit is contained in:
parent
6b9b2fff61
commit
8dd129dfbb
|
@ -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<std::string> availableFeatures;
|
||||
cmSystemTools::ExpandListArgument(featuresKnown, availableFeatures);
|
||||
cmSystemTools::ExpandListArgument(features, availableFeatures);
|
||||
if (std::find(availableFeatures.begin(),
|
||||
availableFeatures.end(),
|
||||
feature) == availableFeatures.end())
|
||||
|
@ -5108,6 +5085,41 @@ CompileFeatureKnown(cmTarget const* target, const std::string& feature,
|
|||
return false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
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,
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue