diff options
author | Brad King <brad.king@kitware.com> | 2013-06-05 13:54:20 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2013-06-05 13:54:20 (GMT) |
commit | d3c8688ecdcdcea89373af2d6a30c4ba66315465 (patch) | |
tree | 827f12a133ab4d91edd09103a86e83e9505d59e1 | |
parent | aa025cc60a56da31dfe8461faec0dc3aa517cc10 (diff) | |
parent | 5b222354de7060af409d0d80aa06180ed1b3ac64 (diff) | |
download | CMake-d3c8688ecdcdcea89373af2d6a30c4ba66315465.zip CMake-d3c8688ecdcdcea89373af2d6a30c4ba66315465.tar.gz CMake-d3c8688ecdcdcea89373af2d6a30c4ba66315465.tar.bz2 |
Merge topic 'fix-genex-HEAD-target'
5b22235 Genex: Fix the HEAD target used for evaluated expressions
3 files changed, 20 insertions, 4 deletions
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index 5e7d00d..28f749d 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -500,6 +500,7 @@ static const char* targetPropertyTransitiveWhitelist[] = { std::string getLinkedTargetsContent(const std::vector<std::string> &libraries, cmTarget *target, + cmTarget *headTarget, cmGeneratorExpressionContext *context, cmGeneratorExpressionDAGChecker *dagChecker, const std::string &interfacePropertyName) @@ -530,7 +531,7 @@ std::string getLinkedTargetsContent(const std::vector<std::string> &libraries, std::string linkedTargetsContent = cge->Evaluate(context->Makefile, context->Config, context->Quiet, - context->HeadTarget, + headTarget, target, dagChecker); if (cge->GetHadContextSensitiveCondition()) @@ -729,6 +730,8 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode interfacePropertyName = "INTERFACE_COMPILE_OPTIONS"; } + cmTarget *headTarget = context->HeadTarget ? context->HeadTarget : target; + const char **transBegin = targetPropertyTransitiveWhitelist; const char **transEnd = targetPropertyTransitiveWhitelist + (sizeof(targetPropertyTransitiveWhitelist) / @@ -738,11 +741,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode { const cmTarget::LinkInterface *iface = target->GetLinkInterface( context->Config, - context->HeadTarget); + headTarget); if(iface) { linkedTargetsContent = getLinkedTargetsContent(iface->Libraries, target, + headTarget, context, &dagChecker, interfacePropertyName); } @@ -752,11 +756,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode { const cmTarget::LinkImplementation *impl = target->GetLinkImplementation( context->Config, - context->HeadTarget); + headTarget); if(impl) { linkedTargetsContent = getLinkedTargetsContent(impl->Libraries, target, + headTarget, context, &dagChecker, interfacePropertyName); } @@ -805,7 +810,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode std::string result = cge->Evaluate(context->Makefile, context->Config, context->Quiet, - context->HeadTarget, + headTarget, target, &dagChecker); diff --git a/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt index 088725b..6919261 100644 --- a/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt @@ -109,6 +109,11 @@ set_property(TARGET libbad APPEND PROPERTY 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) target_include_directories(includes_source_good diff --git a/Tests/IncludeDirectories/TargetIncludeDirectories/other.cpp b/Tests/IncludeDirectories/TargetIncludeDirectories/other.cpp new file mode 100644 index 0000000..6673471 --- /dev/null +++ b/Tests/IncludeDirectories/TargetIncludeDirectories/other.cpp @@ -0,0 +1,6 @@ +#ifdef _WIN32 +__declspec(dllexport) +#endif +int other() { + return 0; +} |