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-head mailing list