From 558c74d0abfe4f4fc8563ba615b7329083d232bc Mon Sep 17 00:00:00 2001
From: Brad King <brad.king@kitware.com>
Date: Fri, 15 Nov 2013 10:41:45 -0500
Subject: VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generators

Drop the "Modules/CMakeVS*FindMake.cmake" files.  Override the
cmGlobalGenerator::FindMakeProgram method for VS generators to use their
internal APIs to locate the build tool.  Set the CMAKE_MAKE_PROGRAM as a
normal variable for use by project code, but do not cache it.  This will
allow CMake and CTest to select the proper tool at build time.
---
 Modules/CMakeVS10FindMake.cmake            | 54 ------------------------------
 Modules/CMakeVS11FindMake.cmake            | 53 -----------------------------
 Modules/CMakeVS12FindMake.cmake            | 27 ---------------
 Modules/CMakeVS6FindMake.cmake             | 25 --------------
 Modules/CMakeVS71FindMake.cmake            | 26 --------------
 Modules/CMakeVS7FindMake.cmake             | 25 --------------
 Modules/CMakeVS8FindMake.cmake             | 34 -------------------
 Modules/CMakeVS9FindMake.cmake             | 39 ---------------------
 Source/cmGlobalGenerator.h                 |  2 +-
 Source/cmGlobalVisualStudio10Generator.cxx |  1 -
 Source/cmGlobalVisualStudio10Generator.h   |  1 +
 Source/cmGlobalVisualStudio11Generator.cxx |  1 -
 Source/cmGlobalVisualStudio12Generator.cxx |  1 -
 Source/cmGlobalVisualStudio6Generator.cxx  |  1 -
 Source/cmGlobalVisualStudio6Generator.h    |  1 +
 Source/cmGlobalVisualStudio71Generator.cxx |  1 -
 Source/cmGlobalVisualStudio7Generator.cxx  |  1 -
 Source/cmGlobalVisualStudio7Generator.h    |  1 +
 Source/cmGlobalVisualStudio8Generator.cxx  |  1 -
 Source/cmGlobalVisualStudio9Generator.cxx  |  1 -
 Source/cmGlobalVisualStudioGenerator.cxx   | 13 +++++++
 Source/cmGlobalVisualStudioGenerator.h     |  3 ++
 22 files changed, 20 insertions(+), 292 deletions(-)
 delete mode 100644 Modules/CMakeVS10FindMake.cmake
 delete mode 100644 Modules/CMakeVS11FindMake.cmake
 delete mode 100644 Modules/CMakeVS12FindMake.cmake
 delete mode 100644 Modules/CMakeVS6FindMake.cmake
 delete mode 100644 Modules/CMakeVS71FindMake.cmake
 delete mode 100644 Modules/CMakeVS7FindMake.cmake
 delete mode 100644 Modules/CMakeVS8FindMake.cmake
 delete mode 100644 Modules/CMakeVS9FindMake.cmake

diff --git a/Modules/CMakeVS10FindMake.cmake b/Modules/CMakeVS10FindMake.cmake
deleted file mode 100644
index 189b626..0000000
--- a/Modules/CMakeVS10FindMake.cmake
+++ /dev/null
@@ -1,54 +0,0 @@
-
-#=============================================================================
-# Copyright 2007-2009 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-# 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 devenv
-  HINTS
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup\\VS;EnvironmentDirectory]
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\10.0\\Setup;Dbghelp_path]
-  "$ENV{ProgramFiles}/Microsoft Visual Studio 10.0/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio10.0/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio 10/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio10/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 10.0/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio10.0/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 10/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio10/Common7/IDE"
-  "/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)
diff --git a/Modules/CMakeVS11FindMake.cmake b/Modules/CMakeVS11FindMake.cmake
deleted file mode 100644
index 2df015d..0000000
--- a/Modules/CMakeVS11FindMake.cmake
+++ /dev/null
@@ -1,53 +0,0 @@
-
-#=============================================================================
-# Copyright 2007-2011 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-# 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 devenv
-  HINTS
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VS;EnvironmentDirectory]
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup;Dbghelp_path]
-  "$ENV{ProgramFiles}/Microsoft Visual Studio 11.0/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio11.0/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio 11/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio11/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 11.0/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio11.0/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 11/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio11/Common7/IDE"
-  "/Program Files/Microsoft Visual Studio 11.0/Common7/IDE/"
-  "/Program Files/Microsoft Visual Studio 11/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.
-if(NOT CMAKE_CROSSCOMPILING)
-  set(_FDIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VC7;FrameworkDir32]")
-  set(_FVER "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VC7;FrameworkVer32]")
-  find_program(CMAKE_MAKE_PROGRAM
-    NAMES MSBuild
-    HINTS
-    ${_FDIR}/${_FVER}
-    [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VS;ProductDir]
-    "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;CLR Version]/"
-    "c:/WINDOWS/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;CLR Version]/"
-    "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\11.0;CLR Version]/")
-endif()
-
-mark_as_advanced(CMAKE_MAKE_PROGRAM)
-set(MSVC11 1)
-set(MSVC_VERSION 1700)
diff --git a/Modules/CMakeVS12FindMake.cmake b/Modules/CMakeVS12FindMake.cmake
deleted file mode 100644
index 338d9a2..0000000
--- a/Modules/CMakeVS12FindMake.cmake
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#=============================================================================
-# Copyright 2007-2013 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-# Always use MSBuild because:
-# - devenv treats command-line builds as recently-loaded projects in the IDE
-# - devenv does not appear to support non-standard platform toolsets
-# If we need devenv for Intel Fortran in the future we should add
-# a special case when Fortran is enabled.
-find_program(CMAKE_MAKE_PROGRAM
-  NAMES MSBuild
-  HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\12.0;MSBuildToolsPath]"
-  )
-
-mark_as_advanced(CMAKE_MAKE_PROGRAM)
-set(MSVC12 1)
-set(MSVC_VERSION 1800)
diff --git a/Modules/CMakeVS6FindMake.cmake b/Modules/CMakeVS6FindMake.cmake
deleted file mode 100644
index 40bf5b1..0000000
--- a/Modules/CMakeVS6FindMake.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#=============================================================================
-# Copyright 2002-2009 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-find_program(CMAKE_MAKE_PROGRAM
-  NAMES msdev
-  PATHS
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup;VsCommonDir]/MSDev98/Bin
-  "c:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin"
-  "c:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin"
-  "/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin"
-  )
-mark_as_advanced(CMAKE_MAKE_PROGRAM)
-set(MSVC60 1)
-set(MSVC_VERSION 1200)
diff --git a/Modules/CMakeVS71FindMake.cmake b/Modules/CMakeVS71FindMake.cmake
deleted file mode 100644
index 945c3fa..0000000
--- a/Modules/CMakeVS71FindMake.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-
-#=============================================================================
-# Copyright 2003-2009 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-find_program(CMAKE_MAKE_PROGRAM
-  NAMES devenv
-  PATHS
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.1\\Setup\\VS;EnvironmentDirectory]
-  "$ENV{ProgramFiles}/Microsoft Visual Studio .NET/Common7/IDE"
-  "c:/Program Files/Microsoft Visual Studio .NET/Common7/IDE"
-  "c:/Program Files/Microsoft Visual Studio.NET/Common7/IDE"
-  "/Program Files/Microsoft Visual Studio .NET/Common7/IDE/"
-  )
-mark_as_advanced(CMAKE_MAKE_PROGRAM)
-set(MSVC71 1)
-set(MSVC_VERSION 1310)
diff --git a/Modules/CMakeVS7FindMake.cmake b/Modules/CMakeVS7FindMake.cmake
deleted file mode 100644
index 218c5f2..0000000
--- a/Modules/CMakeVS7FindMake.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#=============================================================================
-# Copyright 2002-2009 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-find_program(CMAKE_MAKE_PROGRAM
-  NAMES devenv
-  PATHS
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.0\\Setup\\VS;EnvironmentDirectory]
-  "c:/Program Files/Microsoft Visual Studio .NET/Common7/IDE"
-  "c:/Program Files/Microsoft Visual Studio.NET/Common7/IDE"
-  "/Program Files/Microsoft Visual Studio .NET/Common7/IDE/"
-  )
-mark_as_advanced(CMAKE_MAKE_PROGRAM)
-set(MSVC70 1)
-set(MSVC_VERSION 1300)
diff --git a/Modules/CMakeVS8FindMake.cmake b/Modules/CMakeVS8FindMake.cmake
deleted file mode 100644
index 31df026..0000000
--- a/Modules/CMakeVS8FindMake.cmake
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#=============================================================================
-# Copyright 2004-2009 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (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()
-
-find_program(CMAKE_MAKE_PROGRAM
-  NAMES ${_CMAKE_MAKE_PROGRAM_NAMES}
-  HINTS
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup\\VS;EnvironmentDirectory]
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0\\Setup;Dbghelp_path]
-  "$ENV{ProgramFiles}/Microsoft Visual Studio 8/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio8/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 8/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio8/Common7/IDE"
-  "/Program Files/Microsoft Visual Studio 8/Common7/IDE/"
-  )
-mark_as_advanced(CMAKE_MAKE_PROGRAM)
-set(MSVC80 1)
-set(MSVC_VERSION 1400)
diff --git a/Modules/CMakeVS9FindMake.cmake b/Modules/CMakeVS9FindMake.cmake
deleted file mode 100644
index 35e9f98..0000000
--- a/Modules/CMakeVS9FindMake.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-
-#=============================================================================
-# Copyright 2007-2009 Kitware, Inc.
-#
-# 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.
-#=============================================================================
-# (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()
-
-find_program(CMAKE_MAKE_PROGRAM
-  NAMES ${_CMAKE_MAKE_PROGRAM_NAMES}
-  HINTS
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup\\VS;EnvironmentDirectory]
-  [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0\\Setup;Dbghelp_path]
-  "$ENV{ProgramFiles}/Microsoft Visual Studio 9.0/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio9.0/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio 9/Common7/IDE"
-  "$ENV{ProgramFiles}/Microsoft Visual Studio9/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 9.0/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio9.0/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio 9/Common7/IDE"
-  "$ENV{ProgramFiles} (x86)/Microsoft Visual Studio9/Common7/IDE"
-  "/Program Files/Microsoft Visual Studio 9.0/Common7/IDE/"
-  "/Program Files/Microsoft Visual Studio 9/Common7/IDE/"
-  )
-mark_as_advanced(CMAKE_MAKE_PROGRAM)
-set(MSVC90 1)
-set(MSVC_VERSION 1500)
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index 74d88f3..6e93609 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -203,7 +203,7 @@ public:
   /*
    * Determine what program to use for building the project.
    */
-  void FindMakeProgram(cmMakefile*);
+  virtual void FindMakeProgram(cmMakefile*);
 
   ///! Find a target by name by searching the local generators.
   cmTarget* FindTarget(const char* project, const char* name,
diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx
index 741d591..29401c6 100644
--- a/Source/cmGlobalVisualStudio10Generator.cxx
+++ b/Source/cmGlobalVisualStudio10Generator.cxx
@@ -92,7 +92,6 @@ cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator(
   : cmGlobalVisualStudio8Generator(name, platformName,
                                    additionalPlatformDefinition)
 {
-  this->FindMakeProgramFile = "CMakeVS10FindMake.cmake";
   std::string vc10Express;
   this->ExpressEdition = cmSystemTools::ReadRegistryValue(
     "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\10.0\\Setup\\VC;"
diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h
index ad0aa6d..66440ea 100644
--- a/Source/cmGlobalVisualStudio10Generator.h
+++ b/Source/cmGlobalVisualStudio10Generator.h
@@ -118,5 +118,6 @@ private:
   bool MSBuildCommandInitialized;
   virtual std::string FindMSBuildCommand();
   virtual std::string FindDevEnvCommand();
+  virtual std::string GetVSMakeProgram() { return this->GetMSBuildCommand(); }
 };
 #endif
diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx
index d968c6d..f1d7312 100644
--- a/Source/cmGlobalVisualStudio11Generator.cxx
+++ b/Source/cmGlobalVisualStudio11Generator.cxx
@@ -112,7 +112,6 @@ cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator(
   : cmGlobalVisualStudio10Generator(name, platformName,
                                    additionalPlatformDefinition)
 {
-  this->FindMakeProgramFile = "CMakeVS11FindMake.cmake";
   std::string vc11Express;
   this->ExpressEdition = cmSystemTools::ReadRegistryValue(
     "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\11.0\\Setup\\VC;"
diff --git a/Source/cmGlobalVisualStudio12Generator.cxx b/Source/cmGlobalVisualStudio12Generator.cxx
index f3806df..edd5567 100644
--- a/Source/cmGlobalVisualStudio12Generator.cxx
+++ b/Source/cmGlobalVisualStudio12Generator.cxx
@@ -87,7 +87,6 @@ cmGlobalVisualStudio12Generator::cmGlobalVisualStudio12Generator(
   : cmGlobalVisualStudio11Generator(name, platformName,
                                    additionalPlatformDefinition)
 {
-  this->FindMakeProgramFile = "CMakeVS12FindMake.cmake";
   std::string vc12Express;
   this->ExpressEdition = cmSystemTools::ReadRegistryValue(
     "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\12.0\\Setup\\VC;"
diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx
index 08ea249..8651da7 100644
--- a/Source/cmGlobalVisualStudio6Generator.cxx
+++ b/Source/cmGlobalVisualStudio6Generator.cxx
@@ -32,7 +32,6 @@ std::string GetVS6TargetName(const std::string& targetName)
 
 cmGlobalVisualStudio6Generator::cmGlobalVisualStudio6Generator()
 {
-  this->FindMakeProgramFile = "CMakeVS6FindMake.cmake";
   this->MSDevCommandInitialized = false;
 }
 
diff --git a/Source/cmGlobalVisualStudio6Generator.h b/Source/cmGlobalVisualStudio6Generator.h
index 24f46b3..8fe5792 100644
--- a/Source/cmGlobalVisualStudio6Generator.h
+++ b/Source/cmGlobalVisualStudio6Generator.h
@@ -92,6 +92,7 @@ public:
 protected:
   virtual const char* GetIDEVersion() { return "6.0"; }
 private:
+  virtual std::string GetVSMakeProgram() { return this->GetMSDevCommand(); }
   void GenerateConfigurations(cmMakefile* mf);
   void WriteDSWFile(std::ostream& fout);
   void WriteDSWHeader(std::ostream& fout);
diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx
index 2643719..61d3c4c 100644
--- a/Source/cmGlobalVisualStudio71Generator.cxx
+++ b/Source/cmGlobalVisualStudio71Generator.cxx
@@ -19,7 +19,6 @@
 cmGlobalVisualStudio71Generator::cmGlobalVisualStudio71Generator(
   const char* platformName) : cmGlobalVisualStudio7Generator(platformName)
 {
-  this->FindMakeProgramFile = "CMakeVS71FindMake.cmake";
   this->ProjectConfigurationSectionName = "ProjectConfiguration";
 }
 
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index 08eff31..3d939f3 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -20,7 +20,6 @@
 cmGlobalVisualStudio7Generator::cmGlobalVisualStudio7Generator(
   const char* platformName)
 {
-  this->FindMakeProgramFile = "CMakeVS7FindMake.cmake";
   this->IntelProjectVersion = 0;
   this->DevEnvCommandInitialized = false;
 
diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h
index d272fa0..c7b0081 100644
--- a/Source/cmGlobalVisualStudio7Generator.h
+++ b/Source/cmGlobalVisualStudio7Generator.h
@@ -173,6 +173,7 @@ private:
   char* IntelProjectVersion;
   std::string DevEnvCommand;
   bool DevEnvCommandInitialized;
+  virtual std::string GetVSMakeProgram() { return this->GetDevEnvCommand(); }
 };
 
 #define CMAKE_CHECK_BUILD_SYSTEM_TARGET "ZERO_CHECK"
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx
index 949dd1b..69b0a7a 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -94,7 +94,6 @@ cmGlobalVisualStudio8Generator::cmGlobalVisualStudio8Generator(
   const char* additionalPlatformDefinition)
   : cmGlobalVisualStudio71Generator(platformName)
 {
-  this->FindMakeProgramFile = "CMakeVS8FindMake.cmake";
   this->ProjectConfigurationSectionName = "ProjectConfigurationPlatforms";
   this->Name = name;
 
diff --git a/Source/cmGlobalVisualStudio9Generator.cxx b/Source/cmGlobalVisualStudio9Generator.cxx
index aadf982..ccc27ad 100644
--- a/Source/cmGlobalVisualStudio9Generator.cxx
+++ b/Source/cmGlobalVisualStudio9Generator.cxx
@@ -101,7 +101,6 @@ cmGlobalVisualStudio9Generator::cmGlobalVisualStudio9Generator(
   : cmGlobalVisualStudio8Generator(name, platformName,
                                    additionalPlatformDefinition)
 {
-  this->FindMakeProgramFile = "CMakeVS9FindMake.cmake";
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx
index af80070..7afcfa7 100644
--- a/Source/cmGlobalVisualStudioGenerator.cxx
+++ b/Source/cmGlobalVisualStudioGenerator.cxx
@@ -500,6 +500,19 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends(cmTarget& target)
 }
 
 //----------------------------------------------------------------------------
+void cmGlobalVisualStudioGenerator::FindMakeProgram(cmMakefile* mf)
+{
+  // Visual Studio generators know how to lookup their build tool
+  // directly instead of needing a helper module to do it, so we
+  // do not actually need to put CMAKE_MAKE_PROGRAM into the cache.
+  if(cmSystemTools::IsOff(mf->GetDefinition("CMAKE_MAKE_PROGRAM")))
+    {
+    mf->AddDefinition("CMAKE_MAKE_PROGRAM",
+                      this->GetVSMakeProgram().c_str());
+    }
+}
+
+//----------------------------------------------------------------------------
 void cmGlobalVisualStudioGenerator::AddPlatformDefinitions(cmMakefile* mf)
 {
   if(this->AdditionalPlatformDefinition)
diff --git a/Source/cmGlobalVisualStudioGenerator.h b/Source/cmGlobalVisualStudioGenerator.h
index ce03a0e..da2d021 100644
--- a/Source/cmGlobalVisualStudioGenerator.h
+++ b/Source/cmGlobalVisualStudioGenerator.h
@@ -82,6 +82,8 @@ public:
   };
   class OrderedTargetDependSet;
 
+  virtual void FindMakeProgram(cmMakefile*);
+
 protected:
   // Does this VS version link targets to each other if there are
   // dependencies in the SLN file?  This was done for VS versions
@@ -107,6 +109,7 @@ protected:
   const char* AdditionalPlatformDefinition;
 
 private:
+  virtual std::string GetVSMakeProgram() = 0;
   void PrintCompilerAdvice(std::ostream&, std::string, const char*) {}
   void ComputeTargetObjects(cmGeneratorTarget* gt) const;
 
-- 
cgit v0.12