Pārlūkot izejas kodu

BUG: Fix 64-bit build of CMake so it can find 32-bit VS install.

  - cmFindBase should search both 32-bit and 64-bit registry views
    for FIND_PROGRAM even if CMAKE_SIZEOF_VOID_P is not set.
  - Needed because the variable is not available when CMAKE_MAKE_PROGRAM
    is to be found.
Brad King 17 gadi atpakaļ
vecāks
revīzija
a9a33a5c5e
1 mainītis faili ar 6 papildinājumiem un 16 dzēšanām
  1. 6 16
      Source/cmFindBase.cxx

+ 6 - 16
Source/cmFindBase.cxx

@@ -477,26 +477,17 @@ void cmFindBase::ExpandRegistryAndCleanPath(std::vector<std::string>& paths)
 {
   // We should view the registry as the target application would view
   // it.
-  cmSystemTools::KeyWOW64 view = cmSystemTools::KeyWOW64_Default;
-  cmSystemTools::KeyWOW64 other_view = cmSystemTools::KeyWOW64_Default;
-  {
+  cmSystemTools::KeyWOW64 view = cmSystemTools::KeyWOW64_32;
+  cmSystemTools::KeyWOW64 other_view = cmSystemTools::KeyWOW64_64;
   if(const char* psize =
      this->Makefile->GetDefinition("CMAKE_SIZEOF_VOID_P"))
     {
-    switch(atoi(psize))
+    if(atoi(psize) == 8)
       {
-      case 4:
-        view = cmSystemTools::KeyWOW64_32;
-        other_view = cmSystemTools::KeyWOW64_64;
-        break;
-      case 8:
-        view = cmSystemTools::KeyWOW64_64;
-        other_view = cmSystemTools::KeyWOW64_32;
-        break;
-      default: break;
+      view = cmSystemTools::KeyWOW64_64;
+      other_view = cmSystemTools::KeyWOW64_32;
       }
     }
-  }
   std::vector<std::string> finalPath;
   std::vector<std::string>::iterator i;
   // glob and expand registry stuff from paths and put
@@ -507,8 +498,7 @@ void cmFindBase::ExpandRegistryAndCleanPath(std::vector<std::string>& paths)
     std::string expanded = *i;
     cmSystemTools::ExpandRegistryValues(expanded, view);
     cmSystemTools::GlobDirs(expanded.c_str(), finalPath);
-    if(view != other_view && expanded != *i &&
-       this->CMakePathName == "PROGRAM")
+    if(expanded != *i && this->CMakePathName == "PROGRAM")
       {
       // Executables can be either 32-bit or 64-bit.
       expanded = *i;