1import("//clang/utils/TableGen/clang_tablegen.gni")
2import("//llvm/utils/gn/build/write_cmake_config.gni")
3import("//llvm/version.gni")
4
5# Version header.
6
7write_cmake_config("version") {
8  input = "Version.inc.in"
9  output = "$target_gen_dir/Version.inc"
10  values = [
11    "CLANG_VERSION=$llvm_version",
12    "CLANG_VERSION_MAJOR=$llvm_version_major",
13    "CLANG_VERSION_MINOR=$llvm_version_minor",
14    "CLANG_VERSION_PATCHLEVEL=$llvm_version_patch",
15  ]
16}
17
18# Diagnostics.
19
20diag_groups = [
21  "Analysis",
22  "AST",
23  "Comment",
24  "Common",
25  "CrossTU",
26  "Driver",
27  "Frontend",
28  "Lex",
29  "Parse",
30  "Refactoring",
31  "Sema",
32  "Serialization",
33]
34foreach(diag_group, diag_groups) {
35  clang_tablegen("Diagnostic${diag_group}Kinds") {
36    args = [
37      "-gen-clang-diags-defs",
38      "-clang-component=${diag_group}",
39    ]
40    td_file = "Diagnostic.td"
41  }
42}
43group("diags_tablegen") {
44  # DiagnosticGroups and DiagnosticIndexName are intentionally not part of this
45  # group.  Much of clang depends on the DiagKinds.inc files transitively,
46  # but almost nothing needs DiagnosticGroups.inc or DiagnosticIndexName.inc.
47  public_deps = []
48  foreach(diag_group, diag_groups) {
49    public_deps += [ ":Diagnostic${diag_group}Kinds" ]
50  }
51}
52
53clang_tablegen("DiagnosticGroups") {
54  args = [ "-gen-clang-diag-groups" ]
55  td_file = "Diagnostic.td"
56}
57
58clang_tablegen("DiagnosticIndexName") {
59  args = [ "-gen-clang-diags-index-name" ]
60  td_file = "Diagnostic.td"
61}
62
63# Attributes
64
65clang_tablegen("AttrList") {
66  args = [ "-gen-clang-attr-list" ]
67  td_file = "Attr.td"
68}
69
70clang_tablegen("AttrSubMatchRulesList") {
71  args = [ "-gen-clang-attr-subject-match-rule-list" ]
72  td_file = "Attr.td"
73}
74
75clang_tablegen("AttrHasAttributeImpl") {
76  args = [ "-gen-clang-attr-has-attribute-impl" ]
77  td_file = "Attr.td"
78}
79
80# ARM CDE, MVE, and NEON.
81
82clang_tablegen("arm_neon") {
83  args = [ "-gen-arm-neon-sema" ]
84}
85
86clang_tablegen("arm_fp16") {
87  args = [ "-gen-arm-neon-sema" ]
88}
89
90clang_tablegen("arm_mve_builtins") {
91  args = [ "-gen-arm-mve-builtin-def" ]
92  td_file = "arm_mve.td"
93}
94
95clang_tablegen("arm_mve_builtin_cg") {
96  args = [ "-gen-arm-mve-builtin-codegen" ]
97  td_file = "arm_mve.td"
98}
99
100clang_tablegen("arm_mve_builtin_sema") {
101  args = [ "-gen-arm-mve-builtin-sema" ]
102  td_file = "arm_mve.td"
103}
104
105clang_tablegen("arm_mve_builtin_aliases") {
106  args = [ "-gen-arm-mve-builtin-aliases" ]
107  td_file = "arm_mve.td"
108}
109
110clang_tablegen("arm_sve_builtins") {
111  args = [ "-gen-arm-sve-builtins" ]
112  td_file = "arm_sve.td"
113}
114
115clang_tablegen("arm_sve_builtin_cg") {
116  args = [ "-gen-arm-sve-builtin-codegen" ]
117  td_file = "arm_sve.td"
118}
119
120clang_tablegen("arm_sve_typeflags") {
121  args = [ "-gen-arm-sve-typeflags" ]
122  td_file = "arm_sve.td"
123}
124
125clang_tablegen("arm_sve_sema_rangechecks") {
126  args = [ "-gen-arm-sve-sema-rangechecks" ]
127  td_file = "arm_sve.td"
128}
129
130clang_tablegen("arm_cde_builtins") {
131  args = [ "-gen-arm-cde-builtin-def" ]
132  td_file = "arm_cde.td"
133}
134
135clang_tablegen("arm_cde_builtin_cg") {
136  args = [ "-gen-arm-cde-builtin-codegen" ]
137  td_file = "arm_cde.td"
138}
139
140clang_tablegen("arm_cde_builtin_sema") {
141  args = [ "-gen-arm-cde-builtin-sema" ]
142  td_file = "arm_cde.td"
143}
144
145clang_tablegen("arm_cde_builtin_aliases") {
146  args = [ "-gen-arm-cde-builtin-aliases" ]
147  td_file = "arm_cde.td"
148}
149
150# RISC-V
151
152clang_tablegen("riscv_vector_builtins") {
153  args = [ "-gen-riscv-vector-builtins" ]
154  td_file = "riscv_vector.td"
155}
156
157clang_tablegen("riscv_vector_builtin_cg") {
158  args = [ "-gen-riscv-vector-builtin-codegen" ]
159  td_file = "riscv_vector.td"
160}
161