blob: 7d67a2f96ce8e71ea17d22c08b3b5d3f7ca5989d [file] [log] [blame]
import("//clang/utils/TableGen/clang_tablegen.gni")
import("//llvm/utils/gn/build/write_cmake_config.gni")
import("//llvm/version.gni")
# Version header.
write_cmake_config("version") {
input = "Version.inc.in"
output = "$target_gen_dir/Version.inc"
values = [
"CLANG_VERSION=$llvm_version",
"CLANG_VERSION_MAJOR=$llvm_version_major",
"CLANG_VERSION_MINOR=$llvm_version_minor",
"CLANG_VERSION_PATCHLEVEL=$llvm_version_patch",
]
}
# Diagnostics.
diag_groups = [
"Analysis",
"AST",
"Comment",
"Common",
"CrossTU",
"Driver",
"Frontend",
"Lex",
"Parse",
"Refactoring",
"Sema",
"Serialization",
]
foreach(diag_group, diag_groups) {
clang_tablegen("Diagnostic${diag_group}Kinds") {
args = [
"-gen-clang-diags-defs",
"-clang-component=${diag_group}",
]
td_file = "Diagnostic.td"
}
}
group("diags_tablegen") {
# DiagnosticGroups and DiagnosticIndexName are intentionally not part of this
# group. Much of clang depends on the DiagKinds.inc files transitively,
# but almost nothing needs DiagnosticGroups.inc or DiagnosticIndexName.inc.
public_deps = []
foreach(diag_group, diag_groups) {
public_deps += [ ":Diagnostic${diag_group}Kinds" ]
}
}
clang_tablegen("DiagnosticGroups") {
args = [ "-gen-clang-diag-groups" ]
td_file = "Diagnostic.td"
}
clang_tablegen("DiagnosticIndexName") {
args = [ "-gen-clang-diags-index-name" ]
td_file = "Diagnostic.td"
}
# Attributes
clang_tablegen("AttrList") {
args = [
"-gen-clang-attr-list",
"-I",
rebase_path("../..", root_out_dir),
]
td_file = "Attr.td"
}
clang_tablegen("AttrSubMatchRulesList") {
args = [
"-gen-clang-attr-subject-match-rule-list",
"-I",
rebase_path("../..", root_out_dir),
]
td_file = "Attr.td"
}
clang_tablegen("AttrHasAttributeImpl") {
args = [
"-gen-clang-attr-has-attribute-impl",
"-I",
rebase_path("../..", root_out_dir),
]
td_file = "Attr.td"
}
# Misc
clang_tablegen("arm_neon") {
args = [ "-gen-arm-neon-sema" ]
}
clang_tablegen("arm_fp16") {
args = [ "-gen-arm-neon-sema" ]
}