On Thu, 24 Nov 2016 16:16:19 +0100, Patrick Wildt wrote: > 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?
Looks good to me, and the aarch64/arm64 naming thing can always be bikeshed later. 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> >