brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · 167447d Raw
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