aboutsummaryrefslogtreecommitdiff
path: root/cast/cast_core/api/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'cast/cast_core/api/BUILD.gn')
-rw-r--r--cast/cast_core/api/BUILD.gn171
1 files changed, 171 insertions, 0 deletions
diff --git a/cast/cast_core/api/BUILD.gn b/cast/cast_core/api/BUILD.gn
new file mode 100644
index 00000000..dd9ff283
--- /dev/null
+++ b/cast/cast_core/api/BUILD.gn
@@ -0,0 +1,171 @@
+# Copyright 2021 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//third_party/grpc/grpc_library.gni")
+import("//third_party/protobuf/proto_library.gni")
+
+# NOTE: Our local lite versions of the builtin protos have to retain their
+# "google/protobuf" path in order to generate certain correct symbols. However,
+# this leads to include confusion with the default committed full versions. The
+# work-around is to force an extra include path to reach our local compiled
+# versions.
+config("force_local_well_known_protos") {
+ include_dirs = [ "$target_gen_dir" ]
+}
+
+proto_library("base_protos") {
+ generate_python = false
+ proto_in_dir = "//third_party/protobuf/src"
+ proto_out_dir = rebase_path(".", "//")
+ sources = [ "//third_party/protobuf/src/google/protobuf/duration.proto" ]
+ cc_generator_options = "lite"
+ extra_configs = [ ":force_local_well_known_protos" ]
+}
+
+template("cast_core_proto_library_base") {
+ target(invoker.target_type, target_name) {
+ proto_in_dir = "//" + rebase_path("../../..", "//")
+ generate_python = false
+
+ # NOTE: For using built-in proto files like empty.proto.
+ import_dirs = [ "//third_party/protobuf/src" ]
+
+ forward_variables_from(invoker,
+ [
+ "deps",
+ "sources",
+ ])
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += [ ":base_protos" ]
+ extra_configs = [ ":force_local_well_known_protos" ]
+ }
+}
+
+# For .proto files without RPC definitions.
+template("cast_core_proto_library") {
+ cast_core_proto_library_base(target_name) {
+ target_type = "proto_library"
+ forward_variables_from(invoker,
+ [
+ "deps",
+ "sources",
+ ])
+ }
+}
+
+# For .proto files with RPC definitions.
+template("cast_core_grpc_library") {
+ cast_core_proto_library_base(target_name) {
+ target_type = "grpc_library"
+ forward_variables_from(invoker,
+ [
+ "deps",
+ "sources",
+ ])
+ }
+}
+
+group("api") {
+ public_deps = [
+ ":api_bindings_proto",
+ ":application_config_proto",
+ ":cast_audio_channel_service_proto",
+ ":cast_core_service_proto",
+ ":cast_message_proto",
+ ":core_application_service_proto",
+ ":message_channel_proto",
+ ":metrics_recorder_proto",
+ ":platform_service_proto",
+ ":runtime_application_service_proto",
+ ":runtime_message_port_application_service_proto",
+ ":runtime_metadata_proto",
+ ":runtime_service_proto",
+ ":service_info_proto",
+ ":url_rewrite_proto",
+ ]
+}
+
+cast_core_proto_library("api_bindings_proto") {
+ sources = [ "bindings/api_bindings.proto" ]
+ deps = [ ":message_channel_proto" ]
+}
+
+cast_core_proto_library("application_config_proto") {
+ sources = [ "common/application_config.proto" ]
+}
+
+cast_core_proto_library("runtime_metadata_proto") {
+ sources = [ "common/runtime_metadata.proto" ]
+}
+
+cast_core_proto_library("service_info_proto") {
+ sources = [ "common/service_info.proto" ]
+}
+
+cast_core_grpc_library("cast_core_service_proto") {
+ sources = [ "core/cast_core_service.proto" ]
+ deps = [ ":runtime_metadata_proto" ]
+}
+
+cast_core_grpc_library("platform_service_proto") {
+ sources = [ "platform/platform_service.proto" ]
+ deps = [ ":service_info_proto" ]
+}
+
+cast_core_grpc_library("cast_audio_channel_service_proto") {
+ sources = [ "runtime/cast_audio_channel_service.proto" ]
+}
+
+cast_core_grpc_library("runtime_service_proto") {
+ sources = [ "runtime/runtime_service.proto" ]
+ deps = [
+ ":application_config_proto",
+ ":service_info_proto",
+ ":url_rewrite_proto",
+ ]
+}
+
+cast_core_proto_library("cast_message_proto") {
+ sources = [ "v2/cast_message.proto" ]
+}
+
+cast_core_grpc_library("core_application_service_proto") {
+ sources = [ "v2/core_application_service.proto" ]
+ deps = [
+ ":api_bindings_proto",
+ ":application_config_proto",
+ ":cast_message_proto",
+ ":message_channel_proto",
+ ":service_info_proto",
+ ":url_rewrite_proto",
+ ]
+}
+
+cast_core_grpc_library("runtime_application_service_proto") {
+ sources = [ "v2/runtime_application_service.proto" ]
+ deps = [
+ ":cast_message_proto",
+ ":message_channel_proto",
+ ":url_rewrite_proto",
+ ]
+}
+
+cast_core_grpc_library("runtime_message_port_application_service_proto") {
+ sources = [ "v2/runtime_message_port_application_service.proto" ]
+ deps = [ ":message_channel_proto" ]
+}
+
+cast_core_proto_library("url_rewrite_proto") {
+ sources = [ "v2/url_rewrite.proto" ]
+}
+
+cast_core_proto_library("message_channel_proto") {
+ sources = [ "web/message_channel.proto" ]
+}
+
+cast_core_grpc_library("metrics_recorder_proto") {
+ sources = [ "metrics/metrics_recorder.proto" ]
+}