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>
>