freebsd-dev/usr.bin/clang/lld/Makefile
Dimitry Andric fd9d16bddb Ensure lld respects the WITH/WITHOUT_SHARED_TOOLCHAIN option
Traditionally, toolchain components such as cc, as, and ld have been
built as static executables.  The WITH_SHARED_TOOLCHAIN option from
src.conf(5) is meant to link these as regular executables, e.g. using
shared libraries.

The build of ld.lld did not yet check this option.  Fix the Makefile so
it will do so now.

Reported by:	Mike Cui <cuicui@gmail.com>
PR:		241257
MFC after:	3 days
2019-10-16 17:11:18 +00:00

109 lines
2.6 KiB
Makefile

# $FreeBSD$
.include <src.opts.mk>
LLVM_SRCS= ${SRCTOP}/contrib/llvm
LLD_SRCS= ${LLVM_SRCS}/tools/lld
PACKAGE= lld
PROG_CXX= ld.lld
# Man page directory
.PATH: ${LLD_SRCS}/docs
.if (!defined(TOOLS_PREFIX) && ${MK_LLD_IS_LD} != "no") || \
(defined(TOOLS_PREFIX) && ${MK_LLD_BOOTSTRAP} != "no")
SYMLINKS= ${PROG_CXX} ${BINDIR}/ld
MLINKS= ld.lld.1 ld.1
.endif
.if ${MK_SHARED_TOOLCHAIN} == "no"
NO_SHARED?= yes
.endif
CFLAGS+= -I${LLD_SRCS}/ELF
CFLAGS+= -I${LLD_SRCS}/include
CFLAGS+= -I${.OBJDIR}
CFLAGS+= -I${OBJTOP}/lib/clang/libllvm
SRCDIR= tools/lld
SRCS+= Common/Args.cpp
SRCS+= Common/ErrorHandler.cpp
SRCS+= Common/Filesystem.cpp
SRCS+= Common/Memory.cpp
SRCS+= Common/Reproduce.cpp
SRCS+= Common/Strings.cpp
SRCS+= Common/TargetOptionsCommandFlags.cpp
SRCS+= Common/Threads.cpp
SRCS+= Common/Version.cpp
SRCS+= ELF/AArch64ErrataFix.cpp
SRCS+= ELF/Arch/AArch64.cpp
SRCS+= ELF/Arch/AMDGPU.cpp
SRCS+= ELF/Arch/ARM.cpp
SRCS+= ELF/Arch/AVR.cpp
SRCS+= ELF/Arch/Hexagon.cpp
SRCS+= ELF/Arch/MSP430.cpp
SRCS+= ELF/Arch/Mips.cpp
SRCS+= ELF/Arch/MipsArchTree.cpp
SRCS+= ELF/Arch/PPC.cpp
SRCS+= ELF/Arch/PPC64.cpp
SRCS+= ELF/Arch/RISCV.cpp
SRCS+= ELF/Arch/SPARCV9.cpp
SRCS+= ELF/Arch/X86.cpp
SRCS+= ELF/Arch/X86_64.cpp
SRCS+= ELF/CallGraphSort.cpp
SRCS+= ELF/DWARF.cpp
SRCS+= ELF/Driver.cpp
SRCS+= ELF/DriverUtils.cpp
SRCS+= ELF/EhFrame.cpp
SRCS+= ELF/ICF.cpp
SRCS+= ELF/InputFiles.cpp
SRCS+= ELF/InputSection.cpp
SRCS+= ELF/LTO.cpp
SRCS+= ELF/LinkerScript.cpp
SRCS+= ELF/MapFile.cpp
SRCS+= ELF/MarkLive.cpp
SRCS+= ELF/OutputSections.cpp
SRCS+= ELF/Relocations.cpp
SRCS+= ELF/ScriptLexer.cpp
SRCS+= ELF/ScriptParser.cpp
SRCS+= ELF/SymbolTable.cpp
SRCS+= ELF/Symbols.cpp
SRCS+= ELF/SyntheticSections.cpp
SRCS+= ELF/Target.cpp
SRCS+= ELF/Thunks.cpp
SRCS+= ELF/Writer.cpp
SRCS+= lib/Core/Error.cpp
SRCS+= lib/Core/File.cpp
SRCS+= lib/Core/LinkingContext.cpp
SRCS+= lib/Core/Reader.cpp
SRCS+= lib/Core/Resolver.cpp
SRCS+= lib/Core/SymbolTable.cpp
SRCS+= tools/lld/lld.cpp
.include "${SRCTOP}/lib/clang/llvm.build.mk"
LIBDEPS+= llvm
.for lib in ${LIBDEPS}
DPADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a
LDADD+= ${OBJTOP}/lib/clang/lib${lib}/lib${lib}.a
.endfor
LLVM_TBLGEN?= llvm-tblgen
INCFILE= Options.inc
TDFILE= ${LLD_SRCS}/ELF/Options.td
GENOPT= -gen-opt-parser-defs
${INCFILE}: ${TDFILE}
${LLVM_TBLGEN} ${GENOPT} -I ${LLVM_SRCS}/include -d ${.TARGET:C/$/.d/} \
-o ${.TARGET} ${TDFILE}
TGHDRS+= ${INCFILE}
DPSRCS+= ${TGHDRS}
CLEANFILES+= ${TGHDRS} ${TGHDRS:C/$/.d/}
LIBADD+= execinfo
LIBADD+= ncursesw
LIBADD+= pthread
LIBADD+= z
.include <bsd.prog.mk>