summaryrefslogtreecommitdiffstats
path: root/Source/cmGeneratorExpressionEvaluator.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-01-19 10:21:14 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-01-20 16:06:47 (GMT)
commite98799105bdb296e8d9f5b3ef5cf99bcebcafc40 (patch)
tree3cc97cedcc2bac471a9868e95a9982d35de6258c /Source/cmGeneratorExpressionEvaluator.cxx
parentd9afacced34b2ef17a6c3ca2f66975272cf8473f (diff)
downloadCMake-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.cxx21
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();
}