[Cmake-commits] CMake branch, next, updated. v2.8.10.2-2094-g3cc10db

Stephen Kelly steveire at gmail.com
Tue Feb 12 07:19:02 EST 2013


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  3cc10db00337a29985166b6fe2b95b9c38d49241 (commit)
       via  4aae6f7f390694679678214658f1a2d38c86e8b2 (commit)
       via  b84e3aba6b4d3f301871a0075e9274279a4ee7d1 (commit)
       via  95a06f9d372858589edce94b03902997591fb141 (commit)
       via  c72e0e220d9b4de00fb27156863526d25e868db0 (commit)
       via  050f4e72836e6acd630d450db718737654583e3e (commit)
       via  c9382e595e2cce31f17cb838a2467742d3f31c7a (commit)
       via  f021677d1355cb9bd20badcbaac19bd8cfd40390 (commit)
       via  5c9f5e313ff893a28f975749ad9a6b19481e8e62 (commit)
       via  5b88504f650c7bcd3d404853b26292b50fa6f141 (commit)
       via  b030323c133155c57437527d04ca2ba619663f6d (commit)
      from  7eaa83e27fbf4b9e61148284802d11d5a463fb80 (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=3cc10db00337a29985166b6fe2b95b9c38d49241
commit 3cc10db00337a29985166b6fe2b95b9c38d49241
Merge: 7eaa83e 4aae6f7
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 07:18:58 2013 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Feb 12 07:18:58 2013 -0500

    Merge topic 'linked-usage-cleanup' into next
    
    4aae6f7 Don't add target-specific interface includes and defines to Qt 4 targets.
    b84e3ab Revert "Add a way to exclude INTERFACE properties from exported targets."
    95a06f9 Revert "find_package: Reword <package>_NO_INTERFACES documentation"
    c72e0e2 Revert "Add the $<LINKED:...> generator expression."
    050f4e7 Don't populate INTERFACE includes and defines properties in tll.
    c9382e5 Revert "Don't allow utility or global targets in the LINKED expression."
    f021677 Use the link information as a source of compile definitions and includes.
    5c9f5e3 Don't use LINKED where not needed.
    5b88504 Rename the IncludeDirectoriesEntry to be more generic.
    b030323 Fix determination of when we're evaluating compile definitions.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4aae6f7f390694679678214658f1a2d38c86e8b2
commit 4aae6f7f390694679678214658f1a2d38c86e8b2
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 12:05:40 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 13:18:27 2013 +0100

    Don't add target-specific interface includes and defines to Qt 4 targets.
    
    This is a partial revert of commit c8ee07d0 (FindQt4: Add INTERFACE
    includes and defines to Qt4 targets, 2012-12-31).

diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
index 5baee01..078c031 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
@@ -972,14 +972,6 @@ if (QT_QMAKE_EXECUTABLE AND QTVERSION)
           ${_PROPERTY}
           "Qt4::Qt${_DEPEND}"
         )
-        set_property(TARGET Qt4::${_QT_MODULE} APPEND PROPERTY
-          INTERFACE_INCLUDE_DIRECTORIES
-            "$<TARGET_PROPERTY:Qt4::Qt${_DEPEND},INTERFACE_INCLUDE_DIRECTORIES>"
-        )
-        set_property(TARGET Qt4::${_QT_MODULE} APPEND PROPERTY
-          INTERFACE_COMPILE_DEFINITIONS
-            "$<TARGET_PROPERTY:Qt4::Qt${_DEPEND},INTERFACE_COMPILE_DEFINITIONS>"
-        )
       endforeach()
     endif()
   endmacro()

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b84e3aba6b4d3f301871a0075e9274279a4ee7d1
commit b84e3aba6b4d3f301871a0075e9274279a4ee7d1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 12:00:41 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 13:18:27 2013 +0100

    Revert "Add a way to exclude INTERFACE properties from exported targets."
    
    This reverts commit 2c3654c3de718fe822f8960063373774fc019494.
    
    The removal of some tests added in commit 77cecb77 (Add includes and compile
    definitions with target_link_libraries., 2012-11-05) are also squashed
    into this commit.

diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index ee8436c..ef4ea38 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -264,16 +264,15 @@ void cmExportFileGenerator::GenerateInterfaceProperties(cmTarget *target,
 {
   if (!properties.empty())
     {
-    os << "if(NOT ${CMAKE_FIND_PACKAGE_NAME}_NO_INTERFACES)\n";
     std::string targetName = this->Namespace;
     targetName += target->GetName();
-    os << "  set_target_properties(" << targetName << " PROPERTIES\n";
+    os << "set_target_properties(" << targetName << " PROPERTIES\n";
     for(ImportPropertyMap::const_iterator pi = properties.begin();
         pi != properties.end(); ++pi)
       {
-      os << "    " << pi->first << " \"" << pi->second << "\"\n";
+      os << "  " << pi->first << " \"" << pi->second << "\"\n";
       }
-    os << "  )\nendif()\n\n";
+    os << ")\n\n";
     }
 }
 
diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index e9b6ab6..470ceca 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -376,27 +376,6 @@ void cmFindPackageCommand::GenerateDocumentation()
     "The package configuration file may set <package>_FOUND to false "
     "to tell find_package that component requirements are not satisfied."
     "\n"
-    "Targets exported by the install() command may have additional INTERFACE "
-    "properties set for include directories, compile definitions etc.  As "
-    "these may create a backward compatibility concern for consumers of "
-    "existing projects, it is possible to set the <package>_NO_INTERFACES "
-    "variable to disable populating those interfaces.  It is possible to "
-    "emulate a version-based policy for whether the interfaces should be "
-    "enabled in the config file before including the imported targets file. "
-    "This allows consumers to decide when to enable the new interfaces when "
-    "upgrading.  The upstream project is responsible for adding code similar "
-    "to this in the version which generates the INTERFACE content:\n"
-    "  if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION VERSION_LESS 2.3\n"
-    "      AND NOT ${CMAKE_FIND_PACKAGE_NAME}_INTERFACES)\n"
-    "    set(${CMAKE_FIND_PACKAGE_NAME}_NO_INTERFACES 1)\n"
-    "  endif()\n"
-    "  include(\"${CMAKE_CURRENT_LIST_DIR}/<package>Targets.cmake\")\n"
-    "\n"
-    "Downstream users may then choose to use the new interfaces by finding "
-    "the newer version of upstream.  They can also choose to not use the new "
-    "interfaces by setting <package>_INTERFACES to false before finding the "
-    "package.\n"
-    "\n"
     "See the cmake_policy() command documentation for discussion of the "
     "NO_POLICY_SCOPE option."
     ;
diff --git a/Tests/ExportImport/Import/CMakeLists.txt b/Tests/ExportImport/Import/CMakeLists.txt
index 237f8fa..3fc78a2 100644
--- a/Tests/ExportImport/Import/CMakeLists.txt
+++ b/Tests/ExportImport/Import/CMakeLists.txt
@@ -17,8 +17,3 @@ add_executable(imp_testTransExe1 imp_testTransExe1.c)
 target_link_libraries(imp_testTransExe1 imp_lib1)
 add_executable(imp_testTransExe1b imp_testTransExe1.c)
 target_link_libraries(imp_testTransExe1b imp_lib1b)
-
-# Test package INTERFACE controls
-add_subdirectory(package_old_old)
-add_subdirectory(package_new_old)
-add_subdirectory(package_new_new)
diff --git a/Tests/ExportImport/Import/package_new_new/CMakeLists.txt b/Tests/ExportImport/Import/package_new_new/CMakeLists.txt
deleted file mode 100644
index 4e6f642..0000000
--- a/Tests/ExportImport/Import/package_new_new/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-
-cmake_minimum_required(VERSION 2.8)
-
-find_package(testLibRequired 2.5 REQUIRED)
-
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
-  "
-#include \"testSharedLibRequired.h\"
-int main(int argc, char **argv)
-{
-  TestSharedLibRequired req;
-  return req.foo();
-}
-"
-)
-
-get_target_property(prop Req::testSharedLibRequired INTERFACE_INCLUDE_DIRECTORIES)
-if (NOT prop)
-  message(SEND_ERROR "Interface of Req::testSharedLibRequired should not be empty")
-endif()
-
-add_executable(new_new_test "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
-target_link_libraries(new_new_test Req::testSharedLibRequired)
diff --git a/Tests/ExportImport/Import/package_new_old/CMakeLists.txt b/Tests/ExportImport/Import/package_new_old/CMakeLists.txt
deleted file mode 100644
index e675d64..0000000
--- a/Tests/ExportImport/Import/package_new_old/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-
-cmake_minimum_required(VERSION 2.8)
-
-find_package(testLibRequired 2.5 REQUIRED)
-
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
-  "
-#include \"testSharedLibRequired.h\"
-int main(int argc, char **argv)
-{
-  TestSharedLibRequired req;
-  return req.foo();
-}
-"
-)
-
-get_target_property(prop Req::testSharedLibRequired INTERFACE_INCLUDE_DIRECTORIES)
-if ("${prop}" STREQUAL "")
-  message(SEND_ERROR "Interface of Req::testSharedLibRequired should not be empty")
-endif()
-
-add_executable(new_old_test "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
-target_link_libraries(new_old_test Req::testSharedLibRequired)
-include_directories(${testLibRequired_INCLUDE_DIRS})
diff --git a/Tests/ExportImport/Import/package_old_old/CMakeLists.txt b/Tests/ExportImport/Import/package_old_old/CMakeLists.txt
deleted file mode 100644
index 3b27330..0000000
--- a/Tests/ExportImport/Import/package_old_old/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-
-cmake_minimum_required(VERSION 2.8)
-
-find_package(testLibRequired 2.1 REQUIRED)
-
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
-  "
-#include \"testSharedLibRequired.h\"
-int main(int argc, char **argv)
-{
-  TestSharedLibRequired req;
-  return req.foo();
-}
-"
-)
-
-get_target_property(prop Req::testSharedLibRequired INTERFACE_INCLUDE_DIRECTORIES)
-if (prop)
-  message(SEND_ERROR "Interface of Req::testSharedLibRequired should be empty, but is ${prop}")
-endif()
-
-add_executable(old_old_test "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
-target_link_libraries(old_old_test Req::testSharedLibRequired)
-include_directories(${testLibRequired_INCLUDE_DIRS})

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=95a06f9d372858589edce94b03902997591fb141
commit 95a06f9d372858589edce94b03902997591fb141
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 12:00:31 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 13:18:27 2013 +0100

    Revert "find_package: Reword <package>_NO_INTERFACES documentation"
    
    This reverts commit 179f49560286e2e322b9b0cf5d0a277b7634540f.

diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index 6e78bd7..e9b6ab6 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -376,25 +376,26 @@ void cmFindPackageCommand::GenerateDocumentation()
     "The package configuration file may set <package>_FOUND to false "
     "to tell find_package that component requirements are not satisfied."
     "\n"
-    "A package configuration file may include() a <package>Targets.cmake "
-    "file, created by install(EXPORT) in the upstream source, to import "
-    "targets into the downstream consumer.  "
-    "When a new version of the upstream adds INTERFACE properties not "
-    "present in a previous version it can change behavior for existing "
-    "downstreams.  "
-    "In order to remain source compatible the upstream package configuration "
-    "file may set <package>_NO_INTERFACES to disable INTERFACE properties.  "
-    "For example, code of the form:\n"
-    "  if(<package>_FIND_VERSION VERSION_LESS <new-version>\n"
-    "      AND NOT <package>_INTERFACES)\n"
-    "    set(<package>_NO_INTERFACES 1)\n"
+    "Targets exported by the install() command may have additional INTERFACE "
+    "properties set for include directories, compile definitions etc.  As "
+    "these may create a backward compatibility concern for consumers of "
+    "existing projects, it is possible to set the <package>_NO_INTERFACES "
+    "variable to disable populating those interfaces.  It is possible to "
+    "emulate a version-based policy for whether the interfaces should be "
+    "enabled in the config file before including the imported targets file. "
+    "This allows consumers to decide when to enable the new interfaces when "
+    "upgrading.  The upstream project is responsible for adding code similar "
+    "to this in the version which generates the INTERFACE content:\n"
+    "  if(${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION VERSION_LESS 2.3\n"
+    "      AND NOT ${CMAKE_FIND_PACKAGE_NAME}_INTERFACES)\n"
+    "    set(${CMAKE_FIND_PACKAGE_NAME}_NO_INTERFACES 1)\n"
     "  endif()\n"
     "  include(\"${CMAKE_CURRENT_LIST_DIR}/<package>Targets.cmake\")\n"
-    "tells <package>Targets.cmake not to provide the INTERFACE properties "
-    "unless the downstream requests at least <new-version> or sets "
-    "<package>_INTERFACES to explicitly request them.  "
-    "This allows consumers to decide when to enable the new interfaces when "
-    "upgrading."
+    "\n"
+    "Downstream users may then choose to use the new interfaces by finding "
+    "the newer version of upstream.  They can also choose to not use the new "
+    "interfaces by setting <package>_INTERFACES to false before finding the "
+    "package.\n"
     "\n"
     "See the cmake_policy() command documentation for discussion of the "
     "NO_POLICY_SCOPE option."

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c72e0e220d9b4de00fb27156863526d25e868db0
commit c72e0e220d9b4de00fb27156863526d25e868db0
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 11:56:58 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 13:18:27 2013 +0100

    Revert "Add the $<LINKED:...> generator expression."
    
    This reverts commit 0b92602b816e2584db3781b120a1e5200da72ada.
    
    Conflicts:
    	Source/cmGeneratorExpressionEvaluator.cxx
    	Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
    	Tests/CMakeCommands/target_include_directories/CMakeLists.txt

diff --git a/Source/cmDocumentGeneratorExpressions.h b/Source/cmDocumentGeneratorExpressions.h
index 3993f7d..8b80a8a 100644
--- a/Source/cmDocumentGeneratorExpressions.h
+++ b/Source/cmDocumentGeneratorExpressions.h
@@ -51,14 +51,6 @@
   "on the target tgt.\n"                                                \
   "Note that tgt is not added as a dependency of the target this "      \
   "expression is evaluated on.\n"                                       \
-  "  $<LINKED:item>            = An empty string if item is not a "     \
-  "target.  If item is a target then the "                              \
-  "INTERFACE_INCLUDE_DIRECTORIES or INTERFACE_COMPILE_DEFINITIONS "     \
-  "content is read from the target.  "                                  \
-  "This generator expression can only be used in evaluation of the "    \
-  "INCLUDE_DIRECTORIES or COMPILE_DEFINITIONS property.  Note that "    \
-  "this expression is for internal use and may be changed or removed "  \
-  "in the future.\n"                                                    \
   "  $<TARGET_POLICY:pol>          = '1' if the policy was NEW when "   \
   "the 'head' target was created, else '0'.  If the policy was not "    \
   "set, the warning message for the policy will be emitted.  This "     \
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index fbed95a..ee8436c 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -25,8 +25,6 @@
 
 #include <cmsys/auto_ptr.hxx>
 
-#include "assert.h"
-
 //----------------------------------------------------------------------------
 cmExportFileGenerator::cmExportFileGenerator()
 {
@@ -162,7 +160,7 @@ void cmExportFileGenerator::PopulateInterfaceProperty(const char *propName,
                                                            preprocessRule);
     if (!prepro.empty())
       {
-      this->ResolveTargetsInGeneratorExpressions(prepro, target, propName,
+      this->ResolveTargetsInGeneratorExpressions(prepro, target,
                                                  missingTargets);
       properties[outputName] = prepro;
       }
@@ -318,14 +316,13 @@ cmExportFileGenerator::AddTargetNamespace(std::string &input,
 void
 cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
                                     std::string &input,
-                                    cmTarget* target, const char *propName,
+                                    cmTarget* target,
                                     std::vector<std::string> &missingTargets,
                                     FreeTargetsReplace replace)
 {
   if (replace == NoReplaceFreeTargets)
     {
-    this->ResolveTargetsInGeneratorExpression(input, target, propName,
-                                              missingTargets);
+    this->ResolveTargetsInGeneratorExpression(input, target, missingTargets);
     return;
     }
   std::vector<std::string> parts;
@@ -344,7 +341,7 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
       {
       this->ResolveTargetsInGeneratorExpression(
                                     *li,
-                                    target, propName,
+                                    target,
                                     missingTargets);
       }
     input += sep + *li;
@@ -356,7 +353,7 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpressions(
 void
 cmExportFileGenerator::ResolveTargetsInGeneratorExpression(
                                     std::string &input,
-                                    cmTarget* target, const char *propName,
+                                    cmTarget* target,
                                     std::vector<std::string> &missingTargets)
 {
   std::string::size_type pos = 0;
@@ -393,57 +390,6 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpression(
   std::string errorString;
   pos = 0;
   lastPos = pos;
-  while((pos = input.find("$<LINKED:", lastPos)) != input.npos)
-    {
-    std::string::size_type nameStartPos = pos + sizeof("$<LINKED:") - 1;
-    std::string::size_type endPos = input.find(">", nameStartPos);
-    if (endPos == input.npos)
-      {
-      errorString = "$<LINKED:...> expression incomplete";
-      break;
-      }
-    std::string targetName = input.substr(nameStartPos,
-                                                endPos - nameStartPos);
-    if(targetName.find("$<") != input.npos)
-      {
-      errorString = "$<LINKED:...> requires its parameter to be a "
-                    "literal.";
-      break;
-      }
-    if (this->AddTargetNamespace(targetName, target, missingTargets))
-      {
-      assert(propName); // The link libraries strings will
-                        // never contain $<LINKED>
-      std::string replacement = "$<TARGET_PROPERTY:"
-                              + targetName + "," + propName;
-      input.replace(pos, endPos - pos, replacement);
-      lastPos = pos + replacement.size() + 1;
-      }
-    else
-      {
-      if (pos != 0)
-        {
-        if (input[pos - 1] == ';')
-          {
-          --pos;
-          }
-        }
-      else if (input[endPos + 1] == ';')
-        {
-        ++endPos;
-        }
-      input.replace(pos, endPos - pos + 1, "");
-      lastPos = pos;
-      }
-    }
-  if (!errorString.empty())
-    {
-    mf->IssueMessage(cmake::FATAL_ERROR, errorString);
-    return;
-    }
-
-  pos = 0;
-  lastPos = pos;
   while((pos = input.find("$<TARGET_NAME:", lastPos)) != input.npos)
     {
     std::string::size_type nameStartPos = pos + sizeof("$<TARGET_NAME:") - 1;
@@ -537,7 +483,7 @@ cmExportFileGenerator
                                                          preprocessRule);
   if (!prepro.empty())
     {
-    this->ResolveTargetsInGeneratorExpressions(prepro, target, 0,
+    this->ResolveTargetsInGeneratorExpressions(prepro, target,
                                                missingTargets,
                                                ReplaceFreeTargets);
     properties["IMPORTED_LINK_INTERFACE_LIBRARIES" + suffix] = prepro;
diff --git a/Source/cmExportFileGenerator.h b/Source/cmExportFileGenerator.h
index 5ad27bf..776be61 100644
--- a/Source/cmExportFileGenerator.h
+++ b/Source/cmExportFileGenerator.h
@@ -119,7 +119,7 @@ protected:
   };
 
   void ResolveTargetsInGeneratorExpressions(std::string &input,
-                          cmTarget* target, const char *propName,
+                          cmTarget* target,
                           std::vector<std::string> &missingTargets,
                           FreeTargetsReplace replace = NoReplaceFreeTargets);
 
@@ -150,7 +150,7 @@ private:
                           std::vector<std::string> &missingTargets);
 
   void ResolveTargetsInGeneratorExpression(std::string &input,
-                                    cmTarget* target, const char *propName,
+                                    cmTarget* target,
                                     std::vector<std::string> &missingTargets);
 
   virtual void ReplaceInstallPrefix(std::string &input);
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index eb8cdc8..cd6a40b 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -713,98 +713,6 @@ static const struct InstallPrefixNode : public cmGeneratorExpressionNode
 } installPrefixNode;
 
 //----------------------------------------------------------------------------
-static const struct LinkedNode : public cmGeneratorExpressionNode
-{
-  LinkedNode() {}
-
-  virtual bool GeneratesContent() const { return true; }
-  virtual int NumExpectedParameters() const { return 1; }
-  virtual bool RequiresLiteralInput() const { return true; }
-
-  std::string Evaluate(const std::vector<std::string> &parameters,
-                       cmGeneratorExpressionContext *context,
-                       const GeneratorExpressionContent *content,
-                       cmGeneratorExpressionDAGChecker *dagChecker) const
-  {
-    if (dagChecker->EvaluatingIncludeDirectories())
-      {
-      return this->GetInterfaceProperty(parameters.front(),
-                                        "INCLUDE_DIRECTORIES",
-                                        context, content, dagChecker);
-      }
-    if (dagChecker->EvaluatingCompileDefinitions())
-      {
-      return this->GetInterfaceProperty(parameters.front(),
-                                        "COMPILE_DEFINITIONS",
-                                        context, content, dagChecker);
-      }
-
-    reportError(context, content->GetOriginalExpression(),
-                "$<LINKED:...> may only be used in INCLUDE_DIRECTORIES and "
-                "COMPILE_DEFINITIONS properties.");
-
-    return std::string();
-  }
-
-private:
-  std::string GetInterfaceProperty(const std::string &item,
-                      const std::string &prop,
-                      cmGeneratorExpressionContext *context,
-                      const GeneratorExpressionContent *content,
-                      cmGeneratorExpressionDAGChecker *dagCheckerParent) const
-  {
-    cmTarget *target = context->CurrentTarget
-                              ->GetMakefile()->FindTargetToUse(item.c_str());
-    if (!target)
-      {
-      return std::string();
-      }
-    std::string propertyName = "INTERFACE_" + prop;
-    const char *propContent = target->GetProperty(propertyName.c_str());
-    if (!propContent)
-      {
-      return std::string();
-      }
-
-    cmGeneratorExpressionDAGChecker dagChecker(context->Backtrace,
-                                               target->GetName(),
-                                               propertyName,
-                                               content,
-                                               dagCheckerParent);
-
-    switch (dagChecker.check())
-      {
-    case cmGeneratorExpressionDAGChecker::SELF_REFERENCE:
-      dagChecker.reportError(context, content->GetOriginalExpression());
-      return std::string();
-    case cmGeneratorExpressionDAGChecker::CYCLIC_REFERENCE:
-      // No error. We just skip cyclic references.
-      return std::string();
-    case cmGeneratorExpressionDAGChecker::ALREADY_SEEN:
-      // No error. We're not going to find anything new here.
-      return std::string();
-    case cmGeneratorExpressionDAGChecker::DAG:
-      break;
-      }
-
-    cmGeneratorExpression ge(context->Backtrace);
-    cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(propContent);
-    std::string result = cge->Evaluate(context->Makefile,
-                        context->Config,
-                        context->Quiet,
-                        context->HeadTarget,
-                        target,
-                        &dagChecker);
-    if (cge->GetHadContextSensitiveCondition())
-      {
-      context->HadContextSensitiveCondition = true;
-      }
-    return result;
-  }
-
-} linkedNode;
-
-//----------------------------------------------------------------------------
 template<bool linker, bool soname>
 struct TargetFilesystemArtifactResultCreator
 {
@@ -1038,8 +946,6 @@ cmGeneratorExpressionNode* GetNode(const std::string &identifier)
     return &targetDefinedNode;
   else if (identifier == "INSTALL_PREFIX")
     return &installPrefixNode;
-  else if (identifier == "LINKED")
-    return &linkedNode;
   return 0;
 
 }
diff --git a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
index 8fed4ca..8a4437b 100644
--- a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
@@ -16,15 +16,9 @@ add_executable(consumer
   "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp"
 )
 
-add_library(linked UNKNOWN IMPORTED)
-set_property(TARGET linked PROPERTY
-  INTERFACE_COMPILE_DEFINITIONS "MY_LINKED_DEFINE")
-
-
 target_compile_definitions(consumer
   PRIVATE $<TARGET_PROPERTY:target_compile_definitions,INTERFACE_COMPILE_DEFINITIONS>
   $<$<TARGET_DEFINED:notdefined>:SHOULD_NOT_BE_DEFINED>
   $<$<TARGET_DEFINED:target_compile_definitions>:SHOULD_BE_DEFINED>
-  $<TARGET_PROPERTY:linked,INTERFACE_COMPILE_DEFINITIONS>
   -DDASH_D_DEFINE
 )
diff --git a/Tests/CMakeCommands/target_compile_definitions/consumer.cpp b/Tests/CMakeCommands/target_compile_definitions/consumer.cpp
index c077593..1a46aa5 100644
--- a/Tests/CMakeCommands/target_compile_definitions/consumer.cpp
+++ b/Tests/CMakeCommands/target_compile_definitions/consumer.cpp
@@ -23,8 +23,4 @@
 #error Expected DASH_D_DEFINE
 #endif
 
-#ifndef MY_LINKED_DEFINE
-#error Expected MY_LINKED_DEFINE
-#endif
-
 int main() { return 0; }
diff --git a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
index 2c2ca42..c2da175 100644
--- a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
@@ -17,9 +17,6 @@ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/poison/common.h" "#error Should not be i
 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/cure")
 file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cure/common.h" "#define CURE_DEFINE\n")
 
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/linkedinclude")
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/linkedinclude/linkedinclude.h" "#define LINKEDINCLUDE_DEFINE\n")
-
 add_executable(target_include_directories
   "${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
 )
@@ -45,13 +42,8 @@ add_executable(consumer
   "${CMAKE_CURRENT_SOURCE_DIR}/consumer.cpp"
 )
 
-add_library(linked UNKNOWN IMPORTED)
-set_property(TARGET linked PROPERTY
-  INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}/linkedinclude")
-
 target_include_directories(consumer
   PRIVATE
     $<TARGET_PROPERTY:target_include_directories,INTERFACE_INCLUDE_DIRECTORIES>
-    $<TARGET_PROPERTY:linked,INTERFACE_INCLUDE_DIRECTORIES>
   relative_dir
 )
diff --git a/Tests/CMakeCommands/target_include_directories/consumer.cpp b/Tests/CMakeCommands/target_include_directories/consumer.cpp
index ccffd9c..82b800a 100644
--- a/Tests/CMakeCommands/target_include_directories/consumer.cpp
+++ b/Tests/CMakeCommands/target_include_directories/consumer.cpp
@@ -3,7 +3,6 @@
 #include "publicinclude.h"
 #include "interfaceinclude.h"
 #include "relative_dir.h"
-#include "linkedinclude.h"
 
 #ifdef PRIVATEINCLUDE_DEFINE
 #error Unexpected PRIVATEINCLUDE_DEFINE
@@ -25,8 +24,4 @@
 #error Expected RELATIVE_DIR_DEFINE
 #endif
 
-#ifndef LINKEDINCLUDE_DEFINE
-#error Expected LINKEDINCLUDE_DEFINE
-#endif
-
 int main() { return 0; }
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-stderr.txt
deleted file mode 100644
index 4cd9cdd..0000000
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-stderr.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-CMake Error:
-  Error evaluating generator expression:
-
-    \$<LINKED:something>
-
-  \$<LINKED:...> may only be used in INCLUDE_DIRECTORIES and
-  COMPILE_DEFINITIONS properties.$
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked.cmake
deleted file mode 100644
index 542ea76..0000000
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
-           "int main(int, char **) { return 0; }\n")
-
-add_executable(TargetPropertyGeneratorExpressions
-           "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
-target_link_libraries(TargetPropertyGeneratorExpressions "$<LINKED:something>")
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
index ea48f61..0ee3238 100644
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
@@ -15,4 +15,3 @@ run_cmake(BadInvalidName5)
 run_cmake(BadInvalidName6)
 run_cmake(BadInvalidName7)
 run_cmake(BadInvalidName8)
-run_cmake(BadLinked)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=050f4e72836e6acd630d450db718737654583e3e
commit 050f4e72836e6acd630d450db718737654583e3e
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 11:58:50 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 13:17:16 2013 +0100

    Don't populate INTERFACE includes and defines properties in tll.
    
    This is a partial revert of commit 77cecb77 (Add includes and compile
    definitions with target_link_libraries., 2012-11-05).
    
    As the interface includes and defines are now determined by the link
    closure, there is no need to populate the corresponding properties
    explicitly.

diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx
index 22ea920..3f652c9 100644
--- a/Source/cmTargetLinkLibrariesCommand.cxx
+++ b/Source/cmTargetLinkLibrariesCommand.cxx
@@ -252,42 +252,10 @@ cmTargetLinkLibrariesCommand
 }
 
 //----------------------------------------------------------------------------
-static std::string compileProperty(cmTarget *tgt, const std::string &lib,
-                                   bool isGenex,
-                                   const std::string &property,
-                                   cmTarget::LinkLibraryType llt)
-{
-  std::string value = !isGenex ? "$<LINKED:" + lib + ">"
-                               : "$<$<TARGET_DEFINED:" + lib + ">:" +
-                                   "$<TARGET_PROPERTY:" + lib +
-                                   ",INTERFACE_" + property + ">"
-                                 ">";
-
-  return tgt->GetDebugGeneratorExpressions(value, llt);
-}
-
-//----------------------------------------------------------------------------
 void
 cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
                                             cmTarget::LinkLibraryType llt)
 {
-  const bool isGenex = cmGeneratorExpression::Find(lib) != std::string::npos;
-
-  const bool potentialTargetName
-                              = cmGeneratorExpression::IsValidTargetName(lib);
-
-  if (potentialTargetName || isGenex)
-    {
-    this->Target->AppendProperty("INCLUDE_DIRECTORIES",
-                                 compileProperty(this->Target, lib,
-                                                 isGenex,
-                                      "INCLUDE_DIRECTORIES", llt).c_str());
-    this->Target->AppendProperty("COMPILE_DEFINITIONS",
-                                 compileProperty(this->Target, lib,
-                                                 isGenex,
-                                      "COMPILE_DEFINITIONS", llt).c_str());
-    }
-
   // Handle normal case first.
   if(this->CurrentProcessingState != ProcessingLinkInterface)
     {
@@ -308,18 +276,6 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
       }
     }
 
-  if (potentialTargetName || isGenex)
-    {
-    this->Target->AppendProperty("INTERFACE_COMPILE_DEFINITIONS",
-                                compileProperty(this->Target, lib,
-                                                isGenex,
-                                        "COMPILE_DEFINITIONS", llt).c_str());
-    this->Target->AppendProperty("INTERFACE_INCLUDE_DIRECTORIES",
-                                compileProperty(this->Target, lib,
-                                                isGenex,
-                                        "INCLUDE_DIRECTORIES", llt).c_str());
-    }
-
   // Get the list of configurations considered to be DEBUG.
   std::vector<std::string> const& debugConfigs =
     this->Makefile->GetCMakeInstance()->GetDebugConfigs();
diff --git a/Tests/RunCMake/include_directories/DebugIncludes-stderr.txt b/Tests/RunCMake/include_directories/DebugIncludes-stderr.txt
index c17e0ae..63aec90 100644
--- a/Tests/RunCMake/include_directories/DebugIncludes-stderr.txt
+++ b/Tests/RunCMake/include_directories/DebugIncludes-stderr.txt
@@ -23,21 +23,22 @@ CMake Debug Log at DebugIncludes.cmake:18 \(include_directories\):
 Call Stack \(most recent call first\):
   CMakeLists.txt:3 \(include\)
 +
-CMake Debug Log at DebugIncludes.cmake:26 \(target_link_libraries\):
+CMake Debug Log at DebugIncludes.cmake:33 \(set_property\):
   Used includes for target lll:
 
    \* .*/Tests/RunCMake/include_directories/five
+   \* .*/Tests/RunCMake/include_directories/six
+   \* .*/Tests/RunCMake/include_directories/seven
 
 Call Stack \(most recent call first\):
+  DebugIncludes.cmake:44 \(some_macro\)
+  DebugIncludes.cmake:47 \(some_function\)
   CMakeLists.txt:3 \(include\)
 +
-CMake Debug Log at DebugIncludes.cmake:29 \(set_property\):
+CMake Debug Log at DebugIncludes.cmake:30 \(target_link_libraries\):
   Used includes for target lll:
 
-   \* .*/Tests/RunCMake/include_directories/six
-   \* .*/Tests/RunCMake/include_directories/seven
+   \* .*/Tests/RunCMake/include_directories/eight
 
 Call Stack \(most recent call first\):
-  DebugIncludes.cmake:40 \(some_macro\)
-  DebugIncludes.cmake:43 \(some_function\)
   CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/include_directories/DebugIncludes.cmake b/Tests/RunCMake/include_directories/DebugIncludes.cmake
index 794a852..de36899 100644
--- a/Tests/RunCMake/include_directories/DebugIncludes.cmake
+++ b/Tests/RunCMake/include_directories/DebugIncludes.cmake
@@ -22,7 +22,11 @@ include_directories(
 )
 
 add_library(foo "${CMAKE_CURRENT_BINARY_DIR}/DebugIncludes.cpp")
-target_include_directories(foo INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/five")
+target_include_directories(foo
+  INTERFACE
+    "${CMAKE_CURRENT_SOURCE_DIR}/seven"
+    "${CMAKE_CURRENT_SOURCE_DIR}/eight"
+)
 target_link_libraries(lll foo)
 
 macro(some_macro)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c9382e595e2cce31f17cb838a2467742d3f31c7a
commit c9382e595e2cce31f17cb838a2467742d3f31c7a
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 11:53:36 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 13:08:27 2013 +0100

    Revert "Don't allow utility or global targets in the LINKED expression."
    
    This reverts commit 9712362b4580fb92394ecf8ff57be186571f4319.

diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 6c1c12a..eb8cdc8 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -759,14 +759,6 @@ private:
       {
       return std::string();
       }
-    if(target->GetType() >= cmTarget::UTILITY &&
-      target->GetType() != cmTarget::UNKNOWN_LIBRARY)
-      {
-      ::reportError(context, content->GetOriginalExpression(),
-                  "Target \"" + item
-                  + "\" is not an executable or library.");
-      return std::string();
-      }
     std::string propertyName = "INTERFACE_" + prop;
     const char *propContent = target->GetProperty(propertyName.c_str());
     if (!propContent)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-result.txt
deleted file mode 100644
index d00491f..0000000
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-result.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-stderr.txt
deleted file mode 100644
index fb06554..0000000
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-stderr.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-CMake Error at BadLinked-UtilityTarget.cmake:7 \(set_property\):
-  Error evaluating generator expression:
-
-    \$<LINKED:check>
-
-  Target "check" is not an executable or library.
-Call Stack \(most recent call first\):
-  CMakeLists.txt:8 \(include\)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget.cmake
deleted file mode 100644
index d114c8f..0000000
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget.cmake
+++ /dev/null
@@ -1,7 +0,0 @@
-
-add_custom_target(check ALL
-  COMMAND ${CMAKE_COMMAND} -E echo check
-)
-
-add_library(foo STATIC empty.cpp)
-set_property(TARGET foo PROPERTY INCLUDE_DIRECTORIES $<LINKED:check>)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
index 84039c4..ea48f61 100644
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
@@ -16,4 +16,3 @@ run_cmake(BadInvalidName6)
 run_cmake(BadInvalidName7)
 run_cmake(BadInvalidName8)
 run_cmake(BadLinked)
-run_cmake(BadLinked-UtilityTarget)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/empty.cpp b/Tests/RunCMake/TargetPropertyGeneratorExpressions/empty.cpp
deleted file mode 100644
index 8b1a393..0000000
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/empty.cpp
+++ /dev/null
@@ -1 +0,0 @@
-// empty

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f021677d1355cb9bd20badcbaac19bd8cfd40390
commit f021677d1355cb9bd20badcbaac19bd8cfd40390
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 11:29:09 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 13:08:03 2013 +0100

    Use the link information as a source of compile definitions and includes.
    
    After evaluating the INTERFACE_INCLUDE_DIRECTORIES, of a target in a
    generator expression, also read the INTERFACE_INCLUDE_DIRECTORIES of
    its link interface dependencies.
    
    That means that code such as this will result in the 'user' target
    using /bar/include and /foo/include:
    
     add_library(foo ...)
     target_include_directories(foo INTERFACE /foo/include)
     add_library(bar ...)
     target_include_directories(bar INTERFACE /bar/include)
     target_link_libraries(bar LINK_PUBLIC foo)
    
     add_executable(user ...)
     target_include_directories(user PRIVATE
        $<TARGET_PROPERTY:bar,INTERFACE_INCLUDE_DIRECTORIES>)
    
    Also process the interface include directories from direct link
    dependencies for in-build targets.
    
    The situation is similar for the INTERFACE_COMPILE_DEFINITIONS. The
    include directories related code is currently more complex because
    we also need to store a backtrace at configure-time for the purpose
    of debugging includes. The compile definitions related code will use
    the same pattern in the future.
    
    This is not a change in behavior, as existing code has the same effect,
    but that existing code will be removed in follow-up commits.

diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 98e0ada..6c1c12a 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -451,15 +451,68 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
       }
 
     const char *prop = target->GetProperty(propertyName.c_str());
-    if (!prop)
+
+    std::string linkedTargetsContent;
+
+    if (dagCheckerParent)
       {
-      if (target->IsImported())
+      if (dagCheckerParent->EvaluatingLinkLibraries())
         {
-        return std::string();
+        if(!prop)
+          {
+          return std::string();
+          }
         }
-      if (dagCheckerParent && dagCheckerParent->EvaluatingLinkLibraries())
+      else
         {
-        return std::string();
+        assert(dagCheckerParent->EvaluatingIncludeDirectories()
+            || dagCheckerParent->EvaluatingCompileDefinitions());
+
+        if (propertyName == "INTERFACE_INCLUDE_DIRECTORIES"
+            || propertyName == "INTERFACE_COMPILE_DEFINITIONS")
+          {
+          const cmTarget::LinkInterface *iface = target->GetLinkInterface(
+                                                        context->Config,
+                                                        context->HeadTarget);
+          if(iface)
+            {
+            cmGeneratorExpression ge(context->Backtrace);
+
+            std::string sep;
+            std::string depString;
+            for (std::vector<std::string>::const_iterator
+                it = iface->Libraries.begin();
+                it != iface->Libraries.end(); ++it)
+              {
+              if (context->Makefile->FindTargetToUse(it->c_str()))
+                {
+                depString +=
+                  sep + "$<TARGET_PROPERTY:" + *it + "," + propertyName + ">";
+                sep = ";";
+                }
+              }
+            cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
+                                                          ge.Parse(depString);
+            linkedTargetsContent = cge->Evaluate(context->Makefile,
+                                context->Config,
+                                context->Quiet,
+                                context->HeadTarget,
+                                target,
+                                &dagChecker);
+            if (cge->GetHadContextSensitiveCondition())
+              {
+              context->HadContextSensitiveCondition = true;
+              }
+            }
+          }
+        }
+      }
+
+    if (!prop)
+      {
+      if (target->IsImported())
+        {
+        return linkedTargetsContent;
         }
       if (target->IsLinkInterfaceDependentBoolProperty(propertyName,
                                                        context->Config))
@@ -480,7 +533,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
         return propContent ? propContent : "";
         }
 
-      return std::string();
+      return linkedTargetsContent;
       }
 
     for (size_t i = 0;
@@ -503,6 +556,10 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
           {
           context->HadContextSensitiveCondition = true;
           }
+        if (!linkedTargetsContent.empty())
+          {
+          result += (result.empty() ? "" : ";") + linkedTargetsContent;
+          }
         return result;
         }
       }
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 6da6957..1633b83 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -137,6 +137,7 @@ public:
     std::vector<std::string> CachedIncludes;
   };
   std::vector<IncludeDirectoriesEntry*> IncludeDirectoriesEntries;
+  std::vector<cmValueWithOrigin> LinkInterfaceIncludeDirectoriesEntries;
 };
 
 //----------------------------------------------------------------------------
@@ -2743,6 +2744,12 @@ void cmTarget::AppendBuildInterfaceIncludes()
 }
 
 //----------------------------------------------------------------------------
+void cmTarget::AppendTllInclude(const cmValueWithOrigin &entry)
+{
+  this->Internal->LinkInterfaceIncludeDirectoriesEntries.push_back(entry);
+}
+
+//----------------------------------------------------------------------------
 void cmTarget::InsertInclude(const cmValueWithOrigin &entry,
                      bool before)
 {
@@ -2757,43 +2764,18 @@ void cmTarget::InsertInclude(const cmValueWithOrigin &entry,
 }
 
 //----------------------------------------------------------------------------
-std::vector<std::string> cmTarget::GetIncludeDirectories(const char *config)
+static void processIncludeDirectories(cmTarget *tgt,
+      const std::vector<cmTargetInternals::IncludeDirectoriesEntry*> &entries,
+      std::vector<std::string> &includes,
+      std::set<std::string> &uniqueIncludes,
+      cmGeneratorExpressionDAGChecker *dagChecker,
+      const char *config, bool debugIncludes)
 {
-  std::vector<std::string> includes;
-  std::set<std::string> uniqueIncludes;
-  cmListFileBacktrace lfbt;
-
-  cmGeneratorExpressionDAGChecker dagChecker(lfbt,
-                                              this->GetName(),
-                                              "INCLUDE_DIRECTORIES", 0, 0);
-
-  this->AppendBuildInterfaceIncludes();
-
-  std::vector<std::string> debugProperties;
-  const char *debugProp =
-              this->Makefile->GetDefinition("CMAKE_DEBUG_TARGET_PROPERTIES");
-  if (debugProp)
-    {
-    cmSystemTools::ExpandListArgument(debugProp, debugProperties);
-    }
-
-  bool debugIncludes = !this->DebugIncludesDone
-                    && std::find(debugProperties.begin(),
-                                 debugProperties.end(),
-                                 "INCLUDE_DIRECTORIES")
-                        != debugProperties.end();
-
-  if (this->Makefile->IsGeneratingBuildSystem())
-    {
-    this->DebugIncludesDone = true;
-    }
+  cmMakefile *mf = tgt->GetMakefile();
 
   for (std::vector<cmTargetInternals::IncludeDirectoriesEntry*>::const_iterator
-      it = this->Internal->IncludeDirectoriesEntries.begin(),
-      end = this->Internal->IncludeDirectoriesEntries.end();
-      it != end; ++it)
+      it = entries.begin(), end = entries.end(); it != end; ++it)
     {
-
     bool testIsOff = true;
     bool cacheIncludes = false;
     std::vector<std::string> entryIncludes = (*it)->CachedIncludes;
@@ -2803,13 +2785,13 @@ std::vector<std::string> cmTarget::GetIncludeDirectories(const char *config)
       }
     else
       {
-      cmSystemTools::ExpandListArgument((*it)->ge->Evaluate(this->Makefile,
+      cmSystemTools::ExpandListArgument((*it)->ge->Evaluate(mf,
                                                 config,
                                                 false,
-                                                this,
-                                                &dagChecker),
+                                                tgt,
+                                                dagChecker),
                                       entryIncludes);
-      if (this->Makefile->IsGeneratingBuildSystem()
+      if (mf->IsGeneratingBuildSystem()
           && !(*it)->ge->GetHadContextSensitiveCondition())
         {
         cacheIncludes = true;
@@ -2840,11 +2822,87 @@ std::vector<std::string> cmTarget::GetIncludeDirectories(const char *config)
       }
     if (!usedIncludes.empty())
       {
-      this->Makefile->GetCMakeInstance()->IssueMessage(cmake::LOG,
-                            "Used includes for target " + this->Name + ":\n"
+      mf->GetCMakeInstance()->IssueMessage(cmake::LOG,
+                            std::string("Used includes for target ")
+                            + tgt->GetName() + ":\n"
                             + usedIncludes, (*it)->ge->GetBacktrace());
       }
     }
+}
+
+//----------------------------------------------------------------------------
+std::vector<std::string> cmTarget::GetIncludeDirectories(const char *config)
+{
+  std::vector<std::string> includes;
+  std::set<std::string> uniqueIncludes;
+  cmListFileBacktrace lfbt;
+
+  cmGeneratorExpressionDAGChecker dagChecker(lfbt,
+                                              this->GetName(),
+                                              "INCLUDE_DIRECTORIES", 0, 0);
+
+  this->AppendBuildInterfaceIncludes();
+
+  std::vector<std::string> debugProperties;
+  const char *debugProp =
+              this->Makefile->GetDefinition("CMAKE_DEBUG_TARGET_PROPERTIES");
+  if (debugProp)
+    {
+    cmSystemTools::ExpandListArgument(debugProp, debugProperties);
+    }
+
+  bool debugIncludes = !this->DebugIncludesDone
+                    && std::find(debugProperties.begin(),
+                                 debugProperties.end(),
+                                 "INCLUDE_DIRECTORIES")
+                        != debugProperties.end();
+
+  if (this->Makefile->IsGeneratingBuildSystem())
+    {
+    this->DebugIncludesDone = true;
+    }
+
+  processIncludeDirectories(this,
+                            this->Internal->IncludeDirectoriesEntries,
+                            includes,
+                            uniqueIncludes,
+                            &dagChecker,
+                            config,
+                            debugIncludes);
+
+  std::vector<cmTargetInternals::IncludeDirectoriesEntry*>
+                                      linkInterfaceIncludeDirectoriesEntries;
+
+  for (std::vector<cmValueWithOrigin>::const_iterator
+      it = this->Internal->LinkInterfaceIncludeDirectoriesEntries.begin(),
+      end = this->Internal->LinkInterfaceIncludeDirectoriesEntries.end();
+      it != end; ++it)
+    {
+    {
+    cmGeneratorExpression ge(lfbt);
+    cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(it->Value);
+    std::string result = cge->Evaluate(this->Makefile, config, false, this, 0, 0);
+    if (!this->Makefile->FindTargetToUse(result.c_str()))
+      {
+      continue;
+      }
+    }
+    cmGeneratorExpression ge(it->Backtrace);
+    cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(
+        "$<TARGET_PROPERTY:" + it->Value + ",INTERFACE_INCLUDE_DIRECTORIES>");
+
+    linkInterfaceIncludeDirectoriesEntries.push_back(
+                          new cmTargetInternals::IncludeDirectoriesEntry(cge));
+    }
+
+  processIncludeDirectories(this,
+                            linkInterfaceIncludeDirectoriesEntries,
+                            includes,
+                            uniqueIncludes,
+                            &dagChecker,
+                            config,
+                            debugIncludes);
+
   return includes;
 }
 
@@ -2858,23 +2916,56 @@ std::string cmTarget::GetCompileDefinitions(const char *config)
     }
 
   const char *prop = this->GetProperty(defPropName.c_str());
+  cmListFileBacktrace lfbt;
+  cmGeneratorExpressionDAGChecker dagChecker(lfbt,
+                                            this->GetName(),
+                                            defPropName, 0, 0);
 
-  if (!prop)
+  std::string result;
+  if (prop)
     {
-    return "";
+    cmGeneratorExpression ge(lfbt);
+
+    result = ge.Parse(prop)->Evaluate(this->Makefile,
+                                  config,
+                                  false,
+                                  this,
+                                  &dagChecker);
     }
 
-  cmListFileBacktrace lfbt;
-  cmGeneratorExpression ge(lfbt);
+  std::vector<std::string> libs;
+  this->GetDirectLinkLibraries(config, libs, this);
 
-  cmGeneratorExpressionDAGChecker dagChecker(lfbt,
-                                             this->GetName(),
-                                             defPropName, 0, 0);
-  return ge.Parse(prop)->Evaluate(this->Makefile,
-                                 config,
-                                 false,
-                                 this,
-                                 &dagChecker);
+  if (libs.empty())
+    {
+    return result;
+    }
+
+  std::string sep;
+  std::string depString;
+  for (std::vector<std::string>::const_iterator it = libs.begin();
+      it != libs.end(); ++it)
+    {
+    if (this->Makefile->FindTargetToUse(it->c_str()))
+      {
+      depString += sep + "$<TARGET_PROPERTY:" + *it + ",INTERFACE_COMPILE_DEFINITIONS>";
+      sep = ";";
+      }
+    }
+
+  cmGeneratorExpression ge2(lfbt);
+  cmsys::auto_ptr<cmCompiledGeneratorExpression> cge2 = ge2.Parse(depString);
+  std::string depResult = cge2->Evaluate(this->Makefile,
+                      config,
+                      false,
+                      this,
+                      &dagChecker);
+  if (!depResult.empty())
+    {
+    result += (result.empty() ? "" : ";") + depResult;
+    }
+
+  return result;
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 028a55e..e659baf 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -495,6 +495,7 @@ public:
   std::vector<std::string> GetIncludeDirectories(const char *config);
   void InsertInclude(const cmValueWithOrigin &entry,
                      bool before = false);
+  void AppendTllInclude(const cmValueWithOrigin &entry);
 
   void AppendBuildInterfaceIncludes();
 
diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx
index 9dd0e5b..22ea920 100644
--- a/Source/cmTargetLinkLibrariesCommand.cxx
+++ b/Source/cmTargetLinkLibrariesCommand.cxx
@@ -291,6 +291,14 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
   // Handle normal case first.
   if(this->CurrentProcessingState != ProcessingLinkInterface)
     {
+    {
+    cmListFileBacktrace lfbt;
+    this->Makefile->GetBacktrace(lfbt);
+    cmValueWithOrigin entry(this->Target->GetDebugGeneratorExpressions(lib,
+                                                                       llt),
+                            lfbt);
+    this->Target->AppendTllInclude(entry);
+    }
     this->Makefile
       ->AddLinkLibraryForTarget(this->Target->GetName(), lib, llt);
     if (this->CurrentProcessingState != ProcessingPublicInterface)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5c9f5e313ff893a28f975749ad9a6b19481e8e62
commit 5c9f5e313ff893a28f975749ad9a6b19481e8e62
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 10:37:37 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 10:39:35 2013 +0100

    Don't use LINKED where not needed.

diff --git a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
index 0bfcc1b..8fed4ca 100644
--- a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
@@ -25,6 +25,6 @@ target_compile_definitions(consumer
   PRIVATE $<TARGET_PROPERTY:target_compile_definitions,INTERFACE_COMPILE_DEFINITIONS>
   $<$<TARGET_DEFINED:notdefined>:SHOULD_NOT_BE_DEFINED>
   $<$<TARGET_DEFINED:target_compile_definitions>:SHOULD_BE_DEFINED>
-  $<LINKED:linked>
+  $<TARGET_PROPERTY:linked,INTERFACE_COMPILE_DEFINITIONS>
   -DDASH_D_DEFINE
 )
diff --git a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
index a564918..2c2ca42 100644
--- a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
@@ -52,6 +52,6 @@ set_property(TARGET linked PROPERTY
 target_include_directories(consumer
   PRIVATE
     $<TARGET_PROPERTY:target_include_directories,INTERFACE_INCLUDE_DIRECTORIES>
-    $<LINKED:linked>
+    $<TARGET_PROPERTY:linked,INTERFACE_INCLUDE_DIRECTORIES>
   relative_dir
 )
diff --git a/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt
index 5387377..ad6671f 100644
--- a/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt
+++ b/Tests/IncludeDirectories/TargetIncludeDirectories/CMakeLists.txt
@@ -121,5 +121,5 @@ target_link_libraries(lib5 libbad libgood)
 # get the libgood includes in before the libbad includes.
 # We do that with this command:
 target_include_directories(lib5
-  BEFORE PRIVATE $<LINKED:libgood>
+  BEFORE PRIVATE $<TARGET_PROPERTY:libgood,INTERFACE_INCLUDE_DIRECTORIES>
 )

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5b88504f650c7bcd3d404853b26292b50fa6f141
commit 5b88504f650c7bcd3d404853b26292b50fa6f141
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 10:35:28 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 10:39:35 2013 +0100

    Rename the IncludeDirectoriesEntry to be more generic.

diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h
index c057754..fec3d07 100644
--- a/Source/cmListFileCache.h
+++ b/Source/cmListFileCache.h
@@ -76,4 +76,13 @@ struct cmListFile
   std::vector<cmListFileFunction> Functions;
 };
 
+struct cmValueWithOrigin {
+  cmValueWithOrigin(const std::string &value,
+                          const cmListFileBacktrace &bt)
+    : Value(value), Backtrace(bt)
+  {}
+  std::string Value;
+  cmListFileBacktrace Backtrace;
+};
+
 #endif
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 299e564..25ccbc7 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -1487,7 +1487,7 @@ void cmMakefile::InitializeFromParent()
   // Initialize definitions with the closure of the parent scope.
   this->Internal->VarStack.top() = parent->Internal->VarStack.top().Closure();
 
-  const std::vector<IncludeDirectoriesEntry> parentIncludes =
+  const std::vector<cmValueWithOrigin> parentIncludes =
                                         parent->GetIncludeDirectoriesEntries();
   this->IncludeDirectoriesEntries.insert(this->IncludeDirectoriesEntries.end(),
                                        parentIncludes.begin(),
@@ -1636,13 +1636,13 @@ void cmMakefile::AddIncludeDirectories(const std::vector<std::string> &incs,
     sep = ";";
     }
 
-  std::vector<IncludeDirectoriesEntry>::iterator position =
+  std::vector<cmValueWithOrigin>::iterator position =
                               before ? this->IncludeDirectoriesEntries.begin()
                                     : this->IncludeDirectoriesEntries.end();
 
   cmListFileBacktrace lfbt;
   this->GetBacktrace(lfbt);
-  IncludeDirectoriesEntry entry(incString, lfbt);
+  cmValueWithOrigin entry(incString, lfbt);
   this->IncludeDirectoriesEntries.insert(position, entry);
 
   // Property on each target:
@@ -3461,7 +3461,7 @@ void cmMakefile::SetProperty(const char* prop, const char* value)
     cmListFileBacktrace lfbt;
     this->GetBacktrace(lfbt);
     this->IncludeDirectoriesEntries.push_back(
-                                        IncludeDirectoriesEntry(value, lfbt));
+                                        cmValueWithOrigin(value, lfbt));
     return;
     }
 
@@ -3500,7 +3500,7 @@ void cmMakefile::AppendProperty(const char* prop, const char* value,
     cmListFileBacktrace lfbt;
     this->GetBacktrace(lfbt);
     this->IncludeDirectoriesEntries.push_back(
-                                        IncludeDirectoriesEntry(value, lfbt));
+                                        cmValueWithOrigin(value, lfbt));
     return;
     }
   if ( propname == "LINK_DIRECTORIES" )
@@ -3617,7 +3617,7 @@ const char *cmMakefile::GetProperty(const char* prop,
   else if (!strcmp("INCLUDE_DIRECTORIES",prop))
     {
     std::string sep;
-    for (std::vector<IncludeDirectoriesEntry>::const_iterator
+    for (std::vector<cmValueWithOrigin>::const_iterator
         it = this->IncludeDirectoriesEntries.begin(),
         end = this->IncludeDirectoriesEntries.end();
         it != end; ++it)
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index c0020bf..74a731d 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -22,7 +22,6 @@
 #include "cmNewLineStyle.h"
 #include "cmGeneratorTarget.h"
 #include "cmake.h"
-#include "cmMakefileIncludeDirectoriesEntry.h"
 
 #if defined(CMAKE_BUILD_WITH_CMAKE)
 #include "cmSourceGroup.h"
@@ -863,9 +862,7 @@ public:
   /** Set whether or not to report a CMP0000 violation.  */
   void SetCheckCMP0000(bool b) { this->CheckCMP0000 = b; }
 
-  typedef cmMakefileIncludeDirectoriesEntry IncludeDirectoriesEntry;
-
-  std::vector<IncludeDirectoriesEntry> GetIncludeDirectoriesEntries() const
+  std::vector<cmValueWithOrigin> GetIncludeDirectoriesEntries() const
   {
     return this->IncludeDirectoriesEntries;
   }
@@ -921,7 +918,7 @@ protected:
   std::vector<std::string> HeaderFileExtensions;
   std::string DefineFlags;
 
-  std::vector<IncludeDirectoriesEntry> IncludeDirectoriesEntries;
+  std::vector<cmValueWithOrigin> IncludeDirectoriesEntries;
 
   // Track the value of the computed DEFINITIONS property.
   void AddDefineFlag(const char*, std::string&);
diff --git a/Source/cmMakefileIncludeDirectoriesEntry.h b/Source/cmMakefileIncludeDirectoriesEntry.h
deleted file mode 100644
index f35642d..0000000
--- a/Source/cmMakefileIncludeDirectoriesEntry.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*============================================================================
-  CMake - Cross Platform Makefile Generator
-  Copyright 2012 Stephen Kelly <steveire at gmail.com>
-
-  Distributed under the OSI-approved BSD License (the "License");
-  see accompanying file Copyright.txt for details.
-
-  This software is distributed WITHOUT ANY WARRANTY; without even the
-  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-  See the License for more information.
-============================================================================*/
-
-#ifndef cmMakefileIncludeDirectoriesEntry_h
-#define cmMakefileIncludeDirectoriesEntry_h
-
-#include <string>
-#include "cmListFileCache.h"
-
-struct cmMakefileIncludeDirectoriesEntry {
-  cmMakefileIncludeDirectoriesEntry(const std::string &value,
-                          const cmListFileBacktrace &bt)
-    : Value(value), Backtrace(bt)
-  {}
-  std::string Value;
-  cmListFileBacktrace Backtrace;
-};
-
-#endif
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index bf918d5..6da6957 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -1496,10 +1496,10 @@ void cmTarget::SetMakefile(cmMakefile* mf)
 
   // Initialize the INCLUDE_DIRECTORIES property based on the current value
   // of the same directory property:
-  const std::vector<cmMakefileIncludeDirectoriesEntry> parentIncludes =
+  const std::vector<cmValueWithOrigin> parentIncludes =
                               this->Makefile->GetIncludeDirectoriesEntries();
 
-  for (std::vector<cmMakefileIncludeDirectoriesEntry>::const_iterator it
+  for (std::vector<cmValueWithOrigin>::const_iterator it
               = parentIncludes.begin(); it != parentIncludes.end(); ++it)
     {
     this->InsertInclude(*it);
@@ -2743,7 +2743,7 @@ void cmTarget::AppendBuildInterfaceIncludes()
 }
 
 //----------------------------------------------------------------------------
-void cmTarget::InsertInclude(const cmMakefileIncludeDirectoriesEntry &entry,
+void cmTarget::InsertInclude(const cmValueWithOrigin &entry,
                      bool before)
 {
   cmGeneratorExpression ge(entry.Backtrace);
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index fb1496f..028a55e 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -15,7 +15,7 @@
 #include "cmCustomCommand.h"
 #include "cmPropertyMap.h"
 #include "cmPolicies.h"
-#include "cmMakefileIncludeDirectoriesEntry.h"
+#include "cmListFileCache.h"
 
 #include <cmsys/auto_ptr.hxx>
 
@@ -493,7 +493,7 @@ public:
   std::string GetFrameworkDirectory(const char* config = 0);
 
   std::vector<std::string> GetIncludeDirectories(const char *config);
-  void InsertInclude(const cmMakefileIncludeDirectoriesEntry &entry,
+  void InsertInclude(const cmValueWithOrigin &entry,
                      bool before = false);
 
   void AppendBuildInterfaceIncludes();
diff --git a/Source/cmTargetCompileDefinitionsCommand.cxx b/Source/cmTargetCompileDefinitionsCommand.cxx
index 7645833..ba0ad59 100644
--- a/Source/cmTargetCompileDefinitionsCommand.cxx
+++ b/Source/cmTargetCompileDefinitionsCommand.cxx
@@ -11,8 +11,6 @@
 ============================================================================*/
 #include "cmTargetCompileDefinitionsCommand.h"
 
-#include "cmMakefileIncludeDirectoriesEntry.h"
-
 bool cmTargetCompileDefinitionsCommand
 ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
 {
diff --git a/Source/cmTargetIncludeDirectoriesCommand.cxx b/Source/cmTargetIncludeDirectoriesCommand.cxx
index 808806a..12d0a51 100644
--- a/Source/cmTargetIncludeDirectoriesCommand.cxx
+++ b/Source/cmTargetIncludeDirectoriesCommand.cxx
@@ -11,8 +11,6 @@
 ============================================================================*/
 #include "cmTargetIncludeDirectoriesCommand.h"
 
-#include "cmMakefileIncludeDirectoriesEntry.h"
-
 //----------------------------------------------------------------------------
 bool cmTargetIncludeDirectoriesCommand
 ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &)
@@ -71,6 +69,6 @@ void cmTargetIncludeDirectoriesCommand
 {
   cmListFileBacktrace lfbt;
   this->Makefile->GetBacktrace(lfbt);
-  cmMakefileIncludeDirectoriesEntry entry(this->Join(content), lfbt);
+  cmValueWithOrigin entry(this->Join(content), lfbt);
   tgt->InsertInclude(entry, prepend);
 }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b030323c133155c57437527d04ca2ba619663f6d
commit b030323c133155c57437527d04ca2ba619663f6d
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Feb 12 10:38:45 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Tue Feb 12 10:39:34 2013 +0100

    Fix determination of when we're evaluating compile definitions.
    
    Also handle the config-specific property.

diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx
index 0ac1a48..57e7358 100644
--- a/Source/cmGeneratorExpressionDAGChecker.cxx
+++ b/Source/cmGeneratorExpressionDAGChecker.cxx
@@ -165,5 +165,6 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingCompileDefinitions()
 {
   const char *prop = this->Property.c_str();
   return (strcmp(prop, "COMPILE_DEFINITIONS") == 0
-       || strcmp(prop, "INTERFACE_COMPILE_DEFINITIONS") == 0 );
+       || strcmp(prop, "INTERFACE_COMPILE_DEFINITIONS") == 0
+       || strncmp(prop, "COMPILE_DEFINITIONS_", 20) == 0);
 }

-----------------------------------------------------------------------

Summary of changes:
 Modules/FindQt4.cmake                              |    8 -
 Source/cmDocumentGeneratorExpressions.h            |    8 -
 Source/cmExportFileGenerator.cxx                   |   73 +-------
 Source/cmExportFileGenerator.h                     |    4 +-
 Source/cmFindPackageCommand.cxx                    |   20 --
 Source/cmGeneratorExpressionDAGChecker.cxx         |    3 +-
 Source/cmGeneratorExpressionEvaluator.cxx          |  171 ++++++-----------
 Source/cmListFileCache.h                           |    9 +
 Source/cmMakefile.cxx                              |   12 +-
 Source/cmMakefile.h                                |    7 +-
 Source/cmMakefileIncludeDirectoriesEntry.h         |   28 ---
 Source/cmTarget.cxx                                |  199 ++++++++++++++------
 Source/cmTarget.h                                  |    5 +-
 Source/cmTargetCompileDefinitionsCommand.cxx       |    2 -
 Source/cmTargetIncludeDirectoriesCommand.cxx       |    4 +-
 Source/cmTargetLinkLibrariesCommand.cxx            |   52 +-----
 .../target_compile_definitions/CMakeLists.txt      |    6 -
 .../target_compile_definitions/consumer.cpp        |    4 -
 .../target_include_directories/CMakeLists.txt      |    8 -
 .../target_include_directories/consumer.cpp        |    5 -
 Tests/ExportImport/Import/CMakeLists.txt           |    5 -
 .../Import/package_new_new/CMakeLists.txt          |   23 ---
 .../Import/package_new_old/CMakeLists.txt          |   24 ---
 .../Import/package_old_old/CMakeLists.txt          |   24 ---
 .../TargetIncludeDirectories/CMakeLists.txt        |    2 +-
 .../BadLinked-UtilityTarget-result.txt             |    1 -
 .../BadLinked-UtilityTarget-stderr.txt             |    8 -
 .../BadLinked-UtilityTarget.cmake                  |    7 -
 .../BadLinked-result.txt                           |    1 -
 .../BadLinked-stderr.txt                           |    7 -
 .../BadLinked.cmake                                |    7 -
 .../RunCMakeTest.cmake                             |    2 -
 .../TargetPropertyGeneratorExpressions/empty.cpp   |    1 -
 .../include_directories/DebugIncludes-stderr.txt   |   13 +-
 .../include_directories/DebugIncludes.cmake        |    6 +-
 35 files changed, 263 insertions(+), 496 deletions(-)
 delete mode 100644 Source/cmMakefileIncludeDirectoriesEntry.h
 delete mode 100644 Tests/ExportImport/Import/package_new_new/CMakeLists.txt
 delete mode 100644 Tests/ExportImport/Import/package_new_old/CMakeLists.txt
 delete mode 100644 Tests/ExportImport/Import/package_old_old/CMakeLists.txt
 delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-result.txt
 delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget-stderr.txt
 delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-UtilityTarget.cmake
 delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-result.txt
 delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked-stderr.txt
 delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadLinked.cmake
 delete mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/empty.cpp


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list