[Cmake-commits] [cmake-commits] king committed WindowsPaths.cmake 1.5 1.6

cmake-commits at cmake.org cmake-commits at cmake.org
Wed Dec 17 09:23:33 EST 2008


Update of /cvsroot/CMake/CMake/Modules/Platform
In directory public:/mounts/ram/cvs-serv18497/Modules/Platform

Modified Files:
	WindowsPaths.cmake 
Log Message:
ENH: Use 32-bit and 64-bit Program Files folders

On 64-bit Windows there may be two Program Files folders, one for 32-bit
binaries and one for 64-bit binaries.  When we compute
CMAKE_SYSTEM_PREFIX_PATH we should put both folders in the path.


Index: WindowsPaths.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/Platform/WindowsPaths.cmake,v
retrieving revision 1.5
retrieving revision 1.6
diff -C 2 -d -r1.5 -r1.6
*** WindowsPaths.cmake	16 Jan 2008 14:51:57 -0000	1.5
--- WindowsPaths.cmake	17 Dec 2008 14:23:30 -0000	1.6
***************
*** 1,14 ****
  GET_FILENAME_COMPONENT(_CMAKE_INSTALL_DIR "${CMAKE_ROOT}" PATH)
  GET_FILENAME_COMPONENT(_CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" PATH)
  
! # List common installation prefixes.  These will be used for all
! # search types.
  LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH
-   # Standard
-   "$ENV{ProgramFiles}"
- 
-   # CMake install location
-   "${_CMAKE_INSTALL_DIR}"
- 
    # Project install destination.
    "${CMAKE_INSTALL_PREFIX}"
--- 1,55 ----
+ # Add the program-files folder(s) to the list of installation
+ # prefixes.
+ #
+ # Windows 64-bit Binary:
+ #   ENV{ProgramFiles(x86)} = [C:\Program Files (x86)]
+ #   ENV{ProgramFiles} = [C:\Program Files]
+ #   ENV{ProgramW6432} = <not set>
+ # (executed from cygwin):
+ #   ENV{ProgramFiles(x86)} = <not set>
+ #   ENV{ProgramFiles} = [C:\Program Files]
+ #   ENV{ProgramW6432} = <not set>
+ #
+ # Windows 32-bit Binary:
+ #   ENV{ProgramFiles(x86)} = [C:\Program Files (x86)]
+ #   ENV{ProgramFiles} = [C:\Program Files (x86)]
+ #   ENV{ProgramW6432} = [C:\Program Files]
+ # (executed from cygwin):
+ #   ENV{ProgramFiles(x86)} = <not set>
+ #   ENV{ProgramFiles} = [C:\Program Files (x86)]
+ #   ENV{ProgramW6432} = [C:\Program Files]
+ IF(DEFINED "ENV{ProgramW6432}")
+   # 32-bit binary on 64-bit windows.
+   # The 64-bit program files are in ProgramW6432.
+   LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramW6432}")
+ 
+   # The 32-bit program files are in ProgramFiles.
+   IF(DEFINED "ENV{ProgramFiles}")
+     LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles}")
+   ENDIF()
+ ELSE()
+   # 64-bit binary, or 32-bit binary on 32-bit windows.
+   IF(DEFINED "ENV{ProgramFiles}")
+     LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles}")
+   ENDIF()
+   IF(DEFINED "ENV{ProgramFiles(x86)}")
+     # 64-bit binary.  32-bit program files are in ProgramFiles(x86).
+     LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "$ENV{ProgramFiles(x86)}")
+   ELSEIF(DEFINED "ENV{SystemDrive}")
+     # Guess the 32-bit program files location.
+     IF(EXISTS "$ENV{SystemDrive}/Program Files (x86)")
+       LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH
+         "$ENV{SystemDrive}/Program Files (x86)")
+     ENDIF()
+   ENDIF()
+ ENDIF()
+ 
+ # Add the CMake install location.
  GET_FILENAME_COMPONENT(_CMAKE_INSTALL_DIR "${CMAKE_ROOT}" PATH)
  GET_FILENAME_COMPONENT(_CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" PATH)
+ LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "${_CMAKE_INSTALL_DIR}")
  
! # Add other locations.
  LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH
    # Project install destination.
    "${CMAKE_INSTALL_PREFIX}"



More information about the Cmake-commits mailing list