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

include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
include($ENV{PW_ROOT}/pw_protobuf_compiler/proto.cmake)

add_subdirectory(nanopb)
add_subdirectory(pwpb)
add_subdirectory(raw)
add_subdirectory(system_server)

pw_add_module_config(pw_rpc_CONFIG)

pw_add_library(pw_rpc.config INTERFACE
  HEADERS
    public/pw_rpc/internal/config.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    ${pw_rpc_CONFIG}
)

pw_add_library(pw_rpc.log_config INTERFACE
  HEADERS
    public/pw_rpc/internal/log_config.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_rpc.config
)

pw_add_library(pw_rpc.server STATIC
  HEADERS
    public/pw_rpc/server.h
    public/pw_rpc/service.h
    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/server_call.h
  PUBLIC_INCLUDES
    public
  SOURCES
    server.cc
    server_call.cc
    service.cc
  PUBLIC_DEPS
    pw_rpc.common
  PRIVATE_DEPS
    pw_log
    pw_rpc.log_config
)
if(Zephyr_FOUND AND CONFIG_PIGWEED_RPC_SERVER)
  zephyr_link_libraries(pw_rpc.server)
endif()

pw_add_library(pw_rpc.client STATIC
  HEADERS
    public/pw_rpc/client.h
    public/pw_rpc/internal/client_call.h
    public/pw_rpc/internal/service_client.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_result
    pw_rpc.common
    pw_span
  SOURCES
    client.cc
    client_call.cc
  PRIVATE_DEPS
    pw_log
    pw_rpc.log_config
)
if(Zephyr_FOUND AND CONFIG_PIGWEED_RPC_CLIENT)
  zephyr_link_libraries(pw_rpc.client)
endif()

pw_add_library(pw_rpc.client_server STATIC
  HEADERS
    public/pw_rpc/client_server.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_rpc.client
    pw_rpc.server
  SOURCES
    client_server.cc
)
if(Zephyr_FOUND AND CONFIG_PIGWEED_RPC_CLIENT_SERVER)
  zephyr_link_libraries(pw_rpc.client_server)
endif()

pw_add_library(pw_rpc.synchronous_client_api INTERFACE
  HEADERS
    public/pw_rpc/synchronous_call.h
    public/pw_rpc/synchronous_call_result.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_chrono.system_clock
    pw_rpc.client
    pw_rpc.common
    pw_sync.timed_thread_notification
)

pw_add_library(pw_rpc.common STATIC
  HEADERS
    public/pw_rpc/channel.h
    public/pw_rpc/internal/call.h
    public/pw_rpc/internal/call_context.h
    public/pw_rpc/internal/channel.h
    public/pw_rpc/internal/channel_list.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_id.h
    public/pw_rpc/method_info.h
    public/pw_rpc/method_type.h
    public/pw_rpc/packet_meta.h
    public/pw_rpc/service_id.h
    public/pw_rpc/writer.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_assert
    pw_bytes
    pw_containers.intrusive_list
    pw_function
    pw_rpc.config
    pw_rpc.protos.pwpb
    pw_span
    pw_status
    pw_sync.lock_annotations
    pw_toolchain.no_destructor
  SOURCES
    call.cc
    channel.cc
    channel_list.cc
    endpoint.cc
    packet.cc
    packet_meta.cc
  PRIVATE_DEPS
    pw_log
    pw_rpc.log_config
)
if(NOT "${pw_sync.mutex_BACKEND}" STREQUAL "")
  pw_target_link_targets(pw_rpc.common PUBLIC pw_sync.mutex)
endif()

if(NOT "${pw_thread.sleep_BACKEND}" STREQUAL "")
  pw_target_link_targets(pw_rpc.common PUBLIC pw_thread.sleep)
endif()

if(NOT "${pw_thread.yield_BACKEND}" STREQUAL "")
  pw_target_link_targets(pw_rpc.common PUBLIC pw_thread.yield)
endif()

if(Zephyr_FOUND AND CONFIG_PIGWEED_RPC_COMMON)
  zephyr_link_libraries(pw_rpc.common)
endif()

pw_add_library(pw_rpc.fake_channel_output STATIC
  HEADERS
    public/pw_rpc/internal/fake_channel_output.h
    public/pw_rpc/payloads_view.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_assert
    pw_bytes
    pw_containers.filtered_view
    pw_containers.vector
    pw_containers.wrapped_iterator
    pw_function
    pw_rpc.common
    pw_sync.mutex
  SOURCES
    fake_channel_output.cc
  PRIVATE_DEPS
    pw_log
    pw_rpc.log_config
)

pw_add_library(pw_rpc.client_server_testing INTERFACE
  HEADERS
    public/pw_rpc/internal/client_server_testing.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_bytes
    pw_result
    pw_rpc.client_server
    pw_rpc.fake_channel_output
)

pw_add_library(pw_rpc.client_server_testing_threaded INTERFACE
  HEADERS
    public/pw_rpc/internal/client_server_testing_threaded.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_bytes
    pw_result
    pw_rpc.client_server_testing
    pw_sync.binary_semaphore
    pw_sync.lock_annotations
    pw_sync.mutex
    pw_thread.thread
)

pw_add_library(pw_rpc.test_helpers INTERFACE
  HEADERS
    public/pw_rpc/test_helpers.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_assert
    pw_chrono.system_clock
    pw_rpc.fake_channel_output
    pw_status
    pw_sync.counting_semaphore
    pw_thread.yield
)

# thread_testing target is kept for backward compatibility.
# New code should use pw_rpc.test_helpers instead.
pw_add_library(pw_rpc.thread_testing INTERFACE
  HEADERS
    public/pw_rpc/thread_testing.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_rpc.test_helpers
)

pw_add_library(pw_rpc.test_utils INTERFACE
  HEADERS
    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_INCLUDES
    public
  PUBLIC_DEPS
    pw_assert
    pw_bytes
    pw_rpc.client
    pw_rpc.server
    pw_containers.vector
    pw_rpc.raw.fake_channel_output
    pw_rpc.raw.server_api
)

pw_add_library(pw_rpc.integration_testing STATIC
  HEADERS
    public/pw_rpc/integration_test_socket_client.h
    public/pw_rpc/integration_testing.h
  PUBLIC_INCLUDES
    public
  PUBLIC_DEPS
    pw_assert
    pw_function
    pw_hdlc.pw_rpc
    pw_hdlc.rpc_channel_output
    pw_rpc.client
    pw_stream.socket_stream
    pw_unit_test
    pw_unit_test.logging_event_handler
  SOURCES
    integration_testing.cc
  PRIVATE_DEPS
    pw_log
)

pw_proto_library(pw_rpc.protos
  SOURCES
    benchmark.proto
    internal/packet.proto
    echo.proto
  INPUTS
    echo.options
    benchmark.options
  PREFIX
    pw_rpc
)

pw_proto_library(pw_rpc.test_protos
  SOURCES
    pw_rpc_test_protos/no_package.proto
    pw_rpc_test_protos/test.proto
  INPUTS
    pw_rpc_test_protos/test.options
)

# Set pw_rpc_CONFIG to this to disable the global mutex.
pw_add_library(pw_rpc.disable_global_mutex_config INTERFACE
  PUBLIC_DEFINES
    PW_RPC_USE_GLOBAL_MUTEX=0
)

pw_add_test(pw_rpc.call_test
  SOURCES
    call_test.cc
  PRIVATE_DEPS
    pw_rpc.server
    pw_rpc.test_utils
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.channel_test
  SOURCES
    channel_test.cc
  PRIVATE_DEPS
    pw_rpc.server
    pw_rpc.test_utils
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.packet_test
  SOURCES
    packet_test.cc
  PRIVATE_DEPS
    pw_bytes
    pw_protobuf
    pw_rpc.server
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.packet_meta_test
  SOURCES
    packet_meta_test.cc
  PRIVATE_DEPS
    pw_bytes
    pw_rpc.server
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.service_test
  SOURCES
    service_test.cc
  PRIVATE_DEPS
    pw_assert
    pw_rpc.protos.pwpb
    pw_rpc.server
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.client_server_test
  SOURCES
    client_server_test.cc
  PRIVATE_DEPS
    pw_rpc.client_server
    pw_rpc.test_utils
    pw_rpc.raw.server_api
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.method_test
  SOURCES
    method_test.cc
  PRIVATE_DEPS
    pw_rpc.server
    pw_rpc.test_utils
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.server_test
  SOURCES
    server_test.cc
  PRIVATE_DEPS
    pw_assert
    pw_rpc.protos.pwpb
    pw_rpc.server
    pw_rpc.test_utils
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.fake_channel_output_test
  SOURCES
    fake_channel_output_test.cc
  PRIVATE_DEPS
    pw_rpc.test_utils
  GROUPS
    modules
    pw_rpc
)

pw_add_test(pw_rpc.test_helpers_test
  SOURCES
    test_helpers_test.cc
  PRIVATE_DEPS
    pw_result
    pw_rpc.pwpb.client_testing
    pw_rpc.pwpb.echo_service
    pw_rpc.pwpb.server_api
    pw_rpc.test_helpers
    pw_status
    pw_sync.interrupt_spin_lock
    pw_sync.lock_annotations
    pw_sync.timed_thread_notification
  GROUPS
    modules
    pw_rpc
)
