Просмотр исходного кода

Find native build tool after determining the target system

This will allow toolchain files and platform modules to specify
information that affects the selection of the native build tool.
Brad King 8 лет назад
Родитель
Сommit
f8cb9944a1
1 измененных файлов с 11 добавлено и 9 удалено
  1. 11 9
      Source/cmGlobalGenerator.cxx

+ 11 - 9
Source/cmGlobalGenerator.cxx

@@ -447,15 +447,6 @@ void cmGlobalGenerator::EnableLanguage(
       "Platform information initialized", cmStateEnums::INTERNAL);
       "Platform information initialized", cmStateEnums::INTERNAL);
   }
   }
 
 
-  // find and make sure CMAKE_MAKE_PROGRAM is defined
-  if (!this->FindMakeProgram(mf)) {
-    return;
-  }
-
-  if (!this->CheckLanguages(languages, mf)) {
-    return;
-  }
-
   // try and load the CMakeSystem.cmake if it is there
   // try and load the CMakeSystem.cmake if it is there
   std::string fpath = rootBin;
   std::string fpath = rootBin;
   bool const readCMakeSystem = !mf->GetDefinition("CMAKE_SYSTEM_LOADED");
   bool const readCMakeSystem = !mf->GetDefinition("CMAKE_SYSTEM_LOADED");
@@ -500,6 +491,11 @@ void cmGlobalGenerator::EnableLanguage(
   }
   }
 
 
   if (readCMakeSystem) {
   if (readCMakeSystem) {
+    // Find the native build tool for this generator.
+    if (!this->FindMakeProgram(mf)) {
+      return;
+    }
+
     // Tell the generator about the target system.
     // Tell the generator about the target system.
     std::string system = mf->GetSafeDefinition("CMAKE_SYSTEM_NAME");
     std::string system = mf->GetSafeDefinition("CMAKE_SYSTEM_NAME");
     if (!this->SetSystemName(system, mf)) {
     if (!this->SetSystemName(system, mf)) {
@@ -522,6 +518,12 @@ void cmGlobalGenerator::EnableLanguage(
     }
     }
   }
   }
 
 
+  // Check that the languages are supported by the generator and its
+  // native build tool found above.
+  if (!this->CheckLanguages(languages, mf)) {
+    return;
+  }
+
   // **** Load the system specific initialization if not yet loaded
   // **** Load the system specific initialization if not yet loaded
   if (!mf->GetDefinition("CMAKE_SYSTEM_SPECIFIC_INITIALIZE_LOADED")) {
   if (!mf->GetDefinition("CMAKE_SYSTEM_SPECIFIC_INITIALIZE_LOADED")) {
     fpath = mf->GetModulesFile("CMakeSystemSpecificInitialize.cmake");
     fpath = mf->GetModulesFile("CMakeSystemSpecificInitialize.cmake");