diff --git a/CMAKE/CheckLAPACKCompilerFlags.cmake b/CMAKE/CheckLAPACKCompilerFlags.cmake index 6525315eeb..dbcdd742fc 100644 --- a/CMAKE/CheckLAPACKCompilerFlags.cmake +++ b/CMAKE/CheckLAPACKCompilerFlags.cmake @@ -22,6 +22,12 @@ if ( FORTRAN_ILP ) else () set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -integer-size 64") endif() + elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" ) + if ( WIN32 ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /i8") + else () + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -i8") + endif() else() set(CPE_ENV $ENV{PE_ENV}) if(CPE_ENV STREQUAL "CRAY") @@ -85,6 +91,48 @@ elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "HP" ) CACHE STRING "Flags used by the compiler during release builds" FORCE ) set( CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO} +O2 -g" CACHE STRING "Flags used by the compiler during release with debug info builds" FORCE ) + +# NAG Fortran +elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" ) + if( "${CMAKE_Fortran_FLAGS}" MATCHES "[-/]ieee=(stop|nonstd)" ) + set( FPE_EXIT TRUE ) + endif() + + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]ieee=full") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ieee=full") + endif() + + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]dcfuns") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -dcfuns") + endif() + + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]thread_safe") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -thread_safe") + endif() + + # Disable warnings + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=obs") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=obs") + endif() + + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=x77") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=x77") + endif() + + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=ques") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=ques") + endif() + + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=unused") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=unused") + endif() + + # Suppress compiler banner and summary + check_fortran_compiler_flag("-quiet" _quiet) + if( _quiet AND NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]quiet") ) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -quiet") + endif() + else() endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d3fb268a3..3505b81b8b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,6 +133,8 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL 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) else() message(WARNING "Fortran local arrays should be allocated on the stack." " Please use a compiler which guarantees that feature." diff --git a/TESTING/EIG/cchkhb2stg.f b/TESTING/EIG/cchkhb2stg.f index 594470816b..6544fca191 100644 --- a/TESTING/EIG/cchkhb2stg.f +++ b/TESTING/EIG/cchkhb2stg.f @@ -852,8 +852,9 @@ SUBROUTINE CCHKHB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, CALL SLASUM( 'CHB', NOUNIT, NERRS, NTESTT ) RETURN * - 9999 FORMAT( ' CCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=', - $ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' ) + 9999 FORMAT( ' CCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X, + $ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, + $ ')' ) 9998 FORMAT( / 1X, A3, $ ' -- Complex Hermitian Banded Tridiagonal Reduction Routines' $ ) diff --git a/TESTING/EIG/dchksb2stg.f b/TESTING/EIG/dchksb2stg.f index 87dbbcd25c..1fb03e7f5c 100644 --- a/TESTING/EIG/dchksb2stg.f +++ b/TESTING/EIG/dchksb2stg.f @@ -840,8 +840,9 @@ SUBROUTINE DCHKSB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, CALL DLASUM( 'DSB', NOUNIT, NERRS, NTESTT ) RETURN * - 9999 FORMAT( ' DCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=', - $ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' ) + 9999 FORMAT( ' DCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X, + $ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, + $ ')' ) * 9998 FORMAT( / 1X, A3, $ ' -- Real Symmetric Banded Tridiagonal Reduction Routines' ) diff --git a/TESTING/EIG/schksb2stg.f b/TESTING/EIG/schksb2stg.f index 8d9bb1cdf8..d896f82cb9 100644 --- a/TESTING/EIG/schksb2stg.f +++ b/TESTING/EIG/schksb2stg.f @@ -840,8 +840,9 @@ SUBROUTINE SCHKSB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, CALL SLASUM( 'SSB', NOUNIT, NERRS, NTESTT ) RETURN * - 9999 FORMAT( ' SCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=', - $ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' ) + 9999 FORMAT( ' SCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X, + $ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, + $ ')' ) * 9998 FORMAT( / 1X, A3, $ ' -- Real Symmetric Banded Tridiagonal Reduction Routines' ) diff --git a/TESTING/EIG/zchkhb2stg.f b/TESTING/EIG/zchkhb2stg.f index 0fe7a6ea05..798fbdaa01 100644 --- a/TESTING/EIG/zchkhb2stg.f +++ b/TESTING/EIG/zchkhb2stg.f @@ -849,8 +849,9 @@ SUBROUTINE ZCHKHB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE, CALL DLASUM( 'ZHB', NOUNIT, NERRS, NTESTT ) RETURN * - 9999 FORMAT( ' ZCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=', - $ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' ) + 9999 FORMAT( ' ZCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X, + $ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, + $ ')' ) 9998 FORMAT( / 1X, A3, $ ' -- Complex Hermitian Banded Tridiagonal Reduction Routines' $ )