xref: /freebsd/usr.bin/clang/lld/Makefile (revision 2e47f35be5dc61945afdbd1a70e8fd505c032c94)
10aa5466eSEd Maste.include <src.opts.mk>
20aa5466eSEd Maste
30b57cec5SDimitry AndricLLVM_BASE=	${SRCTOP}/contrib/llvm-project
40b57cec5SDimitry AndricLLVM_SRCS=	${LLVM_BASE}/llvm
50b57cec5SDimitry AndricLLD_SRCS=	${LLVM_BASE}/lld
6adbee188SEd Maste
78930262bSDimitry AndricPACKAGE=	lld
8adbee188SEd MastePROG_CXX=	ld.lld
9899fb13bSEd Maste# Man page directory
10899fb13bSEd Maste.PATH:		${LLD_SRCS}/docs
11ec4c2adbSBrooks Davis.if !defined(TOOLS_PREFIX) || \
12d74021d6SBryan Drewery    (defined(TOOLS_PREFIX) && ${MK_LLD_BOOTSTRAP} != "no")
130aa5466eSEd MasteSYMLINKS=	${PROG_CXX} ${BINDIR}/ld
1471e8c9b6SEd MasteMLINKS=		ld.lld.1 ld.1
150aa5466eSEd Maste.endif
16adbee188SEd Maste
17fe6060f1SDimitry Andric.include "${SRCTOP}/lib/clang/llvm.pre.mk"
18fe6060f1SDimitry Andric
1924d58133SDimitry AndricCFLAGS+=	-I${LLD_SRCS}/ELF
20adbee188SEd MasteCFLAGS+=	-I${LLD_SRCS}/include
21adbee188SEd MasteCFLAGS+=	-I${.OBJDIR}
22d5e94982SDimitry AndricCFLAGS+=	-I${OBJTOP}/lib/clang/libllvm
23bdd1243dSDimitry AndricCFLAGS+=	-I${SRCTOP}/sys/contrib/zstd/lib
24adbee188SEd Maste
250b57cec5SDimitry AndricSRCDIR=		lld
267bfc2d0fSDimitry AndricSRCS+=		Common/Args.cpp
2704eeddc0SDimitry AndricSRCS+=		Common/CommonLinkerContext.cpp
2856e766afSDimitry AndricSRCS+=		Common/DWARF.cpp
2906c3fb27SDimitry AndricSRCS+=		Common/DriverDispatcher.cpp
307bfc2d0fSDimitry AndricSRCS+=		Common/ErrorHandler.cpp
31390be9fcSDimitry AndricSRCS+=		Common/Filesystem.cpp
327bfc2d0fSDimitry AndricSRCS+=		Common/Memory.cpp
337bfc2d0fSDimitry AndricSRCS+=		Common/Reproduce.cpp
347bfc2d0fSDimitry AndricSRCS+=		Common/Strings.cpp
357bfc2d0fSDimitry AndricSRCS+=		Common/TargetOptionsCommandFlags.cpp
367bfc2d0fSDimitry AndricSRCS+=		Common/Version.cpp
377bfc2d0fSDimitry AndricSRCS+=		ELF/AArch64ErrataFix.cpp
3856e766afSDimitry AndricSRCS+=		ELF/ARMErrataFix.cpp
3924d58133SDimitry AndricSRCS+=		ELF/Arch/AArch64.cpp
4024d58133SDimitry AndricSRCS+=		ELF/Arch/AMDGPU.cpp
4124d58133SDimitry AndricSRCS+=		ELF/Arch/ARM.cpp
4224d58133SDimitry AndricSRCS+=		ELF/Arch/AVR.cpp
4329a348feSDimitry AndricSRCS+=		ELF/Arch/Hexagon.cpp
4406c3fb27SDimitry AndricSRCS+=		ELF/Arch/LoongArch.cpp
4506b606cfSDimitry AndricSRCS+=		ELF/Arch/MSP430.cpp
4624d58133SDimitry AndricSRCS+=		ELF/Arch/Mips.cpp
47edd7eaddSDimitry AndricSRCS+=		ELF/Arch/MipsArchTree.cpp
4824d58133SDimitry AndricSRCS+=		ELF/Arch/PPC.cpp
4924d58133SDimitry AndricSRCS+=		ELF/Arch/PPC64.cpp
5006b606cfSDimitry AndricSRCS+=		ELF/Arch/RISCV.cpp
51a580b014SDimitry AndricSRCS+=		ELF/Arch/SPARCV9.cpp
5274626c16SDimitry AndricSRCS+=		ELF/Arch/SystemZ.cpp
5324d58133SDimitry AndricSRCS+=		ELF/Arch/X86.cpp
5424d58133SDimitry AndricSRCS+=		ELF/Arch/X86_64.cpp
5529a348feSDimitry AndricSRCS+=		ELF/CallGraphSort.cpp
5606b606cfSDimitry AndricSRCS+=		ELF/DWARF.cpp
57adbee188SEd MasteSRCS+=		ELF/Driver.cpp
58adbee188SEd MasteSRCS+=		ELF/DriverUtils.cpp
59adbee188SEd MasteSRCS+=		ELF/EhFrame.cpp
60adbee188SEd MasteSRCS+=		ELF/ICF.cpp
61adbee188SEd MasteSRCS+=		ELF/InputFiles.cpp
62adbee188SEd MasteSRCS+=		ELF/InputSection.cpp
63adbee188SEd MasteSRCS+=		ELF/LTO.cpp
64f8bb7d0fSDimitry AndricSRCS+=		ELF/LinkerScript.cpp
65f8bb7d0fSDimitry AndricSRCS+=		ELF/MapFile.cpp
66adbee188SEd MasteSRCS+=		ELF/MarkLive.cpp
67adbee188SEd MasteSRCS+=		ELF/OutputSections.cpp
68adbee188SEd MasteSRCS+=		ELF/Relocations.cpp
69f8bb7d0fSDimitry AndricSRCS+=		ELF/ScriptLexer.cpp
70adbee188SEd MasteSRCS+=		ELF/ScriptParser.cpp
71adbee188SEd MasteSRCS+=		ELF/SymbolTable.cpp
72adbee188SEd MasteSRCS+=		ELF/Symbols.cpp
731419873dSDimitry AndricSRCS+=		ELF/SyntheticSections.cpp
74adbee188SEd MasteSRCS+=		ELF/Target.cpp
75adbee188SEd MasteSRCS+=		ELF/Thunks.cpp
76adbee188SEd MasteSRCS+=		ELF/Writer.cpp
7706c3fb27SDimitry AndricSRCS+=		lld-driver.cpp
78adbee188SEd MasteSRCS+=		tools/lld/lld.cpp
79adbee188SEd Maste
80826e4397SEd Maste.include "${SRCTOP}/lib/clang/llvm.build.mk"
81adbee188SEd Maste
82adbee188SEd MasteLIBDEPS+=	llvm
83adbee188SEd Maste
84*2e47f35bSDimitry Andric.if defined(TOOLS_PREFIX)
85*2e47f35bSDimitry AndricLIBPRIV=
86*2e47f35bSDimitry AndricLIBEXT=		a
87*2e47f35bSDimitry Andric.else
88*2e47f35bSDimitry AndricLIBPRIV=	private
89*2e47f35bSDimitry AndricLIBEXT=		so
90*2e47f35bSDimitry Andric.endif
91*2e47f35bSDimitry Andric
92adbee188SEd Maste.for lib in ${LIBDEPS}
93*2e47f35bSDimitry AndricDPADD+=		${OBJTOP}/lib/clang/lib${lib}/lib${LIBPRIV}${lib}.${LIBEXT}
94*2e47f35bSDimitry AndricLDADD+=		${OBJTOP}/lib/clang/lib${lib}/lib${LIBPRIV}${lib}.${LIBEXT}
95adbee188SEd Maste.endfor
96adbee188SEd Maste
97d8ed7fa3SDimitry AndricINCFILE=	Options.inc
98d8ed7fa3SDimitry AndricTDFILE=		${LLD_SRCS}/ELF/Options.td
99d8ed7fa3SDimitry AndricGENOPT=		-gen-opt-parser-defs
100d8ed7fa3SDimitry Andric${INCFILE}: ${TDFILE}
101d8ed7fa3SDimitry Andric	${LLVM_TBLGEN} ${GENOPT} -I ${LLVM_SRCS}/include -d ${.TARGET:C/$/.d/} \
102d8ed7fa3SDimitry Andric	    -o ${.TARGET} ${TDFILE}
103d8ed7fa3SDimitry AndricTGHDRS+=	${INCFILE}
104adbee188SEd Maste
105fe6060f1SDimitry AndricDEPENDFILES+=	${TGHDRS:C/$/.d/}
106adbee188SEd MasteDPSRCS+=	${TGHDRS}
107adbee188SEd MasteCLEANFILES+=	${TGHDRS} ${TGHDRS:C/$/.d/}
108adbee188SEd Maste
10931ba4ce8SAlex Richardson.if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING)
110390be9fcSDimitry AndricLIBADD+=	execinfo
111cbc83e37SBaptiste DaroussinLIBADD+=	tinfow
11231ba4ce8SAlex Richardson.endif
113adbee188SEd MasteLIBADD+=	pthread
114adbee188SEd MasteLIBADD+=	z
115bdd1243dSDimitry AndricLIBADD+=	zstd
116adbee188SEd Maste
117adbee188SEd Maste.include <bsd.prog.mk>
118