@@ -34,7 +34,7 @@ if ($compiler eq "") {
3434 " pathf90" , " pathf95" ,
3535 " pgf95" , " pgf90" , " pgf77" , " pgfortran" , " nvfortran" ,
3636 " flang" , " egfortran" ,
37- " ifort" );
37+ " ifort" , " nagfor " );
3838
3939OUTER:
4040 foreach $lists (@lists ) {
@@ -64,6 +64,9 @@ if ($compiler eq "") {
6464 if (!$? ) {
6565
6666 $data = ` $compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.s && rm -f ftest.s` ;
67+ if ($data eq " " ) {
68+ $data = ` $compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.c && rm -f ftest.c` ;
69+ }
6770 if ($data =~ / zhoge_/ ) {
6871 $bu = " _" ;
6972 }
@@ -133,8 +136,16 @@ if ($compiler eq "") {
133136 $openmp = " -openmp" ;
134137 }
135138
139+ if ($data =~ / NAG/ ) {
140+ $vendor = NAG;
141+ $openmp = " -openmp" ;
142+ }
143+
136144 # for embedded underscore name, e.g. zho_ge, it may append 2 underscores.
137145 $data = ` $compiler -O2 -S ftest3.f > /dev/null 2>&1 && cat ftest3.s && rm -f ftest3.s` ;
146+ if ($data eq " " ) {
147+ $data = ` $compiler -O2 -S ftest3.f > /dev/null 2>&1 && cat ftest3.c && rm -f ftest3.c` ;
148+ }
138149 if ($data =~ / zho_ge__/ ) {
139150 $need2bu = 1;
140151 }
@@ -222,6 +233,12 @@ if ($compiler eq "") {
222233 $openmp = " -fopenmp" ;
223234 }
224235
236+ if ($compiler =~ / nagfor/ ) {
237+ $vendor = NAG;
238+ $bu = " _" ;
239+ $openmp = " -openmp" ;
240+ }
241+
225242 if ($vendor eq " " ) {
226243 $nofortran = 1;
227244 $compiler = " gfortran" ;
@@ -275,14 +292,20 @@ if (!$?) {
275292 if ($? ) {
276293 $link = ` $compiler $openmp -mabi=64 -v ftest2.f 2>&1 && rm -f a.out a.exe` ;
277294 }
295+ # For nagfor
296+ if ($? ) {
297+ $link = ` $compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe` ;
298+ }
278299 $binary = " " if ($? );
279300 }
280-
281301 if ($binary eq " " ) {
282302 $link = ` $compiler $openmp -v ftest2.f 2>&1 && rm -f a.out a.exe` ;
283303 }
284304}
285305
306+ if ( $vendor eq " NAG" ) {
307+ $link = ` $compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe` ;
308+ }
286309$linker_L = " " ;
287310$linker_l = " " ;
288311$linker_a = " " ;
@@ -336,6 +359,7 @@ if ($link ne "") {
336359
337360 if (
338361 ($flags =~ / ^\- l/ )
362+ && ($flags !~ / ibrary/ )
339363 && ($flags !~ / gfortranbegin/ )
340364 && ($flags !~ / frtbegin/ )
341365 && ($flags !~ / pathfstart/ )
@@ -352,6 +376,16 @@ if ($link ne "") {
352376 $linker_l .= $flags . " " ;
353377 }
354378
379+ if ( $flags =~ / quickfit.o/ && $vendor == NAG) {
380+ $linker_l .= $flags . " " ;
381+ }
382+ if ( $flags =~ / safefit.o/ && $vendor == NAG) {
383+ $linker_l .= $flags . " " ;
384+ }
385+ if ( $flags =~ / thsafe.o/ && $vendor == NAG) {
386+ $linker_l .= $flags . " " ;
387+ }
388+
355389 $linker_a .= $flags . " " if $flags =~ / \. a$ / ;
356390 }
357391
0 commit comments