This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via fa843e7614ccf613e7709cefbcaa8935616d5900 (commit) via 973e97cd31edd3bbf6326a81f9dcb1712392b40e (commit) from 2acc0abc0c34ab7ca49777c8e64ed455c48e8ce2 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fa843e7614ccf613e7709cefbcaa8935616d5900 commit fa843e7614ccf613e7709cefbcaa8935616d5900 Merge: 2acc0ab 973e97c Author: Chuck Atkins <chuck.atk...@kitware.com> AuthorDate: Fri Nov 13 11:18:01 2015 -0500 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Fri Nov 13 11:18:01 2015 -0500 Merge topic 'add-cray-linux-platform' into next 973e97cd Cray: New platform file for Cray Linux Environment and PrgEnv https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=973e97cd31edd3bbf6326a81f9dcb1712392b40e commit 973e97cd31edd3bbf6326a81f9dcb1712392b40e Author: Chuck Atkins <chuck.atk...@kitware.com> AuthorDate: Fri Nov 13 10:13:24 2015 -0600 Commit: Chuck Atkins <chuck.atk...@kitware.com> CommitDate: Fri Nov 13 10:13:24 2015 -0600 Cray: New platform file for Cray Linux Environment and PrgEnv diff --git a/Modules/Platform/CrayLinuxEnvironment.cmake b/Modules/Platform/CrayLinuxEnvironment.cmake new file mode 100644 index 0000000..b7be431 --- /dev/null +++ b/Modules/Platform/CrayLinuxEnvironment.cmake @@ -0,0 +1,111 @@ +# Compute Node Linux doesn't quite work the same as native Linux so all of this +# needs to be custom. We use the variables defined through Cray's environment +# modules to set up the right paths for things. + +# Guard against multiple inclusions +if(__CrayLinuxEnvironment) + return() +endif() +set(__CrayLinuxEnvironment 1) + +set(UNIX 1) + +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 CRAYXC or CRAYXT CMake variables are defined. Thjis platform file should not be used directly but instead only from the CrayPrgEnv toolchain file") +endif() +message(STATUS "Cray Linux Environment ${CMAKE_SYSTEM_VERSION}") + +# All cray systems are x86 CPUs and have been for quite some time +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_SHARED_LIBRARY_PREFIX "lib") +set(CMAKE_SHARED_LIBRARY_SUFFIX ".so") +set(CMAKE_STATIC_LIBRARY_PREFIX "lib") +set(CMAKE_STATIC_LIBRARY_SUFFIX ".a") + +set(CMAKE_FIND_LIBRARY_PREFIXES "lib") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a") +set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) + +set(CMAKE_DL_LIBS dl) + +# Note: Much of this is pulled from UnixPaths.cmake but adjusted to the Cray +# environment accordingly + +# Get the install directory of the running cmake to the search directories +# CMAKE_ROOT is CMAKE_INSTALL_PREFIX/share/cmake, so we need to go two levels up +get_filename_component(_CMAKE_INSTALL_DIR "${CMAKE_ROOT}" PATH) +get_filename_component(_CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" PATH) + + +# Note: Some cray's have the SYSROOT_DIR variable defined, pointing to a copy +# of the NIDs userland. If so, then we'll use it. Otherwise, just assume +# the userland from the login node is ok + +# List common installation prefixes. These will be used for all +# search types. +list(APPEND CMAKE_SYSTEM_PREFIX_PATH + # Standard + $ENV{SYSROOT_DIR}/usr/local $ENV{SYSROOT_DIR}/usr $ENV{SYSROOT_DIR}/ + + # CMake install location + "${_CMAKE_INSTALL_DIR}" + ) +if (NOT CMAKE_FIND_NO_INSTALL_PREFIX) + list(APPEND CMAKE_SYSTEM_PREFIX_PATH + # Project install destination. + "${CMAKE_INSTALL_PREFIX}" + ) + if(CMAKE_STAGING_PREFIX) + list(APPEND CMAKE_SYSTEM_PREFIX_PATH + # User-supplied staging prefix. + "${CMAKE_STAGING_PREFIX}" + ) + endif() +endif() + +list(APPEND CMAKE_SYSTEM_INCLUDE_PATH + $ENV{SYSROOT_DIR}/usr/include + $ENV{SYSROOT_DIR}/usr/include/X11 +) +list(APPEND CMAKE_SYSTEM_LIBRARY_PATH + $ENV{SYSROOT_DIR}/usr/local/lib64 + $ENV{SYSROOT_DIR}/usr/lib64 + $ENV{SYSROOT_DIR}/lib64 +) + +list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES + $ENV{SYSROOT_DIR}/usr/local/lib64 + $ENV{SYSROOT_DIR}/usr/lib64 + $ENV{SYSROOT_DIR}/lib64 +) +list(APPEND CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES + $ENV{SYSROOT_DIR}/usr/include +) +list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES + $ENV{SYSROOT_DIR}/usr/include +) +list(APPEND CMAKE_Fortran_IMPLICIT_INCLUDE_DIRECTORIES + $ENV{SYSROOT_DIR}/usr/include +) + +# Enable use of lib64 search path variants by default. +set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE) + +# Check to see if we're using the cray compiler wrapers and load accordingly if we are +# Make sure we have the appropriate environment loaded +if(DEFINED ENV{CRAYPE_DIR}) + set(_CRAYPE_ROOT "$ENV{CRAYPE_DIR}") +elseif(DEFINED ENV{ASYNCPE_DIR}) + set(_CRAYPE_ROOT "$ENV{ASYNCPE_DIR}") +endif() +if(_CRAYPE_ROOT AND + ((CMAKE_C_COMPILER MATCHES "${_CRAYPE_ROOT}") OR + (CMAKE_CXX_COMPILER MATCHES "${_CRAYPE_ROOT}") OR + (CMAKE_Fortran_COMPILER MATCHES "${_CRAYPE_ROOT}"))) + include(Platform/CrayPrgEnv-ToolChain) +endif() diff --git a/Modules/Platform/CrayPrgEnv-ToolChain.cmake b/Modules/Platform/CrayPrgEnv-ToolChain.cmake new file mode 100644 index 0000000..a2fe598 --- /dev/null +++ b/Modules/Platform/CrayPrgEnv-ToolChain.cmake @@ -0,0 +1,114 @@ +# Guard against multiple inclusions +if(__CrayPrgEnv) + return() +endif() +set(__CrayPrgEnv 1) +if(DEFINED ENV{CRAYPE_VERSION}) + message(STATUS "Cray Programming Environment $ENV{CRAYPE_VERSION}") +elseif(DEFINED ENV{ASYNCPE_VERSION}) + message(STATUS "Cray Programming Environment $ENV{ASYNCPE_VERSION}") +else() + message(STATUS "Cray Programming Environment") +endif() + +if(NOT __CrayLinuxEnvironment) + message(FATAL_ERROR "The CrayPrgEnv tolchain file must not be used on its own and is intented to be included by the CrayLinuxEnvironment platform file") +endif() + +# Flags for the Cray wrappers +foreach(_lang C CXX Fortran) + set(CMAKE_STATIC_LIBRARY_LINK_${_lang}_FLAGS "-static") + set(CMAKE_SHARED_LIBRARY_${_lang}_FLAGS "") + set(CMAKE_SHARED_LIBRARY_CREATE_${_lang}_FLAGS "-shared") + set(CMAKE_SHARED_LIBRARY_LINK_${_lang}_FLAGS "-dynamic") +endforeach() + +# If the link type is not explicitly specified in the environment then +# the Cray wrappers assume that the code will be built staticly +if(NOT ((CMAKE_C_FLAGS MATCHES "(^| )-dynamic($| )") OR + (CMAKE_EXE_LINKER_FLAGS MATCHES "(^| )-dynamic($| )") OR + ("$ENV{CRAYPE_LINK_TYPE}" STREQUAL "dynamic"))) + 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() + +# Parse the implicit directories used by the wrappers +get_property(_LANGS GLOBAL PROPERTY ENABLED_LANGUAGES) +foreach(_lang IN LISTS _LANGS) + execute_process( + COMMAND ${CMAKE_${_lang}_COMPILER} -craype-verbose /dev/null + OUTPUT_VARIABLE _CRAY_FLAGS + ERROR_QUIET + ) + + # Parse include paths + string(REGEX MATCHALL " -I([^ ]+)" _CRAY_INCLUDE_FLAGS "${_CRAY_FLAGS}") + foreach(_flag IN LISTS _CRAY_INCLUDE_FLAGS) + string(REGEX REPLACE "^ -I([^ ]+)" "\\1" _dir "${_flag}") + list(APPEND CMAKE_${_lang}_IMPLICIT_INCLUDE_DIRECTORIES ${_dir}) + endforeach() + if(CMAKE_${_lang}_IMPLICIT_INCLUDE_DIRECTORIES) + list(REMOVE_DUPLICATES CMAKE_${_lang}_IMPLICIT_INCLUDE_DIRECTORIES) + endif() + + # Parse library paths + string(REGEX MATCHALL " -L([^ ]+)" _CRAY_LIBRARY_DIR_FLAGS "${_CRAY_FLAGS}") + foreach(_flag IN LISTS _CRAY_LIBRARY_DIR_FLAGS) + string(REGEX REPLACE "^ -L([^ ]+)" "\\1" _dir "${_flag}") + list(APPEND CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES ${_dir}) + endforeach() + if(CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES) + list(REMOVE_DUPLICATES CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES) + endif() + + # Parse library paths + string(REGEX MATCHALL " -l([^ ]+)" _CRAY_LIBRARY_FLAGS "${_CRAY_FLAGS}") + foreach(_flag IN LISTS _CRAY_LIBRARY_FLAGS) + string(REGEX REPLACE "^ -l([^ ]+)" "\\1" _dir "${_flag}") + list(APPEND CMAKE_${_lang}_IMPLICIT_LINK_LIBRARIES ${_dir}) + endforeach() + if(CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES) + list(REMOVE_DUPLICATES CMAKE_${_lang}_IMPLICIT_LINK_LIBRARIES) + endif() +endforeach() + +# Compute the intersection of several lists +macro(__list_intersection L_OUT L0) + if(ARGC EQUAL 2) + list(APPEND ${L_OUT} ${${L0}}) + else() + foreach(I IN LISTS ${L0}) + set(__is_common 1) + foreach(L IN LISTS ARGN) + list(FIND ${L} "${I}" __idx) + if(__idx EQUAL -1) + set(__is_common 0) + break() + endif() + endforeach() + if(__is_common) + list(APPEND ${L_OUT} "${I}") + endif() + endforeach() + endif() + if(${L_OUT}) + list(REMOVE_DUPLICATES ${L_OUT}) + endif() +endmacro() + +# Determine the common directories between all languages and add them +# as system search paths +set(_CRAY_INCLUDE_PATH_VARS) +set(_CRAY_LIBRARY_PATH_VARS) +foreach(_lang IN LISTS _LANGS) + list(APPEND _CRAY_INCLUDE_PATH_VARS CMAKE_${_lang}_IMPLICIT_INCLUDE_DIRECTORIES) + list(APPEND _CRAY_LIBRARY_PATH_VARS CMAKE_${_lang}_IMPLICIT_LINK_DIRECTORIES) +endforeach() +if(_CRAY_INCLUDE_PATH_VARS) + __list_intersection(CMAKE_SYSTEM_INCLUDE_PATH ${_CRAY_INCLUDE_PATH_VARS}) +endif() +if(_CRAY_LIBRARY_PATH_VARS) + __list_intersection(CMAKE_SYSTEM_LIBRARY_PATH ${_CRAY_LIBRARY_PATH_VARS}) +endif() ----------------------------------------------------------------------- Summary of changes: Modules/Platform/CrayLinuxEnvironment.cmake | 111 ++++++++++++++++++++++++++ Modules/Platform/CrayPrgEnv-ToolChain.cmake | 114 +++++++++++++++++++++++++++ 2 files changed, 225 insertions(+) create mode 100644 Modules/Platform/CrayLinuxEnvironment.cmake create mode 100644 Modules/Platform/CrayPrgEnv-ToolChain.cmake hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits