Hi,

for arm64 our goal is to use lld.  Even though we really need lld 4.0,
which is not yet released, it is already a good start to have lld 3.9.1
make infrastructure available.  This diff adds the neccesary Makefiles
and modified lld to not use Mach-O/COFF (so that we don't need those
libraries as well).

ok?

Patrick

diff --git a/gnu/llvm/tools/lld/tools/lld/lld.cpp 
b/gnu/llvm/tools/lld/tools/lld/lld.cpp
index 8805e02e8c4..0623b17c8b8 100644
--- a/gnu/llvm/tools/lld/tools/lld/lld.cpp
+++ b/gnu/llvm/tools/lld/tools/lld/lld.cpp
@@ -104,10 +104,12 @@ int main(int Argc, const char **Argv) {
   switch (parseFlavor(Args)) {
   case Gnu:
     return !elf::link(Args);
+#ifndef __OpenBSD__
   case WinLink:
     return !coff::link(Args);
   case Darwin:
     return !mach_o::link(Args);
+#endif
   default:
     die("lld is a generic driver.\n"
         "Invoke ld.lld (Unix), ld (Mac) or lld-link (Windows) instead.");
diff --git a/gnu/usr.bin/clang/Makefile b/gnu/usr.bin/clang/Makefile
index 3fe54e8030f..f8a1dbebe0c 100644
--- a/gnu/usr.bin/clang/Makefile
+++ b/gnu/usr.bin/clang/Makefile
@@ -41,6 +41,8 @@ SUBDIR+=libLLVMProfileData
 SUBDIR+=libLLVMCoverage
 SUBDIR+=libLLVMDebugInfoCodeView
 SUBDIR+=libLLVMGlobalISel
+SUBDIR+=libLLVMLTO
+SUBDIR+=libLLVMPasses
 
 .if ${LLVM_ARCH} != ""
 SUBDIR+=include/llvm/${LLVM_ARCH}
@@ -70,5 +72,11 @@ SUBDIR+=libclangFrontendTool
 
 SUBDIR+=clang
 
+SUBDIR+=liblldConfig
+SUBDIR+=liblldCore
+SUBDIR+=liblldELF
+
+SUBDIR+=lld
+
 .include <bsd.obj.mk>
 .include <bsd.subdir.mk>
diff --git a/gnu/usr.bin/clang/include/lld/Config/Version.inc 
b/gnu/usr.bin/clang/include/lld/Config/Version.inc
new file mode 100644
index 00000000000..b13178ffaa5
--- /dev/null
+++ b/gnu/usr.bin/clang/include/lld/Config/Version.inc
@@ -0,0 +1,5 @@
+/*     $OpenBSD: Version.inc,v 1.2 2017/01/14 20:12:41 patrick Exp $ */
+
+#define        LLD_VERSION             3.9.1
+#define        LLD_VERSION_MAJOR               3
+#define        LLD_VERSION_MINOR               9
diff --git a/gnu/usr.bin/clang/libLLVMLTO/Makefile 
b/gnu/usr.bin/clang/libLLVMLTO/Makefile
new file mode 100644
index 00000000000..d2ee9ead2e4
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMLTO/Makefile
@@ -0,0 +1,24 @@
+# $OpenBSD: Makefile,v 1.2 2017/01/14 20:12:41 patrick Exp $
+
+LIB=   LLVMLTO
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+=     -I${LLVM_SRCS}/include/llvm/LTO
+
+.include <bsd.own.mk>
+SRCS=  LTO.cpp \
+       LTOModule.cpp \
+       LTOCodeGenerator.cpp \
+       UpdateCompilerUsed.cpp \
+       ThinLTOCodeGenerator.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/LTO
+
+depend:
+       # Nothing here so far ...
+
+install:
+       # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/libLLVMPasses/Makefile 
b/gnu/usr.bin/clang/libLLVMPasses/Makefile
new file mode 100644
index 00000000000..8edb7f71c4d
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMPasses/Makefile
@@ -0,0 +1,20 @@
+# $OpenBSD: Makefile,v 1.2 2017/01/14 20:12:41 patrick Exp $
+
+LIB=   LLVMPasses
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+=     -I${LLVM_SRCS}/include/llvm/Passes
+
+.include <bsd.own.mk>
+SRCS=  PassBuilder.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Passes
+
+depend:
+       # Nothing here so far ...
+
+install:
+       # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/liblldConfig/Makefile 
b/gnu/usr.bin/clang/liblldConfig/Makefile
new file mode 100644
index 00000000000..1ceb93e66a9
--- /dev/null
+++ b/gnu/usr.bin/clang/liblldConfig/Makefile
@@ -0,0 +1,19 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/05 10:56:50 pascal Exp $
+
+LIB=   lldConfig
+NOPROFILE=
+
+CPPFLAGS+=     -I${LLVM_SRCS}/tools/lld/include
+
+.include <bsd.own.mk>
+SRCS=  Version.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/tools/lld/lib/Config
+
+depend:
+       # Nothing here so far ...
+
+install:
+       # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/liblldCore/Makefile 
b/gnu/usr.bin/clang/liblldCore/Makefile
new file mode 100644
index 00000000000..b35185dc8f0
--- /dev/null
+++ b/gnu/usr.bin/clang/liblldCore/Makefile
@@ -0,0 +1,26 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/05 10:56:50 pascal Exp $
+
+LIB=   lldCore
+NOPROFILE=
+
+CPPFLAGS+=     -I${LLVM_SRCS}/tools/lld/include
+
+.include <bsd.own.mk>
+SRCS=  DefinedAtom.cpp \
+       Error.cpp \
+       File.cpp \
+       LinkingContext.cpp \
+       Reader.cpp \
+       Resolver.cpp \
+       SymbolTable.cpp \
+       Writer.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/tools/lld/lib/Core
+
+depend:
+       # Nothing here so far ...
+
+install:
+       # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/liblldELF/Makefile 
b/gnu/usr.bin/clang/liblldELF/Makefile
new file mode 100644
index 00000000000..cc56bf0a8f3
--- /dev/null
+++ b/gnu/usr.bin/clang/liblldELF/Makefile
@@ -0,0 +1,45 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/05 10:56:50 pascal Exp $
+
+LIB=   lldELF
+NOPROFILE=
+
+CPPFLAGS+=     -I${LLVM_SRCS}/tools/lld/include
+
+.include <bsd.own.mk>
+SRCS=  Driver.cpp \
+       DriverUtils.cpp \
+       EhFrame.cpp \
+       Error.cpp \
+       ICF.cpp \
+       InputFiles.cpp \
+       InputSection.cpp \
+       LinkerScript.cpp \
+       LTO.cpp \
+       MarkLive.cpp \
+       OutputSections.cpp \
+       Relocations.cpp \
+       ScriptParser.cpp \
+       Strings.cpp \
+       SymbolListFile.cpp \
+       SymbolTable.cpp \
+       Symbols.cpp \
+       Target.cpp \
+       Thunks.cpp \
+       Writer.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/tools/lld/ELF
+
+Driver.o: Options.inc
+
+Options.inc: Options.td
+       ${.OBJDIR}/../llvm-tblgen/llvm-tblgen -gen-opt-parser-defs \
+               -I ${LLVM_SRCS}/include \
+               -o ${.TARGET} ${.ALLSRC}
+
+depend:
+       # Nothing here so far ...
+
+install:
+       # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/lld/Makefile b/gnu/usr.bin/clang/lld/Makefile
new file mode 100644
index 00000000000..286a4ab5eb9
--- /dev/null
+++ b/gnu/usr.bin/clang/lld/Makefile
@@ -0,0 +1,59 @@
+# $OpenBSD: Makefile,v 1.2 2017/01/14 20:12:41 patrick Exp $
+
+NOMAN=
+PROG=  lld
+BINDIR=        /usr/bin
+SRCS=  lld.cpp
+
+LDADD+=        -ltermlib
+DPADD+=        ${LIBTERMLIB}
+
+CPPFLAGS+=     ${CLANG_INCLUDES}
+CPPFLAGS+=     -I${.CURDIR}/../../../llvm/tools/lld/include
+
+.PATH: ${.CURDIR}/../../../llvm/tools/lld/tools/lld
+
+depend:
+       # Nothing here so far ...
+
+LLVM_LIBDEPS=  lldCore \
+               lldELF \
+               lldConfig \
+               LLVMLTO \
+               LLVMPasses \
+               LLVMOption \
+               LLVMObjCARCOpts \
+               LLVMipo \
+               LLVMVectorize \
+               LLVMLinker \
+               LLVMIRReader \
+               LLVMAsmParser \
+               ${BACKEND_ASMPARSER} \
+               ${BACKEND_CODEGEN} \
+               LLVMSelectionDAG \
+               LLVMAsmPrinter \
+               LLVMCodeGen \
+               LLVMTarget \
+               LLVMScalarOpts \
+               LLVMInstCombine \
+               LLVMInstrumentation \
+               LLVMProfileData \
+               LLVMCoverage \
+               LLVMDebugInfoCodeView \
+               LLVMGlobalISel \
+               LLVMTransformUtils \
+               LLVMBitWriter \
+               LLVMAnalysis \
+               ${BACKEND_DESC} \
+               LLVMObject \
+               LLVMMCParser \
+               LLVMBitReader \
+               LLVMMCDisassembler \
+               ${BACKEND_INFO} \
+               ${BACKEND_ASMPRINTER} \
+               LLVMMC \
+               ${BACKEND_UTILS} \
+               LLVMCore \
+               LLVMSupport
+
+.include <bsd.prog.mk>

Reply via email to