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

ENH: fix for bug 2921, move _OVERRIDE variable to a better position to allow changing _INIT variables

Bill Hoffman 19 лет назад
Родитель
Сommit
2f78d874a7

+ 15 - 0
Modules/CMakeCInformation.cmake

@@ -11,6 +11,21 @@ SET(CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE
   ${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
 INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
 
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables 
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE_C)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE_C})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE_C)
+
+
 # for most systems a module is the same as a shared library
 # so unless the variable CMAKE_MODULE_EXISTS is set just
 # copy the values from the LIBRARY variables

+ 14 - 1
Modules/CMakeCXXInformation.cmake

@@ -3,7 +3,6 @@
 # It also loads the available platform file for the system-compiler
 # if it exists.
 
-
 GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_CXX_COMPILER} NAME_WE)
 # since the gnu compiler has several names force g++
 IF(CMAKE_COMPILER_IS_GNUCXX)
@@ -12,6 +11,20 @@ ENDIF(CMAKE_COMPILER_IS_GNUCXX)
 SET(CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE
   ${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
 INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables 
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE_CXX})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX)
+
 
 # for most systems a module is the same as a shared library
 # so unless the variable CMAKE_MODULE_EXISTS is set just

+ 15 - 0
Modules/CMakeFortranInformation.cmake

@@ -12,6 +12,21 @@ SET(CMAKE_SYSTEM_AND_Fortran_COMPILER_INFO_FILE
   ${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake)
 INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL)
 
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables 
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE_Fortran)
+
+
 # Fortran needs cmake to do a requires step during its build process to 
 # catch any modules
 SET(CMAKE_NEEDS_REQUIRES_STEP_Fortran_FLAG 1)

+ 13 - 0
Modules/CMakeJavaInformation.cmake

@@ -1,3 +1,16 @@
+# This should be included before the _INIT variables are
+# used to initialize the cache.  Since the rule variables 
+# have if blocks on them, users can still define them here.
+# But, it should still be after the platform file so changes can
+# be made to those values.
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE)
+
+IF(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX)
+   INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE_CXX})
+ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX)
 
 # this is a place holder if java needed flags for javac they would go here.
 IF(NOT CMAKE_Java_CREATE_STATIC_LIBRARY)

+ 0 - 7
Source/cmGlobalGenerator.cxx

@@ -430,13 +430,6 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages,
     {
     mf->ReadListFile(0,projectCompatibility.c_str()); 
     }
-  // next load the file pointed to by CMAKE_USER_MAKE_RULES_OVERRIDE
-  std::string userMakeRules = 
-    mf->GetSafeDefinition("CMAKE_USER_MAKE_RULES_OVERRIDE");
-  if(userMakeRules.size())
-    {
-    mf->ReadListFile(0,userMakeRules.c_str());
-    }
 }
 
 const char* cmGlobalGenerator::GetLanguageOutputExtensionForLanguage(const char* lang)