Merge topic 'getfeature-prop'

18726ad634 GetFeature(): return cmProp

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5004
This commit is contained in:
Brad King
2020-07-14 11:19:25 +00:00
committed by Kitware Robot
6 changed files with 16 additions and 17 deletions

View File

@@ -41,7 +41,7 @@ std::vector<std::string> const& cmCommonTargetGenerator::GetConfigNames() const
const char* cmCommonTargetGenerator::GetFeature(const std::string& feature,
const std::string& config)
{
return this->GeneratorTarget->GetFeature(feature, config);
return this->GeneratorTarget->GetFeature(feature, config)->c_str();
}
void cmCommonTargetGenerator::AddModuleDefinitionFlag(

View File

@@ -815,18 +815,18 @@ void cmGeneratorTarget::ComputeObjectMapping()
}
}
const char* cmGeneratorTarget::GetFeature(const std::string& feature,
const std::string& config) const
cmProp cmGeneratorTarget::GetFeature(const std::string& feature,
const std::string& config) const
{
if (!config.empty()) {
std::string featureConfig =
cmStrCat(feature, '_', cmSystemTools::UpperCase(config));
if (cmProp value = this->GetProperty(featureConfig)) {
return value->c_str();
return value;
}
}
if (cmProp value = this->GetProperty(feature)) {
return value->c_str();
return value;
}
return this->LocalGenerator->GetFeature(feature, config);
}
@@ -853,8 +853,8 @@ const char* cmGeneratorTarget::GetLinkPIEProperty(
bool cmGeneratorTarget::IsIPOEnabled(std::string const& lang,
std::string const& config) const
{
const char* feature = "INTERPROCEDURAL_OPTIMIZATION";
const bool result = cmIsOn(this->GetFeature(feature, config));
cmProp feature = this->GetFeature("INTERPROCEDURAL_OPTIMIZATION", config);
const bool result = feature && cmIsOn(*feature);
if (!result) {
// 'INTERPROCEDURAL_OPTIMIZATION' is off, no need to check policies

View File

@@ -175,8 +175,8 @@ public:
void ComputeObjectMapping();
const char* GetFeature(const std::string& feature,
const std::string& config) const;
cmProp GetFeature(const std::string& feature,
const std::string& config) const;
const char* GetLinkPIEProperty(const std::string& config) const;

View File

@@ -694,9 +694,8 @@ std::set<std::string> cmGlobalVisualStudio7Generator::IsPartOfDefaultBuild(
}
// inspect EXCLUDE_FROM_DEFAULT_BUILD[_<CONFIG>] properties
for (std::string const& i : configs) {
const char* propertyValue =
target->GetFeature("EXCLUDE_FROM_DEFAULT_BUILD", i);
if (cmIsOff(propertyValue)) {
cmProp propertyValue = target->GetFeature("EXCLUDE_FROM_DEFAULT_BUILD", i);
if (!propertyValue || cmIsOff(*propertyValue)) {
activeConfigs.insert(i);
}
}

View File

@@ -3253,8 +3253,8 @@ void cmLocalGenerator::AppendFeatureOptions(std::string& flags,
}
}
const char* cmLocalGenerator::GetFeature(const std::string& feature,
const std::string& config)
cmProp cmLocalGenerator::GetFeature(const std::string& feature,
const std::string& config)
{
std::string featureName = feature;
// TODO: Define accumulation policy for features (prepend, append,
@@ -3266,7 +3266,7 @@ const char* cmLocalGenerator::GetFeature(const std::string& feature,
cmStateSnapshot snp = this->StateSnapshot;
while (snp.IsValid()) {
if (cmProp value = snp.GetDirectory().GetProperty(featureName)) {
return value->c_str();
return value;
}
snp = snp.GetBuildsystemDirectoryParent();
}

View File

@@ -20,6 +20,7 @@
#include "cmMessageType.h"
#include "cmOutputConverter.h"
#include "cmPolicies.h"
#include "cmProperty.h"
#include "cmStateSnapshot.h"
class cmComputeLinkInformation;
@@ -209,8 +210,7 @@ public:
void AppendFeatureOptions(std::string& flags, const std::string& lang,
const char* feature);
const char* GetFeature(const std::string& feature,
const std::string& config);
cmProp GetFeature(const std::string& feature, const std::string& config);
/** \brief Get absolute path to dependency \a name
*