blob: b2665c38289164b724a9726e13b1296b0ca8da66 [file] [log] [blame]
# 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()