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