Merge topic 'fix-genex-HEAD-target'
5b22235
Genex: Fix the HEAD target used for evaluated expressions
This commit is contained in:
commit
d3c8688ecd
|
@ -500,6 +500,7 @@ static const char* targetPropertyTransitiveWhitelist[] = {
|
||||||
|
|
||||||
std::string getLinkedTargetsContent(const std::vector<std::string> &libraries,
|
std::string getLinkedTargetsContent(const std::vector<std::string> &libraries,
|
||||||
cmTarget *target,
|
cmTarget *target,
|
||||||
|
cmTarget *headTarget,
|
||||||
cmGeneratorExpressionContext *context,
|
cmGeneratorExpressionContext *context,
|
||||||
cmGeneratorExpressionDAGChecker *dagChecker,
|
cmGeneratorExpressionDAGChecker *dagChecker,
|
||||||
const std::string &interfacePropertyName)
|
const std::string &interfacePropertyName)
|
||||||
|
@ -530,7 +531,7 @@ std::string getLinkedTargetsContent(const std::vector<std::string> &libraries,
|
||||||
std::string linkedTargetsContent = cge->Evaluate(context->Makefile,
|
std::string linkedTargetsContent = cge->Evaluate(context->Makefile,
|
||||||
context->Config,
|
context->Config,
|
||||||
context->Quiet,
|
context->Quiet,
|
||||||
context->HeadTarget,
|
headTarget,
|
||||||
target,
|
target,
|
||||||
dagChecker);
|
dagChecker);
|
||||||
if (cge->GetHadContextSensitiveCondition())
|
if (cge->GetHadContextSensitiveCondition())
|
||||||
|
@ -729,6 +730,8 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||||
interfacePropertyName = "INTERFACE_COMPILE_OPTIONS";
|
interfacePropertyName = "INTERFACE_COMPILE_OPTIONS";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmTarget *headTarget = context->HeadTarget ? context->HeadTarget : target;
|
||||||
|
|
||||||
const char **transBegin = targetPropertyTransitiveWhitelist;
|
const char **transBegin = targetPropertyTransitiveWhitelist;
|
||||||
const char **transEnd = targetPropertyTransitiveWhitelist
|
const char **transEnd = targetPropertyTransitiveWhitelist
|
||||||
+ (sizeof(targetPropertyTransitiveWhitelist) /
|
+ (sizeof(targetPropertyTransitiveWhitelist) /
|
||||||
|
@ -738,11 +741,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||||
{
|
{
|
||||||
const cmTarget::LinkInterface *iface = target->GetLinkInterface(
|
const cmTarget::LinkInterface *iface = target->GetLinkInterface(
|
||||||
context->Config,
|
context->Config,
|
||||||
context->HeadTarget);
|
headTarget);
|
||||||
if(iface)
|
if(iface)
|
||||||
{
|
{
|
||||||
linkedTargetsContent =
|
linkedTargetsContent =
|
||||||
getLinkedTargetsContent(iface->Libraries, target,
|
getLinkedTargetsContent(iface->Libraries, target,
|
||||||
|
headTarget,
|
||||||
context, &dagChecker,
|
context, &dagChecker,
|
||||||
interfacePropertyName);
|
interfacePropertyName);
|
||||||
}
|
}
|
||||||
|
@ -752,11 +756,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||||
{
|
{
|
||||||
const cmTarget::LinkImplementation *impl = target->GetLinkImplementation(
|
const cmTarget::LinkImplementation *impl = target->GetLinkImplementation(
|
||||||
context->Config,
|
context->Config,
|
||||||
context->HeadTarget);
|
headTarget);
|
||||||
if(impl)
|
if(impl)
|
||||||
{
|
{
|
||||||
linkedTargetsContent =
|
linkedTargetsContent =
|
||||||
getLinkedTargetsContent(impl->Libraries, target,
|
getLinkedTargetsContent(impl->Libraries, target,
|
||||||
|
headTarget,
|
||||||
context, &dagChecker,
|
context, &dagChecker,
|
||||||
interfacePropertyName);
|
interfacePropertyName);
|
||||||
}
|
}
|
||||||
|
@ -805,7 +810,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
||||||
std::string result = cge->Evaluate(context->Makefile,
|
std::string result = cge->Evaluate(context->Makefile,
|
||||||
context->Config,
|
context->Config,
|
||||||
context->Quiet,
|
context->Quiet,
|
||||||
context->HeadTarget,
|
headTarget,
|
||||||
target,
|
target,
|
||||||
&dagChecker);
|
&dagChecker);
|
||||||
|
|
||||||
|
|
|
@ -109,6 +109,11 @@ set_property(TARGET libbad APPEND PROPERTY
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/bad"
|
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/bad"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_library(lib6 SHARED other.cpp)
|
||||||
|
add_library(lib7 SHARED other.cpp)
|
||||||
|
target_link_libraries(lib7 $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:lib6>)
|
||||||
|
target_include_directories(lib7 PUBLIC $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:/lib7/include>)
|
||||||
|
add_custom_target(head_target_test "some_bogus_custom_tool \"$<TARGET_PROPERTY:lib7,INCLUDE_DIRECTORIES>$<TARGET_PROPERTY:lib7,INTERFACE_INCLUDE_DIRECTORIES>\"")
|
||||||
|
|
||||||
add_library(includes_source_good empty.cpp)
|
add_library(includes_source_good empty.cpp)
|
||||||
target_include_directories(includes_source_good
|
target_include_directories(includes_source_good
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifdef _WIN32
|
||||||
|
__declspec(dllexport)
|
||||||
|
#endif
|
||||||
|
int other() {
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue