From 4a4c9a0f9e3694e2c59a4a6bea6c3350dac4bfc9 Mon Sep 17 00:00:00 2001 From: Alex Richardson Date: Mon, 23 Mar 2020 10:36:32 +0000 Subject: [PATCH] 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 --- Makefile | 10 +++++----- share/man/man7/arch.7 | 18 +++++++++--------- share/mk/src.opts.mk | 11 +++-------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index deee4e46f558..7fe45e00043e 100644 --- a/Makefile +++ b/Makefile @@ -500,13 +500,13 @@ TARGET_ARCHES_riscv?= riscv64 riscv64sf TARGET_ARCHES_${target}?= ${target} .endfor -MAKE_PARAMS_mips?= CROSS_TOOLCHAIN=mips-gcc6 - -TOOLCHAINS_mips= mips-gcc6 - # Remove architectures only supported by external toolchain from # 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}} .for toolchain in ${TOOLCHAINS_${target}} .if !exists(/usr/local/share/toolchains/${toolchain}.mk) diff --git a/share/man/man7/arch.7 b/share/man/man7/arch.7 index 05c61feca0a6..b0c282bd3a80 100644 --- a/share/man/man7/arch.7 +++ b/share/man/man7/arch.7 @@ -302,15 +302,15 @@ This table shows the default tool chain for each architecture. .It armv6 Ta Clang Ta lld .It armv7 Ta Clang Ta lld .It i386 Ta Clang Ta lld -.It mips Ta GCC(1) Ta GNU ld(1) -.It mipsel Ta GCC(1) Ta GNU ld(1) -.It mipselhf Ta GCC(1) Ta GNU ld(1) -.It mipshf Ta GCC(1) Ta GNU ld(1) -.It mipsn32 Ta GCC(1) Ta GNU ld(1) -.It mips64 Ta GCC(1) Ta GNU ld(1) -.It mips64el Ta GCC(1) Ta GNU ld(1) -.It mips64elhf Ta GCC(1) Ta GNU ld(1) -.It mips64hf Ta GCC(1) Ta GNU ld(1) +.It mips Ta Clang Ta lld +.It mipsel Ta Clang Ta lld +.It mipselhf Ta Clang Ta lld +.It mipshf Ta Clang Ta lld +.It mipsn32 Ta Clang Ta lld +.It mips64 Ta Clang Ta lld +.It mips64el Ta Clang Ta lld +.It mips64elhf Ta Clang Ta lld +.It mips64hf Ta Clang Ta lld .It powerpc Ta Clang Ta GNU ld 2.17.50 .It powerpcspe Ta Clang Ta GNU ld 2.17.50 .It powerpc64 Ta Clang Ta lld diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index 13899324ed1c..54730e4beff8 100644 --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -79,6 +79,8 @@ __DEFAULT_YES_OPTIONS = \ CCD \ CDDL \ CLANG \ + CLANG_BOOTSTRAP \ + CLANG_IS_CC \ CPP \ CROSS_COMPILER \ CRYPT \ @@ -283,13 +285,6 @@ __DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF .include -.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. .if ${__T} == "aarch64" || ${__T:Mriscv*} != "" BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GDB @@ -302,7 +297,7 @@ __DEFAULT_NO_OPTIONS+=BINUTILS_BOOTSTRAP .if ${__T:Mriscv*} != "" BROKEN_OPTIONS+=OFED .endif -.if ${__T:Mmips*} != "mips" && ${__T} != "powerpc" && ${__T} != "powerpcspe" +.if ${__T} != "powerpc" && ${__T} != "powerpcspe" __DEFAULT_YES_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD .else __DEFAULT_NO_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD