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
5load("//llvm:tblgen.bzl", "gentbl")
6
7package(
8    default_visibility = ["//visibility:public"],
9    licenses = ["notice"],
10)
11
12cc_test(
13    name = "adt_tests",
14    size = "medium",
15    srcs = glob(
16        [
17            "ADT/*.cpp",
18            "ADT/*.h",
19        ],
20        allow_empty = False,
21    ),
22    shard_count = 20,
23    deps = [
24        "//llvm:Core",
25        "//llvm:Support",
26        "//llvm:TestingSupport",
27        "//llvm:gtest",
28        "//llvm:gtest_main",
29    ],
30)
31
32cc_test(
33    name = "analysis_tests",
34    size = "small",
35    srcs = glob(
36        ["Analysis/*.cpp"],
37        allow_empty = False,
38        exclude = [
39            # TODO: Add this file to the build.
40            "Analysis/TFUtilsTest.cpp",
41        ],
42    ),
43    deps = [
44        "//llvm:Analysis",
45        "//llvm:AsmParser",
46        "//llvm:Core",
47        "//llvm:Support",
48        "//llvm:TestingSupport",
49        "//llvm:TransformUtils",
50        "//llvm:gtest",
51        "//llvm:gtest_main",
52    ],
53)
54
55cc_test(
56    name = "asm_parser_tests",
57    size = "small",
58    srcs = glob(
59        ["AsmParser/*.cpp"],
60        allow_empty = False,
61    ),
62    deps = [
63        "//llvm:AsmParser",
64        "//llvm:Core",
65        "//llvm:Support",
66        "//llvm:gtest",
67        "//llvm:gtest_main",
68    ],
69)
70
71cc_test(
72    name = "bitcode_tests",
73    size = "small",
74    srcs = glob(
75        ["Bitcode/*.cpp"],
76        allow_empty = False,
77    ),
78    deps = [
79        "//llvm:AsmParser",
80        "//llvm:BitReader",
81        "//llvm:BitWriter",
82        "//llvm:Core",
83        "//llvm:Support",
84        "//llvm:gtest",
85        "//llvm:gtest_main",
86    ],
87)
88
89cc_test(
90    name = "bitstream_tests",
91    size = "small",
92    srcs = glob(
93        ["Bitstream/*.cpp"],
94        allow_empty = False,
95    ),
96    deps = [
97        "//llvm:BitstreamReader",
98        "//llvm:BitstreamWriter",
99        "//llvm:Support",
100        "//llvm:gtest",
101        "//llvm:gtest_main",
102    ],
103)
104
105cc_library(
106    name = "codegen_tests_includes",
107    textual_hdrs = glob(
108        ["CodeGen/*.inc"],
109        allow_empty = False,
110    ),
111)
112
113cc_test(
114    name = "codegen_tests",
115    size = "small",
116    srcs = glob(
117        [
118            "CodeGen/*.cpp",
119            "CodeGen/*.h",
120        ],
121        allow_empty = False,
122    ),
123    deps = [
124        ":codegen_tests_includes",
125        "//llvm:AllTargetsAsmParsers",
126        "//llvm:AllTargetsCodeGens",
127        "//llvm:Analysis",
128        "//llvm:AsmParser",
129        "//llvm:BinaryFormat",
130        "//llvm:CodeGen",
131        "//llvm:Core",
132        "//llvm:MC",
133        "//llvm:Passes",
134        "//llvm:Support",
135        "//llvm:Target",
136        "//llvm:TestingSupport",
137        "//llvm:gtest",
138        "//llvm:gtest_main",
139    ],
140)
141
142cc_test(
143    name = "codegen_globalisel_tests",
144    size = "small",
145    srcs = glob(
146        [
147            "CodeGen/GlobalISel/*.cpp",
148            "CodeGen/GlobalISel/*.h",
149        ],
150        allow_empty = False,
151    ),
152    copts = [
153        "$(STACK_FRAME_UNLIMITED)",
154    ],
155    deps = [
156        "//llvm:AllTargetsAsmParsers",
157        "//llvm:AllTargetsCodeGens",
158        "//llvm:CodeGen",
159        "//llvm:Core",
160        "//llvm:FileCheckLib",
161        "//llvm:Support",
162        "//llvm:Target",
163        "//llvm:gtest",
164        "//llvm:gtest_main",
165    ],
166)
167
168cc_test(
169    name = "debuginfo_tests",
170    size = "small",
171    srcs = glob(
172        [
173            "DebugInfo/DWARF/*.cpp",
174            "DebugInfo/DWARF/*.h",
175            # TODO: Re-enable these when they stop crashing.
176            #"DebugInfo/PDB/*.cpp",
177            #"DebugInfo/PDB/*.h",
178        ],
179        allow_empty = False,
180    ),
181    args = [
182        # Skip a test that relies on reading files in a way that doesn't easily
183        # work with Bazel.
184        "--gtest_filter=-NativeSymbolReuseTest.*",
185    ],
186    deps = [
187        "//llvm:AllTargetsAsmParsers",
188        "//llvm:AllTargetsCodeGens",
189        "//llvm:CodeGen",
190        "//llvm:Core",
191        "//llvm:DebugInfoDWARF",
192        "//llvm:DebugInfoPDB",
193        "//llvm:ObjectYAML",
194        "//llvm:Support",
195        "//llvm:TestingSupport",
196        "//llvm:gtest",
197        "//llvm:gtest_main",
198    ],
199)
200
201cc_test(
202    name = "execution_engine_tests",
203    size = "small",
204    srcs = glob(
205        ["ExecutionEngine/*.cpp"],
206        allow_empty = False,
207    ),
208    deps = [
209        "//llvm:AllTargetsCodeGens",
210        "//llvm:AsmParser",
211        "//llvm:Core",
212        "//llvm:ExecutionEngine",
213        "//llvm:Interpreter",
214        "//llvm:Support",
215        "//llvm:gtest",
216        "//llvm:gtest_main",
217    ],
218)
219
220cc_test(
221    name = "execution_engine_mcjit_tests",
222    size = "small",
223    srcs = glob(
224        [
225            "ExecutionEngine/MCJIT/*.cpp",
226            "ExecutionEngine/MCJIT/*.h",
227        ],
228        allow_empty = False,
229    ),
230    copts = [
231        "$(STACK_FRAME_UNLIMITED)",
232    ],
233    deps = [
234        "//llvm:AllTargetsCodeGens",
235        "//llvm:AsmParser",
236        "//llvm:Core",
237        "//llvm:ExecutionEngine",
238        "//llvm:MCJIT",
239        "//llvm:Passes",
240        "//llvm:Support",
241        "//llvm:gtest",
242        "//llvm:gtest_main",
243    ],
244)
245
246cc_test(
247    name = "execution_engine_orc_tests",
248    size = "small",
249    srcs = glob(
250        [
251            "ExecutionEngine/Orc/*.cpp",
252            "ExecutionEngine/Orc/*.h",
253        ],
254        allow_empty = False,
255    ),
256    args = ["--gtest_filter=-ObjectLinkingLayerTest.TestSetProcessAllSections"],
257    deps = [
258        "//llvm:AllTargetsAsmParsers",
259        "//llvm:AllTargetsCodeGens",
260        "//llvm:AsmParser",
261        "//llvm:Core",
262        "//llvm:ExecutionEngine",
263        "//llvm:OrcJIT",
264        "//llvm:Support",
265        "//llvm:TestingSupport",
266        "//llvm:gtest",
267        "//llvm:gtest_main",
268    ],
269)
270
271cc_test(
272    name = "filecheck_tests",
273    size = "small",
274    srcs = glob(
275        ["FileCheck/*.cpp"],
276        allow_empty = False,
277    ),
278    deps = [
279        "//llvm:FileCheckLib",
280        "//llvm:Support",
281        "//llvm:TestingSupport",
282        "//llvm:gtest",
283        "//llvm:gtest_main",
284    ],
285)
286
287cc_test(
288    name = "ir_tests",
289    size = "medium",  # ConstantRangeTest cases may take several seconds each.
290    srcs = glob(
291        [
292            "IR/*.cpp",
293            "IR/*.h",
294            "Support/KnownBitsTest.h",
295        ],
296        allow_empty = False,
297    ),
298    shard_count = 20,
299    deps = [
300        "//llvm:Analysis",
301        "//llvm:AsmParser",
302        "//llvm:BinaryFormat",
303        "//llvm:Core",
304        "//llvm:Passes",
305        "//llvm:Scalar",
306        "//llvm:Support",
307        "//llvm:TestingSupport",
308        "//llvm:config",
309        "//llvm:gtest",
310        "//llvm:gtest_main",
311    ],
312)
313
314cc_test(
315    name = "line_editor_tests",
316    size = "small",
317    srcs = glob(
318        ["LineEditor/*.cpp"],
319        allow_empty = False,
320    ),
321    deps = [
322        "//llvm:LineEditor",
323        "//llvm:Support",
324        "//llvm:gtest",
325        "//llvm:gtest_main",
326    ],
327)
328
329cc_test(
330    name = "frontend_tests",
331    size = "small",
332    srcs = glob(
333        ["Frontend/*.cpp"],
334        allow_empty = False,
335    ),
336    deps = [
337        "//llvm:Analysis",
338        "//llvm:FrontendOpenACC",
339        "//llvm:FrontendOpenMP",
340        "//llvm:Passes",
341        "//llvm:Support",
342        "//llvm:gtest",
343        "//llvm:gtest_main",
344    ],
345)
346
347cc_test(
348    name = "linker_tests",
349    size = "small",
350    srcs = glob(
351        ["Linker/*.cpp"],
352        allow_empty = False,
353    ),
354    deps = [
355        "//llvm:AsmParser",
356        "//llvm:Core",
357        "//llvm:Linker",
358        "//llvm:Support",
359        "//llvm:gtest",
360        "//llvm:gtest_main",
361    ],
362)
363
364cc_test(
365    name = "mc_tests",
366    size = "small",
367    srcs = glob(
368        ["MC/*.cpp"],
369        allow_empty = False,
370    ),
371    deps = [
372        "//llvm:AllTargetsCodeGens",
373        "//llvm:AllTargetsDisassemblers",
374        "//llvm:MC",
375        "//llvm:MCDisassembler",
376        "//llvm:Support",
377        "//llvm:gtest",
378        "//llvm:gtest_main",
379    ],
380)
381
382cc_test(
383    name = "mi_tests",
384    size = "small",
385    srcs = glob(
386        ["MI/*.cpp"],
387        allow_empty = False,
388    ),
389    deps = [
390        "//llvm:AllTargetsAsmParsers",
391        "//llvm:AllTargetsCodeGens",
392        "//llvm:CodeGen",
393        "//llvm:Core",
394        "//llvm:Support",
395        "//llvm:Target",
396        "//llvm:gtest",
397        "//llvm:gtest_main",
398    ],
399)
400
401cc_test(
402    name = "object_tests",
403    size = "small",
404    srcs = glob(
405        ["Object/*.cpp"],
406        allow_empty = False,
407    ),
408    deps = [
409        "//llvm:Object",
410        "//llvm:ObjectYAML",
411        "//llvm:TestingSupport",
412        "//llvm:gtest",
413        "//llvm:gtest_main",
414    ],
415)
416
417cc_test(
418    name = "object_yaml_tests",
419    size = "small",
420    srcs = glob(
421        ["ObjectYAML/*.cpp"],
422        allow_empty = False,
423    ),
424    deps = [
425        "//llvm:DebugInfoCodeView",
426        "//llvm:Object",
427        "//llvm:ObjectYAML",
428        "//llvm:Support",
429        "//llvm:TestingSupport",
430        "//llvm:gtest",
431        "//llvm:gtest_main",
432    ],
433)
434
435gentbl(
436    name = "option_tests_gen",
437    strip_include_prefix = "Option",
438    tbl_outs = [(
439        "-gen-opt-parser-defs",
440        "Option/Opts.inc",
441    )],
442    tblgen = "//llvm:llvm-tblgen",
443    td_file = "Option/Opts.td",
444    td_srcs = [
445        "//llvm:include/llvm/Option/OptParser.td",
446    ],
447)
448
449gentbl(
450    name = "automata_automata_gen",
451    strip_include_prefix = "TableGen",
452    tbl_outs = [(
453        "-gen-automata",
454        "TableGen/AutomataAutomata.inc",
455    )],
456    tblgen = "//llvm:llvm-tblgen",
457    td_file = "TableGen/Automata.td",
458    td_srcs = ["//llvm:common_target_td_sources"] + [
459        "TableGen/Automata.td",
460    ],
461)
462
463gentbl(
464    name = "automata_tables_gen",
465    strip_include_prefix = "TableGen",
466    tbl_outs = [(
467        "-gen-searchable-tables",
468        "TableGen/AutomataTables.inc",
469    )],
470    tblgen = "//llvm:llvm-tblgen",
471    td_file = "TableGen/Automata.td",
472    td_srcs = ["//llvm:common_target_td_sources"] + [
473        "TableGen/Automata.td",
474    ],
475)
476
477cc_test(
478    name = "option_tests",
479    size = "small",
480    srcs = glob(
481        ["Option/*.cpp"],
482        allow_empty = False,
483    ),
484    deps = [
485        ":option_tests_gen",
486        "//llvm:Option",
487        "//llvm:Support",
488        "//llvm:gtest",
489        "//llvm:gtest_main",
490    ],
491)
492
493cc_test(
494    name = "remarks_tests",
495    size = "small",
496    srcs = glob(
497        ["Remarks/*.cpp"],
498        allow_empty = False,
499    ),
500    deps = [
501        "//llvm:BitReader",
502        "//llvm:Remarks",
503        "//llvm:Support",
504        "//llvm:gtest",
505        "//llvm:gtest_main",
506        "//llvm:remark_linker",
507    ],
508)
509
510cc_test(
511    name = "profile_data_tests",
512    size = "small",
513    srcs = glob(
514        ["ProfileData/*.cpp"],
515        allow_empty = False,
516    ),
517    deps = [
518        "//llvm:Core",
519        "//llvm:Coverage",
520        "//llvm:ProfileData",
521        "//llvm:Support",
522        "//llvm:TestingSupport",
523        "//llvm:gtest",
524        "//llvm:gtest_main",
525    ],
526)
527
528cc_test(
529    name = "support_tests",
530    size = "small",
531    srcs = glob(
532        [
533            "Support/*.cpp",
534            "Support/*.h",
535        ],
536        allow_empty = False,
537        exclude = [
538            "Support/ParallelTest.cpp",
539        ],
540    ),
541    args = ["--gtest_filter=-ProgramTest.CreateProcessTrailingSlash"],
542    copts = [
543        "$(STACK_FRAME_UNLIMITED)",
544    ],
545    linkstatic = 1,
546    tags = [
547        "local",  # Not compatible with the sandbox on MacOS
548    ],
549    deps = [
550        "//llvm:AllTargetsCodeGens",
551        "//llvm:BinaryFormat",
552        "//llvm:Core",
553        "//llvm:Support",
554        "//llvm:TestingSupport",
555        "//llvm:config",
556        "//llvm:gtest",
557        "//llvm:gtest_main",
558    ],
559)
560
561cc_test(
562    name = "support_parallel_tests",
563    size = "small",
564    srcs = ["Support/ParallelTest.cpp"],
565    copts = [
566        "$(STACK_FRAME_UNLIMITED)",
567    ],
568    linkstatic = 1,
569    deps = [
570        "//llvm:AllTargetsCodeGens",
571        "//llvm:Support",
572        "//llvm:config",
573        "//llvm:gtest",
574        "//llvm:gtest_main",
575    ],
576)
577
578cc_test(
579    name = "tablegen_tests",
580    size = "small",
581    srcs = glob(
582        [
583            "TableGen/*.cpp",
584        ],
585        allow_empty = False,
586    ),
587    deps = [
588        ":automata_automata_gen",
589        ":automata_tables_gen",
590        "//llvm:Support",
591        "//llvm:TableGen",
592        "//llvm:gtest",
593        "//llvm:gtest_main",
594        "//llvm:tblgen",
595    ],
596)
597
598cc_test(
599    name = "target_aarch64_tests",
600    size = "small",
601    srcs = glob(
602        ["Target/AArch64/*.cpp"],
603        allow_empty = False,
604    ),
605    copts = [
606        "$(STACK_FRAME_UNLIMITED)",
607    ],
608    deps = [
609        "//llvm:AArch64CodeGen",
610        "//llvm:gtest",
611        "//llvm:gtest_main",
612    ],
613)
614
615cc_test(
616    name = "transforms_tests",
617    size = "small",
618    srcs = glob(
619        [
620            "Transforms/IPO/*.cpp",
621            "Transforms/IPO/*.h",
622            "Transforms/Utils/*.cpp",
623        ],
624        allow_empty = False,
625    ),
626    deps = [
627        "//llvm:Analysis",
628        "//llvm:AsmParser",
629        "//llvm:Core",
630        "//llvm:IPO",
631        "//llvm:Support",
632        "//llvm:TestingSupport",
633        "//llvm:TransformUtils",
634        "//llvm:gtest",
635        "//llvm:gtest_main",
636    ],
637)
638
639cc_test(
640    name = "llvm_exegesis_tests",
641    size = "small",
642    srcs = glob(
643        [
644            "tools/llvm-exegesis/*.cpp",
645            "tools/llvm-exegesis/X86/*.cpp",
646            "tools/llvm-exegesis/X86/*.h",
647        ],
648        allow_empty = False,
649    ) + [
650        "tools/llvm-exegesis/Common/AssemblerUtils.h",
651    ],
652    copts = ["-DHAVE_LIBPFM=1"],
653    linkopts = ["-lpfm"],
654    tags = [
655        "manual",  # External dependency (libpfm4)
656        "nobuildkite",  # TODO(chandlerc): Add support for fetching and building libpfm4 and enable this.
657    ],
658    deps = [
659        "//llvm:AllTargetsCodeGens",
660        "//llvm:AllTargetsDisassemblers",
661        "//llvm:Exegesis",
662        "//llvm:MC",
663        "//llvm:MCDisassembler",
664        "//llvm:Support",
665        "//llvm:TestingSupport",
666        "//llvm:gtest",
667        "//llvm:gtest_main",
668    ],
669)
670