aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.inc117
-rw-r--r--share/mk/src.opts.mk4
-rw-r--r--tools/build/options/WITHOUT_LLD_BOOTSTRAP5
-rw-r--r--tools/build/options/WITH_LLD_BOOTSTRAP2
4 files changed, 19 insertions, 9 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index 53943e2b191c..56a73dad0653 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -171,7 +171,7 @@ CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
# riscv64-binutils port or package.
.if !make(showconfig)
.if !empty(BROKEN_OPTIONS:MBINUTILS_BOOTSTRAP) && \
- ${MK_LLD_IS_LD} == "no" && \
+ ${MK_LLD_BOOTSTRAP} == "no" && \
!defined(CROSS_BINUTILS_PREFIX)
CROSS_BINUTILS_PREFIX=/usr/local/${TARGET_ARCH}-freebsd/bin/
.if !exists(${CROSS_BINUTILS_PREFIX})
@@ -1665,9 +1665,10 @@ ${_bt}-usr.bin/yacc: ${_bt}-lib/liby
_gensnmptree= usr.sbin/bsnmpd/gensnmptree
.endif
-# We need to build tblgen when we're building clang either as
-# the bootstrap compiler, or as the part of the normal build.
-.if ${MK_CLANG_BOOTSTRAP} != "no" || ${MK_CLANG} != "no"
+# We need to build tblgen when we're building clang or lld, either as
+# bootstrap tools, or as the part of the normal build.
+.if ${MK_CLANG_BOOTSTRAP} != "no" || ${MK_CLANG} != "no" || \
+ ${MK_LLD_BOOTSTRAP} != "no" || ${MK_LLD} != "no"
_clang_tblgen= \
lib/clang/libllvmminimal \
usr.bin/clang/llvm-tblgen \
@@ -1828,9 +1829,6 @@ _elftctools= lib/libelftc \
# cross-build on a FreeBSD 10 host:
_elftctools+= usr.bin/addr2line
.endif
-.if ${MK_LLD_IS_LD} != "no"
-_lld= usr.bin/clang/lld
-.endif
.elif ${TARGET_ARCH} != ${MACHINE_ARCH} && ${MK_ELFTOOLCHAIN_BOOTSTRAP} != "no"
# If cross-building with an external binutils we still need to build strip for
# the target (for at least crunchide).
@@ -1841,6 +1839,11 @@ _elftctools= lib/libelftc \
.if ${MK_CLANG_BOOTSTRAP} != "no"
_clang= usr.bin/clang
+.endif
+.if ${MK_LLD_BOOTSTRAP} != "no"
+_lld= usr.bin/clang/lld
+.endif
+.if ${MK_CLANG_BOOTSTRAP} != "no" || ${MK_LLD_BOOTSTRAP} != "no"
_clang_libs= lib/clang
.endif
.if ${MK_GCC_BOOTSTRAP} != "no"
diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk
index 16c2527de51f..5a77a12e1934 100644
--- a/share/mk/src.opts.mk
+++ b/share/mk/src.opts.mk
@@ -250,9 +250,9 @@ __DEFAULT_YES_OPTIONS+=LLVM_LIBUNWIND
__DEFAULT_NO_OPTIONS+=LLVM_LIBUNWIND
.endif
.if ${__T} == "aarch64"
-__DEFAULT_YES_OPTIONS+=LLD_IS_LD
+__DEFAULT_YES_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD
.else
-__DEFAULT_NO_OPTIONS+=LLD_IS_LD
+__DEFAULT_NO_OPTIONS+=LLD_BOOTSTRAP LLD_IS_LD
.endif
.if ${__T} == "aarch64" || ${__T} == "amd64"
__DEFAULT_YES_OPTIONS+=LLDB
diff --git a/tools/build/options/WITHOUT_LLD_BOOTSTRAP b/tools/build/options/WITHOUT_LLD_BOOTSTRAP
new file mode 100644
index 000000000000..646edd341c35
--- /dev/null
+++ b/tools/build/options/WITHOUT_LLD_BOOTSTRAP
@@ -0,0 +1,5 @@
+.\" $FreeBSD$
+Set to not build the LLD linker during the bootstrap phase of
+the build.
+To be able to build the system, either Binutils or LLD bootstrap must be
+enabled unless an alternate linker is provided via XLD.
diff --git a/tools/build/options/WITH_LLD_BOOTSTRAP b/tools/build/options/WITH_LLD_BOOTSTRAP
new file mode 100644
index 000000000000..4977b9767abf
--- /dev/null
+++ b/tools/build/options/WITH_LLD_BOOTSTRAP
@@ -0,0 +1,2 @@
+.\" $FreeBSD$
+Set to build the LLD linker during the bootstrap phase of the build.