Complete support for MIPS n32 ABI
authorVicente Olivert Riera <Vincent.Riera@imgtec.com>
Thu, 14 Jul 2016 16:20:51 +0000 (17:20 +0100)
committerVicente Olivert Riera <Vincent.Riera@imgtec.com>
Thu, 14 Jul 2016 16:51:04 +0000 (17:51 +0100)
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Makefile.system
c_check
f_check

index 24a7a64..bbcdb82 100644 (file)
@@ -502,13 +502,16 @@ endif
 
 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)
@@ -599,12 +602,14 @@ ifneq ($(NO_LAPACK), 1)
 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
@@ -688,20 +693,6 @@ endif
 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
diff --git a/c_check b/c_check
index 50ff360..9f457df 100644 (file)
--- a/c_check
+++ b/c_check
@@ -79,8 +79,13 @@ if ($os eq "AIX") {
     $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;
 }
diff --git a/f_check b/f_check
index 4c03ac7..3520e8b 100644 (file)
--- a/f_check
+++ b/f_check
@@ -223,7 +223,12 @@ if (!$?) {
        }
        #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 ($?);
     }