summaryrefslogtreecommitdiff
path: root/build_extra/flatbuffers/rust/rust_flatbuffer.gni
blob: 4255b21ec01f9b43f2fdb2cd8acf894c291224a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import("//build_extra/rust/rust.gni")

# TODO(ry) "flatbuffer.gni" should be "flatbuffers.gni" we should be consistent
# in our pluralization.
import("//build_extra/flatbuffers/flatbuffer.gni")

template("rust_flatbuffer") {
  action_name = "${target_name}_gen"
  source_set_name = target_name
  compiled_action_foreach(action_name) {
    tool = "$flatbuffers_build_location:flatc"

    sources = invoker.sources
    deps = []
    out_dir = target_gen_dir

    outputs = [
      "$out_dir/{{source_name_part}}_generated.rs",
    ]

    args = [
      "--rust",
      "-o",
      rebase_path(out_dir, root_build_dir),
      "-I",
      rebase_path("//", root_build_dir),
    ]
    args += [ "{{source}}" ]

    # The deps may have steps that have to run before running flatc.
    if (defined(invoker.deps)) {
      deps += invoker.deps
    }
  }

  rust_crate(source_set_name) {
    sources = get_target_outputs(":$action_name")
    source_root = sources[0]
    deps = [
      ":$action_name",
    ]
    extern = [ "//build_extra/flatbuffers/rust:flatbuffers" ]
  }
}