[Cmake-commits] CMake branch, next, updated. v2.8.2-1116-gc0fd19f

Dave Partyka dave.partyka at kitware.com
Wed Oct 27 17:42:05 EDT 2010


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  c0fd19f1ec5a4a98581f53b6fc2edbe1f02165e8 (commit)
       via  48e80eb7246683f471f3886436020d34c784be86 (commit)
      from  79b5cd4ed940032425fe34661cd6cb1d13e8aaac (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=c0fd19f1ec5a4a98581f53b6fc2edbe1f02165e8
commit c0fd19f1ec5a4a98581f53b6fc2edbe1f02165e8
Merge: 79b5cd4 48e80eb
Author:     Dave Partyka <dave.partyka at kitware.com>
AuthorDate: Wed Oct 27 17:42:04 2010 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Oct 27 17:42:04 2010 -0400

    Merge topic 'getprerequisites-endless-path-appending' into next
    
    48e80eb Fixes to GetPrerequisites for cygwin


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=48e80eb7246683f471f3886436020d34c784be86
commit 48e80eb7246683f471f3886436020d34c784be86
Author:     David Partyka <dave.partyka at kitware.com>
AuthorDate: Wed Oct 27 17:23:00 2010 -0400
Commit:     David Partyka <dave.partyka at kitware.com>
CommitDate: Wed Oct 27 17:23:00 2010 -0400

    Fixes to GetPrerequisites for cygwin
    
    Fix IF(WIN32) guards check for cygwin. Fix checking if the depenency is in a system location to use cygwin style paths on cygwin. Also change GetPrerequisites to switch gp_tool to tools that are very unlikely to be found, ie. dumpbin on Apple and otool on Windows/Unix.

diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake
index c877308..853b1a1 100644
--- a/Modules/GetPrerequisites.cmake
+++ b/Modules/GetPrerequisites.cmake
@@ -146,7 +146,7 @@ function(is_file_executable file result_var)
 
   # If file name ends in .exe on Windows, *assume* executable:
   #
-  if(WIN32)
+  if(WIN32 AND NOT UNIX)
     if("${file_full_lower}" MATCHES "\\.exe$")
       set(${result_var} 1 PARENT_SCOPE)
       return()
@@ -156,7 +156,7 @@ function(is_file_executable file result_var)
     # to determine ${result_var}. In 99%+? practical cases, the exe name
     # match will be sufficient...
     #
-  endif(WIN32)
+  endif(WIN32 AND NOT UNIX)
 
   # Use the information returned from the Unix shell command "file" to
   # determine if ${file_full} should be considered an executable file...
@@ -335,7 +335,7 @@ function(gp_resolve_item context item exepath dirs resolved_item_var)
   # Using find_program on Windows will find dll files that are in the PATH.
   # (Converting simple file names into full path names if found.)
   #
-  if(WIN32)
+  if(WIN32 AND NOT UNIX)
   if(NOT resolved)
     set(ri "ri-NOTFOUND")
     find_program(ri "${item}" PATHS "${exepath};${dirs}" NO_DEFAULT_PATH)
@@ -347,7 +347,7 @@ function(gp_resolve_item context item exepath dirs resolved_item_var)
       set(ri "ri-NOTFOUND")
     endif(ri)
   endif(NOT resolved)
-  endif(WIN32)
+  endif(WIN32 AND NOT UNIX)
 
   # Provide a hook so that projects can override item resolution
   # by whatever logic they choose:
@@ -413,7 +413,7 @@ function(gp_resolved_file_type original_file file exepath dirs type_var)
     string(TOLOWER "${resolved_file}" lower)
 
     if(UNIX)
-      if(resolved_file MATCHES "^(/lib/|/lib32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/lib64/|/usr/X11R6/)")
+      if(resolved_file MATCHES "^(/lib/|/lib32/|/lib64/|/usr/lib/|/usr/lib32/|/usr/lib64/|/usr/X11R6/|/usr/bin/)")
         set(is_system 1)
       endif()
     endif()
@@ -434,7 +434,27 @@ function(gp_resolved_file_type original_file file exepath dirs type_var)
       if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*msvc[^/]+dll)")
         set(is_system 1)
       endif()
-    endif()
+
+      if(UNIX)
+        # if cygwin, we can get the properly formed windows paths from cygpath
+        find_program(CYGPATH_EXECUTABLE cygpath)
+
+        if(CYGPATH_EXECUTABLE)
+          execute_process(COMMAND ${CYGPATH_EXECUTABLE} -W
+                          OUTPUT_VARIABLE env_windir
+                          OUTPUT_STRIP_TRAILING_WHITESPACE)
+          execute_process(COMMAND ${CYGPATH_EXECUTABLE} -S
+                          OUTPUT_VARIABLE env_sysdir
+                          OUTPUT_STRIP_TRAILING_WHITESPACE)
+          string(TOLOWER "${env_windir}" windir)
+          string(TOLOWER "${env_sysdir}" sysroot)
+
+          if(lower MATCHES "^(${sysroot}/sys(tem|wow)|${windir}/sys(tem|wow)|(.*/)*msvc[^/]+dll)")
+            set(is_system 1)
+          endif()
+        endif(CYGPATH_EXECUTABLE)
+      endif(UNIX)
+    endif(WIN32)
 
     if(NOT is_system)
       get_filename_component(original_path "${original_lower}" PATH)
@@ -519,9 +539,9 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa
     if(APPLE)
       set(gp_tool "otool")
     endif(APPLE)
-    if(WIN32)
+    if(WIN32 AND NOT UNIX) # This is how to check for cygwin, har!
       set(gp_tool "dumpbin")
-    endif(WIN32)
+    endif(WIN32 AND NOT UNIX)
   endif("${gp_tool}" STREQUAL "")
 
   set(gp_tool_known 0)
diff --git a/Tests/CMakeTests/GetPrerequisitesTest.cmake.in b/Tests/CMakeTests/GetPrerequisitesTest.cmake.in
index 182c223..daf467b 100644
--- a/Tests/CMakeTests/GetPrerequisitesTest.cmake.in
+++ b/Tests/CMakeTests/GetPrerequisitesTest.cmake.in
@@ -121,11 +121,11 @@ message(STATUS "")
 message(STATUS "=============================================================================")
 message(STATUS "Test overriding 'gp_tool' with value unlikely to be found")
 message(STATUS "")
-if(WIN32 OR APPLE)
-  set(gp_tool "ldd")
-else(WIN32 OR APPLE)
+if(APPLE)
+  set(gp_tool "dumpbin")
+else()
   set(gp_tool "otool")
-endif(WIN32 OR APPLE)
+endif()
 set(gp_cmd "gp_cmd-NOTFOUND")
 list_prerequisites("${CMAKE_COMMAND}" 0 0 0)
 set(gp_cmd)

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

Summary of changes:
 Modules/GetPrerequisites.cmake                 |   36 ++++++++++++++++++-----
 Tests/CMakeTests/GetPrerequisitesTest.cmake.in |    8 ++--
 2 files changed, 32 insertions(+), 12 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list