# 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) pw_add_library(pw_rpc.nanopb.server_api STATIC HEADERS public/pw_rpc/nanopb/internal/method.h public/pw_rpc/nanopb/internal/method_union.h public/pw_rpc/nanopb/server_reader_writer.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_bytes pw_rpc.config pw_rpc.nanopb.common pw_rpc.raw.server_api pw_rpc.server pw_span SOURCES method.cc server_reader_writer.cc PRIVATE_DEPS pw_log pw_rpc.log_config ) # TODO(hepler): Deprecate this once no one depends on it. pw_add_library(pw_rpc.nanopb.method_union INTERFACE PUBLIC_DEPS pw_rpc.nanopb.server_api ) pw_add_library(pw_rpc.nanopb.client_api INTERFACE HEADERS public/pw_rpc/nanopb/client_reader_writer.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_function pw_rpc.client pw_rpc.nanopb.common ) pw_add_library(pw_rpc.nanopb.common STATIC HEADERS public/pw_rpc/nanopb/internal/common.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_bytes pw_rpc.common pw_third_party.nanopb SOURCES common.cc PRIVATE_DEPS pw_log pw_rpc.client pw_rpc.log_config ) pw_add_library(pw_rpc.nanopb.test_method_context INTERFACE HEADERS public/pw_rpc/nanopb/fake_channel_output.h public/pw_rpc/nanopb/test_method_context.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_assert pw_containers pw_rpc.nanopb.server_api pw_rpc.test_utils ) pw_add_library(pw_rpc.nanopb.client_testing INTERFACE HEADERS public/pw_rpc/nanopb/client_testing.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_rpc.nanopb.test_method_context pw_rpc.client pw_rpc.raw.client_testing ) pw_add_library(pw_rpc.nanopb.client_server_testing INTERFACE HEADERS public/pw_rpc/nanopb/client_server_testing.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_rpc.nanopb.test_method_context pw_rpc.client_server_testing ) pw_add_library(pw_rpc.nanopb.client_server_testing_threaded INTERFACE HEADERS public/pw_rpc/nanopb/client_server_testing_threaded.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_rpc.nanopb.test_method_context pw_rpc.client_server_testing_threaded ) pw_add_library(pw_rpc.nanopb.internal_test_utils INTERFACE HEADERS pw_rpc_nanopb_private/internal_test_utils.h PUBLIC_DEPS pw_span pw_third_party.nanopb ) pw_add_library(pw_rpc.nanopb.echo_service INTERFACE HEADERS public/pw_rpc/echo_service_nanopb.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_rpc.protos.nanopb_rpc ) pw_add_library(pw_rpc.nanopb.client_integration_test STATIC SOURCES client_integration_test.cc PRIVATE_DEPS pw_assert pw_rpc.integration_testing pw_rpc.protos.nanopb_rpc pw_sync.binary_semaphore pw_unit_test ) pw_add_test(pw_rpc.nanopb.client_call_test SOURCES client_call_test.cc PRIVATE_DEPS pw_rpc.nanopb.client_api pw_rpc.nanopb.internal_test_utils pw_rpc.test_protos.nanopb pw_rpc.test_utils GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.client_reader_writer_test SOURCES client_reader_writer_test.cc PRIVATE_DEPS pw_rpc.nanopb.client_api pw_rpc.nanopb.client_testing pw_rpc.test_protos.nanopb_rpc GROUPS modules pw_rpc.nanopb ) if(NOT "${pw_sync.mutex_BACKEND}" STREQUAL "") pw_add_test(pw_rpc.nanopb.client_server_context_test SOURCES client_server_context_test.cc PRIVATE_DEPS pw_rpc.nanopb.client_api pw_rpc.nanopb.client_server_testing pw_rpc.test_protos.nanopb_rpc pw_sync.mutex GROUPS modules pw_rpc.nanopb ) endif() if(("${pw_thread.thread_BACKEND}" STREQUAL "pw_thread_stl.thread") AND (NOT "${pw_sync.binary_semaphore_BACKEND}" STREQUAL "") AND (NOT "${pw_sync.mutex_BACKEND}" STREQUAL "")) pw_add_test(pw_rpc.nanopb.client_server_context_threaded_test SOURCES client_server_context_threaded_test.cc PRIVATE_DEPS pw_rpc.nanopb.client_api pw_rpc.nanopb.client_server_testing_threaded pw_rpc.test_protos.nanopb_rpc pw_sync.binary_semaphore pw_sync.mutex pw_thread.non_portable_test_thread_options pw_thread.thread pw_thread_stl.test_threads GROUPS modules pw_rpc.nanopb ) endif() pw_add_test(pw_rpc.nanopb.codegen_test SOURCES codegen_test.cc PRIVATE_DEPS pw_rpc.nanopb.client_api pw_rpc.nanopb.internal_test_utils pw_rpc.nanopb.server_api pw_rpc.nanopb.test_method_context pw_rpc.test_protos.nanopb_rpc pw_rpc.test_utils GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.fake_channel_output_test SOURCES fake_channel_output_test.cc PRIVATE_DEPS pw_rpc.nanopb.server_api pw_rpc.nanopb.test_method_context pw_rpc.test_protos.nanopb_rpc GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.method_test SOURCES method_test.cc PRIVATE_DEPS pw_containers pw_rpc.nanopb.internal_test_utils pw_rpc.nanopb.server_api pw_rpc.test_protos.nanopb pw_rpc.test_utils GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.method_info_test SOURCES method_info_test.cc PRIVATE_DEPS pw_rpc.common pw_rpc.test_protos.nanopb_rpc pw_rpc.test_utils GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.method_lookup_test SOURCES method_lookup_test.cc PRIVATE_DEPS pw_rpc.nanopb.server_api pw_rpc.nanopb.test_method_context pw_rpc.test_protos.nanopb_rpc pw_rpc.test_utils pw_rpc.raw.test_method_context GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.method_union_test SOURCES method_union_test.cc PRIVATE_DEPS pw_rpc.nanopb.internal_test_utils pw_rpc.nanopb.server_api pw_rpc.test_protos.nanopb pw_rpc.test_utils GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.echo_service_test SOURCES echo_service_test.cc PRIVATE_DEPS pw_rpc.nanopb.echo_service pw_rpc.nanopb.server_api pw_rpc.nanopb.test_method_context GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.serde_test SOURCES serde_test.cc PRIVATE_DEPS pw_rpc.nanopb.server_api pw_rpc.test_protos.nanopb GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.server_callback_test SOURCES server_callback_test.cc PRIVATE_DEPS pw_rpc.nanopb.server_api pw_rpc.nanopb.test_method_context pw_rpc.test_protos.nanopb_rpc GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.server_reader_writer_test SOURCES server_reader_writer_test.cc PRIVATE_DEPS pw_rpc.nanopb.server_api pw_rpc.nanopb.test_method_context pw_rpc.test_protos.nanopb_rpc GROUPS modules pw_rpc.nanopb ) pw_add_test(pw_rpc.nanopb.stub_generation_test SOURCES stub_generation_test.cc PRIVATE_DEPS pw_rpc.test_protos.nanopb_rpc GROUPS modules pw_rpc.nanopb ) # TODO: b/231950909 - Test disabled as pw_work_queue lacks CMakeLists.txt if((TARGET pw_work_queue.pw_work_queue) AND ("${pw_thread.thread_BACKEND}" STREQUAL "pw_thread_stl.thread") AND (NOT "${pw_sync.timed_thread_notification_BACKEND}" STREQUAL "")) pw_add_test(pw_rpc.nanopb.synchronous_call_test SOURCES synchronous_call_test.cc PRIVATE_DEPS pw_rpc.nanopb.test_method_context pw_rpc.synchronous_client_api pw_rpc.test_protos.nanopb_rpc pw_thread.thread pw_work_queue.pw_work_queue pw_work_queue.stl_test_thread pw_work_queue.test_thread GROUPS modules pw_rpc.nanopb ) endif()