xref: /llvm-project/llvm/utils/gn/secondary/clang-tools-extra/clangd/quality/gen_decision_forest.gni (revision af3c51e3546eccff714ec146fb8daf18177e2028)
1template("gen_decision_forest") {
2  model = invoker.model
3  filename = invoker.filename
4  cpp_class = invoker.cpp_class
5  if (defined(invoker.deps)) {
6    extra_deps = invoker.deps
7  } else {
8    extra_deps = []
9  }
10
11  action("${target_name}Cpp") {
12    script = "//clang-tools-extra/clangd/quality/CompletionModelCodegen.py"
13    outputs = [
14      "$target_gen_dir/$filename.cpp",
15      "$target_gen_dir/$filename.h",
16    ]
17    inputs = [
18      "$model/features.json",
19      "$model/forest.json",
20    ]
21    args = [
22      "--model",
23      rebase_path(model, root_build_dir),
24      "--output_dir",
25      rebase_path(target_gen_dir, root_build_dir),
26      "--filename",
27      filename,
28      "--cpp_class",
29      cpp_class,
30    ]
31  }
32
33  config("${target_name}Config") {
34    cflags = [ "-Wno-unused-label" ]
35  }
36
37  source_set(target_name) {
38    configs += [
39      "//llvm/utils/gn/build:clang_code",
40      ":${target_name}Config",
41    ]
42    deps = [ ":${target_name}Cpp" ] + extra_deps
43    include_dirs = [ "." ]
44    sources = get_target_outputs(":${target_name}Cpp")
45  }
46}
47