Hi,
this diff allows us to build clang with AArch64 support. It's based on
the ARM lib Makefiles modified to compile the AArch64 code.
ok?
Patrick
diff --git a/gnu/usr.bin/clang/Makefile.arch b/gnu/usr.bin/clang/Makefile.arch
index b372b68..3883c5e 100644
--- a/gnu/usr.bin/clang/Makefile.arch
+++ b/gnu/usr.bin/clang/Makefile.arch
@@ -6,13 +6,15 @@ LLVM_ARCH= X86
LLVM_ARCH= PowerPC
.elif ${MACHINE_ARCH} == "sparc64"
LLVM_ARCH= Sparc
+.elif ${MACHINE_ARCH} == "aarch64"
+LLVM_ARCH= AArch64
.elif ${MACHINE_ARCH} == "arm"
LLVM_ARCH= ARM
.elif ${MACHINE_ARCH} == "mips64" || ${MACHINE_ARCH} == "mips64el"
LLVM_ARCH= Mips
.endif
-.if !(${LLVM_ARCH} == "X86")
+.if !(${LLVM_ARCH} == "X86" || ${LLVM_ARCH} == "AArch64")
BACKEND_UTILS=
.endif
diff --git a/gnu/usr.bin/clang/include/llvm/AArch64/Makefile
b/gnu/usr.bin/clang/include/llvm/AArch64/Makefile
new file mode 100644
index 0000000..ae5fc03
--- /dev/null
+++ b/gnu/usr.bin/clang/include/llvm/AArch64/Makefile
@@ -0,0 +1,92 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+.include <bsd.own.mk>
+
+LLVM_SRCS= ${.CURDIR}/../../../../../llvm
+
+HDRS= AArch64GenAsmMatcher.inc AArch64GenAsmWriter.inc \
+ AArch64GenAsmWriter1.inc \
+ AArch64GenCallingConv.inc AArch64GenDAGISel.inc \
+ AArch64GenDisassemblerTables.inc AArch64GenFastISel.inc \
+ AArch64GenInstrInfo.inc AArch64GenRegisterInfo.inc \
+ AArch64GenSubtargetInfo.inc \
+ AArch64GenMCCodeEmitter.inc AArch64GenMCPseudoLowering.inc \
+ AArch64GenDisassemblerTables.inc
+
+all: ${HDRS}
+
+install:
+ # Nothing here so far ...
+
+depend:
+ # Nothing here so far ...
+
+clean cleandir:
+ rm -f ${HDRS}
+
+AArch64GenRegisterInfo.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-register-info \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenDisassemblerTables.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-disassembler \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenInstrInfo.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-instr-info \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenAsmWriter.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-asm-writer \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenAsmWriter1.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-asm-writer \
+ -asmwriternum=1 -I${LLVM_SRCS}/include \
+ -I${LLVM_SRCS}/lib/Target/AArch64 -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenAsmMatcher.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-asm-matcher \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenDAGISel.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-dag-isel \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenFastISel.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-fast-isel \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenCallingConv.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-callingconv \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenSubtargetInfo.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-subtarget \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenMCCodeEmitter.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-emitter \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenMCPseudoLowering.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-pseudo-lowering \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+AArch64GenDisassemblerTables.inc: ${LLVM_SRCS}/lib/Target/AArch64/AArch64.td
+ ${.OBJDIR}/../../../llvm-tblgen/llvm-tblgen -gen-disassembler \
+ -I${LLVM_SRCS}/include -I${LLVM_SRCS}/lib/Target/AArch64 \
+ -o ${.TARGET} ${.ALLSRC}
+
+.include <bsd.obj.mk>
diff --git a/gnu/usr.bin/clang/libLLVMAArch64AsmParser/Makefile
b/gnu/usr.bin/clang/libLLVMAArch64AsmParser/Makefile
new file mode 100644
index 0000000..ec8619cb
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMAArch64AsmParser/Makefile
@@ -0,0 +1,21 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+LIB= LLVMAArch64AsmParser
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+= -I${.OBJDIR}/../include/llvm/AArch64 \
+ -I${LLVM_SRCS}/lib/Target/AArch64
+
+.include <bsd.own.mk>
+SRCS= AArch64AsmParser.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Target/AArch64/AsmParser
+
+depend:
+ # Nothing here so far ...
+
+install:
+ # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/libLLVMAArch64AsmPrinter/Makefile
b/gnu/usr.bin/clang/libLLVMAArch64AsmPrinter/Makefile
new file mode 100644
index 0000000..28518a1
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMAArch64AsmPrinter/Makefile
@@ -0,0 +1,21 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+LIB= LLVMAArch64AsmPrinter
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+= -I${.OBJDIR}/../include/llvm/AArch64 \
+ -I${LLVM_SRCS}/lib/Target/AArch64
+
+.include <bsd.own.mk>
+SRCS= AArch64InstPrinter.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Target/AArch64/InstPrinter
+
+depend:
+ # Nothing here so far ...
+
+install:
+ # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/libLLVMAArch64CodeGen/Makefile
b/gnu/usr.bin/clang/libLLVMAArch64CodeGen/Makefile
new file mode 100644
index 0000000..49f8ff2
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMAArch64CodeGen/Makefile
@@ -0,0 +1,48 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+LIB= LLVMAArch64CodeGen
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+= -I${.OBJDIR}/../include/llvm/AArch64 \
+ -I${LLVM_SRCS}/lib/Target/AArch64
+
+.include <bsd.own.mk>
+SRCS= AArch64A57FPLoadBalancing.cpp \
+ AArch64AddressTypePromotion.cpp \
+ AArch64AdvSIMDScalarPass.cpp \
+ AArch64AsmPrinter.cpp \
+ AArch64BranchRelaxation.cpp \
+ AArch64CleanupLocalDynamicTLSPass.cpp \
+ AArch64CollectLOH.cpp \
+ AArch64ConditionalCompares.cpp \
+ AArch64DeadRegisterDefinitionsPass.cpp \
+ AArch64ExpandPseudoInsts.cpp \
+ AArch64FastISel.cpp \
+ AArch64A53Fix835769.cpp \
+ AArch64FrameLowering.cpp \
+ AArch64ConditionOptimizer.cpp \
+ AArch64ISelDAGToDAG.cpp \
+ AArch64ISelLowering.cpp \
+ AArch64InstrInfo.cpp \
+ AArch64LoadStoreOptimizer.cpp \
+ AArch64MCInstLower.cpp \
+ AArch64PromoteConstant.cpp \
+ AArch64PBQPRegAlloc.cpp \
+ AArch64RegisterInfo.cpp \
+ AArch64SelectionDAGInfo.cpp \
+ AArch64StorePairSuppress.cpp \
+ AArch64Subtarget.cpp \
+ AArch64TargetMachine.cpp \
+ AArch64TargetObjectFile.cpp \
+ AArch64TargetTransformInfo.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Target/AArch64
+
+depend:
+ # Nothing here so far ...
+
+install:
+ # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/libLLVMAArch64Desc/Makefile
b/gnu/usr.bin/clang/libLLVMAArch64Desc/Makefile
new file mode 100644
index 0000000..264e7e0
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMAArch64Desc/Makefile
@@ -0,0 +1,29 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+LIB= LLVMAArch64Desc
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+= -I${.OBJDIR}/../include/llvm/AArch64 \
+ -I${LLVM_SRCS}/lib/Target/AArch64
+
+.include <bsd.own.mk>
+SRCS= AArch64AsmBackend.cpp \
+ AArch64ELFObjectWriter.cpp \
+ AArch64ELFStreamer.cpp \
+ AArch64MachObjectWriter.cpp \
+ AArch64MCAsmInfo.cpp \
+ AArch64MCCodeEmitter.cpp \
+ AArch64MCExpr.cpp \
+ AArch64MCTargetDesc.cpp \
+ AArch64TargetStreamer.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Target/AArch64/MCTargetDesc
+
+depend:
+ # Nothing here so far ...
+
+install:
+ # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/libLLVMAArch64Disassembler/Makefile
b/gnu/usr.bin/clang/libLLVMAArch64Disassembler/Makefile
new file mode 100644
index 0000000..fc061bb
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMAArch64Disassembler/Makefile
@@ -0,0 +1,22 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+LIB= LLVMAArch64Disassembler
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+= -I${.OBJDIR}/../include/llvm/AArch64 \
+ -I${LLVM_SRCS}/lib/Target/AArch64
+
+.include <bsd.own.mk>
+SRCS= AArch64Disassembler.cpp \
+ AArch64ExternalSymbolizer.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Target/AArch64/Disassembler
+
+depend:
+ # Nothing here so far ...
+
+install:
+ # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/libLLVMAArch64Info/Makefile
b/gnu/usr.bin/clang/libLLVMAArch64Info/Makefile
new file mode 100644
index 0000000..7afc94e
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMAArch64Info/Makefile
@@ -0,0 +1,21 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+LIB= LLVMAArch64Info
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+= -I${.OBJDIR}/../include/llvm/AArch64 \
+ -I${LLVM_SRCS}/lib/Target/AArch64
+
+.include <bsd.own.mk>
+SRCS= AArch64TargetInfo.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Target/AArch64/TargetInfo
+
+depend:
+ # Nothing here so far ...
+
+install:
+ # Nothing here so far ...
+
+.include <bsd.lib.mk>
diff --git a/gnu/usr.bin/clang/libLLVMAArch64Utils/Makefile
b/gnu/usr.bin/clang/libLLVMAArch64Utils/Makefile
new file mode 100644
index 0000000..4fbb714
--- /dev/null
+++ b/gnu/usr.bin/clang/libLLVMAArch64Utils/Makefile
@@ -0,0 +1,21 @@
+# $OpenBSD: Makefile,v 1.1 2016/09/17 16:43:51 kettenis Exp $
+
+LIB= LLVMAArch64Utils
+NOPIC=
+NOPROFILE=
+
+CPPFLAGS+= -I${.OBJDIR}/../include/llvm/AArch64 \
+ -I${LLVM_SRCS}/lib/Target/AArch64
+
+.include <bsd.own.mk>
+SRCS= AArch64BaseInfo.cpp
+
+.PATH: ${.CURDIR}/../../../llvm/lib/Target/AArch64/Utils
+
+depend:
+ # Nothing here so far ...
+
+install:
+ # Nothing here so far ...
+
+.include <bsd.lib.mk>