| From 7f28cd1f88145a701e5dbbf50558bb65fce79f61 Mon Sep 17 00:00:00 2001 |
| From: Vicente Olivert Riera <Vincent.Riera@imgtec.com> |
| Date: Thu, 14 Jul 2016 17:20:51 +0100 |
| Subject: [PATCH] Complete support for MIPS n32 ABI |
| |
| Pull request: https://github.com/xianyi/OpenBLAS/pull/926 |
| |
| Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> |
| --- |
| Makefile.system | 27 +++++++++------------------ |
| c_check | 9 +++++++-- |
| f_check | 7 ++++++- |
| 3 files changed, 22 insertions(+), 21 deletions(-) |
| |
| diff --git a/Makefile.system b/Makefile.system |
| index 24a7a64..bbcdb82 100644 |
| --- a/Makefile.system |
| +++ b/Makefile.system |
| @@ -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 |
| --- 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 |
| --- 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 ($?); |
| } |
| -- |
| 2.7.3 |
| |