1*61c4878aSAndroid Build Coastguard Worker// Copyright 2022 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker// 3*61c4878aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker// use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker// the License at 6*61c4878aSAndroid Build Coastguard Worker// 7*61c4878aSAndroid Build Coastguard Worker// https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker// 9*61c4878aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker// License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker// the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerpackage { 16*61c4878aSAndroid Build Coastguard Worker default_applicable_licenses: ["external_pigweed_license"], 17*61c4878aSAndroid Build Coastguard Worker} 18*61c4878aSAndroid Build Coastguard Worker 19*61c4878aSAndroid Build Coastguard Workerjava_library { 20*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_java_client", 21*61c4878aSAndroid Build Coastguard Worker srcs: ["java/main/dev/pigweed/pw_rpc/*.java"], 22*61c4878aSAndroid Build Coastguard Worker visibility: ["//visibility:public"], 23*61c4878aSAndroid Build Coastguard Worker static_libs: [ 24*61c4878aSAndroid Build Coastguard Worker "pw_log_android_java", 25*61c4878aSAndroid Build Coastguard Worker "pw_rpc_packet_proto_java_lite", 26*61c4878aSAndroid Build Coastguard Worker ], 27*61c4878aSAndroid Build Coastguard Worker libs: [ 28*61c4878aSAndroid Build Coastguard Worker "auto_value_annotations", 29*61c4878aSAndroid Build Coastguard Worker "guava", 30*61c4878aSAndroid Build Coastguard Worker "jsr305", 31*61c4878aSAndroid Build Coastguard Worker "libprotobuf-java-lite", 32*61c4878aSAndroid Build Coastguard Worker ], 33*61c4878aSAndroid Build Coastguard Worker plugins: ["auto_value_plugin"], 34*61c4878aSAndroid Build Coastguard Worker sdk_version: "current", 35*61c4878aSAndroid Build Coastguard Worker} 36*61c4878aSAndroid Build Coastguard Worker 37*61c4878aSAndroid Build Coastguard Workerjava_library_static { 38*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_packet_proto_java_lite", 39*61c4878aSAndroid Build Coastguard Worker host_supported: true, 40*61c4878aSAndroid Build Coastguard Worker proto: { 41*61c4878aSAndroid Build Coastguard Worker type: "lite", 42*61c4878aSAndroid Build Coastguard Worker }, 43*61c4878aSAndroid Build Coastguard Worker srcs: ["internal/packet.proto"], 44*61c4878aSAndroid Build Coastguard Worker sdk_version: "current", 45*61c4878aSAndroid Build Coastguard Worker} 46*61c4878aSAndroid Build Coastguard Worker 47*61c4878aSAndroid Build Coastguard Workerjava_library_static { 48*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_proto_java_lite", 49*61c4878aSAndroid Build Coastguard Worker visibility: ["//visibility:public"], 50*61c4878aSAndroid Build Coastguard Worker host_supported: true, 51*61c4878aSAndroid Build Coastguard Worker proto: { 52*61c4878aSAndroid Build Coastguard Worker type: "lite", 53*61c4878aSAndroid Build Coastguard Worker }, 54*61c4878aSAndroid Build Coastguard Worker srcs: ["echo.proto"], 55*61c4878aSAndroid Build Coastguard Worker sdk_version: "current", 56*61c4878aSAndroid Build Coastguard Worker} 57*61c4878aSAndroid Build Coastguard Worker 58*61c4878aSAndroid Build Coastguard Workerfilegroup { 59*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_src_files", 60*61c4878aSAndroid Build Coastguard Worker srcs: [ 61*61c4878aSAndroid Build Coastguard Worker "call.cc", 62*61c4878aSAndroid Build Coastguard Worker "channel.cc", 63*61c4878aSAndroid Build Coastguard Worker "channel_list.cc", 64*61c4878aSAndroid Build Coastguard Worker "client.cc", 65*61c4878aSAndroid Build Coastguard Worker "client_call.cc", 66*61c4878aSAndroid Build Coastguard Worker "client_server.cc", 67*61c4878aSAndroid Build Coastguard Worker "endpoint.cc", 68*61c4878aSAndroid Build Coastguard Worker "fake_channel_output.cc", 69*61c4878aSAndroid Build Coastguard Worker "packet.cc", 70*61c4878aSAndroid Build Coastguard Worker "packet_meta.cc", 71*61c4878aSAndroid Build Coastguard Worker "server.cc", 72*61c4878aSAndroid Build Coastguard Worker "server_call.cc", 73*61c4878aSAndroid Build Coastguard Worker "service.cc", 74*61c4878aSAndroid Build Coastguard Worker ], 75*61c4878aSAndroid Build Coastguard Worker} 76*61c4878aSAndroid Build Coastguard Worker 77*61c4878aSAndroid Build Coastguard Worker// Do not use this directly. It is used by the pw_rpc_defaults to keep the 78*61c4878aSAndroid Build Coastguard Worker// path to the "public" directory relative to this module. 79*61c4878aSAndroid Build Coastguard Workercc_library_headers { 80*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_include_dirs", 81*61c4878aSAndroid Build Coastguard Worker export_include_dirs: [ 82*61c4878aSAndroid Build Coastguard Worker "public", 83*61c4878aSAndroid Build Coastguard Worker ], 84*61c4878aSAndroid Build Coastguard Worker vendor_available: true, 85*61c4878aSAndroid Build Coastguard Worker host_supported: true, 86*61c4878aSAndroid Build Coastguard Worker} 87*61c4878aSAndroid Build Coastguard Worker 88*61c4878aSAndroid Build Coastguard Worker// This rule must be instantiated, i.e. 89*61c4878aSAndroid Build Coastguard Worker// 90*61c4878aSAndroid Build Coastguard Worker// cc_library_static { 91*61c4878aSAndroid Build Coastguard Worker// name: "pw_rpc_<instance_name>", 92*61c4878aSAndroid Build Coastguard Worker// defaults: [ 93*61c4878aSAndroid Build Coastguard Worker// "pw_rpc_cflags_<instance_name>", 94*61c4878aSAndroid Build Coastguard Worker// "pw_rpc_defaults", 95*61c4878aSAndroid Build Coastguard Worker// ], 96*61c4878aSAndroid Build Coastguard Worker// } 97*61c4878aSAndroid Build Coastguard Worker// 98*61c4878aSAndroid Build Coastguard Worker// where pw_rpc_cflags_<instance_name> defines your flags, i.e. 99*61c4878aSAndroid Build Coastguard Worker// 100*61c4878aSAndroid Build Coastguard Worker// cc_defaults { 101*61c4878aSAndroid Build Coastguard Worker// name: "pw_rpc_cflags_<instance_name>", 102*61c4878aSAndroid Build Coastguard Worker// cflags: [ 103*61c4878aSAndroid Build Coastguard Worker// "-DPW_RPC_USE_GLOBAL_MUTEX=0", 104*61c4878aSAndroid Build Coastguard Worker// "-DPW_RPC_COMPLETION_REQUEST_CALLBACK", 105*61c4878aSAndroid Build Coastguard Worker// "-DPW_RPC_DYNAMIC_ALLOCATION", 106*61c4878aSAndroid Build Coastguard Worker// ], 107*61c4878aSAndroid Build Coastguard Worker// } 108*61c4878aSAndroid Build Coastguard Worker// 109*61c4878aSAndroid Build Coastguard Worker// see pw_rpc_nanopb_defaults, pw_rpc_raw_defaults 110*61c4878aSAndroid Build Coastguard Workercc_defaults { 111*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_defaults", 112*61c4878aSAndroid Build Coastguard Worker cpp_std: "c++20", 113*61c4878aSAndroid Build Coastguard Worker defaults: [ 114*61c4878aSAndroid Build Coastguard Worker "pw_android_common_backends", 115*61c4878aSAndroid Build Coastguard Worker ], 116*61c4878aSAndroid Build Coastguard Worker header_libs: [ 117*61c4878aSAndroid Build Coastguard Worker "fuchsia_sdk_lib_fit", 118*61c4878aSAndroid Build Coastguard Worker "fuchsia_sdk_lib_stdcompat", 119*61c4878aSAndroid Build Coastguard Worker "pw_assert", 120*61c4878aSAndroid Build Coastguard Worker "pw_log", 121*61c4878aSAndroid Build Coastguard Worker "pw_rpc_include_dirs", 122*61c4878aSAndroid Build Coastguard Worker "pw_sync", 123*61c4878aSAndroid Build Coastguard Worker ], 124*61c4878aSAndroid Build Coastguard Worker export_header_lib_headers: [ 125*61c4878aSAndroid Build Coastguard Worker "fuchsia_sdk_lib_fit", 126*61c4878aSAndroid Build Coastguard Worker "fuchsia_sdk_lib_stdcompat", 127*61c4878aSAndroid Build Coastguard Worker "pw_assert", 128*61c4878aSAndroid Build Coastguard Worker "pw_log", 129*61c4878aSAndroid Build Coastguard Worker "pw_rpc_include_dirs", 130*61c4878aSAndroid Build Coastguard Worker "pw_sync", 131*61c4878aSAndroid Build Coastguard Worker ], 132*61c4878aSAndroid Build Coastguard Worker static_libs: [ 133*61c4878aSAndroid Build Coastguard Worker "pw_bytes", 134*61c4878aSAndroid Build Coastguard Worker "pw_containers", 135*61c4878aSAndroid Build Coastguard Worker "pw_function", 136*61c4878aSAndroid Build Coastguard Worker "pw_polyfill", 137*61c4878aSAndroid Build Coastguard Worker "pw_preprocessor", 138*61c4878aSAndroid Build Coastguard Worker "pw_protobuf", 139*61c4878aSAndroid Build Coastguard Worker "pw_result", 140*61c4878aSAndroid Build Coastguard Worker "pw_span", 141*61c4878aSAndroid Build Coastguard Worker "pw_status", 142*61c4878aSAndroid Build Coastguard Worker "pw_stream", 143*61c4878aSAndroid Build Coastguard Worker "pw_string", 144*61c4878aSAndroid Build Coastguard Worker "pw_sync_baremetal", 145*61c4878aSAndroid Build Coastguard Worker "pw_toolchain", 146*61c4878aSAndroid Build Coastguard Worker "pw_varint", 147*61c4878aSAndroid Build Coastguard Worker ], 148*61c4878aSAndroid Build Coastguard Worker export_static_lib_headers: [ 149*61c4878aSAndroid Build Coastguard Worker "pw_bytes", 150*61c4878aSAndroid Build Coastguard Worker "pw_containers", 151*61c4878aSAndroid Build Coastguard Worker "pw_function", 152*61c4878aSAndroid Build Coastguard Worker "pw_polyfill", 153*61c4878aSAndroid Build Coastguard Worker "pw_preprocessor", 154*61c4878aSAndroid Build Coastguard Worker "pw_protobuf", 155*61c4878aSAndroid Build Coastguard Worker "pw_result", 156*61c4878aSAndroid Build Coastguard Worker "pw_span", 157*61c4878aSAndroid Build Coastguard Worker "pw_status", 158*61c4878aSAndroid Build Coastguard Worker "pw_stream", 159*61c4878aSAndroid Build Coastguard Worker "pw_string", 160*61c4878aSAndroid Build Coastguard Worker "pw_sync_baremetal", 161*61c4878aSAndroid Build Coastguard Worker "pw_toolchain", 162*61c4878aSAndroid Build Coastguard Worker "pw_varint", 163*61c4878aSAndroid Build Coastguard Worker ], 164*61c4878aSAndroid Build Coastguard Worker generated_headers: [ 165*61c4878aSAndroid Build Coastguard Worker "pw_rpc_internal_packet_pwpb_h", 166*61c4878aSAndroid Build Coastguard Worker ], 167*61c4878aSAndroid Build Coastguard Worker export_generated_headers: [ 168*61c4878aSAndroid Build Coastguard Worker "pw_rpc_internal_packet_pwpb_h", 169*61c4878aSAndroid Build Coastguard Worker ], 170*61c4878aSAndroid Build Coastguard Worker srcs: [ 171*61c4878aSAndroid Build Coastguard Worker ":pw_rpc_src_files", 172*61c4878aSAndroid Build Coastguard Worker ], 173*61c4878aSAndroid Build Coastguard Worker} 174*61c4878aSAndroid Build Coastguard Worker 175*61c4878aSAndroid Build Coastguard Workergenrule { 176*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_internal_packet_pwpb_h", 177*61c4878aSAndroid Build Coastguard Worker srcs: ["internal/packet.proto"], 178*61c4878aSAndroid Build Coastguard Worker cmd: "python3 $(location pw_protobuf_compiler_py) " + 179*61c4878aSAndroid Build Coastguard Worker "--out-dir=$$(dirname $(location pw_rpc/internal/packet.pwpb.h)) " + 180*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_protobuf_plugin_py) " + 181*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$$(dirname $(in)) " + 182*61c4878aSAndroid Build Coastguard Worker "--sources $(in) " + 183*61c4878aSAndroid Build Coastguard Worker "--language pwpb " + 184*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 185*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 186*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 187*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc) ", 188*61c4878aSAndroid Build Coastguard Worker out: [ 189*61c4878aSAndroid Build Coastguard Worker "pw_rpc/internal/packet.pwpb.h", 190*61c4878aSAndroid Build Coastguard Worker ], 191*61c4878aSAndroid Build Coastguard Worker tools: [ 192*61c4878aSAndroid Build Coastguard Worker "aprotoc", 193*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_plugin_py", 194*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 195*61c4878aSAndroid Build Coastguard Worker ], 196*61c4878aSAndroid Build Coastguard Worker} 197*61c4878aSAndroid Build Coastguard Worker 198*61c4878aSAndroid Build Coastguard Workergenrule { 199*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_internal_packet_py", 200*61c4878aSAndroid Build Coastguard Worker srcs: ["internal/packet.proto"], 201*61c4878aSAndroid Build Coastguard Worker cmd: "python3 $(location pw_protobuf_compiler_py) " + 202*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 203*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$$(dirname $(in)) " + 204*61c4878aSAndroid Build Coastguard Worker "--sources $(in) " + 205*61c4878aSAndroid Build Coastguard Worker "--language python " + 206*61c4878aSAndroid Build Coastguard Worker "--no-generate-type-hints " + 207*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 208*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 209*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 210*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 211*61c4878aSAndroid Build Coastguard Worker out: [ 212*61c4878aSAndroid Build Coastguard Worker "packet_pb2.py", 213*61c4878aSAndroid Build Coastguard Worker ], 214*61c4878aSAndroid Build Coastguard Worker tools: [ 215*61c4878aSAndroid Build Coastguard Worker "aprotoc", 216*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 217*61c4878aSAndroid Build Coastguard Worker ], 218*61c4878aSAndroid Build Coastguard Worker} 219*61c4878aSAndroid Build Coastguard Worker 220*61c4878aSAndroid Build Coastguard Worker// Generates .pb.c and .pb.h nanopb files. 221*61c4878aSAndroid Build Coastguard Worker// The output file name is based on the srcs file name with an added extension. 222*61c4878aSAndroid Build Coastguard Worker// All dependencies, including .options files, must be listed in srcs and cannot 223*61c4878aSAndroid Build Coastguard Worker// be prefixed. Use the _with_prefix rules if prefixed. Only .proto files are 224*61c4878aSAndroid Build Coastguard Worker// passed to the compile script. 225*61c4878aSAndroid Build Coastguard Worker// 226*61c4878aSAndroid Build Coastguard Worker// Args: 227*61c4878aSAndroid Build Coastguard Worker// srcs: The list of source files without a prefix. 228*61c4878aSAndroid Build Coastguard Worker// out: A one-element list with the output file without a prefix. 229*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 230*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_nanopb_proto", 231*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " + 232*61c4878aSAndroid Build Coastguard Worker "proto_files=(); " + 233*61c4878aSAndroid Build Coastguard Worker "for f in \"$${in_files[@]}\"; do " + 234*61c4878aSAndroid Build Coastguard Worker "if [[ \"$${f##*.}\" == \"proto\" ]]; then " + 235*61c4878aSAndroid Build Coastguard Worker "proto_files+=(\"$${f}\"); " + 236*61c4878aSAndroid Build Coastguard Worker "fi; done; " + 237*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 238*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location protoc-gen-nanopb) " + 239*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 240*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 241*61c4878aSAndroid Build Coastguard Worker "--language nanopb " + 242*61c4878aSAndroid Build Coastguard Worker "--sources $${proto_files} " + 243*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 244*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 245*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 246*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 247*61c4878aSAndroid Build Coastguard Worker tools: [ 248*61c4878aSAndroid Build Coastguard Worker "aprotoc", 249*61c4878aSAndroid Build Coastguard Worker "protoc-gen-nanopb", 250*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 251*61c4878aSAndroid Build Coastguard Worker ], 252*61c4878aSAndroid Build Coastguard Worker} 253*61c4878aSAndroid Build Coastguard Worker 254*61c4878aSAndroid Build Coastguard Worker// Same as pw_rpc_generate_nanopb_proto but the proto files are compiled with a 255*61c4878aSAndroid Build Coastguard Worker// single prefix, which can be added with pw_rpc_add_prefix_to_proto. 256*61c4878aSAndroid Build Coastguard Worker// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only 257*61c4878aSAndroid Build Coastguard Worker// .proto files are passed to the compile script. Make sure .option files are 258*61c4878aSAndroid Build Coastguard Worker// prefixed in the same rule as their .proto files. All dependencies must also 259*61c4878aSAndroid Build Coastguard Worker// be listed in srcs and have a single prefix. 260*61c4878aSAndroid Build Coastguard Worker// 261*61c4878aSAndroid Build Coastguard Worker// See the pw_rpc_echo_service_nanopb target for an example. The echo.proto file 262*61c4878aSAndroid Build Coastguard Worker// is compiled with "pw_rpc" as the prefix. 263*61c4878aSAndroid Build Coastguard Worker// 264*61c4878aSAndroid Build Coastguard Worker// Args: 265*61c4878aSAndroid Build Coastguard Worker// srcs: The list of source files all with one prefix folder. 266*61c4878aSAndroid Build Coastguard Worker// out: A one-element list with the output file with a prefix folder. The 267*61c4878aSAndroid Build Coastguard Worker// prefix is based on the parent name of the first item in srcs. 268*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 269*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_nanopb_proto_with_prefix", 270*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " + 271*61c4878aSAndroid Build Coastguard Worker "compile_dir=$$(dirname $${prefix_dir}); " + 272*61c4878aSAndroid Build Coastguard Worker "proto_files=(); " + 273*61c4878aSAndroid Build Coastguard Worker "proto_paths_args=\"\"; " + 274*61c4878aSAndroid Build Coastguard Worker "for f in \"$${in_files[@]}\"; do " + 275*61c4878aSAndroid Build Coastguard Worker "if [[ \"$${f##*.}\" == \"proto\" ]]; then " + 276*61c4878aSAndroid Build Coastguard Worker "proto_files+=(\"$${f}\"); " + 277*61c4878aSAndroid Build Coastguard Worker "proto_path_args+=\"--proto-path=$$(dirname $$(dirname $${f})) \"; " + 278*61c4878aSAndroid Build Coastguard Worker "fi; done; " + 279*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 280*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location protoc-gen-nanopb) " + 281*61c4878aSAndroid Build Coastguard Worker "$${proto_path_args} " + 282*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 283*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 284*61c4878aSAndroid Build Coastguard Worker "--language nanopb " + 285*61c4878aSAndroid Build Coastguard Worker "--sources $${proto_files} " + 286*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 287*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 288*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 289*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 290*61c4878aSAndroid Build Coastguard Worker tools: [ 291*61c4878aSAndroid Build Coastguard Worker "aprotoc", 292*61c4878aSAndroid Build Coastguard Worker "protoc-gen-nanopb", 293*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 294*61c4878aSAndroid Build Coastguard Worker ], 295*61c4878aSAndroid Build Coastguard Worker} 296*61c4878aSAndroid Build Coastguard Worker 297*61c4878aSAndroid Build Coastguard Worker// Generate the header nanopb RPC file (.rpc.pb.h). 298*61c4878aSAndroid Build Coastguard Worker// 299*61c4878aSAndroid Build Coastguard Worker// Args: 300*61c4878aSAndroid Build Coastguard Worker// srcs: The list of source files without a prefix. 301*61c4878aSAndroid Build Coastguard Worker// out: A one-element list with the output file without a prefix. The name is 302*61c4878aSAndroid Build Coastguard Worker// based on the srcs file name with a .rpc.pb.h extension. 303*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 304*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_nanopb_rpc_header", 305*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " + 306*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 307*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_rpc_plugin_nanopb_py) " + 308*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 309*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 310*61c4878aSAndroid Build Coastguard Worker "--language nanopb_rpc " + 311*61c4878aSAndroid Build Coastguard Worker "--sources $(in) " + 312*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 313*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 314*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 315*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 316*61c4878aSAndroid Build Coastguard Worker tools: [ 317*61c4878aSAndroid Build Coastguard Worker "aprotoc", 318*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 319*61c4878aSAndroid Build Coastguard Worker "pw_rpc_plugin_nanopb_py", 320*61c4878aSAndroid Build Coastguard Worker ], 321*61c4878aSAndroid Build Coastguard Worker} 322*61c4878aSAndroid Build Coastguard Worker 323*61c4878aSAndroid Build Coastguard Worker// Same as pw_rpc_generate_nanopb_rpc_header but the proto files are compiled 324*61c4878aSAndroid Build Coastguard Worker// with a single prefix, which can be added with pw_rpc_add_prefix_to_proto. 325*61c4878aSAndroid Build Coastguard Worker// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only 326*61c4878aSAndroid Build Coastguard Worker// .proto files are passed to the compile script. Make sure .option files are 327*61c4878aSAndroid Build Coastguard Worker// prefixed in the same rule as their .proto files. All dependencies must also 328*61c4878aSAndroid Build Coastguard Worker// be listed in srcs and have a single prefix. 329*61c4878aSAndroid Build Coastguard Worker// 330*61c4878aSAndroid Build Coastguard Worker// See the pw_rpc_echo_service_nanopb target for an example. The echo.proto file 331*61c4878aSAndroid Build Coastguard Worker// is compiled with "pw_rpc" as the prefix. 332*61c4878aSAndroid Build Coastguard Worker// 333*61c4878aSAndroid Build Coastguard Worker// Args: 334*61c4878aSAndroid Build Coastguard Worker// srcs: The list of source files all with one prefix folder. 335*61c4878aSAndroid Build Coastguard Worker// out: A one-element list with the output file with a prefix folder. The 336*61c4878aSAndroid Build Coastguard Worker// prefix is based on the parent name of the first item in srcs. 337*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 338*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_nanopb_rpc_header_with_prefix", 339*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " + 340*61c4878aSAndroid Build Coastguard Worker "compile_dir=$$(dirname $${prefix_dir}); " + 341*61c4878aSAndroid Build Coastguard Worker "proto_files=(); " + 342*61c4878aSAndroid Build Coastguard Worker "proto_paths_args=\"\"; " + 343*61c4878aSAndroid Build Coastguard Worker "for f in \"$${in_files[@]}\"; do " + 344*61c4878aSAndroid Build Coastguard Worker "if [[ \"$${f##*.}\" == \"proto\" ]]; then " + 345*61c4878aSAndroid Build Coastguard Worker "proto_files+=(\"$${f}\"); " + 346*61c4878aSAndroid Build Coastguard Worker "proto_path_args+=\"--proto-path=$$(dirname $$(dirname $${f})) \"; " + 347*61c4878aSAndroid Build Coastguard Worker "fi; done; " + 348*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 349*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_rpc_plugin_nanopb_py) " + 350*61c4878aSAndroid Build Coastguard Worker "$${proto_path_args} " + 351*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 352*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 353*61c4878aSAndroid Build Coastguard Worker "--language nanopb_rpc " + 354*61c4878aSAndroid Build Coastguard Worker "--sources $${proto_files} " + 355*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 356*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 357*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 358*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 359*61c4878aSAndroid Build Coastguard Worker tools: [ 360*61c4878aSAndroid Build Coastguard Worker "aprotoc", 361*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 362*61c4878aSAndroid Build Coastguard Worker "pw_rpc_plugin_nanopb_py", 363*61c4878aSAndroid Build Coastguard Worker ], 364*61c4878aSAndroid Build Coastguard Worker} 365*61c4878aSAndroid Build Coastguard Worker 366*61c4878aSAndroid Build Coastguard Worker// Generate the header raw RPC file. 367*61c4878aSAndroid Build Coastguard Worker// The output file name is based on the srcs file name with a .raw_rpc.pb.h extension. 368*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 369*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_raw_rpc_header", 370*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " + 371*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 372*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_rpc_plugin_rawpb_py) " + 373*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 374*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 375*61c4878aSAndroid Build Coastguard Worker "--language raw_rpc " + 376*61c4878aSAndroid Build Coastguard Worker "--sources $(in) " + 377*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 378*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 379*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 380*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 381*61c4878aSAndroid Build Coastguard Worker tools: [ 382*61c4878aSAndroid Build Coastguard Worker "aprotoc", 383*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 384*61c4878aSAndroid Build Coastguard Worker "pw_rpc_plugin_rawpb_py", 385*61c4878aSAndroid Build Coastguard Worker ], 386*61c4878aSAndroid Build Coastguard Worker} 387*61c4878aSAndroid Build Coastguard Worker 388*61c4878aSAndroid Build Coastguard Worker// Same as pw_rpc_generate_raw_rpc_header but the proto files are compiled with 389*61c4878aSAndroid Build Coastguard Worker// a single prefix, which can be added with pw_rpc_add_prefix_to_proto. 390*61c4878aSAndroid Build Coastguard Worker// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only 391*61c4878aSAndroid Build Coastguard Worker// .proto files are passed to the compile script. Make sure .option files are 392*61c4878aSAndroid Build Coastguard Worker// prefixed in the same rule as their .proto files. 393*61c4878aSAndroid Build Coastguard Worker// 394*61c4878aSAndroid Build Coastguard Worker// See the pw_rpc_echo_service_pwpb target for an example. The echo.proto file 395*61c4878aSAndroid Build Coastguard Worker// is compiled with "pw_rpc" as the prefix. 396*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 397*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_raw_rpc_header_with_prefix", 398*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " + 399*61c4878aSAndroid Build Coastguard Worker "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " + 400*61c4878aSAndroid Build Coastguard Worker "for f in \"$${in_files[@]}\"; do " + 401*61c4878aSAndroid Build Coastguard Worker "if [[ \"$${f##*.}\" == \"proto\" ]]; then " + 402*61c4878aSAndroid Build Coastguard Worker "proto_files+=(\"$${f}\"); fi; done; " + 403*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 404*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_rpc_plugin_rawpb_py) " + 405*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 406*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 407*61c4878aSAndroid Build Coastguard Worker "--language raw_rpc " + 408*61c4878aSAndroid Build Coastguard Worker "--sources $${proto_files} " + 409*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 410*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 411*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 412*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 413*61c4878aSAndroid Build Coastguard Worker tools: [ 414*61c4878aSAndroid Build Coastguard Worker "aprotoc", 415*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 416*61c4878aSAndroid Build Coastguard Worker "pw_rpc_plugin_rawpb_py", 417*61c4878aSAndroid Build Coastguard Worker ], 418*61c4878aSAndroid Build Coastguard Worker} 419*61c4878aSAndroid Build Coastguard Worker 420*61c4878aSAndroid Build Coastguard Worker// Generate header pwpb files. 421*61c4878aSAndroid Build Coastguard Worker// The output file names are based on the srcs file name with a .pwpb.h extension. 422*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 423*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_pwpb_proto", 424*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " + 425*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 426*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_protobuf_plugin_py) " + 427*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 428*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 429*61c4878aSAndroid Build Coastguard Worker "--language pwpb " + 430*61c4878aSAndroid Build Coastguard Worker "--sources $(in) " + 431*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 432*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 433*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 434*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 435*61c4878aSAndroid Build Coastguard Worker tools: [ 436*61c4878aSAndroid Build Coastguard Worker "aprotoc", 437*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_plugin_py", 438*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 439*61c4878aSAndroid Build Coastguard Worker ], 440*61c4878aSAndroid Build Coastguard Worker} 441*61c4878aSAndroid Build Coastguard Worker 442*61c4878aSAndroid Build Coastguard Worker// Same as pw_rpc_generate_pwpb_proto but the proto files are compiled with a 443*61c4878aSAndroid Build Coastguard Worker// single prefix, which can be added with pw_rpc_add_prefix_to_proto. 444*61c4878aSAndroid Build Coastguard Worker// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only 445*61c4878aSAndroid Build Coastguard Worker// .proto files are passed to the compile script. Make sure .option files are 446*61c4878aSAndroid Build Coastguard Worker// prefixed in the same rule as their .proto files. 447*61c4878aSAndroid Build Coastguard Worker// 448*61c4878aSAndroid Build Coastguard Worker// See the pw_rpc_echo_service_pwpb target for an example. The echo.proto file 449*61c4878aSAndroid Build Coastguard Worker// is compiled with "pw_rpc" as the prefix. 450*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 451*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_pwpb_proto_with_prefix", 452*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " + 453*61c4878aSAndroid Build Coastguard Worker "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " + 454*61c4878aSAndroid Build Coastguard Worker "for f in \"$${in_files[@]}\"; do " + 455*61c4878aSAndroid Build Coastguard Worker "if [[ \"$${f##*.}\" == \"proto\" ]]; then " + 456*61c4878aSAndroid Build Coastguard Worker "proto_files+=(\"$${f}\"); fi; done; " + 457*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 458*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_protobuf_plugin_py) " + 459*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 460*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 461*61c4878aSAndroid Build Coastguard Worker "--language pwpb " + 462*61c4878aSAndroid Build Coastguard Worker "--sources $${proto_files} " + 463*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 464*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 465*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 466*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 467*61c4878aSAndroid Build Coastguard Worker tools: [ 468*61c4878aSAndroid Build Coastguard Worker "aprotoc", 469*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_plugin_py", 470*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 471*61c4878aSAndroid Build Coastguard Worker ], 472*61c4878aSAndroid Build Coastguard Worker} 473*61c4878aSAndroid Build Coastguard Worker 474*61c4878aSAndroid Build Coastguard Worker// Generate the header pwpb RPC file. 475*61c4878aSAndroid Build Coastguard Worker// The output file name is based on the srcs file name with a .rpc.pwpb.h extension. 476*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 477*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_pwpb_rpc_header", 478*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " + 479*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 480*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_rpc_plugin_pwpb_py) " + 481*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 482*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 483*61c4878aSAndroid Build Coastguard Worker "--language pwpb_rpc " + 484*61c4878aSAndroid Build Coastguard Worker "--sources $(in) " + 485*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 486*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 487*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 488*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 489*61c4878aSAndroid Build Coastguard Worker tools: [ 490*61c4878aSAndroid Build Coastguard Worker "aprotoc", 491*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 492*61c4878aSAndroid Build Coastguard Worker "pw_rpc_plugin_pwpb_py", 493*61c4878aSAndroid Build Coastguard Worker ], 494*61c4878aSAndroid Build Coastguard Worker} 495*61c4878aSAndroid Build Coastguard Worker 496*61c4878aSAndroid Build Coastguard Worker// Same as pw_rpc_generate_pwpb_rpc_header but the proto files are compiled 497*61c4878aSAndroid Build Coastguard Worker// with a single prefix, which can be added with pw_rpc_add_prefix_to_proto. 498*61c4878aSAndroid Build Coastguard Worker// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only 499*61c4878aSAndroid Build Coastguard Worker// .proto files are passed to the compile script. Make sure .option files are 500*61c4878aSAndroid Build Coastguard Worker// prefixed in the same rule as their .proto files. 501*61c4878aSAndroid Build Coastguard Worker// 502*61c4878aSAndroid Build Coastguard Worker// See the pw_rpc_echo_service_pwpb target for an example. The echo.proto file 503*61c4878aSAndroid Build Coastguard Worker// is compiled with "pw_rpc" as the prefix. 504*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 505*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_generate_pwpb_rpc_header_with_prefix", 506*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " + 507*61c4878aSAndroid Build Coastguard Worker "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " + 508*61c4878aSAndroid Build Coastguard Worker "for f in \"$${in_files[@]}\"; do " + 509*61c4878aSAndroid Build Coastguard Worker "if [[ \"$${f##*.}\" == \"proto\" ]]; then " + 510*61c4878aSAndroid Build Coastguard Worker "proto_files+=(\"$${f}\"); fi; done; " + 511*61c4878aSAndroid Build Coastguard Worker "python3 $(location pw_protobuf_compiler_py) " + 512*61c4878aSAndroid Build Coastguard Worker "--plugin-path=$(location pw_rpc_plugin_pwpb_py) " + 513*61c4878aSAndroid Build Coastguard Worker "--out-dir=$(genDir) " + 514*61c4878aSAndroid Build Coastguard Worker "--compile-dir=$${compile_dir} " + 515*61c4878aSAndroid Build Coastguard Worker "--language pwpb_rpc " + 516*61c4878aSAndroid Build Coastguard Worker "--sources $${proto_files} " + 517*61c4878aSAndroid Build Coastguard Worker "--no-experimental-proto3-optional " + 518*61c4878aSAndroid Build Coastguard Worker "--no-experimental-editions " + 519*61c4878aSAndroid Build Coastguard Worker "--pwpb-no-oneof-callbacks " + 520*61c4878aSAndroid Build Coastguard Worker "--protoc=$(location aprotoc)", 521*61c4878aSAndroid Build Coastguard Worker tools: [ 522*61c4878aSAndroid Build Coastguard Worker "aprotoc", 523*61c4878aSAndroid Build Coastguard Worker "pw_protobuf_compiler_py", 524*61c4878aSAndroid Build Coastguard Worker "pw_rpc_plugin_pwpb_py", 525*61c4878aSAndroid Build Coastguard Worker ], 526*61c4878aSAndroid Build Coastguard Worker} 527*61c4878aSAndroid Build Coastguard Worker 528*61c4878aSAndroid Build Coastguard Worker// Copies the proto files to a prefix directory to add the prefix to the 529*61c4878aSAndroid Build Coastguard Worker// compiled proto. The prefix is taken from the directory name of the first 530*61c4878aSAndroid Build Coastguard Worker// item listen in out. 531*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 532*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_add_prefix_to_proto", 533*61c4878aSAndroid Build Coastguard Worker cmd: "out_files=($(out)); prefix=$$(dirname $${out_files[0]}); " + 534*61c4878aSAndroid Build Coastguard Worker "mkdir -p $${prefix}; cp -t $${prefix} $(in);", 535*61c4878aSAndroid Build Coastguard Worker} 536*61c4878aSAndroid Build Coastguard Worker 537*61c4878aSAndroid Build Coastguard Workergenrule { 538*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_proto_with_prefix", 539*61c4878aSAndroid Build Coastguard Worker defaults: ["pw_rpc_add_prefix_to_proto"], 540*61c4878aSAndroid Build Coastguard Worker srcs: [ 541*61c4878aSAndroid Build Coastguard Worker "echo.options", 542*61c4878aSAndroid Build Coastguard Worker "echo.proto", 543*61c4878aSAndroid Build Coastguard Worker ], 544*61c4878aSAndroid Build Coastguard Worker out: [ 545*61c4878aSAndroid Build Coastguard Worker "pw_rpc/echo.options", 546*61c4878aSAndroid Build Coastguard Worker "pw_rpc/echo.proto", 547*61c4878aSAndroid Build Coastguard Worker ], 548*61c4878aSAndroid Build Coastguard Worker} 549*61c4878aSAndroid Build Coastguard Worker 550*61c4878aSAndroid Build Coastguard Workergenrule { 551*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_rpc_header", 552*61c4878aSAndroid Build Coastguard Worker defaults: ["pw_rpc_generate_nanopb_rpc_header_with_prefix"], 553*61c4878aSAndroid Build Coastguard Worker srcs: [":pw_rpc_echo_proto_with_prefix"], 554*61c4878aSAndroid Build Coastguard Worker out: ["pw_rpc/echo.rpc.pb.h"], 555*61c4878aSAndroid Build Coastguard Worker} 556*61c4878aSAndroid Build Coastguard Worker 557*61c4878aSAndroid Build Coastguard Workergenrule { 558*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_proto_header", 559*61c4878aSAndroid Build Coastguard Worker defaults: ["pw_rpc_generate_nanopb_proto_with_prefix"], 560*61c4878aSAndroid Build Coastguard Worker srcs: [":pw_rpc_echo_proto_with_prefix"], 561*61c4878aSAndroid Build Coastguard Worker out: ["pw_rpc/echo.pb.h"], 562*61c4878aSAndroid Build Coastguard Worker} 563*61c4878aSAndroid Build Coastguard Worker 564*61c4878aSAndroid Build Coastguard Workergenrule { 565*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_proto_source", 566*61c4878aSAndroid Build Coastguard Worker defaults: ["pw_rpc_generate_nanopb_proto_with_prefix"], 567*61c4878aSAndroid Build Coastguard Worker srcs: [":pw_rpc_echo_proto_with_prefix"], 568*61c4878aSAndroid Build Coastguard Worker out: ["pw_rpc/echo.pb.c"], 569*61c4878aSAndroid Build Coastguard Worker} 570*61c4878aSAndroid Build Coastguard Worker 571*61c4878aSAndroid Build Coastguard Worker// This is a copy of the echo.pb.h header, since the generated echo.pb.c 572*61c4878aSAndroid Build Coastguard Worker// includes it by file name, while pw_rpc/nanopb/echo_service_nanopb.h includes 573*61c4878aSAndroid Build Coastguard Worker// it with a prefix. 574*61c4878aSAndroid Build Coastguard Worker// Soong makes it very hard to add include directories when they don't come from 575*61c4878aSAndroid Build Coastguard Worker// modules, so this is a kludge to add an include directory path without a 576*61c4878aSAndroid Build Coastguard Worker// prefix. 577*61c4878aSAndroid Build Coastguard Workergenrule { 578*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_proto_header_copy", 579*61c4878aSAndroid Build Coastguard Worker cmd: "cp $(in) $(out)", 580*61c4878aSAndroid Build Coastguard Worker srcs: [":pw_rpc_echo_proto_header"], 581*61c4878aSAndroid Build Coastguard Worker out: ["echo.pb.h"], 582*61c4878aSAndroid Build Coastguard Worker} 583*61c4878aSAndroid Build Coastguard Worker 584*61c4878aSAndroid Build Coastguard Workercc_library_static { 585*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_service_nanopb", 586*61c4878aSAndroid Build Coastguard Worker cpp_std: "c++20", 587*61c4878aSAndroid Build Coastguard Worker vendor_available: true, 588*61c4878aSAndroid Build Coastguard Worker host_supported: true, 589*61c4878aSAndroid Build Coastguard Worker export_include_dirs: ["public/pw_rpc"], 590*61c4878aSAndroid Build Coastguard Worker generated_headers: [ 591*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_proto_header", 592*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_proto_header_copy", 593*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_rpc_header", 594*61c4878aSAndroid Build Coastguard Worker ], 595*61c4878aSAndroid Build Coastguard Worker export_generated_headers: [ 596*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_proto_header", 597*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_proto_header_copy", 598*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_rpc_header", 599*61c4878aSAndroid Build Coastguard Worker ], 600*61c4878aSAndroid Build Coastguard Worker generated_sources: ["pw_rpc_echo_proto_source"], 601*61c4878aSAndroid Build Coastguard Worker static_libs: ["libprotobuf-c-nano"], 602*61c4878aSAndroid Build Coastguard Worker} 603*61c4878aSAndroid Build Coastguard Worker 604*61c4878aSAndroid Build Coastguard Workergenrule { 605*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_pwpb_rpc_header", 606*61c4878aSAndroid Build Coastguard Worker defaults: ["pw_rpc_generate_pwpb_rpc_header_with_prefix"], 607*61c4878aSAndroid Build Coastguard Worker srcs: [":pw_rpc_echo_proto_with_prefix"], 608*61c4878aSAndroid Build Coastguard Worker out: ["pw_rpc/echo.rpc.pwpb.h"], 609*61c4878aSAndroid Build Coastguard Worker} 610*61c4878aSAndroid Build Coastguard Worker 611*61c4878aSAndroid Build Coastguard Workergenrule { 612*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_pwpb_proto_header", 613*61c4878aSAndroid Build Coastguard Worker defaults: ["pw_rpc_generate_pwpb_proto_with_prefix"], 614*61c4878aSAndroid Build Coastguard Worker srcs: [":pw_rpc_echo_proto_with_prefix"], 615*61c4878aSAndroid Build Coastguard Worker out: ["pw_rpc/echo.pwpb.h"], 616*61c4878aSAndroid Build Coastguard Worker} 617*61c4878aSAndroid Build Coastguard Worker 618*61c4878aSAndroid Build Coastguard Workercc_library_static { 619*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_echo_service_pwpb", 620*61c4878aSAndroid Build Coastguard Worker cpp_std: "c++20", 621*61c4878aSAndroid Build Coastguard Worker vendor_available: true, 622*61c4878aSAndroid Build Coastguard Worker host_supported: true, 623*61c4878aSAndroid Build Coastguard Worker export_include_dirs: ["public/pw_rpc"], 624*61c4878aSAndroid Build Coastguard Worker generated_headers: [ 625*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_pwpb_proto_header", 626*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_pwpb_rpc_header", 627*61c4878aSAndroid Build Coastguard Worker ], 628*61c4878aSAndroid Build Coastguard Worker export_generated_headers: [ 629*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_pwpb_proto_header", 630*61c4878aSAndroid Build Coastguard Worker "pw_rpc_echo_pwpb_rpc_header", 631*61c4878aSAndroid Build Coastguard Worker ], 632*61c4878aSAndroid Build Coastguard Worker} 633*61c4878aSAndroid Build Coastguard Worker 634*61c4878aSAndroid Build Coastguard Workerpython_library_host { 635*61c4878aSAndroid Build Coastguard Worker name: "pw_rpc_internal_packet_py_lib", 636*61c4878aSAndroid Build Coastguard Worker srcs: [ 637*61c4878aSAndroid Build Coastguard Worker ":pw_rpc_internal_packet_py", 638*61c4878aSAndroid Build Coastguard Worker ], 639*61c4878aSAndroid Build Coastguard Worker pkg_path: "pw_rpc/internal", 640*61c4878aSAndroid Build Coastguard Worker} 641