Skip to content

Commit d9b4165

Browse files
GMNGeoffreymemfrob
authored andcommitted
[Bazel] Derive targets from file presence as in CMake build
This makes the logic used to determine if targets have the given features the same as is used in CMake. Incidentally, it enables these features for the targets added in https://reviews.llvm.org/D106921 which were missing because this was previously a hardcoded list. Reviewed By: chandlerc Differential Revision: https://reviews.llvm.org/D107019
1 parent 9460f8a commit d9b4165

File tree

1 file changed

+26
-35
lines changed

1 file changed

+26
-35
lines changed

utils/bazel/llvm-project-overlay/llvm/BUILD.bazel

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -33,30 +33,27 @@ enum_targets_gen(
3333
targets = llvm_targets,
3434
)
3535

36+
# Enabled targets with ASM printers.
37+
llvm_target_asm_printers = [
38+
t
39+
for t in llvm_targets
40+
if glob(["lib/Target/{}/*AsmPrinter.cpp".format(t)])
41+
]
42+
3643
enum_targets_gen(
3744
name = "asm_printers_def_gen",
3845
src = "include/llvm/Config/AsmPrinters.def.in",
3946
out = "include/llvm/Config/AsmPrinters.def",
4047
macro_name = "ASM_PRINTER",
41-
targets = llvm_targets,
48+
targets = llvm_target_asm_printers,
4249
)
4350

44-
# TODO(gcmn): We should derive these lists from the presence of CMakeLists.txt
45-
# files, as is done in the CMake build.
46-
# List of targets with ASM parsers, filtered to our list of overall targets.
47-
llvm_target_asm_parsers = [t for t in [
48-
"AArch64",
49-
"AMDGPU",
50-
"ARM",
51-
"BPF",
52-
"Hexagon",
53-
"Lanai",
54-
"PowerPC",
55-
"RISCV",
56-
"Sparc",
57-
"WebAssembly",
58-
"X86",
59-
] if t in llvm_targets]
51+
# Enabled targets with ASM parsers.
52+
llvm_target_asm_parsers = [
53+
t
54+
for t in llvm_targets
55+
if glob(["lib/Target/{}/AsmParser/CMakeLists.txt".format(t)])
56+
]
6057

6158
enum_targets_gen(
6259
name = "asm_parsers_def_gen",
@@ -66,20 +63,12 @@ enum_targets_gen(
6663
targets = llvm_target_asm_parsers,
6764
)
6865

69-
# List of targets with disassemblers, filtered to our list of overall targets.
70-
llvm_target_disassemblers = [t for t in [
71-
"AArch64",
72-
"AMDGPU",
73-
"ARM",
74-
"BPF",
75-
"Hexagon",
76-
"Lanai",
77-
"PowerPC",
78-
"RISCV",
79-
"Sparc",
80-
"WebAssembly",
81-
"X86",
82-
] if t in llvm_targets]
66+
# Enabled targets with disassemblers.
67+
llvm_target_disassemblers = [
68+
t
69+
for t in llvm_targets
70+
if glob(["lib/Target/{}/Disassembler/CMakeLists.txt".format(t)])
71+
]
8372

8473
enum_targets_gen(
8574
name = "disassemblers_def_gen",
@@ -89,10 +78,12 @@ enum_targets_gen(
8978
targets = llvm_target_disassemblers,
9079
)
9180

92-
# List of targets with mca, filtered to our list of overall targets.
93-
llvm_target_mcas = [t for t in [
94-
"AMDGPU",
95-
] if t in llvm_targets]
81+
# Enabled targets with MCA.
82+
llvm_target_mcas = [
83+
t
84+
for t in llvm_targets
85+
if glob(["lib/Target/{}/MCA/CMakeLists.txt".format(t)])
86+
]
9687

9788
enum_targets_gen(
9889
name = "target_mca_def_gen",

0 commit comments

Comments
 (0)