|
| 1 | +set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -traceback -fpp -fno-alias -auto -safe-cray-ptr -ftz -assume byterecl -align array64byte -qno-opt-dynamic-align") |
| 2 | +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -qno-opt-dynamic-align -fp-model precise") |
| 3 | + |
| 4 | +# warning #5462: Global name too long. |
| 5 | +set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -diag-disable 5462") |
| 6 | + |
| 7 | +# remark #7712: This variable has not been used. |
| 8 | +set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -diag-disable 7712") |
| 9 | + |
| 10 | +# remark #8291: Recommended relationship between field width 'W' and the number of fractional digits 'D' in this edit descriptor is 'W>=D+7'. |
| 11 | +set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -diag-disable 8291") |
| 12 | + |
| 13 | +if(CMAKE_Platform STREQUAL "derecho.intel") |
| 14 | + set(CMAKE_Fortran_LINK_FLAGS "-Wl,--copy-dt-needed-entries") |
| 15 | +endif() |
| 16 | + |
| 17 | +if(NOT 32BIT) |
| 18 | + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -real-size 64") |
| 19 | +endif() |
| 20 | + |
| 21 | +if(DEBUG) |
| 22 | + add_definitions(-DDEBUG) |
| 23 | + #set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -O0 -check -check noarg_temp_created -check nopointer -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv -init=snan,arrays") |
| 24 | + set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -O0 -check -check noarg_temp_created -warn -warn noerrors -fp-stack-check -fstack-protector-all -fpe0 -debug -ftrapuv -init=snan,arrays") |
| 25 | + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ftrapuv") |
| 26 | +else() |
| 27 | + if(FASTER) |
| 28 | + set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -fp-model precise -assume buffered_stdout -fno-alias -align all -debug minimal -qoverride-limits -ftz -no-ip") |
| 29 | + set(CMAKE_C_FLAGS_RELEASE "-O3 -fp-model precise -debug minimal -qoverride-limits -ftz") |
| 30 | + else() |
| 31 | + set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -debug minimal -qoverride-limits") |
| 32 | + set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fp-model consistent") |
| 33 | + set(CMAKE_C_FLAGS_RELEASE "-O2 -debug minimal") |
| 34 | + set(FAST "-fast-transcendentals") |
| 35 | + endif() |
| 36 | + if(AVX2) |
| 37 | + set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -march=core-avx2") |
| 38 | + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=core-avx2") |
| 39 | + elseif(SIMDMULTIARCH) |
| 40 | + set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -axSSE4.2,CORE-AVX2") |
| 41 | + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -axSSE4.2,CORE-AVX2") |
| 42 | + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel=medium") |
| 43 | + elseif(AVX) |
| 44 | + set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -march=core-avx-i") |
| 45 | + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=core-avx-i") |
| 46 | + endif() |
| 47 | +endif() |
| 48 | + |
| 49 | +if(APPLE) |
| 50 | + # The linker on macOS does not include `common symbols` by default |
| 51 | + # Passing the -c flag includes them and fixes an error with undefined symbols |
| 52 | + set(CMAKE_Fortran_ARCHIVE_FINISH "<CMAKE_RANLIB> -c <TARGET>") |
| 53 | +endif() |
| 54 | + |
| 55 | +# This must be last, to override all other optimization settings. |
| 56 | +if(DISABLE_FMA) |
| 57 | + set(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -no-fma") |
| 58 | + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -no-fma") |
| 59 | +endif() |
0 commit comments