1if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) # this is gfortran
2    add_definitions(-DVAR_GFORTRAN)
3    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffloat-store -fcray-pointer -std=legacy")
4    if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER 10.0.0)
5        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-invalid-boz -fallow-argument-mismatch")
6    endif()
7    if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "i386")
8        set(CMAKE_Fortran_FLAGS
9            "${CMAKE_Fortran_FLAGS} -m32"
10            )
11    endif()
12    if(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "x86_64")
13        set(CMAKE_Fortran_FLAGS
14            "${CMAKE_Fortran_FLAGS} -m64"
15            )
16    endif()
17    set(CMAKE_Fortran_FLAGS_DEBUG   "-Og -g -fbacktrace -fcray-pointer -Wuninitialized")
18    set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -ffast-math -funroll-loops -ftree-vectorize -w")
19    set(CMAKE_Fortran_FLAGS_PROFILE "${CMAKE_Fortran_FLAGS_RELEASE} -g -pg")
20    if(ENABLE_STATIC_LINKING)
21        set(CMAKE_Fortran_FLAGS
22            "${CMAKE_Fortran_FLAGS} -static"
23            )
24    endif()
25    if(ENABLE_64BIT_INTEGERS)
26        set(CMAKE_Fortran_FLAGS
27            "${CMAKE_Fortran_FLAGS} -fdefault-integer-8"
28            )
29    endif()
30    if(ENABLE_BOUNDS_CHECK)
31        set(CMAKE_Fortran_FLAGS
32            "${CMAKE_Fortran_FLAGS} -fbounds-check -Waliasing -Wampersand -Wcharacter-truncation -Wline-truncation -Wsurprising -Wunderflow"
33            )
34    endif()
35    if(ENABLE_CODE_COVERAGE)
36        set(CMAKE_Fortran_FLAGS
37            "${CMAKE_Fortran_FLAGS} -fprofile-arcs -ftest-coverage"
38            )
39    endif()
40endif()
41
42if(CMAKE_Fortran_COMPILER_ID MATCHES Intel)
43    add_definitions(-DVAR_IFORT)
44    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fpp -assume byterecl -DVAR_IFORT")
45    set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -g -traceback")
46    set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -ip -diag-disable 8290 -diag-disable 8291")
47    set(CMAKE_Fortran_FLAGS_PROFILE "${CMAKE_Fortran_FLAGS_RELEASE} -g -pg")
48
49    if(DEFINED MKL_FLAG)
50        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${MKL_FLAG}")
51    endif()
52
53    if(ENABLE_STATIC_LINKING)
54        set(CMAKE_Fortran_FLAGS
55            "${CMAKE_Fortran_FLAGS} -static-libgcc -static-intel"
56            )
57    endif()
58    if(ENABLE_64BIT_INTEGERS)
59        set(CMAKE_Fortran_FLAGS
60            "${CMAKE_Fortran_FLAGS} -i8"
61            )
62    endif()
63    if(ENABLE_BOUNDS_CHECK)
64        set(CMAKE_Fortran_FLAGS
65            "${CMAKE_Fortran_FLAGS} -check all -traceback -debug all -fpstkchk -ftrapuv"
66            )
67    endif()
68    if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
69        message("--Switch off warnings due to incompatibility XCode 4 and Intel 11 on OsX 10.6")
70        set(CMAKE_Fortran_FLAGS
71            "${CMAKE_Fortran_FLAGS} -Qoption,ld,-w"
72            )
73    endif()
74endif()
75
76if(CMAKE_Fortran_COMPILER_ID MATCHES PGI)
77
78    add_definitions(-DVAR_PGI)
79
80# Patrick: mcmodel=medium is not available on PGI Free for MacOS X
81set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DVAR_PGI")
82    if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
83       set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel=medium")
84    endif()
85
86# Simen: added to include c++ libraries needed for the final linking
87    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -pgc++libs")
88
89    set(CMAKE_Fortran_FLAGS_DEBUG   "-g -O0 -Mframe -traceback")
90# I would like to add -fast but this makes certain dec tests fails
91    set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -Mipa=fast")
92    set(CMAKE_Fortran_FLAGS_PROFILE "${CMAKE_Fortran_FLAGS_RELEASE} -g -pg")
93    if(ENABLE_64BIT_INTEGERS)
94        set(CMAKE_Fortran_FLAGS
95            "${CMAKE_Fortran_FLAGS} -i8 -i8storage"
96            )
97    endif()
98    if(ENABLE_BOUNDS_CHECK)
99        set(CMAKE_Fortran_FLAGS
100#add -Mbounds at some point
101            "${CMAKE_Fortran_FLAGS} "
102            )
103    endif()
104    if(ENABLE_CODE_COVERAGE)
105        set(CMAKE_Fortran_FLAGS
106            "${CMAKE_Fortran_FLAGS} "
107            )
108    endif()
109endif()
110
111if(CMAKE_Fortran_COMPILER_ID MATCHES XL)
112    add_definitions(-DVAR_XLF)
113    set(CMAKE_Fortran_FLAGS         "-qzerosize -qextname")
114    set(CMAKE_Fortran_FLAGS_DEBUG   "-g")
115    set(CMAKE_Fortran_FLAGS_RELEASE "-qstrict -O3")
116    set(CMAKE_Fortran_FLAGS_PROFILE "${CMAKE_Fortran_FLAGS_RELEASE} -g -pg")
117    if(ENABLE_64BIT_INTEGERS)
118        set(CMAKE_Fortran_FLAGS
119            "${CMAKE_Fortran_FLAGS} -q64"
120            )
121    endif()
122    set_source_files_properties(${DALTON_FREE_FORTRAN_SOURCES}    PROPERTIES COMPILE_FLAGS "-qfree -qlanglvl=extended -qinit=f90ptr")
123    set_source_files_properties(${DALTON_FIXED_FORTRAN_SOURCES}   PROPERTIES COMPILE_FLAGS "-qfixed")
124    set_source_files_properties(${DALTON_OWN_BLAS_SOURCES}        PROPERTIES COMPILE_FLAGS "-qfixed")
125    set_source_files_properties(${DALTON_OWN_LAPACK_SOURCES}      PROPERTIES COMPILE_FLAGS "-qfixed")
126    if(ENABLE_BOUNDS_CHECK)
127        set(CMAKE_Fortran_FLAGS
128            "${CMAKE_Fortran_FLAGS} -C"
129            )
130    endif()
131
132endif()
133
134if(CMAKE_Fortran_COMPILER_ID MATCHES Cray)
135    add_definitions(-DVAR_CRAY)
136
137    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DVAR_CRAY -eZ")
138
139    set(CMAKE_Fortran_FLAGS_DEBUG   "-O0 -g")
140    set(CMAKE_Fortran_FLAGS_RELEASE " ")
141    set(CMAKE_Fortran_FLAGS_PROFILE "-g")
142    if(ENABLE_64BIT_INTEGERS)
143        set(CMAKE_Fortran_FLAGS
144            "${CMAKE_Fortran_FLAGS} -s integer64"
145            )
146    endif()
147    if(ENABLE_BOUNDS_CHECK)
148        set(CMAKE_Fortran_FLAGS
149            "${CMAKE_Fortran_FLAGS} -R bps"
150            )
151    endif()
152endif()
153
154if(DEFINED EXTRA_Fortran_FLAGS)
155    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${EXTRA_Fortran_FLAGS}")
156endif()
157
158save_compiler_flags(Fortran)
159