svn commit: r309142 - in head: . gnu/usr.bin/binutils/ld share/mk tools/build/options usr.bin/clang/lld
Ed Maste
emaste at FreeBSD.org
Fri Nov 25 13:15:30 UTC 2016
Author: emaste
Date: Fri Nov 25 13:15:28 2016
New Revision: 309142
URL: https://svnweb.freebsd.org/changeset/base/309142
Log:
Add WITH_LLD_AS_LD build knob
If set it installs LLD as /usr/bin/ld. LLD (as of version 3.9) is not
capable of linking the world and kernel, but can self-host and link many
substantial applications. GNU ld continues to be used for the world and
kernel build, regardless of how this knob is set.
It is on by default for arm64, and off for all other CPU architectures.
Sponsored by: The FreeBSD Foundation
Added:
head/tools/build/options/WITHOUT_LLD_AS_LD (contents, props changed)
head/tools/build/options/WITH_LLD_AS_LD (contents, props changed)
Modified:
head/Makefile.inc1
head/gnu/usr.bin/binutils/ld/Makefile
head/share/mk/src.opts.mk
head/usr.bin/clang/lld/Makefile
Modified: head/Makefile.inc1
==============================================================================
--- head/Makefile.inc1 Fri Nov 25 10:40:48 2016 (r309141)
+++ head/Makefile.inc1 Fri Nov 25 13:15:28 2016 (r309142)
@@ -516,7 +516,7 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \
# 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" \
Modified: head/gnu/usr.bin/binutils/ld/Makefile
==============================================================================
--- head/gnu/usr.bin/binutils/ld/Makefile Fri Nov 25 10:40:48 2016 (r309141)
+++ head/gnu/usr.bin/binutils/ld/Makefile Fri Nov 25 13:15:28 2016 (r309142)
@@ -49,7 +49,9 @@ CLEANFILES+= ldemul-list.h stringify.sed
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\"
Modified: head/share/mk/src.opts.mk
==============================================================================
--- head/share/mk/src.opts.mk Fri Nov 25 10:40:48 2016 (r309141)
+++ head/share/mk/src.opts.mk Fri Nov 25 13:15:28 2016 (r309142)
@@ -250,6 +250,11 @@ __DEFAULT_YES_OPTIONS+=LLVM_LIBUNWIND
.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
Added: head/tools/build/options/WITHOUT_LLD_AS_LD
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tools/build/options/WITHOUT_LLD_AS_LD Fri Nov 25 13:15:28 2016 (r309142)
@@ -0,0 +1,2 @@
+.\" $FreeBSD$
+Set to use GNU binutils ld as the system linker, instead of LLVM's LLD.
Added: head/tools/build/options/WITH_LLD_AS_LD
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tools/build/options/WITH_LLD_AS_LD Fri Nov 25 13:15:28 2016 (r309142)
@@ -0,0 +1,2 @@
+.\" $FreeBSD$
+Set to use LLVM's LLD as the system linker, instead of GNU binutils ld.
Modified: head/usr.bin/clang/lld/Makefile
==============================================================================
--- head/usr.bin/clang/lld/Makefile Fri Nov 25 10:40:48 2016 (r309141)
+++ head/usr.bin/clang/lld/Makefile Fri Nov 25 13:15:28 2016 (r309142)
@@ -1,10 +1,15 @@
# $FreeBSD$
+.include <src.opts.mk>
+
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}
More information about the svn-src-all
mailing list