xref: /aosp_15_r20/external/openscreen/osp/msgs/BUILD.gn (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1*3f982cf4SFabien Sanglard# Copyright 2018 The Chromium Authors. All rights reserved.
2*3f982cf4SFabien Sanglard# Use of this source code is governed by a BSD-style license that can be
3*3f982cf4SFabien Sanglard# found in the LICENSE file.
4*3f982cf4SFabien Sanglard
5*3f982cf4SFabien Sanglardsource_set("msgs") {
6*3f982cf4SFabien Sanglard  sources = [
7*3f982cf4SFabien Sanglard    target_gen_dir + "/osp_messages.cc",
8*3f982cf4SFabien Sanglard    target_gen_dir + "/osp_messages.h",
9*3f982cf4SFabien Sanglard  ]
10*3f982cf4SFabien Sanglard
11*3f982cf4SFabien Sanglard  public_deps = [ ":cddl_gen" ]
12*3f982cf4SFabien Sanglard  deps = [
13*3f982cf4SFabien Sanglard    "../../third_party/abseil",
14*3f982cf4SFabien Sanglard    "../../third_party/tinycbor",
15*3f982cf4SFabien Sanglard  ]
16*3f982cf4SFabien Sanglard
17*3f982cf4SFabien Sanglard  public_configs = [
18*3f982cf4SFabien Sanglard    ":cddl_gen_config",
19*3f982cf4SFabien Sanglard    "../../build:openscreen_include_dirs",
20*3f982cf4SFabien Sanglard  ]
21*3f982cf4SFabien Sanglard}
22*3f982cf4SFabien Sanglard
23*3f982cf4SFabien Sanglardconfig("cddl_gen_config") {
24*3f982cf4SFabien Sanglard  include_dirs = [ "$root_gen_dir" + "/" + rebase_path("../..", "//") ]
25*3f982cf4SFabien Sanglard}
26*3f982cf4SFabien Sanglard
27*3f982cf4SFabien Sanglardaction("cddl_gen") {
28*3f982cf4SFabien Sanglard  script = "../../tools/cddl/cddl.py"
29*3f982cf4SFabien Sanglard  sources = [ "osp_messages.cddl" ]
30*3f982cf4SFabien Sanglard  outputs_src = rebase_path([
31*3f982cf4SFabien Sanglard                              "osp_messages.h",
32*3f982cf4SFabien Sanglard                              "osp_messages.cc",
33*3f982cf4SFabien Sanglard                            ],
34*3f982cf4SFabien Sanglard                            "//")
35*3f982cf4SFabien Sanglard  outputs = []
36*3f982cf4SFabien Sanglard  foreach(o, outputs_src) {
37*3f982cf4SFabien Sanglard    outputs += [ root_gen_dir + "/" + o ]
38*3f982cf4SFabien Sanglard  }
39*3f982cf4SFabien Sanglard
40*3f982cf4SFabien Sanglard  cddl_label = "../../tools/cddl:cddl($host_toolchain)"
41*3f982cf4SFabien Sanglard  cddl_path = get_label_info(cddl_label, "root_out_dir") + "/cddl"
42*3f982cf4SFabien Sanglard  args =
43*3f982cf4SFabien Sanglard      [
44*3f982cf4SFabien Sanglard        "--cddl",
45*3f982cf4SFabien Sanglard
46*3f982cf4SFabien Sanglard        # Path should be rebased because |root_build_dir| for current toolchain
47*3f982cf4SFabien Sanglard        # may be different from |root_out_dir| of cddl built on host toolchain.
48*3f982cf4SFabien Sanglard        "./" + rebase_path(cddl_path, root_build_dir),
49*3f982cf4SFabien Sanglard        "--header",
50*3f982cf4SFabien Sanglard        outputs_src[0],
51*3f982cf4SFabien Sanglard        "--cc",
52*3f982cf4SFabien Sanglard        outputs_src[1],
53*3f982cf4SFabien Sanglard        "--gen-dir",
54*3f982cf4SFabien Sanglard        rebase_path(root_gen_dir, root_build_dir),
55*3f982cf4SFabien Sanglard        "--log",
56*3f982cf4SFabien Sanglard        rebase_path("cddl.log", "//"),
57*3f982cf4SFabien Sanglard      ] + rebase_path(sources, root_build_dir)
58*3f982cf4SFabien Sanglard
59*3f982cf4SFabien Sanglard  deps = [ cddl_label ]
60*3f982cf4SFabien Sanglard}
61*3f982cf4SFabien Sanglard
62*3f982cf4SFabien Sanglardsource_set("unittests") {
63*3f982cf4SFabien Sanglard  testonly = true
64*3f982cf4SFabien Sanglard
65*3f982cf4SFabien Sanglard  sources = [ "messages_unittest.cc" ]
66*3f982cf4SFabien Sanglard
67*3f982cf4SFabien Sanglard  deps = [
68*3f982cf4SFabien Sanglard    ":msgs",
69*3f982cf4SFabien Sanglard    "../../third_party/googletest:gtest",
70*3f982cf4SFabien Sanglard  ]
71*3f982cf4SFabien Sanglard}
72