| # This file is licensed under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| load("//llvm:tblgen.bzl", "gentbl") |
| |
| package( |
| default_visibility = ["//visibility:public"], |
| licenses = ["notice"], |
| ) |
| |
| # TODO: Actually compute version info |
| genrule( |
| name = "config_version_gen", |
| outs = ["include/lld/Common/Version.inc"], |
| cmd = "echo '#define LLD_VERSION_STRING \"14.0.0\"' > $@", |
| ) |
| |
| genrule( |
| name = "vcs_version_gen", |
| outs = ["Common/VCSVersion.inc"], |
| cmd = "echo '#undef LLD_REVISION' >> $@\n" + |
| "echo '#undef LLD_REPOSITORY' >> $@\n", |
| ) |
| |
| # See https://github.com/bazelbuild/bazel/issues/13803 |
| cc_library( |
| name = "vcs_version", |
| hdrs = ["Common/VCSVersion.inc"], |
| strip_include_prefix = "Common", |
| ) |
| |
| cc_library( |
| name = "Common", |
| srcs = [":config_version_gen"] + glob(["Common/*.cpp"]), |
| hdrs = glob(["include/lld/Common/*.h"]), |
| includes = ["include"], |
| deps = [ |
| ":vcs_version", |
| "//llvm:CodeGen", |
| "//llvm:Core", |
| "//llvm:Option", |
| "//llvm:Support", |
| "//llvm:Target", |
| ], |
| ) |
| |
| gentbl( |
| name = "elf_options_inc_gen", |
| # See https://github.com/bazelbuild/bazel/issues/13803 |
| strip_include_prefix = "ELF", |
| tbl_outs = [( |
| "-gen-opt-parser-defs", |
| "ELF/Options.inc", |
| )], |
| tblgen = "//llvm:llvm-tblgen", |
| td_file = "ELF/Options.td", |
| td_srcs = [ |
| "//llvm:include/llvm/Option/OptParser.td", |
| ], |
| ) |
| |
| cc_library( |
| name = "ELF", |
| srcs = glob([ |
| "ELF/*.cpp", |
| "ELF/*.h", |
| "ELF/Arch/*.cpp", |
| ]), |
| includes = ["ELF"], |
| textual_hdrs = [ |
| "ELF/Arch/PPCInsns.def", |
| ], |
| deps = [ |
| ":Common", |
| ":elf_options_inc_gen", |
| "//llvm:AllTargetsAsmParsers", |
| "//llvm:AllTargetsCodeGens", |
| "//llvm:AllTargetsDisassemblers", |
| "//llvm:Analysis", |
| "//llvm:BinaryFormat", |
| "//llvm:BitReader", |
| "//llvm:BitWriter", |
| "//llvm:CodeGen", |
| "//llvm:Core", |
| "//llvm:DebugInfoDWARF", |
| "//llvm:Demangle", |
| "//llvm:IPO", |
| "//llvm:LTO", |
| "//llvm:Linker", |
| "//llvm:MC", |
| "//llvm:Object", |
| "//llvm:Option", |
| "//llvm:Passes", |
| "//llvm:Support", |
| "//llvm:TransformUtils", |
| ], |
| ) |
| |
| gentbl( |
| name = "coff_options_inc_gen", |
| # See https://github.com/bazelbuild/bazel/issues/13803 |
| strip_include_prefix = "COFF", |
| tbl_outs = [( |
| "-gen-opt-parser-defs", |
| "COFF/Options.inc", |
| )], |
| tblgen = "//llvm:llvm-tblgen", |
| td_file = "COFF/Options.td", |
| td_srcs = [ |
| "//llvm:include/llvm/Option/OptParser.td", |
| ], |
| ) |
| |
| cc_library( |
| name = "COFF", |
| srcs = glob([ |
| "COFF/*.cpp", |
| "COFF/*.h", |
| ]), |
| includes = ["COFF"], |
| deps = [ |
| ":Common", |
| ":coff_options_inc_gen", |
| "//llvm:AllTargetsAsmParsers", |
| "//llvm:AllTargetsCodeGens", |
| "//llvm:AllTargetsDisassemblers", |
| "//llvm:Analysis", |
| "//llvm:BitReader", |
| "//llvm:BitWriter", |
| "//llvm:Core", |
| "//llvm:DebugInfoPDB", |
| "//llvm:IPO", |
| "//llvm:LTO", |
| "//llvm:LibDriver", |
| "//llvm:Linker", |
| "//llvm:MC", |
| "//llvm:Object", |
| "//llvm:Option", |
| "//llvm:Support", |
| "//llvm:Symbolize", |
| "//llvm:TransformUtils", |
| "//llvm:WindowsManifest", |
| ], |
| ) |
| |
| gentbl( |
| name = "mingw_options_inc_gen", |
| tbl_outs = [( |
| "-gen-opt-parser-defs", |
| "MinGW/Options.inc", |
| )], |
| tblgen = "//llvm:llvm-tblgen", |
| td_file = "MinGW/Options.td", |
| td_srcs = [ |
| "//llvm:include/llvm/Option/OptParser.td", |
| ], |
| ) |
| |
| cc_library( |
| name = "MinGW", |
| srcs = glob([ |
| "MinGW/*.cpp", |
| "MinGW/*.h", |
| ]), |
| includes = ["MinGW"], |
| deps = [ |
| ":Common", |
| ":mingw_options_inc_gen", |
| "//llvm:Option", |
| "//llvm:Support", |
| ], |
| ) |
| |
| cc_library( |
| name = "Core", |
| srcs = glob([ |
| "lib/Core/*.cpp", |
| "lib/Core/*.h", |
| ]), |
| hdrs = glob(["include/lld/Core/*.h"]), |
| deps = [ |
| ":Common", |
| ], |
| ) |
| |
| cc_library( |
| name = "YAML", |
| srcs = glob([ |
| "lib/ReaderWriter/YAML/*.cpp", |
| "lib/ReaderWriter/YAML/*.h", |
| ]), |
| hdrs = ["include/lld/ReaderWriter/YamlContext.h"], |
| deps = [ |
| ":Common", |
| ":Core", |
| "//llvm:Support", |
| ], |
| ) |
| |
| cc_library( |
| name = "MachOOld", |
| srcs = glob([ |
| "lib/ReaderWriter/MachO/*.cpp", |
| "lib/ReaderWriter/MachO/*.h", |
| ]), |
| hdrs = ["include/lld/ReaderWriter/MachOLinkingContext.h"], |
| deps = [ |
| ":Common", |
| ":Core", |
| ":YAML", |
| "//llvm:DebugInfoDWARF", |
| "//llvm:Object", |
| "//llvm:Support", |
| ], |
| ) |
| |
| gentbl( |
| name = "macho_options_inc_gen", |
| # See https://github.com/bazelbuild/bazel/issues/13803 |
| strip_include_prefix = "MachO", |
| tbl_outs = [( |
| "-gen-opt-parser-defs", |
| "MachO/Options.inc", |
| )], |
| tblgen = "//llvm:llvm-tblgen", |
| td_file = "MachO/Options.td", |
| td_srcs = [ |
| "//llvm:include/llvm/Option/OptParser.td", |
| ], |
| ) |
| |
| cc_library( |
| name = "MachO", |
| srcs = glob([ |
| "MachO/**/*.cpp", |
| "MachO/**/*.h", |
| ]), |
| includes = ["MachO"], |
| deps = [ |
| ":Common", |
| ":macho_options_inc_gen", |
| "//libunwind:unwind_headers_only", |
| "//llvm:LTO", |
| ], |
| ) |
| |
| cc_library( |
| name = "ReaderWriter", |
| srcs = glob([ |
| "lib/ReaderWriter/*.cpp", |
| "lib/ReaderWriter/*.h", |
| ]), |
| deps = [ |
| ":Common", |
| ":Core", |
| ":YAML", |
| "//llvm:Object", |
| "//llvm:Support", |
| ], |
| ) |
| |
| gentbl( |
| name = "darwin_driver_options_inc_gen", |
| # See https://github.com/bazelbuild/bazel/issues/13803 |
| strip_include_prefix = "lib/Driver", |
| tbl_outs = [( |
| "-gen-opt-parser-defs", |
| "lib/Driver/DarwinLdOptions.inc", |
| )], |
| tblgen = "//llvm:llvm-tblgen", |
| td_file = "lib/Driver/DarwinLdOptions.td", |
| td_srcs = [ |
| "//llvm:include/llvm/Option/OptParser.td", |
| ], |
| ) |
| |
| cc_library( |
| name = "Driver", |
| srcs = glob([ |
| "lib/Driver/*.cpp", |
| "lib/Driver/*.h", |
| ]), |
| includes = ["lib/Driver"], |
| deps = [ |
| ":Common", |
| ":Core", |
| ":MachOOld", |
| ":ReaderWriter", |
| ":YAML", |
| ":darwin_driver_options_inc_gen", |
| "//llvm:Object", |
| "//llvm:Option", |
| "//llvm:Support", |
| ], |
| ) |
| |
| gentbl( |
| name = "wasm_options_inc_gen", |
| # See https://github.com/bazelbuild/bazel/issues/13803 |
| strip_include_prefix = "wasm", |
| tbl_outs = [( |
| "-gen-opt-parser-defs", |
| "wasm/Options.inc", |
| )], |
| tblgen = "//llvm:llvm-tblgen", |
| td_file = "wasm/Options.td", |
| td_srcs = [ |
| "//llvm:include/llvm/Option/OptParser.td", |
| ], |
| ) |
| |
| cc_library( |
| name = "Wasm", |
| srcs = glob([ |
| "wasm/*.cpp", |
| "wasm/*.h", |
| ]), |
| includes = ["wasm"], |
| deps = [ |
| ":Common", |
| ":wasm_options_inc_gen", |
| "//llvm:AllTargetsAsmParsers", |
| "//llvm:AllTargetsCodeGens", |
| "//llvm:BinaryFormat", |
| "//llvm:Core", |
| "//llvm:LTO", |
| "//llvm:Object", |
| "//llvm:Option", |
| "//llvm:Support", |
| ], |
| ) |
| |
| cc_binary( |
| name = "lld", |
| srcs = glob([ |
| "tools/lld/*.cpp", |
| "tools/lld/*.h", |
| ]), |
| tags = [ |
| "manual", # External dependency (libxml through WindowsManifest) |
| "nobuildkite", # TODO(gcmn): Remote executors don't have libxml |
| ], |
| deps = [ |
| ":COFF", |
| ":Common", |
| ":Core", |
| ":Driver", |
| ":ELF", |
| ":MachOOld", |
| ":MachO", |
| ":MinGW", |
| ":ReaderWriter", |
| ":Wasm", |
| ":YAML", |
| "//llvm:Support", |
| ], |
| ) |
| |
| # These are the required names for lld running under different environs. |
| # |
| # Unix/Linux require that the binary be named "ld.lld". |
| # macOS require that the binary be named "ld64.lld". |
| # Windows require that the binary be named "lld-link". |
| # WebAssembly builds require that the binary be named "wasm-ld". |
| genrule( |
| name = "gen_lld", |
| srcs = [":lld"], |
| outs = [ |
| "ld.lld", |
| "ld64.lld.darwinnew", |
| "ld64.lld", |
| "lld-link", |
| "wasm-ld", |
| ], |
| cmd = |
| "target=$$(basename $<); for n in ld.lld ld64.lld.darwinnew ld64.lld lld-link wasm-ld; do ln -sf $$target $(@D)/$$n; done", |
| output_to_bindir = 1, |
| tags = [ |
| "manual", # External dependency (libxml through WindowsManifest) |
| "nobuildkite", # TODO(gcmn): Remote executors don't have libxml |
| ], |
| ) |