CrayLinuxEnvironment.cmake 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # CrayLinuxEnvironment: loaded by users cross-compiling on a Cray front-end
  2. # node by specifying "-DCMAKE_SYSTEM_NAME=CrayLinuxEnvironment" to cmake
  3. if(DEFINED ENV{CRAYOS_VERSION})
  4. set(CMAKE_SYSTEM_VERSION "$ENV{CRAYOS_VERSION}")
  5. elseif(DEFINED ENV{XTOS_VERSION})
  6. set(CMAKE_SYSTEM_VERSION "$ENV{XTOS_VERSION}")
  7. elseif(EXISTS /etc/opt/cray/release/cle-release)
  8. cmake_policy(PUSH)
  9. cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
  10. file(STRINGS /etc/opt/cray/release/cle-release release REGEX "^RELEASE=.*")
  11. cmake_policy(POP)
  12. string(REGEX REPLACE "^RELEASE=(.*)$" "\\1" CMAKE_SYSTEM_VERSION "${release}")
  13. unset(release)
  14. elseif(EXISTS /etc/opt/cray/release/clerelease)
  15. file(READ /etc/opt/cray/release/clerelease CMAKE_SYSTEM_VERSION)
  16. endif()
  17. # Guard against multiple messages
  18. if(NOT __CrayLinuxEnvironment_message)
  19. set(__CrayLinuxEnvironment_message 1 CACHE INTERNAL "")
  20. if(NOT CMAKE_SYSTEM_VERSION)
  21. 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).")
  22. else()
  23. message(STATUS "Cray Linux Environment ${CMAKE_SYSTEM_VERSION}")
  24. endif()
  25. endif()
  26. # All cray systems are x86 CPUs and have been for quite some time
  27. # Note: this may need to change in the future with 64-bit ARM
  28. set(CMAKE_SYSTEM_PROCESSOR "x86_64")
  29. # Don't override shared lib support if it's already been set and possibly
  30. # overridden elsewhere by the CrayPrgEnv module
  31. if(NOT CMAKE_FIND_LIBRARY_SUFFIXES)
  32. set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
  33. set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
  34. endif()
  35. # The rest of this file is based on UnixPaths.cmake, adjusted for Cray
  36. # add the install directory of the running cmake to the search directories
  37. # CMAKE_ROOT is CMAKE_INSTALL_PREFIX/share/cmake, so we need to go two levels up
  38. get_filename_component(__cmake_install_dir "${CMAKE_ROOT}" PATH)
  39. get_filename_component(__cmake_install_dir "${__cmake_install_dir}" PATH)
  40. # Note: Some Cray's have the SYSROOT_DIR variable defined, pointing to a copy
  41. # of the NIDs userland. If so, then we'll use it. Otherwise, just assume
  42. # the userland from the login node is ok
  43. # List common installation prefixes. These will be used for all
  44. # search types.
  45. list(APPEND CMAKE_SYSTEM_PREFIX_PATH
  46. # Standard
  47. $ENV{SYSROOT_DIR}/usr/local $ENV{SYSROOT_DIR}/usr $ENV{SYSROOT_DIR}/
  48. # CMake install location
  49. "${__cmake_install_dir}"
  50. )
  51. if (NOT CMAKE_FIND_NO_INSTALL_PREFIX)
  52. list(APPEND CMAKE_SYSTEM_PREFIX_PATH
  53. # Project install destination.
  54. "${CMAKE_INSTALL_PREFIX}"
  55. )
  56. if(CMAKE_STAGING_PREFIX)
  57. list(APPEND CMAKE_SYSTEM_PREFIX_PATH
  58. # User-supplied staging prefix.
  59. "${CMAKE_STAGING_PREFIX}"
  60. )
  61. endif()
  62. endif()
  63. _cmake_record_install_prefix()
  64. list(APPEND CMAKE_SYSTEM_INCLUDE_PATH
  65. $ENV{SYSROOT_DIR}/usr/include/X11
  66. )
  67. list(APPEND CMAKE_SYSTEM_LIBRARY_PATH
  68. $ENV{SYSROOT_DIR}/usr/local/lib64
  69. $ENV{SYSROOT_DIR}/usr/lib64
  70. $ENV{SYSROOT_DIR}/lib64
  71. )
  72. list(APPEND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
  73. $ENV{SYSROOT_DIR}/usr/local/lib64
  74. $ENV{SYSROOT_DIR}/usr/lib64
  75. $ENV{SYSROOT_DIR}/lib64
  76. )
  77. # Enable use of lib64 search path variants by default.
  78. set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)