|
|
@@ -2473,14 +2473,14 @@ void cmMakefile::ExpandVariablesCMP0019()
|
|
|
t.GetType() == cmStateEnums::GLOBAL_TARGET) {
|
|
|
continue;
|
|
|
}
|
|
|
- includeDirs = t.GetProperty("INCLUDE_DIRECTORIES");
|
|
|
- if (mightExpandVariablesCMP0019(includeDirs)) {
|
|
|
- std::string dirs = includeDirs;
|
|
|
+ cmProp includeDirs2 = t.GetProperty("INCLUDE_DIRECTORIES");
|
|
|
+ if (includeDirs2 && mightExpandVariablesCMP0019(includeDirs2->c_str())) {
|
|
|
+ std::string dirs = *includeDirs2;
|
|
|
this->ExpandVariablesInString(dirs, true, true);
|
|
|
- if (pol == cmPolicies::WARN && dirs != includeDirs) {
|
|
|
+ if (pol == cmPolicies::WARN && dirs != *includeDirs2) {
|
|
|
/* clang-format off */
|
|
|
w << "Evaluated target " << t.GetName() << " INCLUDE_DIRECTORIES\n"
|
|
|
- << " " << includeDirs << "\n"
|
|
|
+ << " " << *includeDirs2 << "\n"
|
|
|
<< "as\n"
|
|
|
<< " " << dirs << "\n";
|
|
|
/* clang-format on */
|
|
|
@@ -2492,7 +2492,7 @@ void cmMakefile::ExpandVariablesCMP0019()
|
|
|
if (const char* linkDirsProp = this->GetProperty("LINK_DIRECTORIES")) {
|
|
|
if (mightExpandVariablesCMP0019(linkDirsProp)) {
|
|
|
std::string d = linkDirsProp;
|
|
|
- std::string orig = linkDirsProp;
|
|
|
+ const std::string orig = d;
|
|
|
this->ExpandVariablesInString(d, true, true);
|
|
|
if (pol == cmPolicies::WARN && d != orig) {
|
|
|
/* clang-format off */
|
|
|
@@ -2518,7 +2518,7 @@ void cmMakefile::ExpandVariablesCMP0019()
|
|
|
libName = *l;
|
|
|
}
|
|
|
if (mightExpandVariablesCMP0019(libName.c_str())) {
|
|
|
- std::string orig = libName;
|
|
|
+ const std::string orig = libName;
|
|
|
this->ExpandVariablesInString(libName, true, true);
|
|
|
if (pol == cmPolicies::WARN && libName != orig) {
|
|
|
/* clang-format off */
|
|
|
@@ -3031,7 +3031,7 @@ MessageType cmMakefile::ExpandVariablesInStringNew(
|
|
|
openstack.pop_back();
|
|
|
result.append(last, in - last);
|
|
|
std::string const& lookup = result.substr(var.loc);
|
|
|
- const char* value = nullptr;
|
|
|
+ cmProp value = nullptr;
|
|
|
std::string varresult;
|
|
|
std::string svalue;
|
|
|
switch (var.domain) {
|
|
|
@@ -3039,26 +3039,24 @@ MessageType cmMakefile::ExpandVariablesInStringNew(
|
|
|
if (filename && lookup == lineVar) {
|
|
|
varresult = std::to_string(line);
|
|
|
} else {
|
|
|
- value = this->GetDefinition(lookup);
|
|
|
+ value = this->GetDef(lookup);
|
|
|
}
|
|
|
break;
|
|
|
case ENVIRONMENT:
|
|
|
if (cmSystemTools::GetEnv(lookup, svalue)) {
|
|
|
- value = svalue.c_str();
|
|
|
+ value = &svalue;
|
|
|
}
|
|
|
break;
|
|
|
case CACHE:
|
|
|
- if (cmProp value2 = state->GetCacheEntryValue(lookup)) {
|
|
|
- value = value2->c_str();
|
|
|
- }
|
|
|
+ value = state->GetCacheEntryValue(lookup);
|
|
|
break;
|
|
|
}
|
|
|
// Get the string we're meant to append to.
|
|
|
if (value) {
|
|
|
if (escapeQuotes) {
|
|
|
- varresult = cmEscapeQuotes(value);
|
|
|
+ varresult = cmEscapeQuotes(*value);
|
|
|
} else {
|
|
|
- varresult = value;
|
|
|
+ varresult = *value;
|
|
|
}
|
|
|
} else if (!this->SuppressSideEffects) {
|
|
|
this->MaybeWarnUninitialized(lookup, filename);
|
|
|
@@ -4800,8 +4798,8 @@ bool cmMakefile::HaveCStandardAvailable(cmTarget const* target,
|
|
|
const std::string& feature,
|
|
|
std::string const& lang) const
|
|
|
{
|
|
|
- const char* defaultCStandard =
|
|
|
- this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
+ cmProp defaultCStandard =
|
|
|
+ this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
if (!defaultCStandard) {
|
|
|
this->IssueMessage(
|
|
|
MessageType::INTERNAL_ERROR,
|
|
|
@@ -4812,11 +4810,11 @@ bool cmMakefile::HaveCStandardAvailable(cmTarget const* target,
|
|
|
return true;
|
|
|
}
|
|
|
if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
|
|
- cmStrCmp(defaultCStandard)) == cm::cend(C_STANDARDS)) {
|
|
|
+ cmStrCmp(*defaultCStandard)) == cm::cend(C_STANDARDS)) {
|
|
|
const std::string e = cmStrCat("The CMAKE_", lang,
|
|
|
"_STANDARD_DEFAULT variable contains an "
|
|
|
"invalid value: \"",
|
|
|
- defaultCStandard, "\".");
|
|
|
+ *defaultCStandard, "\".");
|
|
|
this->IssueMessage(MessageType::INTERNAL_ERROR, e);
|
|
|
return false;
|
|
|
}
|
|
|
@@ -4827,24 +4825,23 @@ bool cmMakefile::HaveCStandardAvailable(cmTarget const* target,
|
|
|
|
|
|
this->CheckNeededCLanguage(feature, lang, needC90, needC99, needC11);
|
|
|
|
|
|
- const char* existingCStandard =
|
|
|
- target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
+ cmProp existingCStandard = target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
if (!existingCStandard) {
|
|
|
existingCStandard = defaultCStandard;
|
|
|
}
|
|
|
|
|
|
if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
|
|
- cmStrCmp(existingCStandard)) == cm::cend(C_STANDARDS)) {
|
|
|
+ cmStrCmp(*existingCStandard)) == cm::cend(C_STANDARDS)) {
|
|
|
const std::string e = cmStrCat(
|
|
|
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
|
|
- "\" contained an invalid value: \"", existingCStandard, "\".");
|
|
|
+ "\" contained an invalid value: \"", *existingCStandard, "\".");
|
|
|
this->IssueMessage(MessageType::FATAL_ERROR, e);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
const char* const* existingCIt = existingCStandard
|
|
|
? std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
|
|
- cmStrCmp(existingCStandard))
|
|
|
+ cmStrCmp(*existingCStandard))
|
|
|
: cm::cend(C_STANDARDS);
|
|
|
|
|
|
if (needC11 && existingCStandard &&
|
|
|
@@ -4895,8 +4892,8 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
|
|
const std::string& feature,
|
|
|
std::string const& lang) const
|
|
|
{
|
|
|
- const char* defaultCxxStandard =
|
|
|
- this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
+ cmProp defaultCxxStandard =
|
|
|
+ this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
if (!defaultCxxStandard) {
|
|
|
this->IssueMessage(
|
|
|
MessageType::INTERNAL_ERROR,
|
|
|
@@ -4907,10 +4904,10 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
|
|
return true;
|
|
|
}
|
|
|
if (std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS),
|
|
|
- cmStrCmp(defaultCxxStandard)) == cm::cend(CXX_STANDARDS)) {
|
|
|
+ cmStrCmp(*defaultCxxStandard)) == cm::cend(CXX_STANDARDS)) {
|
|
|
const std::string e =
|
|
|
cmStrCat("The CMAKE_", lang, "_STANDARD_DEFAULT variable contains an ",
|
|
|
- "invalid value: \"", defaultCxxStandard, "\".");
|
|
|
+ "invalid value: \"", *defaultCxxStandard, "\".");
|
|
|
this->IssueMessage(MessageType::INTERNAL_ERROR, e);
|
|
|
return false;
|
|
|
}
|
|
|
@@ -4923,7 +4920,7 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
|
|
this->CheckNeededCxxLanguage(feature, lang, needCxx98, needCxx11, needCxx14,
|
|
|
needCxx17, needCxx20);
|
|
|
|
|
|
- const char* existingCxxStandard =
|
|
|
+ cmProp existingCxxStandard =
|
|
|
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
if (!existingCxxStandard) {
|
|
|
existingCxxStandard = defaultCxxStandard;
|
|
|
@@ -4931,11 +4928,11 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
|
|
|
|
|
const char* const* existingCxxLevel =
|
|
|
std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS),
|
|
|
- cmStrCmp(existingCxxStandard));
|
|
|
+ cmStrCmp(*existingCxxStandard));
|
|
|
if (existingCxxLevel == cm::cend(CXX_STANDARDS)) {
|
|
|
const std::string e = cmStrCat(
|
|
|
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
|
|
- "\" contained an invalid value: \"", existingCxxStandard, "\".");
|
|
|
+ "\" contained an invalid value: \"", *existingCxxStandard, "\".");
|
|
|
this->IssueMessage(MessageType::FATAL_ERROR, e);
|
|
|
return false;
|
|
|
}
|
|
|
@@ -5000,12 +4997,12 @@ bool cmMakefile::AddRequiredTargetCxxFeature(cmTarget* target,
|
|
|
this->CheckNeededCxxLanguage(feature, lang, needCxx98, needCxx11, needCxx14,
|
|
|
needCxx17, needCxx20);
|
|
|
|
|
|
- const char* existingCxxStandard =
|
|
|
+ cmProp existingCxxStandard =
|
|
|
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
if (existingCxxStandard == nullptr) {
|
|
|
- const char* defaultCxxStandard =
|
|
|
- this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
- if (defaultCxxStandard && *defaultCxxStandard) {
|
|
|
+ cmProp defaultCxxStandard =
|
|
|
+ this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
+ if (defaultCxxStandard && !defaultCxxStandard->empty()) {
|
|
|
existingCxxStandard = defaultCxxStandard;
|
|
|
}
|
|
|
}
|
|
|
@@ -5013,11 +5010,11 @@ bool cmMakefile::AddRequiredTargetCxxFeature(cmTarget* target,
|
|
|
if (existingCxxStandard) {
|
|
|
existingCxxLevel =
|
|
|
std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS),
|
|
|
- cmStrCmp(existingCxxStandard));
|
|
|
+ cmStrCmp(*existingCxxStandard));
|
|
|
if (existingCxxLevel == cm::cend(CXX_STANDARDS)) {
|
|
|
const std::string e = cmStrCat(
|
|
|
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
|
|
- "\" contained an invalid value: \"", existingCxxStandard, "\".");
|
|
|
+ "\" contained an invalid value: \"", *existingCxxStandard, "\".");
|
|
|
if (error) {
|
|
|
*error = e;
|
|
|
} else {
|
|
|
@@ -5053,8 +5050,8 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
|
|
const std::string& feature,
|
|
|
std::string const& lang) const
|
|
|
{
|
|
|
- const char* defaultCudaStandard =
|
|
|
- this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
+ cmProp defaultCudaStandard =
|
|
|
+ this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
if (!defaultCudaStandard) {
|
|
|
this->IssueMessage(
|
|
|
MessageType::INTERNAL_ERROR,
|
|
|
@@ -5065,11 +5062,11 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
|
|
return true;
|
|
|
}
|
|
|
if (std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS),
|
|
|
- cmStrCmp(defaultCudaStandard)) ==
|
|
|
+ cmStrCmp(*defaultCudaStandard)) ==
|
|
|
cm::cend(CUDA_STANDARDS)) {
|
|
|
const std::string e =
|
|
|
cmStrCat("The CMAKE_", lang, "_STANDARD_DEFAULT variable contains an ",
|
|
|
- "invalid value: \"", defaultCudaStandard, "\".");
|
|
|
+ "invalid value: \"", *defaultCudaStandard, "\".");
|
|
|
this->IssueMessage(MessageType::INTERNAL_ERROR, e);
|
|
|
return false;
|
|
|
}
|
|
|
@@ -5082,7 +5079,7 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
|
|
this->CheckNeededCudaLanguage(feature, lang, needCuda03, needCuda11,
|
|
|
needCuda14, needCuda17, needCuda20);
|
|
|
|
|
|
- const char* existingCudaStandard =
|
|
|
+ cmProp existingCudaStandard =
|
|
|
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
if (!existingCudaStandard) {
|
|
|
existingCudaStandard = defaultCudaStandard;
|
|
|
@@ -5090,11 +5087,11 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
|
|
|
|
|
const char* const* existingCudaLevel =
|
|
|
std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS),
|
|
|
- cmStrCmp(existingCudaStandard));
|
|
|
+ cmStrCmp(*existingCudaStandard));
|
|
|
if (existingCudaLevel == cm::cend(CUDA_STANDARDS)) {
|
|
|
const std::string e = cmStrCat(
|
|
|
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
|
|
- "\" contained an invalid value: \"", existingCudaStandard, "\".");
|
|
|
+ "\" contained an invalid value: \"", *existingCudaStandard, "\".");
|
|
|
this->IssueMessage(MessageType::FATAL_ERROR, e);
|
|
|
return false;
|
|
|
}
|
|
|
@@ -5159,12 +5156,12 @@ bool cmMakefile::AddRequiredTargetCudaFeature(cmTarget* target,
|
|
|
this->CheckNeededCudaLanguage(feature, lang, needCuda03, needCuda11,
|
|
|
needCuda14, needCuda17, needCuda20);
|
|
|
|
|
|
- const char* existingCudaStandard =
|
|
|
+ cmProp existingCudaStandard =
|
|
|
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
if (existingCudaStandard == nullptr) {
|
|
|
- const char* defaultCudaStandard =
|
|
|
- this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
- if (defaultCudaStandard && *defaultCudaStandard) {
|
|
|
+ cmProp defaultCudaStandard =
|
|
|
+ this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
+ if (defaultCudaStandard && !defaultCudaStandard->empty()) {
|
|
|
existingCudaStandard = defaultCudaStandard;
|
|
|
}
|
|
|
}
|
|
|
@@ -5172,11 +5169,11 @@ bool cmMakefile::AddRequiredTargetCudaFeature(cmTarget* target,
|
|
|
if (existingCudaStandard) {
|
|
|
existingCudaLevel =
|
|
|
std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS),
|
|
|
- cmStrCmp(existingCudaStandard));
|
|
|
+ cmStrCmp(*existingCudaStandard));
|
|
|
if (existingCudaLevel == cm::cend(CUDA_STANDARDS)) {
|
|
|
const std::string e = cmStrCat(
|
|
|
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
|
|
- "\" contained an invalid value: \"", existingCudaStandard, "\".");
|
|
|
+ "\" contained an invalid value: \"", *existingCudaStandard, "\".");
|
|
|
if (error) {
|
|
|
*error = e;
|
|
|
} else {
|
|
|
@@ -5240,21 +5237,20 @@ bool cmMakefile::AddRequiredTargetCFeature(cmTarget* target,
|
|
|
|
|
|
this->CheckNeededCLanguage(feature, lang, needC90, needC99, needC11);
|
|
|
|
|
|
- const char* existingCStandard =
|
|
|
- target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
+ cmProp existingCStandard = target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
|
|
if (existingCStandard == nullptr) {
|
|
|
- const char* defaultCStandard =
|
|
|
- this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
- if (defaultCStandard && *defaultCStandard) {
|
|
|
+ cmProp defaultCStandard =
|
|
|
+ this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
|
|
+ if (defaultCStandard && !defaultCStandard->empty()) {
|
|
|
existingCStandard = defaultCStandard;
|
|
|
}
|
|
|
}
|
|
|
if (existingCStandard) {
|
|
|
if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
|
|
- cmStrCmp(existingCStandard)) == cm::cend(C_STANDARDS)) {
|
|
|
+ cmStrCmp(*existingCStandard)) == cm::cend(C_STANDARDS)) {
|
|
|
const std::string e = cmStrCat(
|
|
|
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
|
|
- "\" contained an invalid value: \"", existingCStandard, "\".");
|
|
|
+ "\" contained an invalid value: \"", *existingCStandard, "\".");
|
|
|
if (error) {
|
|
|
*error = e;
|
|
|
} else {
|
|
|
@@ -5266,7 +5262,7 @@ bool cmMakefile::AddRequiredTargetCFeature(cmTarget* target,
|
|
|
}
|
|
|
const char* const* existingCIt = existingCStandard
|
|
|
? std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
|
|
- cmStrCmp(existingCStandard))
|
|
|
+ cmStrCmp(*existingCStandard))
|
|
|
: cm::cend(C_STANDARDS);
|
|
|
|
|
|
bool setC90 = needC90 && !existingCStandard;
|