aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbtolsch <btolsch@chromium.org>2021-06-28 15:56:45 -0700
committerOpenscreen LUCI CQ <openscreen-scoped@luci-project-accounts.iam.gserviceaccount.com>2021-06-28 23:24:50 +0000
commit43bb3ea9ad8731ac539b299b77b71ba98b0a2767 (patch)
tree234cc4f3738db4281520a5d2878674ec518c825e
parentaa2fd38faf65ab715cf18090e792088c239ee184 (diff)
downloadopenscreen-43bb3ea9ad8731ac539b299b77b71ba98b0a2767.tar.gz
Add Cast Core API BUILD.gn
This change upstreams the BUILD.gn for Cast Core gRPC API files. These will only build when included in chromium in order to avoid duplicating the rather complicated build setup required for importing gRPC as chromium does. Bug: b/172295002 Change-Id: I0585f8453207bd1ca4f0403a91808fe28cae317a Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2992818 Reviewed-by: Ryan Keane <rwkeane@google.com> Commit-Queue: Brandon Tolsch <btolsch@chromium.org>
-rw-r--r--BUILD.gn2
-rw-r--r--cast/cast_core/api/BUILD.gn169
2 files changed, 171 insertions, 0 deletions
diff --git a/BUILD.gn b/BUILD.gn
index 8fad80f2..e62ae81e 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -61,6 +61,8 @@ group("gn_all") {
"third_party/protobuf:protoc($host_toolchain)",
"third_party/zlib",
]
+ } else {
+ deps += [ "cast/cast_core/api" ]
}
}
diff --git a/cast/cast_core/api/BUILD.gn b/cast/cast_core/api/BUILD.gn
new file mode 100644
index 00000000..c4a22d68
--- /dev/null
+++ b/cast/cast_core/api/BUILD.gn
@@ -0,0 +1,169 @@
+# 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",
+ ":service_info_proto",
+ ]
+}
+
+cast_core_grpc_library("platform_service_proto") {
+ sources = [ "platform/platform_service.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 = [ ":service_info_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" ]
+}