Commit d3f7fa22 authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'pp-transitive-property-handling'

77a0fd51 Genex: Use a preprocessor foreach to follow transitive properties.
14649336 Genex: Simplify the preprocessor looper for interface properties.
parents a4b9adec 77a0fd51
......@@ -32,7 +32,7 @@ bool cmExportTryCompileFileGenerator::GenerateMainFile(std::ostream& os)
ImportPropertyMap properties;
#define FIND_TARGETS(PROPERTY) \
this->FindTargets(#PROPERTY, te, emittedDeps);
this->FindTargets("INTERFACE_" #PROPERTY, te, emittedDeps);
CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(FIND_TARGETS)
......
......@@ -23,10 +23,10 @@
F(EvaluatingCompileOptions)
#define CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(F) \
F(INTERFACE_INCLUDE_DIRECTORIES) \
F(INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) \
F(INTERFACE_COMPILE_DEFINITIONS) \
F(INTERFACE_COMPILE_OPTIONS)
F(INCLUDE_DIRECTORIES) \
F(SYSTEM_INCLUDE_DIRECTORIES) \
F(COMPILE_DEFINITIONS) \
F(COMPILE_OPTIONS)
//----------------------------------------------------------------------------
struct cmGeneratorExpressionDAGChecker
......
......@@ -652,7 +652,7 @@ static const struct JoinNode : public cmGeneratorExpressionNode
} joinNode;
#define TRANSITIVE_PROPERTY_NAME(PROPERTY) \
, #PROPERTY
, "INTERFACE_" #PROPERTY
//----------------------------------------------------------------------------
static const char* targetPropertyTransitiveWhitelist[] = {
......@@ -893,26 +893,21 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
std::string interfacePropertyName;
if (propertyName == "INTERFACE_INCLUDE_DIRECTORIES"
|| propertyName == "INCLUDE_DIRECTORIES")
{
interfacePropertyName = "INTERFACE_INCLUDE_DIRECTORIES";
}
else if (propertyName == "INTERFACE_SYSTEM_INCLUDE_DIRECTORIES")
{
interfacePropertyName = "INTERFACE_SYSTEM_INCLUDE_DIRECTORIES";
}
else if (propertyName == "INTERFACE_COMPILE_DEFINITIONS"
|| propertyName == "COMPILE_DEFINITIONS"
|| strncmp(propertyName.c_str(), "COMPILE_DEFINITIONS_", 20) == 0)
#define POPULATE_INTERFACE_PROPERTY_NAME(prop) \
if (propertyName == #prop || propertyName == "INTERFACE_" #prop) \
{ \
interfacePropertyName = "INTERFACE_" #prop; \
} \
else
CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(POPULATE_INTERFACE_PROPERTY_NAME)
// Note that the above macro terminates with an else
/* else */ if (strncmp(propertyName.c_str(),
"COMPILE_DEFINITIONS_", 20) == 0)
{
interfacePropertyName = "INTERFACE_COMPILE_DEFINITIONS";
}
else if (propertyName == "INTERFACE_COMPILE_OPTIONS"
|| propertyName == "COMPILE_OPTIONS")
{
interfacePropertyName = "INTERFACE_COMPILE_OPTIONS";
}
#undef POPULATE_INTERFACE_PROPERTY_NAME
cmTarget const* headTarget = context->HeadTarget
? context->HeadTarget : target;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment