| # Copyright (C) 2017 The Android Open Source Project |
| # |
| # 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 |
| # |
| # http://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("../../gn/fuzzer.gni") |
| import("../../gn/perfetto.gni") |
| import("../../gn/perfetto_component.gni") |
| import("../../gn/proto_library.gni") |
| import("../../gn/test.gni") |
| |
| # This build file should not be leaked into all embedders. Only select |
| # projects should be depending on our IPC layer. |
| assert(enable_perfetto_ipc) |
| |
| if (perfetto_component_type == "static_library") { |
| # In build generators everything else outside should just depend on the |
| # :perfetto_ipc static library (at the end of this file) rather than |
| # individual sub-targets. |
| _ipc_visibility = [ ":*" ] # Only targets defined in this file. |
| } else { |
| _ipc_visibility = [ "*" ] # Default visibility. |
| } |
| |
| source_set("client") { |
| public_deps = [ |
| "../../include/perfetto/ext/ipc", |
| "../base:unix_socket", |
| ] |
| deps = [ |
| ":common", |
| "../../gn:default_deps", |
| "../../protos/perfetto/ipc:wire_protocol_cpp", |
| "../base", |
| ] |
| sources = [ |
| "client_impl.cc", |
| "client_impl.h", |
| "service_proxy.cc", |
| ] |
| visibility = _ipc_visibility |
| } |
| |
| source_set("host") { |
| public_deps = [ |
| "../../include/perfetto/ext/ipc", |
| "../base:unix_socket", |
| ] |
| deps = [ |
| ":common", |
| "../../gn:default_deps", |
| "../../protos/perfetto/ipc:wire_protocol_cpp", |
| "../base", |
| ] |
| sources = [ |
| "host_impl.cc", |
| "host_impl.h", |
| ] |
| visibility = _ipc_visibility |
| } |
| |
| source_set("common") { |
| public_deps = [ |
| "../../include/perfetto/ext/ipc", |
| "../../protos/perfetto/ipc:wire_protocol_cpp", |
| ] |
| deps = [ |
| "../../gn:default_deps", |
| "../base", |
| ] |
| sources = [ |
| "buffered_frame_deserializer.cc", |
| "buffered_frame_deserializer.h", |
| "deferred.cc", |
| "virtual_destructors.cc", |
| ] |
| visibility = _ipc_visibility |
| } |
| |
| perfetto_fuzzer_test("buffered_frame_deserializer_fuzzer") { |
| sources = [ "buffered_frame_deserializer_fuzzer.cc" ] |
| deps = [ |
| ":common", |
| "../../gn:default_deps", |
| "../../protos/perfetto/ipc:wire_protocol_cpp", |
| "../base", |
| ] |
| } |
| |
| perfetto_unittest_source_set("unittests") { |
| testonly = true |
| deps = [ |
| ":client", |
| ":common", |
| ":host", |
| ":test_messages_cpp", |
| ":test_messages_ipc", |
| "../../gn:default_deps", |
| "../../gn:gtest_and_gmock", |
| "../../protos/perfetto/ipc:wire_protocol_cpp", |
| "../base", |
| "../base:test_support", |
| ] |
| sources = [ |
| "buffered_frame_deserializer_unittest.cc", |
| "client_impl_unittest.cc", |
| "deferred_unittest.cc", |
| "host_impl_unittest.cc", |
| "test/ipc_integrationtest.cc", |
| ] |
| } |
| |
| perfetto_proto_library("test_messages_@TYPE@") { |
| proto_generators = [ |
| "ipc", |
| "zero", |
| "cpp", |
| ] |
| sources = [ |
| "test/client_unittest_messages.proto", |
| "test/deferred_unittest_messages.proto", |
| "test/greeter_service.proto", |
| ] |
| } |
| |
| # This is used by Bazel BUILD rules. The problem it solves is the following: |
| # In GN builds we want to keep client and host separate. This allows reducing |
| # the binary size by splitting targets all the way up to the client library |
| # (libperfetto_client_experimental). In bazel/blaze we fuse everything together |
| # because handling this split is too complex due to the lack of a |
| # source_set-equivalent. |
| perfetto_component("perfetto_ipc") { |
| public_deps = [ |
| ":client", |
| ":common", |
| ":host", |
| "../../gn:default_deps", |
| ] |
| } |