Index: llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/AsmParser/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/AsmParser/BUILD.gn +++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/AsmParser/BUILD.gn @@ -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", + ] +} Index: llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/BUILD.gn +++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/BUILD.gn @@ -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", + ] +} Index: llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/Disassembler/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/Disassembler/BUILD.gn +++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/Disassembler/BUILD.gn @@ -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", + ] +} Index: llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/InstPrinter/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/InstPrinter/BUILD.gn +++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/InstPrinter/BUILD.gn @@ -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", + ] +} Index: llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/MCTargetDesc/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/MCTargetDesc/BUILD.gn +++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/MCTargetDesc/BUILD.gn @@ -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", + ] +} Index: llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/TargetInfo/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/TargetInfo/BUILD.gn +++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/BPF/TargetInfo/BUILD.gn @@ -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: llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni =================================================================== --- llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni +++ llvm/trunk/utils/gn/secondary/llvm/lib/Target/targets.gni @@ -22,6 +22,7 @@ llvm_targets_to_build = [ "AArch64", "ARM", + "BPF", "PowerPC", "WebAssembly", "X86", @@ -32,6 +33,7 @@ # 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 @@ 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") {