1# This file is licensed under the Apache License v2.0 with LLVM Exceptions. 2# See https://llvm.org/LICENSE.txt for license information. 3# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 4 5load("@bazel_skylib//rules:expand_template.bzl", "expand_template") 6 7package( 8 default_visibility = ["//visibility:public"], 9) 10 11licenses(["notice"]) 12 13genrule( 14 name = "generate_vcs_revision", 15 outs = ["include/VCSVersion.inc"], 16 cmd = "echo '#undef BOLT_REVISION' >> $@\n", 17) 18 19cc_binary( 20 name = "llvm-bolt-heatmap", 21 srcs = glob([ 22 "tools/heatmap/*.cpp", 23 ]), 24 deps = [ 25 ":Profile", 26 ":Rewrite", 27 ":Utils", 28 "//llvm:AllTargetsAsmParsers", 29 "//llvm:AllTargetsDisassemblers", 30 "//llvm:MC", 31 "//llvm:Object", 32 "//llvm:Support", 33 ], 34) 35 36cc_binary( 37 name = "merge-fdata", 38 srcs = glob([ 39 "tools/merge-fdata/*.cpp", 40 ]), 41 deps = [ 42 ":Profile", 43 "//llvm:Support", 44 ], 45) 46 47cc_binary( 48 name = "llvm-bolt", 49 srcs = glob([ 50 "tools/driver/*.cpp", 51 ]), 52 includes = ["include"], 53 deps = [ 54 ":Profile", 55 ":Rewrite", 56 ":RuntimeLibs", 57 ":TargetAArch64", 58 ":TargetX86", 59 ":Utils", 60 "//llvm:AllTargetsAsmParsers", 61 "//llvm:AllTargetsCodeGens", 62 "//llvm:AllTargetsDisassemblers", 63 "//llvm:ExecutionEngine", 64 "//llvm:MC", 65 "//llvm:Object", 66 "//llvm:Support", 67 ], 68) 69 70cc_library( 71 name = "Rewrite", 72 srcs = glob([ 73 "lib/Rewrite/*.cpp", 74 ]), 75 hdrs = glob([ 76 "include/bolt/Rewrite/*.h", 77 ]), 78 includes = ["include"], 79 deps = [ 80 ":Core", 81 ":Passes", 82 ":Profile", 83 ":RuntimeLibs", 84 ":TargetX86", 85 ":Utils", 86 "//llvm:Analysis", 87 "//llvm:BinaryFormat", 88 "//llvm:CodeGen", 89 "//llvm:DWARFLinker", 90 "//llvm:DWP", 91 "//llvm:DebugInfoDWARF", 92 "//llvm:Demangle", 93 "//llvm:JITLink", 94 "//llvm:MC", 95 "//llvm:MCDisassembler", 96 "//llvm:MCParser", 97 "//llvm:Object", 98 "//llvm:OrcShared", 99 "//llvm:Support", 100 "//llvm:ir_headers", 101 ], 102) 103 104expand_template( 105 name = "RuntimeLibraryVariables_inc", 106 out = "include/bolt/RuntimeLibs/RuntimeLibraryVariables.inc", 107 substitutions = { 108 # FIXME this is a total guess 109 "@LLVM_LIBDIR_SUFFIX@": "lib", 110 }, 111 template = "include/bolt/RuntimeLibs/RuntimeLibraryVariables.inc.in", 112) 113 114cc_library( 115 name = "RuntimeLibs", 116 srcs = glob([ 117 "lib/RuntimeLibs/*.cpp", 118 ]), 119 defines = ["CMAKE_INSTALL_FULL_LIBDIR=\\\"\\\""], 120 includes = ["include"], 121 textual_hdrs = glob([ 122 "include/bolt/RuntimeLibs/*.h", 123 ]) + ["include/bolt/RuntimeLibs/RuntimeLibraryVariables.inc"], 124 deps = [ 125 ":Core", 126 ":Passes", 127 ":Utils", 128 "//llvm:Analysis", 129 "//llvm:BinaryFormat", 130 "//llvm:CodeGen", 131 "//llvm:DWP", 132 "//llvm:DebugInfoDWARF", 133 "//llvm:Demangle", 134 "//llvm:MC", 135 "//llvm:MCDisassembler", 136 "//llvm:MCParser", 137 "//llvm:Object", 138 "//llvm:Support", 139 ], 140) 141 142cc_library( 143 name = "ProfileHeaders", 144 hdrs = glob(["include/bolt/Profile/*.h"]), 145 includes = ["include"], 146 visibility = ["//visibility:private"], 147) 148 149cc_library( 150 name = "Profile", 151 srcs = glob([ 152 "lib/Profile/*.cpp", 153 ]), 154 hdrs = glob([ 155 "include/bolt/Profile/*.h", 156 ]), 157 includes = ["include"], 158 deps = [ 159 ":Core", 160 ":Passes", 161 ":Utils", 162 "//llvm:Analysis", 163 "//llvm:BinaryFormat", 164 "//llvm:CodeGen", 165 "//llvm:DebugInfoDWARF", 166 "//llvm:Demangle", 167 "//llvm:ExecutionEngine", 168 "//llvm:MC", 169 "//llvm:MCDisassembler", 170 "//llvm:MCParser", 171 "//llvm:Object", 172 "//llvm:Support", 173 "//llvm:TransformUtils", 174 ], 175) 176 177cc_library( 178 name = "Passes", 179 srcs = glob([ 180 "lib/Passes/*.cpp", 181 ]), 182 hdrs = glob([ 183 "include/bolt/Passes/*.h", 184 ]) + [ 185 # To avoid circular dependency on "Profile". 186 "include/bolt/Profile/BoltAddressTranslation.h", 187 ], 188 includes = ["include"], 189 deps = [ 190 ":Core", 191 ":Utils", 192 "//llvm:Analysis", 193 "//llvm:BinaryFormat", 194 "//llvm:CodeGen", 195 "//llvm:DebugInfoDWARF", 196 "//llvm:Demangle", 197 "//llvm:ExecutionEngine", 198 "//llvm:MC", 199 "//llvm:MCDisassembler", 200 "//llvm:MCParser", 201 "//llvm:Object", 202 "//llvm:Support", 203 "//llvm:Target", 204 "//llvm:TransformUtils", 205 ], 206) 207 208cc_library( 209 name = "TargetX86", 210 srcs = glob([ 211 "lib/Target/X86/*.cpp", 212 ]), 213 hdrs = glob([ 214 "lib/Target/X86/*.h", 215 ]), 216 includes = ["include"], 217 deps = [ 218 ":Core", 219 "//llvm:Analysis", 220 "//llvm:BinaryFormat", 221 "//llvm:CodeGen", 222 "//llvm:DWP", 223 "//llvm:DebugInfoDWARF", 224 "//llvm:Demangle", 225 "//llvm:ExecutionEngine", 226 "//llvm:MC", 227 "//llvm:MCDisassembler", 228 "//llvm:MCParser", 229 "//llvm:Object", 230 "//llvm:Support", 231 "//llvm:X86CommonTableGen", 232 "//llvm:X86UtilsAndDesc", 233 ], 234) 235 236cc_library( 237 name = "TargetAArch64", 238 srcs = glob([ 239 "lib/Target/AArch64/*.cpp", 240 ]), 241 includes = ["include"], 242 deps = [ 243 ":Core", 244 ":Utils", 245 "//llvm:AArch64CommonTableGen", 246 "//llvm:AArch64UtilsAndDesc", 247 "//llvm:Analysis", 248 "//llvm:BinaryFormat", 249 "//llvm:CodeGen", 250 "//llvm:DWP", 251 "//llvm:DebugInfoDWARF", 252 "//llvm:Demangle", 253 "//llvm:ExecutionEngine", 254 "//llvm:MC", 255 "//llvm:MCDisassembler", 256 "//llvm:MCParser", 257 "//llvm:Object", 258 "//llvm:Support", 259 ], 260) 261 262cc_library( 263 name = "Core", 264 srcs = glob([ 265 "lib/Core/*.cpp", 266 ]), 267 hdrs = glob([ 268 "include/bolt/Core/*.h", 269 "include/bolt/RuntimeLibs/*.h", 270 "include/bolt/Passes/*.h", 271 "include/bolt/Rewrite/*.h", 272 ]), 273 includes = ["include"], 274 deps = [ 275 ":ProfileHeaders", 276 ":Utils", 277 "//llvm:Analysis", 278 "//llvm:BinaryFormat", 279 "//llvm:CodeGen", 280 "//llvm:DebugInfoDWARF", 281 "//llvm:Demangle", 282 "//llvm:ExecutionEngine", 283 "//llvm:MC", 284 "//llvm:MCDisassembler", 285 "//llvm:MCParser", 286 "//llvm:Object", 287 "//llvm:ObjectYAML", 288 "//llvm:OrcShared", 289 "//llvm:Support", 290 "//llvm:TargetParser", 291 "//llvm:config", 292 "//llvm:ir_headers", 293 ], 294) 295 296cc_library( 297 name = "Utils", 298 srcs = glob([ 299 "lib/Utils/*.cpp", 300 ]), 301 hdrs = [ 302 "include/VCSVersion.inc", 303 ] + glob([ 304 "include/bolt/Utils/*.h", 305 ]), 306 includes = ["include"], 307 deps = [ 308 "//llvm:Analysis", 309 "//llvm:BinaryFormat", 310 "//llvm:CodeGen", 311 "//llvm:DWP", 312 "//llvm:DebugInfoDWARF", 313 "//llvm:Demangle", 314 "//llvm:ExecutionEngine", 315 "//llvm:MC", 316 "//llvm:MCDisassembler", 317 "//llvm:MCParser", 318 "//llvm:Object", 319 "//llvm:Support", 320 ], 321) 322