cmTarget: minor code improvements

This commit is contained in:
Vitaly Stakhovsky
2020-03-17 08:00:00 -04:00
parent bee0100396
commit b915fec56e
5 changed files with 30 additions and 30 deletions

View File

@@ -66,7 +66,7 @@ void cmExportInstallAndroidMKGenerator::GenerateImportTargetCode(
os << "LOCAL_MODULE := ";
os << targetName << "\n";
os << "LOCAL_SRC_FILES := $(_IMPORT_PREFIX)/";
os << target->Target->GetProperty("__dest") << "/";
os << target->Target->GetSafeProperty("__dest") << "/";
std::string config;
if (!this->Configurations.empty()) {
config = this->Configurations[0];

View File

@@ -910,8 +910,8 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode
const char* loc = nullptr;
const char* imp = nullptr;
std::string suffix;
if (context->CurrentTarget->Target->GetMappedConfig(
context->Config, &loc, &imp, suffix)) {
if (context->CurrentTarget->Target->GetMappedConfig(context->Config, loc,
imp, suffix)) {
// This imported target has an appropriate location
// for this (possibly mapped) config.
// Check if there is a proper config mapping for the tested config.
@@ -1568,7 +1568,7 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode
const char* loc = nullptr;
const char* imp = nullptr;
std::string suffix;
if (gt->Target->GetMappedConfig(context->Config, &loc, &imp, suffix)) {
if (gt->Target->GetMappedConfig(context->Config, loc, imp, suffix)) {
cmExpandList(loc, objects);
}
context->HadContextSensitiveCondition = true;

View File

@@ -6338,7 +6338,7 @@ void cmGeneratorTarget::ComputeImportInfo(std::string const& desired_config,
const char* loc = nullptr;
const char* imp = nullptr;
std::string suffix;
if (!this->Target->GetMappedConfig(desired_config, &loc, &imp, suffix)) {
if (!this->Target->GetMappedConfig(desired_config, loc, imp, suffix)) {
return;
}

View File

@@ -1931,7 +1931,7 @@ std::string cmTarget::ImportedGetFullPath(
std::string suffix;
if (this->GetType() != cmStateEnums::INTERFACE_LIBRARY &&
this->GetMappedConfig(desired_config, &loc, &imp, suffix)) {
this->GetMappedConfig(desired_config, loc, imp, suffix)) {
switch (artifact) {
case cmStateEnums::RuntimeBinaryArtifact:
if (loc) {
@@ -2001,7 +2001,7 @@ bool cmTargetInternals::CheckImportedLibName(std::string const& prop,
}
bool cmTarget::GetMappedConfig(std::string const& desired_config,
const char** loc, const char** imp,
const char*& loc, const char*& imp,
std::string& suffix) const
{
std::string config_upper;
@@ -2039,30 +2039,30 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config,
// If a mapping was found, check its configurations.
for (auto mci = mappedConfigs.begin();
!*loc && !*imp && mci != mappedConfigs.end(); ++mci) {
!loc && !imp && mci != mappedConfigs.end(); ++mci) {
// Look for this configuration.
if (mci->empty()) {
// An empty string in the mapping has a special meaning:
// look up the config-less properties.
*loc = this->GetProperty(locPropBase);
loc = this->GetProperty(locPropBase);
if (allowImp) {
*imp = this->GetProperty("IMPORTED_IMPLIB");
imp = this->GetProperty("IMPORTED_IMPLIB");
}
// If it was found, set the suffix.
if (*loc || *imp) {
if (loc || imp) {
suffix.clear();
}
} else {
std::string mcUpper = cmSystemTools::UpperCase(*mci);
std::string locProp = cmStrCat(locPropBase, '_', mcUpper);
*loc = this->GetProperty(locProp);
loc = this->GetProperty(locProp);
if (allowImp) {
std::string impProp = cmStrCat("IMPORTED_IMPLIB_", mcUpper);
*imp = this->GetProperty(impProp);
imp = this->GetProperty(impProp);
}
// If it was found, use it for all properties below.
if (*loc || *imp) {
if (loc || imp) {
suffix = cmStrCat('_', mcUpper);
}
}
@@ -2071,59 +2071,59 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config,
// If we needed to find one of the mapped configurations but did not
// then the target location is not found. The project does not want
// any other configuration.
if (!mappedConfigs.empty() && !*loc && !*imp) {
if (!mappedConfigs.empty() && !loc && !imp) {
// Interface libraries are always available because their
// library name is optional so it is okay to leave *loc empty.
// library name is optional so it is okay to leave loc empty.
return this->GetType() == cmStateEnums::INTERFACE_LIBRARY;
}
// If we have not yet found it then there are no mapped
// configurations. Look for an exact-match.
if (!*loc && !*imp) {
if (!loc && !imp) {
std::string locProp = cmStrCat(locPropBase, suffix);
*loc = this->GetProperty(locProp);
loc = this->GetProperty(locProp);
if (allowImp) {
std::string impProp = cmStrCat("IMPORTED_IMPLIB", suffix);
*imp = this->GetProperty(impProp);
imp = this->GetProperty(impProp);
}
}
// If we have not yet found it then there are no mapped
// configurations and no exact match.
if (!*loc && !*imp) {
if (!loc && !imp) {
// The suffix computed above is not useful.
suffix.clear();
// Look for a configuration-less location. This may be set by
// manually-written code.
*loc = this->GetProperty(locPropBase);
loc = this->GetProperty(locPropBase);
if (allowImp) {
*imp = this->GetProperty("IMPORTED_IMPLIB");
imp = this->GetProperty("IMPORTED_IMPLIB");
}
}
// If we have not yet found it then the project is willing to try
// any available configuration.
if (!*loc && !*imp) {
if (!loc && !imp) {
std::vector<std::string> availableConfigs;
if (const char* iconfigs = this->GetProperty("IMPORTED_CONFIGURATIONS")) {
cmExpandList(iconfigs, availableConfigs);
}
for (auto aci = availableConfigs.begin();
!*loc && !*imp && aci != availableConfigs.end(); ++aci) {
!loc && !imp && aci != availableConfigs.end(); ++aci) {
suffix = cmStrCat('_', cmSystemTools::UpperCase(*aci));
std::string locProp = cmStrCat(locPropBase, suffix);
*loc = this->GetProperty(locProp);
loc = this->GetProperty(locProp);
if (allowImp) {
std::string impProp = cmStrCat("IMPORTED_IMPLIB", suffix);
*imp = this->GetProperty(impProp);
imp = this->GetProperty(impProp);
}
}
}
// If we have not yet found it then the target location is not available.
if (!*loc && !*imp) {
if (!loc && !imp) {
// Interface libraries are always available because their
// library name is optional so it is okay to leave *loc empty.
// library name is optional so it is okay to leave loc empty.
return this->GetType() == cmStateEnums::INTERFACE_LIBRARY;
}

View File

@@ -191,8 +191,8 @@ public:
bool IsImportedGloballyVisible() const;
bool IsPerConfig() const;
bool GetMappedConfig(std::string const& desired_config, const char** loc,
const char** imp, std::string& suffix) const;
bool GetMappedConfig(std::string const& desired_config, const char*& loc,
const char*& imp, std::string& suffix) const;
//! Return whether this target is an executable with symbol exports enabled.
bool IsExecutableWithExports() const;