diff --git a/Modules/Compiler/CrayPrgEnv.cmake b/Modules/Compiler/CrayPrgEnv.cmake index fa39b009a..9f8befda3 100644 --- a/Modules/Compiler/CrayPrgEnv.cmake +++ b/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 diff --git a/Modules/Platform/CrayLinuxEnvironment.cmake b/Modules/Platform/CrayLinuxEnvironment.cmake index 97771a268..a1a3d3f10 100644 --- a/Modules/Platform/CrayLinuxEnvironment.cmake +++ b/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