# Guard against multiple inclusions if(__craylinux_crayprgenv) return() endif() set(__craylinux_crayprgenv 1) macro(__CrayPrgEnv_setup lang) if(DEFINED ENV{CRAYPE_VERSION}) 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 set(CMAKE_STATIC_LIBRARY_LINK_${lang}_FLAGS "-static") set(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS "-shared") set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-dynamic") # If the link type is not explicitly specified in the environment then # the Cray wrappers assume that the code will be built statically so # we check the following condition(s) are NOT met # Compiler flags are explicitly dynamic # Env var is dynamic and compiler flags are not explicitly static if(NOT (((CMAKE_${lang}_FLAGS MATCHES "(^| )-dynamic($| )") OR (CMAKE_EXE_LINKER_FLAGS MATCHES "(^| )-dynamic($| )")) OR (("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "dynamic") AND NOT ((CMAKE_${lang}_FLAGS MATCHES "(^| )-static($| )") OR (CMAKE_EXE_LINKER_FLAGS MATCHES "(^| )-static($| )"))))) set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE) set(BUILD_SHARED_LIBS FALSE CACHE BOOL "") set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") set(CMAKE_LINK_SEARCH_START_STATIC TRUE) endif() endmacro()