diff options
author | btolsch <btolsch@chromium.org> | 2021-06-28 15:56:45 -0700 |
---|---|---|
committer | Openscreen LUCI CQ <openscreen-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2021-06-28 23:24:50 +0000 |
commit | 43bb3ea9ad8731ac539b299b77b71ba98b0a2767 (patch) | |
tree | 234cc4f3738db4281520a5d2878674ec518c825e /cast | |
parent | aa2fd38faf65ab715cf18090e792088c239ee184 (diff) | |
download | openscreen-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>
Diffstat (limited to 'cast')
-rw-r--r-- | cast/cast_core/api/BUILD.gn | 169 |
1 files changed, 169 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..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" ] +} |