diff --git a/CMAKE/CheckLAPACKCompilerFlags.cmake b/CMAKE/CheckLAPACKCompilerFlags.cmake index 11a5461927..b3cae0abb6 100644 --- a/CMAKE/CheckLAPACKCompilerFlags.cmake +++ b/CMAKE/CheckLAPACKCompilerFlags.cmake @@ -16,7 +16,7 @@ set( FPE_EXIT FALSE ) # FORTRAN ILP default set(FOPT_ILP64) -if( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" ) +if( CMAKE_Fortran_COMPILER_ID MATCHES "Intel" ) if ( WIN32 ) set(FOPT_ILP64 /integer-size:64) else () @@ -31,6 +31,12 @@ elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" ) else () set(FOPT_ILP64 -i8) endif() +elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC" ) + if ( WIN32 ) + set(FOPT_ILP64 /i8) + else () + set(FOPT_ILP64 -i8) + endif() else() set(CPE_ENV $ENV{PE_ENV}) if(CPE_ENV STREQUAL "CRAY") @@ -52,7 +58,7 @@ if( CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" ) endif() # Intel Fortran -elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" ) +elseif( CMAKE_Fortran_COMPILER_ID MATCHES "Intel" ) if( "${CMAKE_Fortran_FLAGS}" MATCHES "[-/]fpe(-all=|)0" ) set( FPE_EXIT TRUE ) endif() @@ -138,6 +144,17 @@ elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" ) set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -quiet") endif() +# NVIDIA HPC SDK +elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC" ) + if( ("${CMAKE_Fortran_FLAGS}" MATCHES "-Ktrap=") AND + NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "-Ktrap=none") ) + set( FPE_EXIT TRUE ) + endif() + + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]Kieee") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Kieee") + endif() + else() endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 611178beb2..2b281d6045 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,12 +135,14 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL Flang) check_fortran_compiler_flag("-Mrecursive" _MrecursiveFlag) elseif(CMAKE_Fortran_COMPILER_ID STREQUAL GNU) check_fortran_compiler_flag("-frecursive" _frecursiveFlag) -elseif(CMAKE_Fortran_COMPILER_ID STREQUAL Intel) +elseif(CMAKE_Fortran_COMPILER_ID MATCHES Intel) check_fortran_compiler_flag("-recursive" _recursiveFlag) elseif(CMAKE_Fortran_COMPILER_ID STREQUAL XL) check_fortran_compiler_flag("-qrecur" _qrecurFlag) elseif(CMAKE_Fortran_COMPILER_ID STREQUAL NAG) check_fortran_compiler_flag("-recursive" _recursiveFlag) +elseif(CMAKE_Fortran_COMPILER_ID STREQUAL NVHPC) + check_fortran_compiler_flag("-Mrecursive" _MrecursiveFlag) else() message(WARNING "Fortran local arrays should be allocated on the stack." " Please use a compiler which guarantees that feature." @@ -175,7 +177,7 @@ elseif(_qrecurFlag) endif() if(UNIX) - if(CMAKE_Fortran_COMPILER_ID STREQUAL Intel) + if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fp-model strict") endif() if(CMAKE_Fortran_COMPILER_ID STREQUAL XL)