Browse Source

Merge topic 'update-cle-version-info'

e52302d6 CrayLinuxEnvironment: Add alternative methods to get version info
Brad King 9 years ago
parent
commit
314a953982
2 changed files with 14 additions and 4 deletions
  1. 2 0
      Modules/Compiler/CrayPrgEnv.cmake
  2. 12 4
      Modules/Platform/CrayLinuxEnvironment.cmake

+ 2 - 0
Modules/Compiler/CrayPrgEnv.cmake

@@ -56,6 +56,8 @@ macro(__CrayPrgEnv_setup lang test_src compiler_cmd link_cmd)
     message(STATUS "Cray Programming Environment $ENV{CRAYPE_VERSION} ${lang}")
   elseif(DEFINED ENV{ASYNCPE_VERSION})
     message(STATUS "Cray XT Programming Environment $ENV{ASYNCPE_VERSION} ${lang}")
+  else()
+    message(STATUS "Cray Programming Environment (unknown version) ${lang}")
   endif()
 
   # Flags for the Cray wrappers

+ 12 - 4
Modules/Platform/CrayLinuxEnvironment.cmake

@@ -8,14 +8,22 @@ if(DEFINED ENV{CRAYOS_VERSION})
   set(CMAKE_SYSTEM_VERSION "$ENV{CRAYOS_VERSION}")
 elseif(DEFINED ENV{XTOS_VERSION})
   set(CMAKE_SYSTEM_VERSION "$ENV{XTOS_VERSION}")
-else()
-  message(FATAL_ERROR "Neither the CRAYOS_VERSION or XTOS_VERSION environment variables are defined.  This platform file should be used inside the Cray Linux Environment for targeting compute nodes (NIDs)")
+elseif(EXISTS /etc/opt/cray/release/cle-release)
+  file(STRINGS /etc/opt/cray/release/cle-release release REGEX "^RELEASE=.*")
+  string(REGEX REPLACE "^RELEASE=(.*)$" "\\1" CMAKE_SYSTEM_VERSION "${release}")
+  unset(release)
+elseif(EXISTS /etc/opt/cray/release/clerelease)
+  file(READ /etc/opt/cray/release/clerelease CMAKE_SYSTEM_VERSION)
 endif()
 
 # Guard against multiple messages
 if(NOT __CrayLinuxEnvironment_message)
-  set(__CrayLinuxEnvironment_message 1)
-  message(STATUS "Cray Linux Environment ${CMAKE_SYSTEM_VERSION}")
+  set(__CrayLinuxEnvironment_message 1 CACHE INTERNAL "")
+  if(NOT CMAKE_SYSTEM_VERSION)
+    message(STATUS "CrayLinuxEnvironment: Unable to determine CLE version.  This platform file should only be used from inside the Cray Linux Environment for targeting compute nodes (NIDs).")
+  else()
+    message(STATUS "Cray Linux Environment ${CMAKE_SYSTEM_VERSION}")
+  endif()
 endif()
 
 # All cray systems are x86 CPUs and have been for quite some time