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