brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.2 KiB · 1118f5e Raw
298 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("@rules_cc//cc:defs.bzl", "cc_library")6load(7    "//:vars.bzl",8    "LLVM_VERSION",9)10load("//llvm:binary_alias.bzl", "binary_alias")11load("//llvm:driver.bzl", "llvm_driver_cc_binary")12load("//mlir:tblgen.bzl", "gentbl_cc_library")13 14package(15    default_visibility = ["//visibility:public"],16    features = ["layering_check"],17)18 19licenses(["notice"])20 21# TODO: Actually compute version info22genrule(23    name = "config_version_gen",24    outs = ["include/lld/Common/Version.inc"],25    cmd = "echo '#define LLD_VERSION_STRING \"{}\"' > $@".format(LLVM_VERSION),26)27 28genrule(29    name = "vcs_version_gen",30    outs = ["Common/VCSVersion.inc"],31    cmd = "echo '#undef LLD_REVISION' >> $@\n" +32          "echo '#undef LLD_REPOSITORY' >> $@\n",33)34 35# See https://github.com/bazelbuild/bazel/issues/1380336cc_library(37    name = "vcs_version",38    hdrs = ["Common/VCSVersion.inc"],39    strip_include_prefix = "Common",40)41 42cc_library(43    name = "Common",44    srcs = [":config_version_gen"] + glob(["Common/*.cpp"]),45    hdrs = glob(["include/lld/Common/*.h"]),46    includes = ["include"],47    textual_hdrs = glob(["include/lld/Common/*.inc"]),48    deps = [49        ":vcs_version",50        "//llvm:CodeGen",51        "//llvm:Core",52        "//llvm:DebugInfoDWARF",53        "//llvm:Option",54        "//llvm:ProfileData",55        "//llvm:Support",56        "//llvm:Target",57        "//llvm:TargetParser",58        "//llvm:config",59    ],60)61 62gentbl_cc_library(63    name = "elf_options_inc_gen",64    # See https://github.com/bazelbuild/bazel/issues/1380365    strip_include_prefix = "ELF",66    tbl_outs = {"ELF/Options.inc": ["-gen-opt-parser-defs"]},67    tblgen = "//llvm:llvm-tblgen",68    td_file = "ELF/Options.td",69    deps = ["//llvm:OptParserTdFiles"],70)71 72cc_library(73    name = "ELF",74    srcs = glob([75        "ELF/**/*.cpp",76        "ELF/**/*.h",77    ]),78    includes = ["ELF"],79    textual_hdrs = [80        "ELF/Arch/PPCInsns.def",81    ],82    deps = [83        ":Common",84        ":elf_options_inc_gen",85        "//llvm:AllTargetsAsmParsers",86        "//llvm:AllTargetsCodeGens",87        "//llvm:AllTargetsDisassemblers",88        "//llvm:Analysis",89        "//llvm:BinaryFormat",90        "//llvm:BitReader",91        "//llvm:BitWriter",92        "//llvm:CodeGen",93        "//llvm:Core",94        "//llvm:DebugInfoDWARF",95        "//llvm:Demangle",96        "//llvm:IPO",97        "//llvm:LTO",98        "//llvm:Linker",99        "//llvm:MC",100        "//llvm:Object",101        "//llvm:Option",102        "//llvm:Passes",103        "//llvm:Remarks",104        "//llvm:Support",105        "//llvm:TargetParser",106        "//llvm:TransformUtils",107        "//llvm:config",108        "//third-party:zlib",109        "//third-party:zstd",110    ],111)112 113gentbl_cc_library(114    name = "coff_options_inc_gen",115    # See https://github.com/bazelbuild/bazel/issues/13803116    strip_include_prefix = "COFF",117    tbl_outs = {"COFF/Options.inc": ["-gen-opt-parser-defs"]},118    tblgen = "//llvm:llvm-tblgen",119    td_file = "COFF/Options.td",120    deps = ["//llvm:OptParserTdFiles"],121)122 123cc_library(124    name = "COFF",125    srcs = glob([126        "COFF/*.cpp",127        "COFF/*.h",128    ]),129    includes = ["COFF"],130    deps = [131        ":Common",132        ":coff_options_inc_gen",133        "//llvm:AllTargetsAsmParsers",134        "//llvm:AllTargetsCodeGens",135        "//llvm:AllTargetsDisassemblers",136        "//llvm:Analysis",137        "//llvm:BinaryFormat",138        "//llvm:BitReader",139        "//llvm:BitWriter",140        "//llvm:Core",141        "//llvm:DebugInfo",142        "//llvm:DebugInfoCodeView",143        "//llvm:DebugInfoMSF",144        "//llvm:DebugInfoPDB",145        "//llvm:Demangle",146        "//llvm:IPO",147        "//llvm:LTO",148        "//llvm:LibDriver",149        "//llvm:Linker",150        "//llvm:MC",151        "//llvm:Object",152        "//llvm:Option",153        "//llvm:Support",154        "//llvm:Symbolize",155        "//llvm:TargetParser",156        "//llvm:TransformUtils",157        "//llvm:WindowsDriver",158        "//llvm:WindowsManifest",159        "//llvm:config",160    ],161)162 163gentbl_cc_library(164    name = "mingw_options_inc_gen",165    tbl_outs = {"MinGW/Options.inc": ["-gen-opt-parser-defs"]},166    tblgen = "//llvm:llvm-tblgen",167    td_file = "MinGW/Options.td",168    deps = ["//llvm:OptParserTdFiles"],169)170 171cc_library(172    name = "MinGW",173    srcs = glob([174        "MinGW/*.cpp",175    ]),176    includes = ["MinGW"],177    deps = [178        ":Common",179        ":mingw_options_inc_gen",180        "//llvm:Option",181        "//llvm:Support",182        "//llvm:TargetParser",183    ],184)185 186gentbl_cc_library(187    name = "macho_options_inc_gen",188    # See https://github.com/bazelbuild/bazel/issues/13803189    strip_include_prefix = "MachO",190    tbl_outs = {"MachO/Options.inc": ["-gen-opt-parser-defs"]},191    tblgen = "//llvm:llvm-tblgen",192    td_file = "MachO/Options.td",193    deps = ["//llvm:OptParserTdFiles"],194)195 196cc_library(197    name = "MachO",198    srcs = glob([199        "MachO/**/*.cpp",200        "MachO/**/*.h",201    ]),202    includes = ["MachO"],203    deps = [204        ":Common",205        ":macho_options_inc_gen",206        "//libunwind:unwind_headers_only",207        "//llvm:BinaryFormat",208        "//llvm:BitReader",209        "//llvm:BitWriter",210        "//llvm:CGData",211        "//llvm:DebugInfoDWARF",212        "//llvm:Demangle",213        "//llvm:LTO",214        "//llvm:Object",215        "//llvm:Option",216        "//llvm:Support",217        "//llvm:TargetParser",218        "//llvm:TextAPI",219        "//llvm:config",220    ],221)222 223gentbl_cc_library(224    name = "wasm_options_inc_gen",225    # See https://github.com/bazelbuild/bazel/issues/13803226    strip_include_prefix = "wasm",227    tbl_outs = {"wasm/Options.inc": ["-gen-opt-parser-defs"]},228    tblgen = "//llvm:llvm-tblgen",229    td_file = "wasm/Options.td",230    deps = ["//llvm:OptParserTdFiles"],231)232 233cc_library(234    name = "Wasm",235    srcs = glob([236        "wasm/*.cpp",237        "wasm/*.h",238    ]),239    includes = ["wasm"],240    deps = [241        ":Common",242        ":wasm_options_inc_gen",243        "//llvm:AllTargetsAsmParsers",244        "//llvm:AllTargetsCodeGens",245        "//llvm:BinaryFormat",246        "//llvm:BitWriter",247        "//llvm:Core",248        "//llvm:Demangle",249        "//llvm:LTO",250        "//llvm:MC",251        "//llvm:Object",252        "//llvm:Option",253        "//llvm:ProfileData",254        "//llvm:Support",255        "//llvm:TargetParser",256        "//llvm:config",257    ],258)259 260cc_library(261    name = "lld-lib",262    srcs = glob(["tools/lld/*.cpp"]),263    deps = [264        ":COFF",265        ":Common",266        ":ELF",267        ":MachO",268        ":MinGW",269        ":Wasm",270        "//llvm:Support",271        "//llvm:TargetParser",272    ],273)274 275llvm_driver_cc_binary(276    name = "lld",277    deps = [":lld-lib"],278)279 280# These are the required names for lld running under different environs.281#282# Unix/Linux require that the binary be named "ld.lld".283# macOS require that the binary be named "ld64.lld".284# Windows require that the binary be named "lld-link".285# WebAssembly builds require that the binary be named "wasm-ld".286[287    binary_alias(288        name = name,289        binary = ":lld",290    )291    for name in [292        "ld.lld",293        "ld64.lld",294        "lld-link",295        "wasm-ld",296    ]297]298