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