1import("//llvm/utils/TableGen/tablegen.gni")
2
3tablegen("ARMGenCallingConv") {
4  visibility = [ ":LLVMARMCodeGen" ]
5  args = [ "-gen-callingconv" ]
6  td_file = "ARM.td"
7}
8
9tablegen("ARMGenDAGISel") {
10  visibility = [ ":LLVMARMCodeGen" ]
11  args = [ "-gen-dag-isel" ]
12  td_file = "ARM.td"
13}
14
15tablegen("ARMGenFastISel") {
16  visibility = [ ":LLVMARMCodeGen" ]
17  args = [ "-gen-fast-isel" ]
18  td_file = "ARM.td"
19}
20
21tablegen("ARMGenGlobalISel") {
22  visibility = [ ":LLVMARMCodeGen" ]
23  args = [ "-gen-global-isel" ]
24  td_file = "ARM.td"
25}
26
27tablegen("ARMGenMCPseudoLowering") {
28  visibility = [ ":LLVMARMCodeGen" ]
29  args = [ "-gen-pseudo-lowering" ]
30  td_file = "ARM.td"
31}
32
33tablegen("ARMGenRegisterBank") {
34  visibility = [ ":LLVMARMCodeGen" ]
35  args = [ "-gen-register-bank" ]
36  td_file = "ARM.td"
37}
38
39static_library("LLVMARMCodeGen") {
40  deps = [
41    ":ARMGenCallingConv",
42    ":ARMGenDAGISel",
43    ":ARMGenFastISel",
44    ":ARMGenGlobalISel",
45    ":ARMGenMCPseudoLowering",
46    ":ARMGenRegisterBank",
47    "MCTargetDesc",
48    "TargetInfo",
49    "Utils",
50    "//llvm/include/llvm/Config:llvm-config",
51    "//llvm/lib/Analysis",
52    "//llvm/lib/CodeGen",
53    "//llvm/lib/CodeGen/AsmPrinter",
54    "//llvm/lib/CodeGen/GlobalISel",
55    "//llvm/lib/CodeGen/SelectionDAG",
56    "//llvm/lib/IR",
57    "//llvm/lib/MC",
58    "//llvm/lib/Support",
59    "//llvm/lib/Target",
60  ]
61  include_dirs = [ "." ]
62  sources = [
63    "A15SDOptimizer.cpp",
64    "ARMAsmPrinter.cpp",
65    "ARMBaseInstrInfo.cpp",
66    "ARMBaseRegisterInfo.cpp",
67    "ARMBasicBlockInfo.cpp",
68    "ARMCallLowering.cpp",
69    "ARMCallingConv.cpp",
70    "ARMCodeGenPrepare.cpp",
71    "ARMConstantIslandPass.cpp",
72    "ARMConstantPoolValue.cpp",
73    "ARMExpandPseudoInsts.cpp",
74    "ARMFastISel.cpp",
75    "ARMFrameLowering.cpp",
76    "ARMHazardRecognizer.cpp",
77    "ARMISelDAGToDAG.cpp",
78    "ARMISelLowering.cpp",
79    "ARMInstrInfo.cpp",
80    "ARMInstructionSelector.cpp",
81    "ARMLegalizerInfo.cpp",
82    "ARMLoadStoreOptimizer.cpp",
83    "ARMLowOverheadLoops.cpp",
84    "ARMMCInstLower.cpp",
85    "ARMMachineFunctionInfo.cpp",
86    "ARMMacroFusion.cpp",
87    "ARMOptimizeBarriersPass.cpp",
88    "ARMParallelDSP.cpp",
89    "ARMRegisterBankInfo.cpp",
90    "ARMRegisterInfo.cpp",
91    "ARMSelectionDAGInfo.cpp",
92    "ARMSubtarget.cpp",
93    "ARMTargetMachine.cpp",
94    "ARMTargetObjectFile.cpp",
95    "ARMTargetTransformInfo.cpp",
96    "MLxExpansionPass.cpp",
97    "Thumb1FrameLowering.cpp",
98    "Thumb1InstrInfo.cpp",
99    "Thumb2ITBlockPass.cpp",
100    "Thumb2InstrInfo.cpp",
101    "Thumb2SizeReduction.cpp",
102    "ThumbRegisterInfo.cpp",
103  ]
104}
105
106# This is a bit different from most build files: Due to this group
107# having the directory's name, "//llvm/lib/Target/ARM" will refer to this
108# target, which pulls in the code in this directory *and all subdirectories*.
109# For most other directories, "//llvm/lib/Foo" only pulls in the code directly
110# in "llvm/lib/Foo". The forwarding targets in //llvm/lib/Target expect this
111# different behavior.
112group("ARM") {
113  deps = [
114    ":LLVMARMCodeGen",
115    "AsmParser",
116    "Disassembler",
117    "MCTargetDesc",
118    "TargetInfo",
119    "Utils",
120  ]
121}
122