Use Clang and LLD as the default toolchain for MIPS

Now that we have updated the in-tree version of LLVM to 10.0, we have all the
necessary LLVM changes to use Clang+LLD as the default toolchain for MIPS.

Relnotes:	yes
Reviewed By:	emaste, jhb, brooks, kevans
Differential Revision: https://reviews.freebsd.org/D23204
This commit is contained in:
Alex Richardson 2020-03-23 10:36:32 +00:00
parent a75f9261d6
commit 4a4c9a0f9e
3 changed files with 17 additions and 22 deletions

View File

@ -500,13 +500,13 @@ TARGET_ARCHES_riscv?= riscv64 riscv64sf
TARGET_ARCHES_${target}?= ${target} TARGET_ARCHES_${target}?= ${target}
.endfor .endfor
MAKE_PARAMS_mips?= CROSS_TOOLCHAIN=mips-gcc6
TOOLCHAINS_mips= mips-gcc6
# Remove architectures only supported by external toolchain from # Remove architectures only supported by external toolchain from
# universe if required toolchain packages are missing. # universe if required toolchain packages are missing.
.for target in mips # Note: We no longer have targets that require an external toolchain, but for
# now keep this block in case a new non-LLVM architecture is added and to reuse
# it for a future extenal GCC make universe variant.
_external_toolchain_targets=
.for target in ${_external_toolchain_targets}
.if ${_UNIVERSE_TARGETS:M${target}} .if ${_UNIVERSE_TARGETS:M${target}}
.for toolchain in ${TOOLCHAINS_${target}} .for toolchain in ${TOOLCHAINS_${target}}
.if !exists(/usr/local/share/toolchains/${toolchain}.mk) .if !exists(/usr/local/share/toolchains/${toolchain}.mk)

View File

@ -302,15 +302,15 @@ This table shows the default tool chain for each architecture.
.It armv6 Ta Clang Ta lld .It armv6 Ta Clang Ta lld
.It armv7 Ta Clang Ta lld .It armv7 Ta Clang Ta lld
.It i386 Ta Clang Ta lld .It i386 Ta Clang Ta lld
.It mips Ta GCC(1) Ta GNU ld(1) .It mips Ta Clang Ta lld
.It mipsel Ta GCC(1) Ta GNU ld(1) .It mipsel Ta Clang Ta lld
.It mipselhf Ta GCC(1) Ta GNU ld(1) .It mipselhf Ta Clang Ta lld
.It mipshf Ta GCC(1) Ta GNU ld(1) .It mipshf Ta Clang Ta lld
.It mipsn32 Ta GCC(1) Ta GNU ld(1) .It mipsn32 Ta Clang Ta lld
.It mips64 Ta GCC(1) Ta GNU ld(1) .It mips64 Ta Clang Ta lld
.It mips64el Ta GCC(1) Ta GNU ld(1) .It mips64el Ta Clang Ta lld
.It mips64elhf Ta GCC(1) Ta GNU ld(1) .It mips64elhf Ta Clang Ta lld
.It mips64hf Ta GCC(1) Ta GNU ld(1) .It mips64hf Ta Clang Ta lld
.It powerpc Ta Clang Ta GNU ld 2.17.50 .It powerpc Ta Clang Ta GNU ld 2.17.50
.It powerpcspe Ta Clang Ta GNU ld 2.17.50 .It powerpcspe Ta Clang Ta GNU ld 2.17.50
.It powerpc64 Ta Clang Ta lld .It powerpc64 Ta Clang Ta lld

View File

@ -79,6 +79,8 @@ __DEFAULT_YES_OPTIONS = \
CCD \ CCD \
CDDL \ CDDL \
CLANG \ CLANG \
CLANG_BOOTSTRAP \
CLANG_IS_CC \
CPP \ CPP \
CROSS_COMPILER \ CROSS_COMPILER \
CRYPT \ CRYPT \
@ -283,13 +285,6 @@ __DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF
.include <bsd.compiler.mk> .include <bsd.compiler.mk>
.if ${__T:Mmips*} == ""
# Clang is installed as the default /usr/bin/cc.
__DEFAULT_YES_OPTIONS+=CLANG_BOOTSTRAP CLANG_IS_CC
.else
# Clang is enabled but we still require an external toolchain.
__DEFAULT_NO_OPTIONS+=CLANG_BOOTSTRAP CLANG_IS_CC
.endif
# In-tree binutils/gcc are older versions without modern architecture support. # In-tree binutils/gcc are older versions without modern architecture support.
.if ${__T} == "aarch64" || ${__T:Mriscv*} != "" .if ${__T} == "aarch64" || ${__T:Mriscv*} != ""
BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GDB BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GDB
@ -302,7 +297,7 @@ __DEFAULT_NO_OPTIONS+=BINUTILS_BOOTSTRAP
.if ${__T:Mriscv*} != "" .if ${__T:Mriscv*} != ""
BROKEN_OPTIONS+=OFED BROKEN_OPTIONS+=OFED
.endif .endif
.if ${__T:Mmips*} != "mips" && ${__T} != "powerpc" && ${__T} != "powerpcspe" .if ${__T} != "powerpc" && ${__T} != "powerpcspe"
__DEFAULT_YES_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD __DEFAULT_YES_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD
.else .else
__DEFAULT_NO_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD __DEFAULT_NO_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD