summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChuck Atkins <chuck.atkins@kitware.com>2019-08-22 11:55:43 -0400
committerBrad King <brad.king@kitware.com>2019-08-22 12:26:06 -0400
commit971c77821350908918b3117e11a89463b6a6a820 (patch)
tree70ab67d86e8049d810f1b39620ddce8d020b9296
parent40bbe50e23c06232ccf1c49589dde5dd84e1ac31 (diff)
downloadcmake-971c77821350908918b3117e11a89463b6a6a820.tar.gz
CrayPrgEnv: Change default linking mode based on PE version
Beginning with the 19.06 release of the Cray Programming Environment, the default linking mode on XC Cray systems is dynamic instead of static. This updates the CrayPrgEnv compiler wrappers to detect the PE version being used and behave accordingly.
-rw-r--r--Help/release/3.15.rst7
-rw-r--r--Modules/Compiler/CrayPrgEnv.cmake20
2 files changed, 24 insertions, 3 deletions
diff --git a/Help/release/3.15.rst b/Help/release/3.15.rst
index b0365bac2c..48f3aa4fbf 100644
--- a/Help/release/3.15.rst
+++ b/Help/release/3.15.rst
@@ -369,3 +369,10 @@ Changes made since CMake 3.15.0 include the following.
* In CMake 3.15.0 and 3.15.1 the :variable:`CMAKE_FIND_PACKAGE_PREFER_CONFIG`
variable caused the :command:`find_package` command to fail on a missing
package even without the ``REQUIRED`` option. This has been fixed.
+
+3.15.3
+------
+
+* ``CrayPrgEnv`` compiler wrapper support has been updated for the 19.06
+ release of the Cray Programming Environment for which the default linking
+ mode on XC Cray systems is now dynamic instead of static.
diff --git a/Modules/Compiler/CrayPrgEnv.cmake b/Modules/Compiler/CrayPrgEnv.cmake
index e55e5873a3..f6e46acaac 100644
--- a/Modules/Compiler/CrayPrgEnv.cmake
+++ b/Modules/Compiler/CrayPrgEnv.cmake
@@ -69,13 +69,27 @@ endfunction()
# note that cmake applies both CMAKE_${lang}_FLAGS and CMAKE_EXE_LINKER_FLAGS
# (in that order) to the linking command, so -dynamic can appear in either
# variable.
+#
+# Note: As of CrayPE v19.06 (which translates to the craype/2.6.0 module)
+# the default has changed and is now dynamic by default. This is handled
+# accordingly
function(__cmake_craype_linktype lang rv)
# start with ENV, but allow flags to override
- if("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "dynamic")
- set(linktype dynamic)
+ if(("$ENV{CRAYPE_VERSION}" STREQUAL "") OR
+ ("$ENV{CRAYPE_VERSION}" VERSION_LESS "2.6"))
+ if("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "dynamic")
+ set(linktype dynamic)
+ else()
+ set(linktype static)
+ endif()
else()
- set(linktype static)
+ if("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "static")
+ set(linktype static)
+ else()
+ set(linktype dynamic)
+ endif()
endif()
+
# combine flags and convert to a list so we can apply the flags in order
set(linkflags "${CMAKE_${lang}_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
string(REPLACE " " ";" linkflags "${linkflags}")