ifdef NO_BINARY_MODE
-ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
+ifeq ($(ARCH), $(filter $(ARCH),mips64))
ifdef BINARY64
CCOMMON_OPT += -mabi=64
else
-CCOMMON_OPT += -mabi=32
+CCOMMON_OPT += -mabi=n32
endif
BINARY_DEFINED = 1
+else ifeq ($(ARCH), $(filter $(ARCH),mips))
+CCOMMON_OPT += -mabi=32
+BINARY_DEFINED = 1
endif
ifeq ($(CORE), LOONGSON3A)
EXTRALIB += -lgfortran
endif
ifdef NO_BINARY_MODE
-ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
+ifeq ($(ARCH), $(filter $(ARCH),mips64))
ifdef BINARY64
FCOMMON_OPT += -mabi=64
else
-FCOMMON_OPT += -mabi=32
+FCOMMON_OPT += -mabi=n32
endif
+else ifeq ($(ARCH), $(filter $(ARCH),mips))
+FCOMMON_OPT += -mabi=32
endif
else
ifdef BINARY64
endif
endif
-ifeq ($(filter $(ARCH),mips64 mips))
-ifndef BINARY64
-FCOMMON_OPT += -m32
-else
-FCOMMON_OPT += -m64
-endif
-else
-ifdef BINARY64
-FCOMMON_OPT += -mabi=64
-else
-FCOMMON_OPT += -mabi=32
-endif
-endif
-
ifeq ($(USE_OPENMP), 1)
FCOMMON_OPT += -mp
endif
$defined = 1;
}
-if (($architecture eq "mips") || ($architecture eq "mips64")) {
- $compiler_name .= " -mabi=32" if ($binary eq "32");
+if ($architecture eq "mips") {
+ $compiler_name .= " -mabi=32";
+ $defined = 1;
+}
+
+if ($architecture eq "mips64") {
+ $compiler_name .= " -mabi=n32" if ($binary eq "32");
$compiler_name .= " -mabi=64" if ($binary eq "64");
$defined = 1;
}
}
#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 ($?);
}