--- /dev/null
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LanaiGenAsmMatcher") {
+ visibility = [ ":AsmParser" ]
+ args = [ "-gen-asm-matcher" ]
+ td_file = "../Lanai.td"
+}
+
+static_library("AsmParser") {
+ output_name = "LLVMLanaiAsmParser"
+ deps = [
+ ":LanaiGenAsmMatcher",
+ "//llvm/lib/MC",
+ "//llvm/lib/MC/MCParser",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/Lanai/MCTargetDesc",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "LanaiAsmParser.cpp",
+ ]
+}
--- /dev/null
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LanaiGenCallingConv") {
+ visibility = [ ":LLVMLanaiCodeGen" ]
+ args = [ "-gen-callingconv" ]
+ td_file = "Lanai.td"
+}
+
+tablegen("LanaiGenDAGISel") {
+ visibility = [ ":LLVMLanaiCodeGen" ]
+ args = [ "-gen-dag-isel" ]
+ td_file = "Lanai.td"
+}
+
+static_library("LLVMLanaiCodeGen") {
+ deps = [
+ ":LanaiGenCallingConv",
+ ":LanaiGenDAGISel",
+ "MCTargetDesc",
+ "TargetInfo",
+ "//llvm/include/llvm/Config:llvm-config",
+ "//llvm/lib/Analysis",
+ "//llvm/lib/CodeGen",
+ "//llvm/lib/CodeGen/AsmPrinter",
+ "//llvm/lib/CodeGen/SelectionDAG",
+ "//llvm/lib/IR",
+ "//llvm/lib/MC",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target",
+ ]
+ include_dirs = [ "." ]
+ sources = [
+ "LanaiAsmPrinter.cpp",
+ "LanaiDelaySlotFiller.cpp",
+ "LanaiFrameLowering.cpp",
+ "LanaiInstrInfo.cpp",
+ "LanaiISelDAGToDAG.cpp",
+ "LanaiISelLowering.cpp",
+ "LanaiMachineFunctionInfo.cpp",
+ "LanaiMCInstLower.cpp",
+ "LanaiMemAluCombiner.cpp",
+ "LanaiRegisterInfo.cpp",
+ "LanaiSelectionDAGInfo.cpp",
+ "LanaiSubtarget.cpp",
+ "LanaiTargetMachine.cpp",
+ "LanaiTargetObjectFile.cpp",
+ ]
+}
+
+# This is a bit different from most build files: Due to this group
+# having the directory's name, "//llvm/lib/Target/Lanai" will refer to this
+# target, which pulls in the code in this directory *and all subdirectories*.
+# For most other directories, "//llvm/lib/Foo" only pulls in the code directly
+# in "llvm/lib/Foo". The forwarding targets in //llvm/lib/Target expect this
+# different behavior.
+group("Lanai") {
+ deps = [
+ ":LLVMLanaiCodeGen",
+ "AsmParser",
+ "Disassembler",
+ "MCTargetDesc",
+ "TargetInfo",
+ ]
+}
--- /dev/null
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LanaiGenDisassemblerTables") {
+ visibility = [ ":Disassembler" ]
+ args = [ "-gen-disassembler" ]
+ td_file = "../Lanai.td"
+}
+
+static_library("Disassembler") {
+ output_name = "LLVMLanaiDisassembler"
+ deps = [
+ ":LanaiGenDisassemblerTables",
+ "//llvm/lib/MC/MCDisassembler",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/Lanai/MCTargetDesc",
+ "//llvm/lib/Target/Lanai/TargetInfo",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "LanaiDisassembler.cpp",
+ ]
+}
--- /dev/null
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("LanaiGenAsmWriter") {
+ visibility = [ ":MCTargetDesc" ]
+ args = [ "-gen-asm-writer" ]
+ td_file = "../Lanai.td"
+}
+
+tablegen("LanaiGenInstrInfo") {
+ visibility = [ ":tablegen" ]
+ args = [ "-gen-instr-info" ]
+ td_file = "../Lanai.td"
+}
+
+tablegen("LanaiGenMCCodeEmitter") {
+ visibility = [ ":MCTargetDesc" ]
+ args = [ "-gen-emitter" ]
+ td_file = "../Lanai.td"
+}
+
+tablegen("LanaiGenRegisterInfo") {
+ visibility = [ ":tablegen" ]
+ args = [ "-gen-register-info" ]
+ td_file = "../Lanai.td"
+}
+
+tablegen("LanaiGenSubtargetInfo") {
+ visibility = [ ":tablegen" ]
+ args = [ "-gen-subtarget" ]
+ td_file = "../Lanai.td"
+}
+
+# This should contain tablegen targets generating .inc files included
+# by other targets. .inc files only used by .cpp files in this directory
+# should be in deps on the static_library instead.
+group("tablegen") {
+ visibility = [
+ ":MCTargetDesc",
+ "../TargetInfo",
+ ]
+ public_deps = [
+ ":LanaiGenInstrInfo",
+ ":LanaiGenRegisterInfo",
+ ":LanaiGenSubtargetInfo",
+ ]
+}
+
+static_library("MCTargetDesc") {
+ output_name = "LLVMLanaiDesc"
+ public_deps = [
+ ":tablegen",
+ ]
+ deps = [
+ ":LanaiGenAsmWriter",
+ ":LanaiGenMCCodeEmitter",
+ "//llvm/lib/MC",
+ "//llvm/lib/Support",
+ "//llvm/lib/Target/Lanai/TargetInfo",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "LanaiAsmBackend.cpp",
+ "LanaiELFObjectWriter.cpp",
+ "LanaiInstPrinter.cpp",
+ "LanaiMCAsmInfo.cpp",
+ "LanaiMCCodeEmitter.cpp",
+ "LanaiMCExpr.cpp",
+ "LanaiMCTargetDesc.cpp",
+ ]
+}
--- /dev/null
+static_library("TargetInfo") {
+ output_name = "LLVMLanaiInfo"
+ deps = [
+ "//llvm/lib/IR",
+ "//llvm/lib/Support",
+ ]
+ include_dirs = [ ".." ]
+ sources = [
+ "LanaiTargetInfo.cpp",
+ ]
+}
"AArch64",
"ARM",
"BPF",
+ "Lanai",
"PowerPC",
"WebAssembly",
"X86",