Complete support for MIPS n32 ABI

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
This commit is contained in:
Vicente Olivert Riera 2016-07-14 17:20:51 +01:00
parent 437c7d64f2
commit 7f28cd1f88
3 changed files with 22 additions and 21 deletions

View File

@ -502,13 +502,16 @@ endif
ifdef NO_BINARY_MODE ifdef NO_BINARY_MODE
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) ifeq ($(ARCH), $(filter $(ARCH),mips64))
ifdef BINARY64 ifdef BINARY64
CCOMMON_OPT += -mabi=64 CCOMMON_OPT += -mabi=64
else else
CCOMMON_OPT += -mabi=32 CCOMMON_OPT += -mabi=n32
endif endif
BINARY_DEFINED = 1 BINARY_DEFINED = 1
else ifeq ($(ARCH), $(filter $(ARCH),mips))
CCOMMON_OPT += -mabi=32
BINARY_DEFINED = 1
endif endif
ifeq ($(CORE), LOONGSON3A) ifeq ($(CORE), LOONGSON3A)
@ -599,12 +602,14 @@ ifneq ($(NO_LAPACK), 1)
EXTRALIB += -lgfortran EXTRALIB += -lgfortran
endif endif
ifdef NO_BINARY_MODE ifdef NO_BINARY_MODE
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) ifeq ($(ARCH), $(filter $(ARCH),mips64))
ifdef BINARY64 ifdef BINARY64
FCOMMON_OPT += -mabi=64 FCOMMON_OPT += -mabi=64
else else
FCOMMON_OPT += -mabi=32 FCOMMON_OPT += -mabi=n32
endif endif
else ifeq ($(ARCH), $(filter $(ARCH),mips))
FCOMMON_OPT += -mabi=32
endif endif
else else
ifdef BINARY64 ifdef BINARY64
@ -688,20 +693,6 @@ endif
endif 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) ifeq ($(USE_OPENMP), 1)
FCOMMON_OPT += -mp FCOMMON_OPT += -mp
endif endif

View File

@ -79,8 +79,13 @@ if ($os eq "AIX") {
$defined = 1; $defined = 1;
} }
if (($architecture eq "mips") || ($architecture eq "mips64")) { if ($architecture eq "mips") {
$compiler_name .= " -mabi=32" if ($binary eq "32"); $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"); $compiler_name .= " -mabi=64" if ($binary eq "64");
$defined = 1; $defined = 1;
} }

View File

@ -223,8 +223,13 @@ if (!$?) {
} }
#For gfortran MIPS #For gfortran MIPS
if ($?) { if ($?) {
$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`; $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
} }
}
$binary = "" if ($?); $binary = "" if ($?);
} }