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}
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to