summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeVS10FindMake.cmake
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2011-08-18 16:18:30 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2011-08-18 16:18:30 (GMT)
commit3ca1df8e59e7d18fffc1d9f39194315b057ececa (patch)
tree98fbb497a7d7390f7a7540fa460596bc916157c9 /Modules/CMakeVS10FindMake.cmake
parentd7184e0e4dc22163b4564d93634736a145ac2c4d (diff)
downloadCMake-3ca1df8e59e7d18fffc1d9f39194315b057ececa.zip
CMake-3ca1df8e59e7d18fffc1d9f39194315b057ececa.tar.gz
CMake-3ca1df8e59e7d18fffc1d9f39194315b057ececa.tar.bz2
Use MSBuild when devenv is not around, since VCExpress seems broken.
To support Intel Fortran, CMake started using devenv and VCExpress for build tools with VS2010. However, VCExpress does not always work. This change makes CMake use MSBuild when devenv is not found. This should be OK, since Intel Fortran can not be used with VCExpress.
Diffstat (limited to 'Modules/CMakeVS10FindMake.cmake')
-rw-r--r--Modules/CMakeVS10FindMake.cmake29
1 files changed, 22 insertions, 7 deletions
diff --git a/Modules/CMakeVS10FindMake.cmake b/Modules/CMakeVS10FindMake.cmake
index 388203c..695e92f 100644
--- a/Modules/CMakeVS10FindMake.cmake
+++ b/Modules/CMakeVS10FindMake.cmake
@@ -12,14 +12,11 @@
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
-# VCExpress does not support cross compiling, which is necessary for Win CE
-SET( _CMAKE_MAKE_PROGRAM_NAMES devenv)
-IF(NOT CMAKE_CROSSCOMPILING)
- SET( _CMAKE_MAKE_PROGRAM_NAMES ${_CMAKE_MAKE_PROGRAM_NAMES} VCExpress)
-ENDIF(NOT CMAKE_CROSSCOMPILING)
-
+# Look for devenv as a build program. We need to use this to support
+# Intel Fortran integration into VS. MSBuild can not be used for that case
+# since Intel Fortran uses the older devenv file format.
FIND_PROGRAM(CMAKE_MAKE_PROGRAM
- NAMES ${_CMAKE_MAKE_PROGRAM_NAMES}
+ NAMES devenv
HINTS
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VS;EnvironmentDirectory]
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup;Dbghelp_path]
@@ -34,6 +31,24 @@ FIND_PROGRAM(CMAKE_MAKE_PROGRAM
"/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/"
"/Program Files/Microsoft Visual Studio 10/Common7/IDE/"
)
+
+# if devenv is not found, then use MSBuild.
+# it is expected that if devenv is not found, then we are
+# dealing with Visual Studio Express. VCExpress has random
+# failures when being run as a command line build tool which
+# causes the compiler checks and try-compile stuff to fail. MSbuild
+# is a better choice for this. However, VCExpress does not support
+# cross compiling needed for Win CE.
+IF(NOT CMAKE_CROSSCOMPILING)
+ FIND_PROGRAM(CMAKE_MAKE_PROGRAM
+ NAMES MSBuild
+ HINTS
+ [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VS;ProductDir]
+ "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;CLR Version]/"
+ "c:/WINDOWS/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0;CLR Version]/"
+ "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\10.0;CLR Version]/")
+ENDIF()
+
MARK_AS_ADVANCED(CMAKE_MAKE_PROGRAM)
SET(MSVC10 1)
SET(MSVC_VERSION 1600)