// Copyright 2022 The Pigweed Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.

package {
    default_applicable_licenses: ["external_pigweed_license"],
}

java_library {
    name: "pw_rpc_java_client",
    srcs: ["java/main/dev/pigweed/pw_rpc/*.java"],
    visibility: ["//visibility:public"],
    static_libs: [
        "pw_log_android_java",
        "pw_rpc_packet_proto_java_lite",
    ],
    libs: [
        "auto_value_annotations",
        "guava",
        "jsr305",
        "libprotobuf-java-lite",
    ],
    plugins: ["auto_value_plugin"],
    sdk_version: "current",
}

java_library_static {
    name: "pw_rpc_packet_proto_java_lite",
    host_supported: true,
    proto: {
        type: "lite",
    },
    srcs: ["internal/packet.proto"],
    sdk_version: "current",
}

java_library_static {
    name: "pw_rpc_echo_proto_java_lite",
    visibility: ["//visibility:public"],
    host_supported: true,
    proto: {
        type: "lite",
    },
    srcs: ["echo.proto"],
    sdk_version: "current",
}

filegroup {
    name: "pw_rpc_src_files",
    srcs: [
        "call.cc",
        "channel.cc",
        "channel_list.cc",
        "client.cc",
        "client_call.cc",
        "client_server.cc",
        "endpoint.cc",
        "fake_channel_output.cc",
        "packet.cc",
        "packet_meta.cc",
        "server.cc",
        "server_call.cc",
        "service.cc",
    ],
}

// Do not use this directly. It is used by the pw_rpc_defaults to keep the
// path to the "public" directory relative to this module.
cc_library_headers {
    name: "pw_rpc_include_dirs",
    export_include_dirs: [
        "public",
    ],
    vendor_available: true,
    host_supported: true,
}

// This rule must be instantiated, i.e.
//
//   cc_library_static {
//       name: "pw_rpc_<instance_name>",
//       defaults: [
//           "pw_rpc_cflags_<instance_name>",
//           "pw_rpc_defaults",
//       ],
//   }
//
// where pw_rpc_cflags_<instance_name> defines your flags, i.e.
//
//   cc_defaults {
//       name: "pw_rpc_cflags_<instance_name>",
//       cflags: [
//           "-DPW_RPC_USE_GLOBAL_MUTEX=0",
//           "-DPW_RPC_COMPLETION_REQUEST_CALLBACK",
//           "-DPW_RPC_DYNAMIC_ALLOCATION",
//       ],
//   }
//
// see pw_rpc_nanopb_defaults, pw_rpc_raw_defaults
cc_defaults {
    name: "pw_rpc_defaults",
    cpp_std: "c++20",
    defaults: [
        "pw_android_common_backends",
    ],
    header_libs: [
        "fuchsia_sdk_lib_fit",
        "fuchsia_sdk_lib_stdcompat",
        "pw_assert",
        "pw_log",
        "pw_rpc_include_dirs",
        "pw_sync",
    ],
    export_header_lib_headers: [
        "fuchsia_sdk_lib_fit",
        "fuchsia_sdk_lib_stdcompat",
        "pw_assert",
        "pw_log",
        "pw_rpc_include_dirs",
        "pw_sync",
    ],
    static_libs: [
        "pw_bytes",
        "pw_containers",
        "pw_function",
        "pw_polyfill",
        "pw_preprocessor",
        "pw_protobuf",
        "pw_result",
        "pw_span",
        "pw_status",
        "pw_stream",
        "pw_string",
        "pw_sync_baremetal",
        "pw_toolchain",
        "pw_varint",
    ],
    export_static_lib_headers: [
        "pw_bytes",
        "pw_containers",
        "pw_function",
        "pw_polyfill",
        "pw_preprocessor",
        "pw_protobuf",
        "pw_result",
        "pw_span",
        "pw_status",
        "pw_stream",
        "pw_string",
        "pw_sync_baremetal",
        "pw_toolchain",
        "pw_varint",
    ],
    generated_headers: [
        "pw_rpc_internal_packet_pwpb_h",
    ],
    export_generated_headers: [
        "pw_rpc_internal_packet_pwpb_h",
    ],
    srcs: [
        ":pw_rpc_src_files",
    ],
}

genrule {
    name: "pw_rpc_internal_packet_pwpb_h",
    srcs: ["internal/packet.proto"],
    cmd: "python3 $(location pw_protobuf_compiler_py) " +
        "--out-dir=$$(dirname $(location pw_rpc/internal/packet.pwpb.h)) " +
        "--plugin-path=$(location pw_protobuf_plugin_py) " +
        "--compile-dir=$$(dirname $(in)) " +
        "--sources $(in) " +
        "--language pwpb " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc) ",
    out: [
        "pw_rpc/internal/packet.pwpb.h",
    ],
    tools: [
        "aprotoc",
        "pw_protobuf_plugin_py",
        "pw_protobuf_compiler_py",
    ],
}

genrule {
    name: "pw_rpc_internal_packet_py",
    srcs: ["internal/packet.proto"],
    cmd: "python3 $(location pw_protobuf_compiler_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$$(dirname $(in)) " +
        "--sources $(in) " +
        "--language python " +
        "--no-generate-type-hints " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    out: [
        "packet_pb2.py",
    ],
    tools: [
        "aprotoc",
        "pw_protobuf_compiler_py",
    ],
}

// Generate cc and header nanopb files.
// The output file names are based on the srcs file name with a .pb.c / .pb.h extension.
genrule_defaults {
    name: "pw_rpc_generate_nanopb_proto",
    cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location protoc-gen-nanopb) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language nanopb " +
        "--sources $(in) " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "protoc-gen-nanopb",
        "pw_protobuf_compiler_py",
    ],
}

// Same as pw_rpc_generate_nanopb_proto but the proto files are compiled with a
// single prefix, which can be added with pw_rpc_add_prefix_to_proto.
// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only
// .proto files are passed to the compile script. Make sure .option files are
// prefixed in the same rule as their .proto files.
//
// See the pw_rpc_echo_service_nanopb target for an example. The echo.proto file
// is compiled with "pw_rpc" as the prefix.
genrule_defaults {
    name: "pw_rpc_generate_nanopb_proto_with_prefix",
    cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " +
        "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " +
        "for f in \"$${in_files[@]}\"; do " +
        "if [[ \"$${f##*.}\" == \"proto\" ]]; then " +
        "proto_files+=(\"$${f}\"); fi; done; " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location protoc-gen-nanopb) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language nanopb " +
        "--sources $${proto_files} " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "protoc-gen-nanopb",
        "pw_protobuf_compiler_py",
    ],
}

// Generate the header nanopb RPC file.
// The output file name is based on the srcs file name with a .rpc.pb.h extension.
genrule_defaults {
    name: "pw_rpc_generate_nanopb_rpc_header",
    cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_rpc_plugin_nanopb_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language nanopb_rpc " +
        "--sources $(in) " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_compiler_py",
        "pw_rpc_plugin_nanopb_py",
    ],
}

// Same as pw_rpc_generate_nanopb_rpc_header but the proto files are compiled
// with a single prefix, which can be added with pw_rpc_add_prefix_to_proto.
// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only
// .proto files are passed to the compile script. Make sure .option files are
// prefixed in the same rule as their .proto files.
//
// See the pw_rpc_echo_service_nanopb target for an example. The echo.proto file
// is compiled with "pw_rpc" as the prefix.
genrule_defaults {
    name: "pw_rpc_generate_nanopb_rpc_header_with_prefix",
    cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " +
        "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " +
        "for f in \"$${in_files[@]}\"; do " +
        "if [[ \"$${f##*.}\" == \"proto\" ]]; then " +
        "proto_files+=(\"$${f}\"); fi; done; " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_rpc_plugin_nanopb_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language nanopb_rpc " +
        "--sources $${proto_files} " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_compiler_py",
        "pw_rpc_plugin_nanopb_py",
    ],
}

// Generate the header raw RPC file.
// The output file name is based on the srcs file name with a .raw_rpc.pb.h extension.
genrule_defaults {
    name: "pw_rpc_generate_raw_rpc_header",
    cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_rpc_plugin_rawpb_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language raw_rpc " +
        "--sources $(in) " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_compiler_py",
        "pw_rpc_plugin_rawpb_py",
    ],
}

// Same as pw_rpc_generate_raw_rpc_header but the proto files are compiled with
// a single prefix, which can be added with pw_rpc_add_prefix_to_proto.
// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only
// .proto files are passed to the compile script. Make sure .option files are
// prefixed in the same rule as their .proto files.
//
// See the pw_rpc_echo_service_pwpb target for an example. The echo.proto file
// is compiled with "pw_rpc" as the prefix.
genrule_defaults {
    name: "pw_rpc_generate_raw_rpc_header_with_prefix",
    cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " +
        "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " +
        "for f in \"$${in_files[@]}\"; do " +
        "if [[ \"$${f##*.}\" == \"proto\" ]]; then " +
        "proto_files+=(\"$${f}\"); fi; done; " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_rpc_plugin_rawpb_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language raw_rpc " +
        "--sources $${proto_files} " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_compiler_py",
        "pw_rpc_plugin_rawpb_py",
    ],
}

// Generate header pwpb files.
// The output file names are based on the srcs file name with a .pwpb.h extension.
genrule_defaults {
    name: "pw_rpc_generate_pwpb_proto",
    cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_protobuf_plugin_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language pwpb " +
        "--sources $(in) " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_plugin_py",
        "pw_protobuf_compiler_py",
    ],
}

// Same as pw_rpc_generate_pwpb_proto but the proto files are compiled with a
// single prefix, which can be added with pw_rpc_add_prefix_to_proto.
// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only
// .proto files are passed to the compile script. Make sure .option files are
// prefixed in the same rule as their .proto files.
//
// See the pw_rpc_echo_service_pwpb target for an example. The echo.proto file
// is compiled with "pw_rpc" as the prefix.
genrule_defaults {
    name: "pw_rpc_generate_pwpb_proto_with_prefix",
    cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " +
        "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " +
        "for f in \"$${in_files[@]}\"; do " +
        "if [[ \"$${f##*.}\" == \"proto\" ]]; then " +
        "proto_files+=(\"$${f}\"); fi; done; " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_protobuf_plugin_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language pwpb " +
        "--sources $${proto_files} " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_plugin_py",
        "pw_protobuf_compiler_py",
    ],
}

// Generate the header pwpb RPC file.
// The output file name is based on the srcs file name with a .rpc.pwpb.h extension.
genrule_defaults {
    name: "pw_rpc_generate_pwpb_rpc_header",
    cmd: "in_files=($(in)); compile_dir=$$(dirname $${in_files[0]}); " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_rpc_plugin_pwpb_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language pwpb_rpc " +
        "--sources $(in) " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_compiler_py",
        "pw_rpc_plugin_pwpb_py",
    ],
}

// Same as pw_rpc_generate_pwpb_rpc_header but the proto files are compiled
// with a single prefix, which can be added with pw_rpc_add_prefix_to_proto.
// Since pw_rpc_add_prefix_to_proto may include .option files as an input, only
// .proto files are passed to the compile script. Make sure .option files are
// prefixed in the same rule as their .proto files.
//
// See the pw_rpc_echo_service_pwpb target for an example. The echo.proto file
// is compiled with "pw_rpc" as the prefix.
genrule_defaults {
    name: "pw_rpc_generate_pwpb_rpc_header_with_prefix",
    cmd: "in_files=($(in)); prefix_dir=$$(dirname $${in_files[0]}); " +
        "compile_dir=$$(dirname $${prefix_dir}); proto_files=(); " +
        "for f in \"$${in_files[@]}\"; do " +
        "if [[ \"$${f##*.}\" == \"proto\" ]]; then " +
        "proto_files+=(\"$${f}\"); fi; done; " +
        "python3 $(location pw_protobuf_compiler_py) " +
        "--plugin-path=$(location pw_rpc_plugin_pwpb_py) " +
        "--out-dir=$(genDir) " +
        "--compile-dir=$${compile_dir} " +
        "--language pwpb_rpc " +
        "--sources $${proto_files} " +
        "--no-experimental-proto3-optional " +
        "--protoc=$(location aprotoc)",
    tools: [
        "aprotoc",
        "pw_protobuf_compiler_py",
        "pw_rpc_plugin_pwpb_py",
    ],
}

// Copies the proto files to a prefix directory to add the prefix to the
// compiled proto. The prefix is taken from the directory name of the first
// item listen in out.
genrule_defaults {
    name: "pw_rpc_add_prefix_to_proto",
    cmd: "out_files=($(out)); prefix=$$(dirname $${out_files[0]}); " +
        "mkdir -p $${prefix}; cp -t $${prefix} $(in);",
}

genrule {
    name: "pw_rpc_echo_proto_with_prefix",
    defaults: ["pw_rpc_add_prefix_to_proto"],
    srcs: [
        "echo.options",
        "echo.proto",
    ],
    out: [
        "pw_rpc/echo.options",
        "pw_rpc/echo.proto",
    ],
}

genrule {
    name: "pw_rpc_echo_rpc_header",
    defaults: ["pw_rpc_generate_nanopb_rpc_header_with_prefix"],
    srcs: [":pw_rpc_echo_proto_with_prefix"],
    out: ["pw_rpc/echo.rpc.pb.h"],
}

genrule {
    name: "pw_rpc_echo_proto_header",
    defaults: ["pw_rpc_generate_nanopb_proto_with_prefix"],
    srcs: [":pw_rpc_echo_proto_with_prefix"],
    out: ["pw_rpc/echo.pb.h"],
}

genrule {
    name: "pw_rpc_echo_proto_source",
    defaults: ["pw_rpc_generate_nanopb_proto_with_prefix"],
    srcs: [":pw_rpc_echo_proto_with_prefix"],
    out: ["pw_rpc/echo.pb.c"],
}

// This is a copy of the echo.pb.h header, since the generated echo.pb.c
// includes it by file name, while pw_rpc/nanopb/echo_service_nanopb.h includes
// it with a prefix.
// Soong makes it very hard to add include directories when they don't come from
// modules, so this is a kludge to add an include directory path without a
// prefix.
genrule {
    name: "pw_rpc_echo_proto_header_copy",
    cmd: "cp $(in) $(out)",
    srcs: [":pw_rpc_echo_proto_header"],
    out: ["echo.pb.h"],
}

cc_library_static {
    name: "pw_rpc_echo_service_nanopb",
    cpp_std: "c++20",
    vendor_available: true,
    host_supported: true,
    export_include_dirs: ["public/pw_rpc"],
    generated_headers: [
        "pw_rpc_echo_proto_header",
        "pw_rpc_echo_proto_header_copy",
        "pw_rpc_echo_rpc_header",
    ],
    export_generated_headers: [
        "pw_rpc_echo_proto_header",
        "pw_rpc_echo_proto_header_copy",
        "pw_rpc_echo_rpc_header",
    ],
    generated_sources: ["pw_rpc_echo_proto_source"],
    static_libs: ["libprotobuf-c-nano"],
}

genrule {
    name: "pw_rpc_echo_pwpb_rpc_header",
    defaults: ["pw_rpc_generate_pwpb_rpc_header_with_prefix"],
    srcs: [":pw_rpc_echo_proto_with_prefix"],
    out: ["pw_rpc/echo.rpc.pwpb.h"],
}

genrule {
    name: "pw_rpc_echo_pwpb_proto_header",
    defaults: ["pw_rpc_generate_pwpb_proto_with_prefix"],
    srcs: [":pw_rpc_echo_proto_with_prefix"],
    out: ["pw_rpc/echo.pwpb.h"],
}

cc_library_static {
    name: "pw_rpc_echo_service_pwpb",
    cpp_std: "c++20",
    vendor_available: true,
    host_supported: true,
    export_include_dirs: ["public/pw_rpc"],
    generated_headers: [
        "pw_rpc_echo_pwpb_proto_header",
        "pw_rpc_echo_pwpb_rpc_header",
    ],
    export_generated_headers: [
        "pw_rpc_echo_pwpb_proto_header",
        "pw_rpc_echo_pwpb_rpc_header",
    ],
}

python_library_host {
    name: "pw_rpc_internal_packet_py_lib",
    srcs: [
        ":pw_rpc_internal_packet_py",
    ],
    pkg_path: "pw_rpc/internal",
}
