Skip to content

Commit 2789c76

Browse files
authored
Merge pull request #686 from ACSimon33/cmake_nagfor_support
Adding NAG Fortran compiler (nagfor) support in the CMake build system.
2 parents 7d90a67 + 7eacb5f commit 2789c76

File tree

6 files changed

+62
-8
lines changed

6 files changed

+62
-8
lines changed

CMAKE/CheckLAPACKCompilerFlags.cmake

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ if ( FORTRAN_ILP )
2222
else ()
2323
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -integer-size 64")
2424
endif()
25+
elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" )
26+
if ( WIN32 )
27+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /i8")
28+
else ()
29+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -i8")
30+
endif()
2531
else()
2632
set(CPE_ENV $ENV{PE_ENV})
2733
if(CPE_ENV STREQUAL "CRAY")
@@ -85,6 +91,48 @@ elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "HP" )
8591
CACHE STRING "Flags used by the compiler during release builds" FORCE )
8692
set( CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_RELWITHDEBINFO} +O2 -g"
8793
CACHE STRING "Flags used by the compiler during release with debug info builds" FORCE )
94+
95+
# NAG Fortran
96+
elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" )
97+
if( "${CMAKE_Fortran_FLAGS}" MATCHES "[-/]ieee=(stop|nonstd)" )
98+
set( FPE_EXIT TRUE )
99+
endif()
100+
101+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]ieee=full") )
102+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ieee=full")
103+
endif()
104+
105+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]dcfuns") )
106+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -dcfuns")
107+
endif()
108+
109+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]thread_safe") )
110+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -thread_safe")
111+
endif()
112+
113+
# Disable warnings
114+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=obs") )
115+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=obs")
116+
endif()
117+
118+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=x77") )
119+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=x77")
120+
endif()
121+
122+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=ques") )
123+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=ques")
124+
endif()
125+
126+
if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]w=unused") )
127+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -w=unused")
128+
endif()
129+
130+
# Suppress compiler banner and summary
131+
check_fortran_compiler_flag("-quiet" _quiet)
132+
if( _quiet AND NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "[-/]quiet") )
133+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -quiet")
134+
endif()
135+
88136
else()
89137
endif()
90138

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ elseif(CMAKE_Fortran_COMPILER_ID STREQUAL Intel)
133133
check_fortran_compiler_flag("-recursive" _recursiveFlag)
134134
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL XL)
135135
check_fortran_compiler_flag("-qrecur" _qrecurFlag)
136+
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL NAG)
137+
check_fortran_compiler_flag("-recursive" _recursiveFlag)
136138
else()
137139
message(WARNING "Fortran local arrays should be allocated on the stack."
138140
" Please use a compiler which guarantees that feature."

TESTING/EIG/cchkhb2stg.f

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -852,8 +852,9 @@ SUBROUTINE CCHKHB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE,
852852
CALL SLASUM( 'CHB', NOUNIT, NERRS, NTESTT )
853853
RETURN
854854
*
855-
9999 FORMAT( ' CCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=',
856-
$ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' )
855+
9999 FORMAT( ' CCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X,
856+
$ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5,
857+
$ ')' )
857858
9998 FORMAT( / 1X, A3,
858859
$ ' -- Complex Hermitian Banded Tridiagonal Reduction Routines'
859860
$ )

TESTING/EIG/dchksb2stg.f

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,8 +840,9 @@ SUBROUTINE DCHKSB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE,
840840
CALL DLASUM( 'DSB', NOUNIT, NERRS, NTESTT )
841841
RETURN
842842
*
843-
9999 FORMAT( ' DCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=',
844-
$ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' )
843+
9999 FORMAT( ' DCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X,
844+
$ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5,
845+
$ ')' )
845846
*
846847
9998 FORMAT( / 1X, A3,
847848
$ ' -- Real Symmetric Banded Tridiagonal Reduction Routines' )

TESTING/EIG/schksb2stg.f

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,8 +840,9 @@ SUBROUTINE SCHKSB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE,
840840
CALL SLASUM( 'SSB', NOUNIT, NERRS, NTESTT )
841841
RETURN
842842
*
843-
9999 FORMAT( ' SCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=',
844-
$ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' )
843+
9999 FORMAT( ' SCHKSB2STG: ', A, ' returned INFO=', I6, '.', / 9X,
844+
$ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5,
845+
$ ')' )
845846
*
846847
9998 FORMAT( / 1X, A3,
847848
$ ' -- Real Symmetric Banded Tridiagonal Reduction Routines' )

TESTING/EIG/zchkhb2stg.f

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -849,8 +849,9 @@ SUBROUTINE ZCHKHB2STG( NSIZES, NN, NWDTHS, KK, NTYPES, DOTYPE,
849849
CALL DLASUM( 'ZHB', NOUNIT, NERRS, NTESTT )
850850
RETURN
851851
*
852-
9999 FORMAT( ' ZCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X, 'N=',
853-
$ I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5, ')' )
852+
9999 FORMAT( ' ZCHKHB2STG: ', A, ' returned INFO=', I6, '.', / 9X,
853+
$ 'N=', I6, ', JTYPE=', I6, ', ISEED=(', 3( I5, ',' ), I5,
854+
$ ')' )
854855
9998 FORMAT( / 1X, A3,
855856
$ ' -- Complex Hermitian Banded Tridiagonal Reduction Routines'
856857
$ )

0 commit comments

Comments
 (0)