• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2021 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//third_party/grpc/grpc_library.gni")
6import("//third_party/protobuf/proto_library.gni")
7
8# NOTE: Our local lite versions of the builtin protos have to retain their
9# "google/protobuf" path in order to generate certain correct symbols.  However,
10# this leads to include confusion with the default committed full versions.  The
11# work-around is to force an extra include path to reach our local compiled
12# versions.
13config("force_local_well_known_protos") {
14  include_dirs = [ "$target_gen_dir" ]
15}
16
17proto_library("base_protos") {
18  generate_python = false
19  proto_in_dir = "//third_party/protobuf/src"
20  proto_out_dir = rebase_path(".", "//")
21  sources = [ "//third_party/protobuf/src/google/protobuf/duration.proto" ]
22  cc_generator_options = "lite"
23  extra_configs = [ ":force_local_well_known_protos" ]
24}
25
26template("cast_core_proto_library_base") {
27  target(invoker.target_type, target_name) {
28    proto_in_dir = "//" + rebase_path("../../..", "//")
29    generate_python = false
30
31    # NOTE: For using built-in proto files like empty.proto.
32    import_dirs = [ "//third_party/protobuf/src" ]
33
34    forward_variables_from(invoker,
35                           [
36                             "deps",
37                             "sources",
38                           ])
39    if (!defined(deps)) {
40      deps = []
41    }
42    deps += [ ":base_protos" ]
43    extra_configs = [ ":force_local_well_known_protos" ]
44  }
45}
46
47# For .proto files without RPC definitions.
48template("cast_core_proto_library") {
49  cast_core_proto_library_base(target_name) {
50    target_type = "proto_library"
51    forward_variables_from(invoker,
52                           [
53                             "deps",
54                             "sources",
55                           ])
56  }
57}
58
59# For .proto files with RPC definitions.
60template("cast_core_grpc_library") {
61  cast_core_proto_library_base(target_name) {
62    target_type = "grpc_library"
63    forward_variables_from(invoker,
64                           [
65                             "deps",
66                             "sources",
67                           ])
68  }
69}
70
71group("api") {
72  public_deps = [
73    ":api_bindings_proto",
74    ":application_config_proto",
75    ":cast_audio_channel_service_proto",
76    ":cast_core_service_proto",
77    ":cast_message_proto",
78    ":core_application_service_proto",
79    ":message_channel_proto",
80    ":metrics_recorder_proto",
81    ":platform_service_proto",
82    ":runtime_application_service_proto",
83    ":runtime_message_port_application_service_proto",
84    ":runtime_metadata_proto",
85    ":runtime_service_proto",
86    ":service_info_proto",
87    ":url_rewrite_proto",
88  ]
89}
90
91cast_core_proto_library("api_bindings_proto") {
92  sources = [ "bindings/api_bindings.proto" ]
93  deps = [ ":message_channel_proto" ]
94}
95
96cast_core_proto_library("application_config_proto") {
97  sources = [ "common/application_config.proto" ]
98}
99
100cast_core_proto_library("runtime_metadata_proto") {
101  sources = [ "common/runtime_metadata.proto" ]
102}
103
104cast_core_proto_library("service_info_proto") {
105  sources = [ "common/service_info.proto" ]
106}
107
108cast_core_grpc_library("cast_core_service_proto") {
109  sources = [ "core/cast_core_service.proto" ]
110  deps = [ ":runtime_metadata_proto" ]
111}
112
113cast_core_grpc_library("platform_service_proto") {
114  sources = [ "platform/platform_service.proto" ]
115  deps = [ ":service_info_proto" ]
116}
117
118cast_core_grpc_library("cast_audio_channel_service_proto") {
119  sources = [ "runtime/cast_audio_channel_service.proto" ]
120}
121
122cast_core_grpc_library("runtime_service_proto") {
123  sources = [ "runtime/runtime_service.proto" ]
124  deps = [
125    ":application_config_proto",
126    ":service_info_proto",
127    ":url_rewrite_proto",
128  ]
129}
130
131cast_core_proto_library("cast_message_proto") {
132  sources = [ "v2/cast_message.proto" ]
133}
134
135cast_core_grpc_library("core_application_service_proto") {
136  sources = [ "v2/core_application_service.proto" ]
137  deps = [
138    ":api_bindings_proto",
139    ":application_config_proto",
140    ":cast_message_proto",
141    ":message_channel_proto",
142    ":service_info_proto",
143    ":url_rewrite_proto",
144  ]
145}
146
147cast_core_grpc_library("runtime_application_service_proto") {
148  sources = [ "v2/runtime_application_service.proto" ]
149  deps = [
150    ":cast_message_proto",
151    ":message_channel_proto",
152    ":url_rewrite_proto",
153  ]
154}
155
156cast_core_grpc_library("runtime_message_port_application_service_proto") {
157  sources = [ "v2/runtime_message_port_application_service.proto" ]
158  deps = [ ":message_channel_proto" ]
159}
160
161cast_core_proto_library("url_rewrite_proto") {
162  sources = [ "v2/url_rewrite.proto" ]
163}
164
165cast_core_proto_library("message_channel_proto") {
166  sources = [ "web/message_channel.proto" ]
167}
168
169cast_core_grpc_library("metrics_recorder_proto") {
170  sources = [ "metrics/metrics_recorder.proto" ]
171}
172