Skip to content

Commit e5ce1d3

Browse files
committed
[gn] Move write_target_def_file to its own .gni file
1 parent eb7c947 commit e5ce1d3

File tree

2 files changed

+43
-31
lines changed

2 files changed

+43
-31
lines changed

llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import("//llvm/include/llvm/Config/config.gni")
22
import("//llvm/lib/DebugInfo/PDB/enable_dia.gni")
3-
import("//llvm/lib/Target/targets.gni")
43
import("//llvm/lib/Target/targets_with_asm_parsers.gni")
54
import("//llvm/lib/Target/targets_with_disassemblers.gni")
65
import("//llvm/lib/Target/targets_with_exegesis.gni")
76
import("//llvm/lib/Target/targets_with_mcas.gni")
7+
import("//llvm/lib/Target/write_target_def_file.gni")
88
import("//llvm/triples.gni")
99
import("//llvm/utils/gn/build/buildflags.gni")
1010
import("//llvm/utils/gn/build/libs/curl/enable.gni")
@@ -477,65 +477,41 @@ write_cmake_config("llvm-config") {
477477
##############################################################################
478478
# .def files used by llvm/lib/Target
479479

480-
template("write_target_def_file") {
481-
assert(defined(invoker.key), "must set 'key' in $target_name")
482-
assert(defined(invoker.value), "must set 'value' in $target_name")
483-
484-
write_cmake_config(target_name) {
485-
visibility = [ ":write_target_def_files" ]
486-
input = "$target_name.in"
487-
output = "$target_gen_dir/$target_name"
488-
489-
if (defined(invoker.all_targets)) {
490-
all_targets = invoker.all_targets
491-
} else {
492-
all_targets = llvm_targets_to_build
493-
}
494-
495-
# Build something like
496-
# `LLVM_ENUM_ASM_PARSERS=LLVM_ASM_PARSER(ARM)\nLLVM_ASM_PARSER(X86)\n`. Note
497-
# that \n is a literal '\' followed by a literal 'n', not a newline
498-
# character. (write_cmake_config.py replaces that with a real newline).
499-
value = ""
500-
foreach(target, all_targets) {
501-
value = "$value${invoker.value}($target)\n"
502-
}
503-
if (all_targets == []) {
504-
not_needed(invoker, [ "value" ])
505-
}
506-
values = [ "${invoker.key}=$value" ]
507-
}
508-
}
509-
510480
write_target_def_file("AsmParsers.def") {
481+
visibility = [ ":write_target_def_files" ]
511482
key = "LLVM_ENUM_ASM_PARSERS"
512483
value = "LLVM_ASM_PARSER"
513484
all_targets = targets_with_asm_parsers
514485
}
515486

516487
write_target_def_file("AsmPrinters.def") {
488+
visibility = [ ":write_target_def_files" ]
517489
key = "LLVM_ENUM_ASM_PRINTERS"
518490
value = "LLVM_ASM_PRINTER"
519491
}
520492

521493
write_target_def_file("Disassemblers.def") {
494+
visibility = [ ":write_target_def_files" ]
522495
key = "LLVM_ENUM_DISASSEMBLERS"
523496
value = "LLVM_DISASSEMBLER"
524497
all_targets = targets_with_disassemblers
525498
}
526499

527500
write_target_def_file("Targets.def") {
501+
visibility = [ ":write_target_def_files" ]
528502
key = "LLVM_ENUM_TARGETS"
529503
value = "LLVM_TARGET"
530504
}
531505

532506
write_target_def_file("TargetMCAs.def") {
507+
visibility = [ ":write_target_def_files" ]
533508
key = "LLVM_ENUM_TARGETMCAS"
534509
value = "LLVM_TARGETMCA"
535510
all_targets = targets_with_mcas
536511
}
537512

538513
write_target_def_file("TargetExegesis.def") {
514+
visibility = [ ":write_target_def_files" ]
539515
key = "LLVM_ENUM_EXEGESIS"
540516
value = "LLVM_EXEGESIS"
541517
all_targets = targets_with_exegesis
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import("//llvm/lib/Target/targets.gni")
2+
import("//llvm/utils/gn/build/write_cmake_config.gni")
3+
4+
template("write_target_def_file") {
5+
assert(defined(invoker.key), "must set 'key' in $target_name")
6+
assert(defined(invoker.value), "must set 'value' in $target_name")
7+
8+
write_cmake_config(target_name) {
9+
input = "$target_name.in"
10+
output = "$target_gen_dir/$target_name"
11+
12+
if (defined(invoker.all_targets)) {
13+
all_targets = invoker.all_targets
14+
} else {
15+
all_targets = llvm_targets_to_build
16+
}
17+
18+
if (defined(invoker.visibility)) {
19+
visibility = invoker.visibility
20+
}
21+
22+
# Build something like
23+
# `LLVM_ENUM_ASM_PARSERS=LLVM_ASM_PARSER(ARM)\nLLVM_ASM_PARSER(X86)\n`. Note
24+
# that \n is a literal '\' followed by a literal 'n', not a newline
25+
# character. (write_cmake_config.py replaces that with a real newline).
26+
value = ""
27+
foreach(target, all_targets) {
28+
value = "$value${invoker.value}($target)\n"
29+
}
30+
if (all_targets == []) {
31+
not_needed(invoker, [ "value" ])
32+
}
33+
values = [ "${invoker.key}=$value" ]
34+
}
35+
}
36+

0 commit comments

Comments
 (0)