1####################################################################
2# ARCHITECTURE
3####################################################################
4
5set( EC_HAVE_C_INLINE 1 )
6set( EC_HAVE_FUNCTION_DEF 1 )
7set( EC_HAVE_CXXABI_H 1 )
8set( EC_HAVE_CXX_BOOL 1 )
9set( EC_HAVE_CXX_SSTREAM 1 )
10set( EC_HAVE_CXX_INT_128 0 )
11set( CMAKE_SIZEOF_VOID_P 8 )
12set( EC_SIZEOF_PTR 8 )
13set( EC_SIZEOF_CHAR 1 )
14set( EC_SIZEOF_SHORT 2 )
15set( EC_SIZEOF_INT 4 )
16set( EC_SIZEOF_LONG 8 )
17set( EC_SIZEOF_LONG_LONG 8 )
18set( EC_SIZEOF_FLOAT 4 )
19set( EC_SIZEOF_DOUBLE 8 )
20set( EC_SIZEOF_LONG_DOUBLE 8 )
21set( EC_SIZEOF_SIZE_T 8 )
22set( EC_SIZEOF_SSIZE_T 8 )
23set( EC_SIZEOF_OFF_T 8 )
24set( EC_BIG_ENDIAN 0 )
25set( EC_LITTLE_ENDIAN 1 )
26set( IEEE_BE 0 )
27set( IEEE_LE 1 )
28set( EC_HAVE_FSEEK 1 )
29set( EC_HAVE_FSEEKO 1 )
30set( EC_HAVE_FTELLO 1 )
31set( EC_HAVE_LSEEK 0 )
32set( EC_HAVE_FTRUNCATE 0 )
33set( EC_HAVE_OPEN 0 )
34set( EC_HAVE_FOPEN 1 )
35set( EC_HAVE_FMEMOPEN 1 )
36set( EC_HAVE_FUNOPEN 0 )
37set( EC_HAVE_FLOCK 1 )
38set( EC_HAVE_MMAP 1 )
39set( EC_HAVE_POSIX_MEMALIGN 1 )
40set( EC_HAVE_F_GETLK 1 )
41set( EC_HAVE_F_SETLK 1 )
42set( EC_HAVE_F_SETLKW 1 )
43set( EC_HAVE_F_GETLK64 1 )
44set( EC_HAVE_F_SETLK64 1 )
45set( EC_HAVE_F_SETLKW64 1 )
46set( EC_HAVE_MAP_ANONYMOUS 1 )
47set( EC_HAVE_MAP_ANON 1 )
48set( EC_HAVE_ASSERT_H 1 )
49set( EC_HAVE_STDLIB_H 1 )
50set( EC_HAVE_UNISTD_H 1 )
51set( EC_HAVE_STRING_H 1 )
52set( EC_HAVE_STRINGS_H 1 )
53set( EC_HAVE_SYS_STAT_H 1 )
54set( EC_HAVE_SYS_TIME_H 1 )
55set( EC_HAVE_SYS_TYPES_H 1 )
56set( EC_HAVE_MALLOC_H 1 )
57set( EC_HAVE_SYS_MALLOC_H 0 )
58set( EC_HAVE_SYS_PARAM_H 1 )
59set( EC_HAVE_SYS_MOUNT_H 1 )
60set( EC_HAVE_SYS_VFS_H 1 )
61set( EC_HAVE_OFFT 1 )
62set( EC_HAVE_OFF64T 1 )
63set( EC_HAVE_STRUCT_STAT 1 )
64set( EC_HAVE_STRUCT_STAT64 1 )
65set( EC_HAVE_STAT 1 )
66set( EC_HAVE_STAT64 1 )
67set( EC_HAVE_FSTAT 1 )
68set( EC_HAVE_FSTAT64 1 )
69set( EC_HAVE_FSEEKO64 1 )
70set( EC_HAVE_FTELLO64 1 )
71set( EC_HAVE_LSEEK64 1 )
72set( EC_HAVE_OPEN64 1 )
73set( EC_HAVE_FOPEN64 1 )
74set( EC_HAVE_FTRUNCATE64 1 )
75set( EC_HAVE_FLOCK64 1 )
76set( EC_HAVE_MMAP64 1 )
77set( EC_HAVE_STRUCT_STATVFS 1 )
78set( EC_HAVE_STRUCT_STATVFS64 1 )
79set( EC_HAVE_FOPENCOOKIE 1 )
80set( EC_HAVE_FSYNC 1 )
81set( EC_HAVE_FDATASYNC 1 )
82set( EC_HAVE_DIRFD 1 )
83set( EC_HAVE_SYSPROC 0 )
84set( EC_HAVE_SYSPROCFS 1 )
85set( EC_HAVE_EXECINFO_BACKTRACE 1 )
86set( EC_HAVE_GMTIME_R 1 )
87set( EC_HAVE_GETPWUID_R 1 )
88set( EC_HAVE_GETPWNAM_R 1 )
89set( EC_HAVE_READDIR_R 1 )
90set( EC_HAVE_DIRENT_D_TYPE 1 )
91set( EC_HAVE_GETHOSTBYNAME_R 1 )
92set( EC_HAVE_ATTRIBUTE_CONSTRUCTOR 1 )
93set( EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV 0 )
94set( EC_HAVE_PROCFS 1 )
95set( EC_HAVE_DLFCN_H 1 )
96set( EC_HAVE_DLADDR 1 )
97set( EC_HAVE_AIOCB 1 )
98set( EC_HAVE_AIOCB64 1 )
99
100# Disable relative rpaths as aprun does not respect it
101set( ENABLE_RELATIVE_RPATHS OFF CACHE STRING "Disable relative rpaths" FORCE )
102
103####################################################################
104# COMPILER
105####################################################################
106
107if( "${CMAKE_VERSION}" VERSION_LESS 3.5 )
108include(CMakeForceCompiler)
109CMAKE_FORCE_C_COMPILER       ( cc  Cray )
110CMAKE_FORCE_CXX_COMPILER     ( CC  Cray )
111CMAKE_FORCE_Fortran_COMPILER ( ftn Cray )
112endif()
113
114set(CMAKE_Fortran_PREPROCESS_SOURCE
115  "${CMAKE_CURRENT_LIST_DIR}/preprocess_cray_fortran \"<CMAKE_Fortran_COMPILER>\" \"<DEFINES>\" \"<INCLUDES>\" \"<FLAGS>\" <SOURCE> <PREPROCESSED_SOURCE>")
116
117set( ECBUILD_FIND_MPI OFF )
118set( ECBUILD_TRUST_FLAGS ON )
119
120set( CXX11_FLAG "-hstd=c++11" )
121
122####################################################################
123# OpenMP FLAGS
124####################################################################
125
126set( OMP_C_FLAGS             "-homp" )
127set( OMP_CXX_FLAGS           "-homp" )
128set( OMP_Fortran_FLAGS       "-homp" )
129
130set( OMPSTUBS_C_FLAGS        "-hnoomp" )
131set( OMPSTUBS_CXX_FLAGS      "-hnoomp" )
132set( OMPSTUBS_Fortran_FLAGS  "-hnoomp" )
133
134####################################################################
135# LINK FLAGS
136####################################################################
137
138if( EXISTS "$ENV{CC_X86_64}/lib/x86-64/libcray-c++-rts.so" )
139  set( LIBCRAY_CXX_RTS "$ENV{CC_X86_64}/lib/x86-64/libcray-c++-rts.so" )
140elseif( EXISTS "$ENV{CC_X86_64}/lib/libcray-c++-rts.so" )
141  set( LIBCRAY_CXX_RTS "$ENV{CC_X86_64}/lib/libcray-c++-rts.so" )
142endif()
143
144set( ECBUILD_SHARED_LINKER_FLAGS "-Wl,--eh-frame-hdr -Ktrap=fp" )
145set( ECBUILD_MODULE_LINKER_FLAGS "-Wl,--eh-frame-hdr -Ktrap=fp -Wl,-Map,loadmap" )
146set( ECBUILD_EXE_LINKER_FLAGS    "-Wl,--eh-frame-hdr -Ktrap=fp -Wl,-Map,loadmap -Wl,--as-needed" )
147set( ECBUILD_CXX_IMPLICIT_LINK_LIBRARIES "${LIBCRAY_CXX_RTS}" CACHE STRING "" )
148
149####################################################################
150# LIBRARIES
151####################################################################
152
153# Don't search for LAPACK as it is provided by the cray-libsci module which is
154# loaded by default
155set( LAPACK_FOUND $ENV{CRAY_LIBSCI_PREFIX_DIR} )
156