From 7f28cd1f88145a701e5dbbf50558bb65fce79f61 Mon Sep 17 00:00:00 2001 From: Vicente Olivert Riera 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 --- 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