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