[Cmake-commits] CMake branch, next, updated. v3.1.1-2410-g37a1606

Brad King brad.king at kitware.com
Wed Jan 28 09:07:27 EST 2015


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  37a16068b3fae9304bcc471b6361297ee4c1c534 (commit)
       via  9259d7788193ad23aa429652af983afc3bc4a953 (commit)
      from  0fa3dd31464cbccc9bc401eabdfb75d94b5579bd (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=37a16068b3fae9304bcc471b6361297ee4c1c534
commit 37a16068b3fae9304bcc471b6361297ee4c1c534
Merge: 0fa3dd3 9259d77
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Jan 28 09:07:26 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Jan 28 09:07:26 2015 -0500

    Merge topic 'fix-OBJECT_DEPENDS-after-path-normalization' into next
    
    9259d778 Normalize OBJECT_DEPENDS paths to match custom commands (#15366)


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9259d7788193ad23aa429652af983afc3bc4a953
commit 9259d7788193ad23aa429652af983afc3bc4a953
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Jan 27 10:57:17 2015 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Jan 28 09:06:21 2015 -0500

    Normalize OBJECT_DEPENDS paths to match custom commands (#15366)
    
    Custom command path normalization added in commit v3.1.0-rc1~471^2
    (add_custom_command: Normalize OUTPUT and DEPENDS paths, 2014-05-28)
    broke use of OBJECT_DEPENDS to bring in custom commands because the
    latter paths were not normalized too.  Normalize them and add a test
    case.
    
    Reported-by: Daniel v. Gerpen

diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 14b5a92..0c60237 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -676,6 +676,14 @@ void cmTargetTraceDependencies::Trace()
       {
       std::vector<std::string> objDeps;
       cmSystemTools::ExpandListArgument(additionalDeps, objDeps);
+      for(std::vector<std::string>::iterator odi = objDeps.begin();
+          odi != objDeps.end(); ++odi)
+        {
+        if (cmSystemTools::FileIsFullPath(*odi))
+          {
+          *odi = cmSystemTools::CollapseFullPath(*odi);
+          }
+        }
       this->FollowNames(objDeps);
       }
 
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index b8cc5fb..33000d6 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -600,6 +600,14 @@ cmNinjaTargetGenerator
   if(const char* objectDeps = source->GetProperty("OBJECT_DEPENDS")) {
     std::vector<std::string> depList;
     cmSystemTools::ExpandListArgument(objectDeps, depList);
+    for(std::vector<std::string>::iterator odi = depList.begin();
+        odi != depList.end(); ++odi)
+      {
+      if (cmSystemTools::FileIsFullPath(*odi))
+        {
+        *odi = cmSystemTools::CollapseFullPath(*odi);
+        }
+      }
     std::transform(depList.begin(), depList.end(),
                    std::back_inserter(implicitDeps), MapToNinjaPath());
   }
diff --git a/Tests/CustomCommand/CMakeLists.txt b/Tests/CustomCommand/CMakeLists.txt
index b97cd16..7ef3540 100644
--- a/Tests/CustomCommand/CMakeLists.txt
+++ b/Tests/CustomCommand/CMakeLists.txt
@@ -153,6 +153,19 @@ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/foo.c
   ${PROJECT_BINARY_DIR}/foo.c
   )
 
+# Test using OBJECT_DEPENDS to bring in a custom command.
+# Use a path that can be simplified to make sure paths
+# are consistently normalized.
+add_custom_command(
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/subdir/../subdir/subdir.h
+  COMMAND ${CMAKE_COMMAND} -E copy
+            ${CMAKE_CURRENT_SOURCE_DIR}/subdir.h.in
+            ${CMAKE_CURRENT_BINARY_DIR}/subdir/subdir.h
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/subdir.h.in
+  )
+set_property(SOURCE ${PROJECT_BINARY_DIR}/foo.c PROPERTY
+  OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/subdir/../subdir/subdir.h)
+
 # Add custom command to generate not_included.h, which is a header
 # file that is not included by any source in this project.  This will
 # test whether all custom command outputs explicitly listed as sources
diff --git a/Tests/CustomCommand/foo.in b/Tests/CustomCommand/foo.in
index 0c5021c..5ca6315 100644
--- a/Tests/CustomCommand/foo.in
+++ b/Tests/CustomCommand/foo.in
@@ -7,6 +7,11 @@
 int generated();
 int wrapped();
 
+#include "subdir/subdir.h"
+#ifndef SUBDIR_DEF
+# error SUBDIR_DEF not defined
+#endif
+
 int main ()
 {
   if (generated()*wrapped()*doc() == 3*5*7)
diff --git a/Tests/CustomCommand/subdir.h.in b/Tests/CustomCommand/subdir.h.in
new file mode 100644
index 0000000..1e50750
--- /dev/null
+++ b/Tests/CustomCommand/subdir.h.in
@@ -0,0 +1 @@
+#define SUBDIR_DEF

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

Summary of changes:


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list