diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-01-19 10:21:14 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2013-01-20 16:06:47 (GMT) |
commit | e98799105bdb296e8d9f5b3ef5cf99bcebcafc40 (patch) | |
tree | 3cc97cedcc2bac471a9868e95a9982d35de6258c /Source/cmGeneratorExpressionEvaluator.cxx | |
parent | d9afacced34b2ef17a6c3ca2f66975272cf8473f (diff) | |
download | CMake-e98799105bdb296e8d9f5b3ef5cf99bcebcafc40.zip CMake-e98799105bdb296e8d9f5b3ef5cf99bcebcafc40.tar.gz CMake-e98799105bdb296e8d9f5b3ef5cf99bcebcafc40.tar.bz2 |
Make INTERFACE determined properties readable in generator expressions.
The properties are evaluated as link-dependent interface properties when
evaluating the generator expressions.
Diffstat (limited to 'Source/cmGeneratorExpressionEvaluator.cxx')
-rw-r--r-- | Source/cmGeneratorExpressionEvaluator.cxx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index 8e40815a..e842880 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -442,6 +442,27 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode const char *prop = target->GetProperty(propertyName.c_str()); if (!prop) { + if (target->IsImported()) + { + return std::string(); + } + if (dagCheckerParent && dagCheckerParent->EvaluatingLinkLibraries()) + { + return std::string(); + } + if (propertyName == "POSITION_INDEPENDENT_CODE") + { + return target->GetLinkInterfaceDependentBoolProperty( + "POSITION_INDEPENDENT_CODE", context->Config) ? "1" : "0"; + } + if (target->IsLinkInterfaceDependentBoolProperty(propertyName, + context->Config)) + { + return target->GetLinkInterfaceDependentBoolProperty( + propertyName, + context->Config) ? "1" : "0"; + } + return std::string(); } |