# Copyright 2021 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.

import("//build_overrides/pigweed.gni")

import("$dir_pw_bloat/bloat.gni")
import("$dir_pw_build/python.gni")
import("$dir_pw_build/python_action.gni")
import("$dir_pw_build/target_types.gni")
import("$dir_pw_docgen/docs.gni")
import("$dir_pw_protobuf_compiler/proto.gni")
import("$dir_pw_sync/backend.gni")
import("$dir_pw_third_party/nanopb/nanopb.gni")
import("$dir_pw_unit_test/test.gni")
import("config.gni")
import("internal/integration_test_ports.gni")

config("public_include_path") {
  include_dirs = [ "public" ]
  visibility = [ ":*" ]
}

config("global_mutex_config") {
  defines = [ "PW_RPC_USE_GLOBAL_MUTEX=1" ]
  visibility = [ ":*" ]
}

# Set pw_rpc_CONFIG to this to enable the global mutex. If additional options
# are needed, a config target that sets those can depend on this.
group("use_global_mutex") {
  public_configs = [ ":global_mutex_config" ]
}

pw_source_set("config") {
  sources = [ "public/pw_rpc/internal/config.h" ]
  public_configs = [ ":public_include_path" ]
  public_deps = [ pw_rpc_CONFIG ]
  visibility = [ "./*" ]
  friend = [ "./*" ]
}

pw_source_set("log_config") {
  sources = [ "public/pw_rpc/internal/log_config.h" ]
  public_configs = [ ":public_include_path" ]
  public_deps = [ ":config" ]
  visibility = [ "./*" ]
  friend = [ "./*" ]
}

pw_source_set("server") {
  public_configs = [ ":public_include_path" ]
  public_deps = [ ":common" ]
  deps = [
    ":log_config",
    dir_pw_log,
  ]
  public = [
    "public/pw_rpc/server.h",
    "public/pw_rpc/service.h",
  ]
  sources = [
    "public/pw_rpc/internal/hash.h",
    "public/pw_rpc/internal/method.h",
    "public/pw_rpc/internal/method_lookup.h",
    "public/pw_rpc/internal/method_union.h",
    "public/pw_rpc/internal/open_call.h",
    "public/pw_rpc/internal/server_call.h",
    "server.cc",
    "server_call.cc",
    "service.cc",
  ]
  friend = [ "./*" ]
  allow_circular_includes_from = [ ":common" ]
}

pw_source_set("client") {
  public_configs = [ ":public_include_path" ]
  public_deps = [
    ":common",
    dir_pw_result,
  ]
  deps = [
    ":log_config",
    dir_pw_log,
  ]
  public = [
    "public/pw_rpc/client.h",
    "public/pw_rpc/internal/client_call.h",
    "public/pw_rpc/internal/service_client.h",
  ]
  sources = [
    "client.cc",
    "client_call.cc",
  ]
  allow_circular_includes_from = [ ":common" ]
}

pw_source_set("client_server") {
  public_configs = [ ":public_include_path" ]
  public_deps = [
    ":client",
    ":server",
  ]
  public = [ "public/pw_rpc/client_server.h" ]
  sources = [ "client_server.cc" ]
}

# Classes shared by the server and client.
pw_source_set("common") {
  public_configs = [ ":public_include_path" ]
  public_deps = [
    ":config",
    ":protos.pwpb",
    "$dir_pw_containers:intrusive_list",
    "$dir_pw_sync:lock_annotations",
    dir_pw_assert,
    dir_pw_bytes,
    dir_pw_function,
    dir_pw_status,
  ]

  if (pw_sync_MUTEX_BACKEND != "") {
    public_deps += [ "$dir_pw_sync:mutex" ]
  }

  deps = [
    ":log_config",
    dir_pw_log,
  ]
  public = [
    "public/pw_rpc/channel.h",
    "public/pw_rpc/writer.h",
  ]
  sources = [
    "call.cc",
    "channel.cc",
    "endpoint.cc",
    "packet.cc",
    "public/pw_rpc/internal/call.h",
    "public/pw_rpc/internal/call_context.h",
    "public/pw_rpc/internal/channel.h",
    "public/pw_rpc/internal/endpoint.h",
    "public/pw_rpc/internal/lock.h",
    "public/pw_rpc/internal/method_info.h",
    "public/pw_rpc/internal/packet.h",
    "public/pw_rpc/method_type.h",
  ]
  friend = [ "./*" ]
}

pw_source_set("synchronized_channel_output") {
  public_configs = [ ":public_include_path" ]
  public_deps = [
    ":common",
    "$dir_pw_sync:lock_annotations",
    "$dir_pw_sync:mutex",
  ]
  public = [ "public/pw_rpc/synchronized_channel_output.h" ]
}

pw_source_set("benchmark") {
  public_configs = [ ":public_include_path" ]
  public_deps = [ ":protos.raw_rpc" ]
  public = [ "public/pw_rpc/benchmark.h" ]
  sources = [ "benchmark.cc" ]
}

pw_source_set("fake_channel_output") {
  public = [
    "public/pw_rpc/internal/fake_channel_output.h",
    "public/pw_rpc/payloads_view.h",
  ]
  sources = [ "fake_channel_output.cc" ]
  public_configs = [ ":public_include_path" ]
  public_deps = [
    ":common",
    "$dir_pw_containers:filtered_view",
    "$dir_pw_containers:vector",
    "$dir_pw_containers:wrapped_iterator",
    dir_pw_assert,
    dir_pw_bytes,
  ]
  deps = [ ":log_config" ]
  visibility = [ "./*" ]
}

pw_source_set("test_utils") {
  public = [
    "public/pw_rpc/internal/fake_channel_output.h",
    "public/pw_rpc/internal/method_impl_tester.h",
    "public/pw_rpc/internal/method_info_tester.h",
    "public/pw_rpc/internal/test_method.h",
    "public/pw_rpc/internal/test_method_context.h",
    "public/pw_rpc/internal/test_utils.h",
    "pw_rpc_private/fake_server_reader_writer.h",
  ]
  public_configs = [ ":public_include_path" ]
  public_deps = [
    ":client",
    ":fake_channel_output",
    ":server",
    "$dir_pw_containers:vector",
    dir_pw_assert,
    dir_pw_bytes,
  ]
  visibility = [ "./*" ]
}

pw_source_set("integration_testing") {
  public = [
    "public/pw_rpc/integration_test_socket_client.h",
    "public/pw_rpc/integration_testing.h",
  ]
  sources = [ "integration_testing.cc" ]
  public_deps = [
    ":client",
    "$dir_pw_hdlc:pw_rpc",
    "$dir_pw_hdlc:rpc_channel_output",
    "$dir_pw_stream:socket_stream",
    "$dir_pw_unit_test:logging_event_handler",
    dir_pw_assert,
    dir_pw_unit_test,
  ]
  deps = [ dir_pw_log ]
}

pw_executable("test_rpc_server") {
  sources = [ "test_rpc_server.cc" ]
  deps = [
    ":benchmark",
    ":log_config",
    "system_server",
    "system_server:socket",
    dir_pw_log,
  ]
}

pw_executable("client_integration_test") {
  sources = [ "client_integration_test.cc" ]
  deps = [
    ":client",
    ":integration_testing",
    ":protos.raw_rpc",
    "$dir_pw_sync:binary_semaphore",
    dir_pw_log,
    dir_pw_unit_test,
  ]

  if (dir_pw_third_party_nanopb != "") {
    deps += [ "nanopb:client_integration_test" ]
  }
}

pw_python_action("cpp_client_server_integration_test") {
  script = "py/pw_rpc/testing.py"
  args = [
    "--server",
    "<TARGET_FILE(:test_rpc_server)>",
    "--client",
    "<TARGET_FILE(:client_integration_test)>",
    "--",
    "$pw_rpc_CPP_CLIENT_INTEGRATION_TEST_PORT",
  ]
  deps = [
    ":client_integration_test",
    ":test_rpc_server",
  ]

  stamp = true
}

pw_proto_library("protos") {
  sources = [
    "benchmark.proto",
    "echo.proto",
    "internal/packet.proto",
  ]
  inputs = [
    "echo.options",
    "benchmark.options",
  ]
  deps = [ "$dir_pw_protobuf:common_protos" ]
  python_package = "py"
  prefix = "pw_rpc"
}

pw_doc_group("docs") {
  sources = [
    "benchmark.rst",
    "docs.rst",
  ]
  inputs = [
    "benchmark.proto",
    "echo.proto",
    "internal/packet.proto",
    "unary_rpc.svg",
    "unary_rpc_cancelled.svg",
    "server_streaming_rpc.svg",
    "server_streaming_rpc_cancelled.svg",
    "client_streaming_rpc.svg",
    "client_streaming_rpc_cancelled.svg",
    "bidirectional_streaming_rpc.svg",
    "bidirectional_streaming_rpc_cancelled.svg",
    "request_packets.svg",
    "response_packets.svg",
  ]
  group_deps = [
    "nanopb:docs",
    "py:docs",
    "ts:docs",
  ]
  report_deps = [ ":server_size" ]
}

pw_size_report("server_size") {
  title = "Pigweed RPC server size report"

  binaries = [
    {
      target = "size_report:server_only"
      base = "size_report:base"
      label = "Server by itself"
    },
  ]

  if (dir_pw_third_party_nanopb != "") {
    binaries += [
      {
        target = "size_report:server_with_echo_service"
        base = "size_report:base_with_nanopb"
        label = "Server with a registered nanopb EchoService"
      },
    ]
  }
}

pw_test_group("tests") {
  tests = [
    ":call_test",
    ":channel_test",
    ":client_server_test",
    ":fake_channel_output_test",
    ":method_test",
    ":ids_test",
    ":packet_test",
    ":server_test",
    ":service_test",
  ]
  group_deps = [
    "nanopb:tests",
    "raw:tests",
  ]
}

pw_proto_library("test_protos") {
  sources = [ "pw_rpc_test_protos/test.proto" ]
  inputs = [ "pw_rpc_test_protos/test.options" ]
  visibility = [ "./*" ]
}

pw_test("call_test") {
  deps = [
    ":server",
    ":test_utils",
  ]
  sources = [ "call_test.cc" ]
}

pw_test("channel_test") {
  deps = [
    ":server",
    ":test_utils",
  ]
  sources = [ "channel_test.cc" ]
}

pw_python_action("generate_ids_test") {
  outputs = [ "$target_gen_dir/generated_ids_test.cc" ]

  script = "py/tests/ids_test.py"
  args = [ "--generate-cc-test" ] + rebase_path(outputs, root_build_dir)
  python_deps = [
    "$dir_pw_build/py",
    "py",
  ]
}

pw_test("ids_test") {
  deps = [
    ":generate_ids_test",
    ":server",
  ]
  sources = get_target_outputs(":generate_ids_test")
}

pw_test("packet_test") {
  deps = [
    ":server",
    dir_pw_bytes,
    dir_pw_protobuf,
  ]
  sources = [ "packet_test.cc" ]
}

pw_test("service_test") {
  deps = [
    ":protos.pwpb",
    ":server",
    dir_pw_assert,
  ]
  sources = [ "service_test.cc" ]
}

pw_test("client_server_test") {
  deps = [
    ":client_server",
    ":test_utils",
    "raw:server_api",
  ]
  sources = [ "client_server_test.cc" ]
}

pw_test("method_test") {
  deps = [
    ":server",
    ":test_utils",
  ]
  sources = [ "method_test.cc" ]
}

pw_test("server_test") {
  deps = [
    ":protos.pwpb",
    ":server",
    ":test_utils",
    dir_pw_assert,
  ]
  sources = [ "server_test.cc" ]
}

pw_test("fake_channel_output_test") {
  deps = [ ":test_utils" ]
  sources = [ "fake_channel_output_test.cc" ]
}
