|
@@ -18,6 +18,7 @@
|
|
|
#include <cmext/string_view>
|
|
#include <cmext/string_view>
|
|
|
|
|
|
|
|
#include "cmEvaluatedTargetProperty.h"
|
|
#include "cmEvaluatedTargetProperty.h"
|
|
|
|
|
+#include "cmGenExContext.h"
|
|
|
#include "cmGeneratorExpressionDAGChecker.h"
|
|
#include "cmGeneratorExpressionDAGChecker.h"
|
|
|
#include "cmList.h"
|
|
#include "cmList.h"
|
|
|
#include "cmListFileCache.h"
|
|
#include "cmListFileCache.h"
|
|
@@ -230,8 +231,10 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetCompileOptions(
|
|
|
std::vector<BT<std::string>> result;
|
|
std::vector<BT<std::string>> result;
|
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
|
|
|
|
|
|
|
|
+ cm::GenEx::Context context(this->LocalGenerator, config, language);
|
|
|
|
|
+
|
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
|
- this, "COMPILE_OPTIONS", nullptr, nullptr, this->LocalGenerator, config,
|
|
|
|
|
|
|
+ this, "COMPILE_OPTIONS", nullptr, nullptr, context,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
@@ -242,10 +245,10 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetCompileOptions(
|
|
|
this->DebugCompileOptionsDone = true;
|
|
this->DebugCompileOptionsDone = true;
|
|
|
|
|
|
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
|
- this, config, language, &dagChecker, this->CompileOptionsEntries);
|
|
|
|
|
|
|
+ this, context, &dagChecker, this->CompileOptionsEntries);
|
|
|
|
|
|
|
|
- AddInterfaceEntries(this, config, "INTERFACE_COMPILE_OPTIONS", language,
|
|
|
|
|
- &dagChecker, entries, IncludeRuntimeInterface::Yes);
|
|
|
|
|
|
|
+ AddInterfaceEntries(this, "INTERFACE_COMPILE_OPTIONS", context, &dagChecker,
|
|
|
|
|
+ entries, IncludeRuntimeInterface::Yes);
|
|
|
|
|
|
|
|
processOptions(this, entries, result, uniqueOptions, debugOptions,
|
|
processOptions(this, entries, result, uniqueOptions, debugOptions,
|
|
|
"compile options", OptionsParse::Shell);
|
|
"compile options", OptionsParse::Shell);
|
|
@@ -270,8 +273,11 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetCompileFeatures(
|
|
|
std::vector<BT<std::string>> result;
|
|
std::vector<BT<std::string>> result;
|
|
|
std::unordered_set<std::string> uniqueFeatures;
|
|
std::unordered_set<std::string> uniqueFeatures;
|
|
|
|
|
|
|
|
|
|
+ cm::GenEx::Context context(this->LocalGenerator, config,
|
|
|
|
|
+ /*language=*/std::string());
|
|
|
|
|
+
|
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
|
- this, "COMPILE_FEATURES", nullptr, nullptr, this->LocalGenerator, config,
|
|
|
|
|
|
|
+ this, "COMPILE_FEATURES", nullptr, nullptr, context,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
@@ -282,11 +288,10 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetCompileFeatures(
|
|
|
this->DebugCompileFeaturesDone = true;
|
|
this->DebugCompileFeaturesDone = true;
|
|
|
|
|
|
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
|
- this, config, std::string(), &dagChecker, this->CompileFeaturesEntries);
|
|
|
|
|
|
|
+ this, context, &dagChecker, this->CompileFeaturesEntries);
|
|
|
|
|
|
|
|
- AddInterfaceEntries(this, config, "INTERFACE_COMPILE_FEATURES",
|
|
|
|
|
- std::string(), &dagChecker, entries,
|
|
|
|
|
- IncludeRuntimeInterface::Yes);
|
|
|
|
|
|
|
+ AddInterfaceEntries(this, "INTERFACE_COMPILE_FEATURES", context, &dagChecker,
|
|
|
|
|
+ entries, IncludeRuntimeInterface::Yes);
|
|
|
|
|
|
|
|
processOptions(this, entries, result, uniqueFeatures, debugFeatures,
|
|
processOptions(this, entries, result, uniqueFeatures, debugFeatures,
|
|
|
"compile features", OptionsParse::None);
|
|
"compile features", OptionsParse::None);
|
|
@@ -319,9 +324,10 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetCompileDefinitions(
|
|
|
std::vector<BT<std::string>> list;
|
|
std::vector<BT<std::string>> list;
|
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
|
|
|
|
|
|
|
|
+ cm::GenEx::Context context(this->LocalGenerator, config, language);
|
|
|
|
|
+
|
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
|
- this, "COMPILE_DEFINITIONS", nullptr,
|
|
|
|
|
- nullptr, this->LocalGenerator, config,
|
|
|
|
|
|
|
+ this, "COMPILE_DEFINITIONS", nullptr, nullptr, context,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
@@ -332,9 +338,9 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetCompileDefinitions(
|
|
|
this->DebugCompileDefinitionsDone = true;
|
|
this->DebugCompileDefinitionsDone = true;
|
|
|
|
|
|
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
|
- this, config, language, &dagChecker, this->CompileDefinitionsEntries);
|
|
|
|
|
|
|
+ this, context, &dagChecker, this->CompileDefinitionsEntries);
|
|
|
|
|
|
|
|
- AddInterfaceEntries(this, config, "INTERFACE_COMPILE_DEFINITIONS", language,
|
|
|
|
|
|
|
+ AddInterfaceEntries(this, "INTERFACE_COMPILE_DEFINITIONS", context,
|
|
|
&dagChecker, entries, IncludeRuntimeInterface::Yes);
|
|
&dagChecker, entries, IncludeRuntimeInterface::Yes);
|
|
|
|
|
|
|
|
processOptions(this, entries, list, uniqueOptions, debugDefines,
|
|
processOptions(this, entries, list, uniqueOptions, debugDefines,
|
|
@@ -356,8 +362,10 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetPrecompileHeaders(
|
|
|
}
|
|
}
|
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
|
|
|
|
|
|
|
|
+ cm::GenEx::Context context(this->LocalGenerator, config, language);
|
|
|
|
|
+
|
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
|
- this, "PRECOMPILE_HEADERS", nullptr, nullptr, this->LocalGenerator, config,
|
|
|
|
|
|
|
+ this, "PRECOMPILE_HEADERS", nullptr, nullptr, context,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
@@ -369,9 +377,9 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetPrecompileHeaders(
|
|
|
this->DebugPrecompileHeadersDone = true;
|
|
this->DebugPrecompileHeadersDone = true;
|
|
|
|
|
|
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
|
- this, config, language, &dagChecker, this->PrecompileHeadersEntries);
|
|
|
|
|
|
|
+ this, context, &dagChecker, this->PrecompileHeadersEntries);
|
|
|
|
|
|
|
|
- AddInterfaceEntries(this, config, "INTERFACE_PRECOMPILE_HEADERS", language,
|
|
|
|
|
|
|
+ AddInterfaceEntries(this, "INTERFACE_PRECOMPILE_HEADERS", context,
|
|
|
&dagChecker, entries, IncludeRuntimeInterface::Yes);
|
|
&dagChecker, entries, IncludeRuntimeInterface::Yes);
|
|
|
|
|
|
|
|
std::vector<BT<std::string>> list;
|
|
std::vector<BT<std::string>> list;
|
|
@@ -413,8 +421,10 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetLinkOptions(
|
|
|
std::vector<BT<std::string>> result;
|
|
std::vector<BT<std::string>> result;
|
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
|
|
|
|
|
|
|
|
+ cm::GenEx::Context context(this->LocalGenerator, config, language);
|
|
|
|
|
+
|
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
|
- this, "LINK_OPTIONS", nullptr, nullptr, this->LocalGenerator, config,
|
|
|
|
|
|
|
+ this, "LINK_OPTIONS", nullptr, nullptr, context,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
cmList debugProperties{ this->Makefile->GetDefinition(
|
|
@@ -425,10 +435,10 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetLinkOptions(
|
|
|
this->DebugLinkOptionsDone = true;
|
|
this->DebugLinkOptionsDone = true;
|
|
|
|
|
|
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
EvaluatedTargetPropertyEntries entries = EvaluateTargetPropertyEntries(
|
|
|
- this, config, language, &dagChecker, this->LinkOptionsEntries);
|
|
|
|
|
|
|
+ this, context, &dagChecker, this->LinkOptionsEntries);
|
|
|
|
|
|
|
|
- AddInterfaceEntries(this, config, "INTERFACE_LINK_OPTIONS", language,
|
|
|
|
|
- &dagChecker, entries, IncludeRuntimeInterface::Yes,
|
|
|
|
|
|
|
+ AddInterfaceEntries(this, "INTERFACE_LINK_OPTIONS", context, &dagChecker,
|
|
|
|
|
+ entries, IncludeRuntimeInterface::Yes,
|
|
|
this->GetPolicyStatusCMP0099() == cmPolicies::NEW
|
|
this->GetPolicyStatusCMP0099() == cmPolicies::NEW
|
|
|
? UseTo::Link
|
|
? UseTo::Link
|
|
|
: UseTo::Compile);
|
|
: UseTo::Compile);
|
|
@@ -595,17 +605,18 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetStaticLibraryLinkOptions(
|
|
|
std::vector<BT<std::string>> result;
|
|
std::vector<BT<std::string>> result;
|
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
|
|
|
|
|
|
|
|
+ cm::GenEx::Context context(this->LocalGenerator, config, language);
|
|
|
|
|
+
|
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
|
- this, "STATIC_LIBRARY_OPTIONS", nullptr,
|
|
|
|
|
- nullptr, this->LocalGenerator, config,
|
|
|
|
|
|
|
+ this, "STATIC_LIBRARY_OPTIONS", nullptr, nullptr, context,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
EvaluatedTargetPropertyEntries entries;
|
|
EvaluatedTargetPropertyEntries entries;
|
|
|
if (cmValue linkOptions = this->GetProperty("STATIC_LIBRARY_OPTIONS")) {
|
|
if (cmValue linkOptions = this->GetProperty("STATIC_LIBRARY_OPTIONS")) {
|
|
|
std::unique_ptr<TargetPropertyEntry> entry = TargetPropertyEntry::Create(
|
|
std::unique_ptr<TargetPropertyEntry> entry = TargetPropertyEntry::Create(
|
|
|
*this->LocalGenerator->GetCMakeInstance(), *linkOptions);
|
|
*this->LocalGenerator->GetCMakeInstance(), *linkOptions);
|
|
|
- entries.Entries.emplace_back(EvaluateTargetPropertyEntry(
|
|
|
|
|
- this, config, language, &dagChecker, *entry));
|
|
|
|
|
|
|
+ entries.Entries.emplace_back(
|
|
|
|
|
+ EvaluateTargetPropertyEntry(this, context, &dagChecker, *entry));
|
|
|
}
|
|
}
|
|
|
processOptions(this, entries, result, uniqueOptions, false,
|
|
processOptions(this, entries, result, uniqueOptions, false,
|
|
|
"static library link options", OptionsParse::Shell);
|
|
"static library link options", OptionsParse::Shell);
|
|
@@ -640,8 +651,9 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetLinkDepends(
|
|
|
{
|
|
{
|
|
|
std::vector<BT<std::string>> result;
|
|
std::vector<BT<std::string>> result;
|
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
std::unordered_set<std::string> uniqueOptions;
|
|
|
|
|
+ cm::GenEx::Context context(this->LocalGenerator, config, language);
|
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
cmGeneratorExpressionDAGChecker dagChecker{
|
|
|
- this, "LINK_DEPENDS", nullptr, nullptr, this->LocalGenerator, config,
|
|
|
|
|
|
|
+ this, "LINK_DEPENDS", nullptr, nullptr, context,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
EvaluatedTargetPropertyEntries entries;
|
|
EvaluatedTargetPropertyEntries entries;
|
|
@@ -650,12 +662,12 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetLinkDepends(
|
|
|
for (auto const& depend : depends) {
|
|
for (auto const& depend : depends) {
|
|
|
std::unique_ptr<TargetPropertyEntry> entry = TargetPropertyEntry::Create(
|
|
std::unique_ptr<TargetPropertyEntry> entry = TargetPropertyEntry::Create(
|
|
|
*this->LocalGenerator->GetCMakeInstance(), depend);
|
|
*this->LocalGenerator->GetCMakeInstance(), depend);
|
|
|
- entries.Entries.emplace_back(EvaluateTargetPropertyEntry(
|
|
|
|
|
- this, config, language, &dagChecker, *entry));
|
|
|
|
|
|
|
+ entries.Entries.emplace_back(
|
|
|
|
|
+ EvaluateTargetPropertyEntry(this, context, &dagChecker, *entry));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- AddInterfaceEntries(this, config, "INTERFACE_LINK_DEPENDS", language,
|
|
|
|
|
- &dagChecker, entries, IncludeRuntimeInterface::Yes,
|
|
|
|
|
|
|
+ AddInterfaceEntries(this, "INTERFACE_LINK_DEPENDS", context, &dagChecker,
|
|
|
|
|
+ entries, IncludeRuntimeInterface::Yes,
|
|
|
this->GetPolicyStatusCMP0099() == cmPolicies::NEW
|
|
this->GetPolicyStatusCMP0099() == cmPolicies::NEW
|
|
|
? UseTo::Link
|
|
? UseTo::Link
|
|
|
: UseTo::Compile);
|
|
: UseTo::Compile);
|