This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via f7ef08ef7c24385595fd652bc83dac3b41e87683 (commit) via 5b222354de7060af409d0d80aa06180ed1b3ac64 (commit) from 7c3f18ff68824eab38cb6a2b47e76a9ae1b2e130 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f7ef08ef7c24385595fd652bc83dac3b41e87683 commit f7ef08ef7c24385595fd652bc83dac3b41e87683 Merge: 7c3f18f 5b22235 Author: Brad King <brad.k...@kitware.com> AuthorDate: Wed Jun 5 09:10:04 2013 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Jun 5 09:10:04 2013 -0400 Merge branch 'fix-genex-HEAD-target' into next 5b222354 Genex: Fix the HEAD target used for evaluated expressions http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5b222354de7060af409d0d80aa06180ed1b3ac64 commit 5b222354de7060af409d0d80aa06180ed1b3ac64 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Mon Jun 3 23:53:29 2013 +0200 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Jun 5 09:05:00 2013 -0400 Genex: Fix the HEAD target used for evaluated expressions If the expression $<TARGET_PROPERTY:prop> appears in the content of a target property, the target that prop is read from is the 'head target' of the expression. In contexts such as evaluating the content of a target property during generation, such as INCLUDE_DIRECTORIES, the 'head target' is the one on which the initial request was made. If evaluating a generator expression which is not a target property content, the target must be explicitly specified. Such contexts include add_custom_command and file(GENERATE). The content might then look like $<TARGET_PROPERTY:tgt,prop> However, as there is no HeadTarget set, any generator expressions evaluated as part of reading prop from tgt which do not specify the tgt directly report an error. Modify the logic of the TARGET_PROPERTY generator expression so that in such contexts, the 'head target' is set to the appropriate target which was first encountered. diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index de6371a..a01a0f8 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -315,6 +315,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) @@ -345,7 +346,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()) @@ -538,6 +539,8 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode interfacePropertyName = "INTERFACE_COMPILE_DEFINITIONS"; } + cmTarget *headTarget = context->HeadTarget ? context->HeadTarget : target; + const char **transBegin = targetPropertyTransitiveWhitelist; const char **transEnd = targetPropertyTransitiveWhitelist + (sizeof(targetPropertyTransitiveWhitelist) / @@ -547,11 +550,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); } @@ -561,11 +565,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); } @@ -614,7 +619,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 ad6671f..bcfbe3c 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>\"") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/lib5.cpp" "#include \"common.h\"\n") add_library(lib5 "${CMAKE_CURRENT_BINARY_DIR}/lib5.cpp") 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; +} ----------------------------------------------------------------------- Summary of changes: hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits