"ppuf77", "ppuf95", "ppuf90", "ppuxlf",
"pathf90", "pathf95",
"pgf95", "pgf90", "pgf77",
+ "flang",
"ifort");
OUTER:
$vendor = GFORTRAN;
$openmp = "-fopenmp";
} else {
- $vendor = G77;
- $openmp = "";
+ if ($compiler =~ /flang/) {
+ $vendor = FLANG;
+ $openmp = "-fopenmp";
+ } else {
+ $vendor = G77;
+ $openmp = "";
+ }
}
}
if ($data =~ /Intel/) {
$vendor = INTEL;
- $openmp = "-openmp";
+ $openmp = "-fopenmp";
}
if ($data =~ /Sun Fortran/) {
$openmp = "-openmp";
}
- # for embeded underscore name, e.g. zho_ge, it may append 2 underscores.
+ # for embedded underscore name, e.g. zho_ge, it may append 2 underscores.
$data = `$compiler -O2 -S ftest3.f > /dev/null 2>&1 && cat ftest3.s && rm -f ftest3.s`;
- if ($data =~ /zho_ge__/) {
+ if ($data =~ / zho_ge__/) {
$need2bu = 1;
}
}
if ($compiler =~ /ifort/) {
$vendor = INTEL;
$bu = "_";
- $openmp = "-openmp";
+ $openmp = "-fopenmp";
}
if ($compiler =~ /pathf/) {
$openmp = "-mp";
}
+ if ($compiler =~ /flang/) {
+ $vendor = FLANG;
+ $bu = "_";
+ $openmp = "-fopenmp";
+ }
+
if ($vendor eq "") {
$nofortran = 1;
$compiler = "gfortran";
if ($?) {
$link = `$compiler $openmp -q32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
}
+ # for AIX
+ if ($?) {
+ $link = `$compiler $openmp -maix32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
+ }
#For gfortran MIPS
if ($?) {
- $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
+ $mips_data = `$compiler_bin -E -dM - < /dev/null`;
+ if ($mips_data =~ /_MIPS_ISA_MIPS64/) {
+ $link = `$compiler $openmp -mabi=n32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
+ } else {
+ $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
+ }
}
$binary = "" if ($?);
}
if ($?) {
$link = `$compiler $openmp -q64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
}
+ # for AIX
+ if ($?) {
+ $link = `$compiler $openmp -maix64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
+ }
#For gfortran MIPS
if ($?) {
$link = `$compiler $openmp -mabi=64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
&& ($flags !~ /^-LIST:/)
&& ($flags !~ /^-LANG:/)
) {
- if ($vendor eq "PGI") {
- $flags =~ s/lib$/libso/;
- }
$linker_L .= $flags . " ";
}
$linker_L .= "-Wl,". $flags . " ";
}
+ if ($flags =~ /^\--exclude-libs/) {
+ $linker_L .= "-Wl,". $flags . " ";
+ $flags="";
+ }
+
+
if ($flags =~ /^\-rpath\@/) {
$flags =~ s/\@/\,/g;
- if ($vendor eq "PGI") {
- $flags =~ s/lib$/libso/;
- }
$linker_L .= "-Wl,". $flags . " " ;
}
if ($flags =~ /^\-rpath-link\@/) {
$flags =~ s/\@/\,/g;
- if ($vendor eq "PGI") {
- $flags =~ s/lib$/libso/;
- }
$linker_L .= "-Wl,". $flags . " " ;
}
&& ($flags !~ /gfortranbegin/)
&& ($flags !~ /frtbegin/)
&& ($flags !~ /pathfstart/)
- && ($flags !~ /numa/)
&& ($flags !~ /crt[0-9]/)
&& ($flags !~ /gcc/)
&& ($flags !~ /user32/)
$linker_a .= "-lgfortran"
}
+if ($vendor eq "FLANG"){
+ $linker_a .= "-lflang"
+}
+
open(MAKEFILE, ">> $makefile") || die "Can't append $makefile";
open(CONFFILE, ">> $config" ) || die "Can't append $config";