Index: Makefile.inc1 =================================================================== --- Makefile.inc1 +++ Makefile.inc1 @@ -516,7 +516,7 @@ # cross-tools stage XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - MK_GDB=no MK_TESTS=no + MK_GDB=no MK_TESTS=no MK_LLD_AS_LD=no # kernel-tools stage KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ Index: gnu/usr.bin/binutils/ld/Makefile =================================================================== --- gnu/usr.bin/binutils/ld/Makefile +++ gnu/usr.bin/binutils/ld/Makefile @@ -49,7 +49,9 @@ FILES= ${LDSCRIPTS:S|^|ldscripts/|} FILESDIR= ${SCRIPTDIR} +.if ${MK_LLD_AS_LD} == "no" LINKS= ${BINDIR}/ld.bfd ${BINDIR}/ld +.endif HOST= ${TARGET_TUPLE} LIBSEARCHPATH= \"=/lib\":\"=/usr/lib\" Index: share/mk/src.opts.mk =================================================================== --- share/mk/src.opts.mk +++ share/mk/src.opts.mk @@ -250,6 +250,11 @@ .else __DEFAULT_NO_OPTIONS+=LLVM_LIBUNWIND .endif +.if ${__T} == "aarch64" +__DEFAULT_YES_OPTIONS+=LLD_AS_LD +.else +__DEFAULT_NO_OPTIONS+=LLD_AS_LD +.endif .if ${__T} == "aarch64" || ${__T} == "amd64" __DEFAULT_YES_OPTIONS+=LLD LLDB .else Index: tools/build/options/WITHOUT_LLD_AS_LD =================================================================== --- /dev/null +++ tools/build/options/WITHOUT_LLD_AS_LD @@ -0,0 +1,2 @@ +.\" $FreeBSD$ +Set to use GNU binutils ld as the system linker, instead of LLVM's LLD. Index: tools/build/options/WITH_LLD_AS_LD =================================================================== --- /dev/null +++ tools/build/options/WITH_LLD_AS_LD @@ -0,0 +1,2 @@ +.\" $FreeBSD$ +Set to use LLVM's LLD as the system linker, instead of GNU binutils ld. Index: usr.bin/clang/lld/Makefile =================================================================== --- usr.bin/clang/lld/Makefile +++ usr.bin/clang/lld/Makefile @@ -1,10 +1,15 @@ # $FreeBSD$ +.include + LLVM_SRCS= ${SRCTOP}/contrib/llvm LLD_SRCS= ${LLVM_SRCS}/tools/lld PROG_CXX= ld.lld MAN= +.if ${MK_LLD_AS_LD} != "no" +SYMLINKS= ${PROG_CXX} ${BINDIR}/ld +.endif CFLAGS+= -I${LLD_SRCS}/include CFLAGS+= -I${.OBJDIR}