OSDN Git Service

gn build: Add BPF target.
authorPeter Collingbourne <peter@pcc.me.uk>
Wed, 30 Jan 2019 18:04:08 +0000 (18:04 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Wed, 30 Jan 2019 18:04:08 +0000 (18:04 +0000)
Differential Revision: https://reviews.llvm.org/D57436

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352638 91177308-0d34-0410-b5e6-96231b3b80d8

utils/gn/secondary/llvm/lib/Target/BPF/AsmParser/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/lib/Target/BPF/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/lib/Target/BPF/Disassembler/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/lib/Target/BPF/InstPrinter/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/lib/Target/BPF/MCTargetDesc/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/lib/Target/BPF/TargetInfo/BUILD.gn [new file with mode: 0644]
utils/gn/secondary/llvm/lib/Target/targets.gni

diff --git a/utils/gn/secondary/llvm/lib/Target/BPF/AsmParser/BUILD.gn b/utils/gn/secondary/llvm/lib/Target/BPF/AsmParser/BUILD.gn
new file mode 100644 (file)
index 0000000..bc6e7ab
--- /dev/null
@@ -0,0 +1,23 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("BPFGenAsmMatcher") {
+  visibility = [ ":AsmParser" ]
+  args = [ "-gen-asm-matcher" ]
+  td_file = "../BPF.td"
+}
+
+static_library("AsmParser") {
+  output_name = "LLVMBPFAsmParser"
+  deps = [
+    ":BPFGenAsmMatcher",
+    "//llvm/lib/MC",
+    "//llvm/lib/MC/MCParser",
+    "//llvm/lib/Support",
+    "//llvm/lib/Target/BPF/MCTargetDesc",
+    "//llvm/lib/Target/BPF/TargetInfo",
+  ]
+  include_dirs = [ ".." ]
+  sources = [
+    "BPFAsmParser.cpp",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/lib/Target/BPF/BUILD.gn b/utils/gn/secondary/llvm/lib/Target/BPF/BUILD.gn
new file mode 100644 (file)
index 0000000..180ab94
--- /dev/null
@@ -0,0 +1,94 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("BPFGenCallingConv") {
+  visibility = [ ":LLVMBPFCodeGen" ]
+  args = [ "-gen-callingconv" ]
+  td_file = "BPF.td"
+}
+
+tablegen("BPFGenDAGISel") {
+  visibility = [ ":LLVMBPFCodeGen" ]
+  args = [ "-gen-dag-isel" ]
+  td_file = "BPF.td"
+}
+
+tablegen("BPFGenFastISel") {
+  visibility = [ ":LLVMBPFCodeGen" ]
+  args = [ "-gen-fast-isel" ]
+  td_file = "BPF.td"
+}
+
+tablegen("BPFGenGlobalISel") {
+  visibility = [ ":LLVMBPFCodeGen" ]
+  args = [ "-gen-global-isel" ]
+  td_file = "BPF.td"
+}
+
+tablegen("BPFGenMCPseudoLowering") {
+  visibility = [ ":LLVMBPFCodeGen" ]
+  args = [ "-gen-pseudo-lowering" ]
+  td_file = "BPF.td"
+}
+
+tablegen("BPFGenRegisterBank") {
+  visibility = [ ":LLVMBPFCodeGen" ]
+  args = [ "-gen-register-bank" ]
+  td_file = "BPF.td"
+}
+
+static_library("LLVMBPFCodeGen") {
+  deps = [
+    ":BPFGenCallingConv",
+    ":BPFGenDAGISel",
+    ":BPFGenFastISel",
+    ":BPFGenGlobalISel",
+    ":BPFGenMCPseudoLowering",
+    ":BPFGenRegisterBank",
+    "InstPrinter",
+    "MCTargetDesc",
+    "TargetInfo",
+    "//llvm/include/llvm/Config:llvm-config",
+    "//llvm/lib/Analysis",
+    "//llvm/lib/CodeGen",
+    "//llvm/lib/CodeGen/AsmPrinter",
+    "//llvm/lib/CodeGen/GlobalISel",
+    "//llvm/lib/CodeGen/SelectionDAG",
+    "//llvm/lib/IR",
+    "//llvm/lib/MC",
+    "//llvm/lib/Support",
+    "//llvm/lib/Target",
+  ]
+  include_dirs = [ "." ]
+  sources = [
+    "BPFAsmPrinter.cpp",
+    "BPFFrameLowering.cpp",
+    "BPFISelDAGToDAG.cpp",
+    "BPFISelLowering.cpp",
+    "BPFInstrInfo.cpp",
+    "BPFMCInstLower.cpp",
+    "BPFMIChecking.cpp",
+    "BPFMIPeephole.cpp",
+    "BPFRegisterInfo.cpp",
+    "BPFSelectionDAGInfo.cpp",
+    "BPFSubtarget.cpp",
+    "BPFTargetMachine.cpp",
+    "BTFDebug.cpp",
+  ]
+}
+
+# This is a bit different from most build files: Due to this group
+# having the directory's name, "//llvm/lib/Target/BPF" 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("BPF") {
+  deps = [
+    ":LLVMBPFCodeGen",
+    "AsmParser",
+    "Disassembler",
+    "InstPrinter",
+    "MCTargetDesc",
+    "TargetInfo",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/lib/Target/BPF/Disassembler/BUILD.gn b/utils/gn/secondary/llvm/lib/Target/BPF/Disassembler/BUILD.gn
new file mode 100644 (file)
index 0000000..1ee3bc7
--- /dev/null
@@ -0,0 +1,22 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("BPFGenDisassemblerTables") {
+  visibility = [ ":Disassembler" ]
+  args = [ "-gen-disassembler" ]
+  td_file = "../BPF.td"
+}
+
+static_library("Disassembler") {
+  output_name = "LLVMBPFDisassembler"
+  deps = [
+    ":BPFGenDisassemblerTables",
+    "//llvm/lib/MC",
+    "//llvm/lib/MC/MCDisassembler",
+    "//llvm/lib/Support",
+    "//llvm/lib/Target/BPF/MCTargetDesc",
+  ]
+  include_dirs = [ ".." ]
+  sources = [
+    "BPFDisassembler.cpp",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/lib/Target/BPF/InstPrinter/BUILD.gn b/utils/gn/secondary/llvm/lib/Target/BPF/InstPrinter/BUILD.gn
new file mode 100644 (file)
index 0000000..30e2004
--- /dev/null
@@ -0,0 +1,24 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("BPFGenAsmWriter") {
+  visibility = [ ":InstPrinter" ]
+  args = [ "-gen-asm-writer" ]
+  td_file = "../BPF.td"
+}
+
+static_library("InstPrinter") {
+  output_name = "LLVMBPFAsmPrinter"
+  deps = [
+    ":BPFGenAsmWriter",
+    "//llvm/lib/MC",
+    "//llvm/lib/Support",
+
+    # MCTargetDesc depends on InstPrinter, so we can't depend on the full
+    # MCTargetDesc target here: it would form a cycle.
+    "//llvm/lib/Target/BPF/MCTargetDesc:tablegen",
+  ]
+  include_dirs = [ ".." ]
+  sources = [
+    "BPFInstPrinter.cpp",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/lib/Target/BPF/MCTargetDesc/BUILD.gn b/utils/gn/secondary/llvm/lib/Target/BPF/MCTargetDesc/BUILD.gn
new file mode 100644 (file)
index 0000000..843e230
--- /dev/null
@@ -0,0 +1,60 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("BPFGenInstrInfo") {
+  visibility = [ ":tablegen" ]
+  args = [ "-gen-instr-info" ]
+  td_file = "../BPF.td"
+}
+
+tablegen("BPFGenMCCodeEmitter") {
+  visibility = [ ":tablegen" ]
+  args = [ "-gen-emitter" ]
+  td_file = "../BPF.td"
+}
+
+tablegen("BPFGenRegisterInfo") {
+  visibility = [ ":tablegen" ]
+  args = [ "-gen-register-info" ]
+  td_file = "../BPF.td"
+}
+
+tablegen("BPFGenSubtargetInfo") {
+  visibility = [ ":tablegen" ]
+  args = [ "-gen-subtarget" ]
+  td_file = "../BPF.td"
+}
+
+group("tablegen") {
+  visibility = [
+    ":MCTargetDesc",
+    "../InstPrinter",
+    "../TargetInfo",
+  ]
+  public_deps = [
+    ":BPFGenInstrInfo",
+    ":BPFGenMCCodeEmitter",
+    ":BPFGenRegisterInfo",
+    ":BPFGenSubtargetInfo",
+  ]
+}
+
+static_library("MCTargetDesc") {
+  output_name = "LLVMBPFDesc"
+  public_deps = [
+    ":tablegen",
+  ]
+  deps = [
+    "//llvm/lib/MC",
+    "//llvm/lib/MC/MCDisassembler",
+    "//llvm/lib/Support",
+    "//llvm/lib/Target/BPF/InstPrinter",
+    "//llvm/lib/Target/BPF/TargetInfo",
+  ]
+  include_dirs = [ ".." ]
+  sources = [
+    "BPFAsmBackend.cpp",
+    "BPFELFObjectWriter.cpp",
+    "BPFMCCodeEmitter.cpp",
+    "BPFMCTargetDesc.cpp",
+  ]
+}
diff --git a/utils/gn/secondary/llvm/lib/Target/BPF/TargetInfo/BUILD.gn b/utils/gn/secondary/llvm/lib/Target/BPF/TargetInfo/BUILD.gn
new file mode 100644 (file)
index 0000000..1fd264d
--- /dev/null
@@ -0,0 +1,14 @@
+static_library("TargetInfo") {
+  output_name = "LLVMBPFInfo"
+  deps = [
+    "//llvm/lib/Support",
+
+    # MCTargetDesc depends on TargetInfo, so we can't depend on the full
+    # MCTargetDesc target here: it would form a cycle.
+    "//llvm/lib/Target/BPF/MCTargetDesc:tablegen",
+  ]
+  include_dirs = [ ".." ]
+  sources = [
+    "BPFTargetInfo.cpp",
+  ]
+}
index 85055cf..dc17b50 100644 (file)
@@ -22,6 +22,7 @@ if (llvm_targets_to_build == "host") {
   llvm_targets_to_build = [
     "AArch64",
     "ARM",
+    "BPF",
     "PowerPC",
     "WebAssembly",
     "X86",
@@ -32,6 +33,7 @@ if (llvm_targets_to_build == "host") {
 # and remember which targets are built.
 llvm_build_AArch64 = false
 llvm_build_ARM = false
+llvm_build_BPF = false
 llvm_build_PowerPC = false
 llvm_build_WebAssembly = false
 llvm_build_X86 = false
@@ -40,6 +42,8 @@ foreach(target, llvm_targets_to_build) {
     llvm_build_AArch64 = true
   } else if (target == "ARM") {
     llvm_build_ARM = true
+  } else if (target == "BPF") {
+    llvm_build_BPF = true
   } else if (target == "PowerPC") {
     llvm_build_PowerPC = true
   } else if (target == "WebAssembly") {