1*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project 2*6dbdd20aSAndroid Build Coastguard Worker# 3*6dbdd20aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*6dbdd20aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*6dbdd20aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*6dbdd20aSAndroid Build Coastguard Worker# 7*6dbdd20aSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*6dbdd20aSAndroid Build Coastguard Worker# 9*6dbdd20aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*6dbdd20aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*6dbdd20aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6dbdd20aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*6dbdd20aSAndroid Build Coastguard Worker# limitations under the License. 14*6dbdd20aSAndroid Build Coastguard Worker 15*6dbdd20aSAndroid Build Coastguard Workerimport("../../gn/fuzzer.gni") 16*6dbdd20aSAndroid Build Coastguard Workerimport("../../gn/perfetto.gni") 17*6dbdd20aSAndroid Build Coastguard Workerimport("../../gn/perfetto_component.gni") 18*6dbdd20aSAndroid Build Coastguard Workerimport("../../gn/proto_library.gni") 19*6dbdd20aSAndroid Build Coastguard Workerimport("../../gn/test.gni") 20*6dbdd20aSAndroid Build Coastguard Worker 21*6dbdd20aSAndroid Build Coastguard Worker# This build file should not be leaked into all embedders. Only select 22*6dbdd20aSAndroid Build Coastguard Worker# projects should be depending on our IPC layer. 23*6dbdd20aSAndroid Build Coastguard Workerassert(enable_perfetto_ipc) 24*6dbdd20aSAndroid Build Coastguard Worker 25*6dbdd20aSAndroid Build Coastguard Workerif (perfetto_component_type == "static_library") { 26*6dbdd20aSAndroid Build Coastguard Worker # In build generators everything else outside should just depend on the 27*6dbdd20aSAndroid Build Coastguard Worker # :perfetto_ipc static library (at the end of this file) rather than 28*6dbdd20aSAndroid Build Coastguard Worker # individual sub-targets. 29*6dbdd20aSAndroid Build Coastguard Worker _ipc_visibility = [ ":*" ] # Only targets defined in this file. 30*6dbdd20aSAndroid Build Coastguard Worker} else { 31*6dbdd20aSAndroid Build Coastguard Worker _ipc_visibility = [ "*" ] # Default visibility. 32*6dbdd20aSAndroid Build Coastguard Worker} 33*6dbdd20aSAndroid Build Coastguard Worker 34*6dbdd20aSAndroid Build Coastguard Workersource_set("client") { 35*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ 36*6dbdd20aSAndroid Build Coastguard Worker "../../include/perfetto/ext/ipc", 37*6dbdd20aSAndroid Build Coastguard Worker "../base:unix_socket", 38*6dbdd20aSAndroid Build Coastguard Worker ] 39*6dbdd20aSAndroid Build Coastguard Worker deps = [ 40*6dbdd20aSAndroid Build Coastguard Worker ":common", 41*6dbdd20aSAndroid Build Coastguard Worker "../../gn:default_deps", 42*6dbdd20aSAndroid Build Coastguard Worker "../../protos/perfetto/ipc:wire_protocol_cpp", 43*6dbdd20aSAndroid Build Coastguard Worker "../base", 44*6dbdd20aSAndroid Build Coastguard Worker ] 45*6dbdd20aSAndroid Build Coastguard Worker sources = [ 46*6dbdd20aSAndroid Build Coastguard Worker "client_impl.cc", 47*6dbdd20aSAndroid Build Coastguard Worker "client_impl.h", 48*6dbdd20aSAndroid Build Coastguard Worker "service_proxy.cc", 49*6dbdd20aSAndroid Build Coastguard Worker ] 50*6dbdd20aSAndroid Build Coastguard Worker visibility = _ipc_visibility 51*6dbdd20aSAndroid Build Coastguard Worker} 52*6dbdd20aSAndroid Build Coastguard Worker 53*6dbdd20aSAndroid Build Coastguard Workersource_set("host") { 54*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ 55*6dbdd20aSAndroid Build Coastguard Worker "../../include/perfetto/ext/ipc", 56*6dbdd20aSAndroid Build Coastguard Worker "../base:unix_socket", 57*6dbdd20aSAndroid Build Coastguard Worker ] 58*6dbdd20aSAndroid Build Coastguard Worker deps = [ 59*6dbdd20aSAndroid Build Coastguard Worker ":common", 60*6dbdd20aSAndroid Build Coastguard Worker "../../gn:default_deps", 61*6dbdd20aSAndroid Build Coastguard Worker "../../protos/perfetto/ipc:wire_protocol_cpp", 62*6dbdd20aSAndroid Build Coastguard Worker "../base", 63*6dbdd20aSAndroid Build Coastguard Worker ] 64*6dbdd20aSAndroid Build Coastguard Worker sources = [ 65*6dbdd20aSAndroid Build Coastguard Worker "host_impl.cc", 66*6dbdd20aSAndroid Build Coastguard Worker "host_impl.h", 67*6dbdd20aSAndroid Build Coastguard Worker ] 68*6dbdd20aSAndroid Build Coastguard Worker visibility = _ipc_visibility 69*6dbdd20aSAndroid Build Coastguard Worker} 70*6dbdd20aSAndroid Build Coastguard Worker 71*6dbdd20aSAndroid Build Coastguard Workersource_set("common") { 72*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ 73*6dbdd20aSAndroid Build Coastguard Worker "../../include/perfetto/ext/ipc", 74*6dbdd20aSAndroid Build Coastguard Worker "../../protos/perfetto/ipc:wire_protocol_cpp", 75*6dbdd20aSAndroid Build Coastguard Worker ] 76*6dbdd20aSAndroid Build Coastguard Worker deps = [ 77*6dbdd20aSAndroid Build Coastguard Worker "../../gn:default_deps", 78*6dbdd20aSAndroid Build Coastguard Worker "../base", 79*6dbdd20aSAndroid Build Coastguard Worker ] 80*6dbdd20aSAndroid Build Coastguard Worker sources = [ 81*6dbdd20aSAndroid Build Coastguard Worker "buffered_frame_deserializer.cc", 82*6dbdd20aSAndroid Build Coastguard Worker "buffered_frame_deserializer.h", 83*6dbdd20aSAndroid Build Coastguard Worker "deferred.cc", 84*6dbdd20aSAndroid Build Coastguard Worker "virtual_destructors.cc", 85*6dbdd20aSAndroid Build Coastguard Worker ] 86*6dbdd20aSAndroid Build Coastguard Worker visibility = _ipc_visibility 87*6dbdd20aSAndroid Build Coastguard Worker} 88*6dbdd20aSAndroid Build Coastguard Worker 89*6dbdd20aSAndroid Build Coastguard Workerperfetto_fuzzer_test("buffered_frame_deserializer_fuzzer") { 90*6dbdd20aSAndroid Build Coastguard Worker sources = [ "buffered_frame_deserializer_fuzzer.cc" ] 91*6dbdd20aSAndroid Build Coastguard Worker deps = [ 92*6dbdd20aSAndroid Build Coastguard Worker ":common", 93*6dbdd20aSAndroid Build Coastguard Worker "../../gn:default_deps", 94*6dbdd20aSAndroid Build Coastguard Worker "../../protos/perfetto/ipc:wire_protocol_cpp", 95*6dbdd20aSAndroid Build Coastguard Worker "../base", 96*6dbdd20aSAndroid Build Coastguard Worker ] 97*6dbdd20aSAndroid Build Coastguard Worker} 98*6dbdd20aSAndroid Build Coastguard Worker 99*6dbdd20aSAndroid Build Coastguard Workerperfetto_unittest_source_set("unittests") { 100*6dbdd20aSAndroid Build Coastguard Worker testonly = true 101*6dbdd20aSAndroid Build Coastguard Worker deps = [ 102*6dbdd20aSAndroid Build Coastguard Worker ":client", 103*6dbdd20aSAndroid Build Coastguard Worker ":common", 104*6dbdd20aSAndroid Build Coastguard Worker ":host", 105*6dbdd20aSAndroid Build Coastguard Worker ":test_messages_cpp", 106*6dbdd20aSAndroid Build Coastguard Worker ":test_messages_ipc", 107*6dbdd20aSAndroid Build Coastguard Worker "../../gn:default_deps", 108*6dbdd20aSAndroid Build Coastguard Worker "../../gn:gtest_and_gmock", 109*6dbdd20aSAndroid Build Coastguard Worker "../../protos/perfetto/ipc:wire_protocol_cpp", 110*6dbdd20aSAndroid Build Coastguard Worker "../base", 111*6dbdd20aSAndroid Build Coastguard Worker "../base:test_support", 112*6dbdd20aSAndroid Build Coastguard Worker ] 113*6dbdd20aSAndroid Build Coastguard Worker sources = [ 114*6dbdd20aSAndroid Build Coastguard Worker "buffered_frame_deserializer_unittest.cc", 115*6dbdd20aSAndroid Build Coastguard Worker "client_impl_unittest.cc", 116*6dbdd20aSAndroid Build Coastguard Worker "deferred_unittest.cc", 117*6dbdd20aSAndroid Build Coastguard Worker "host_impl_unittest.cc", 118*6dbdd20aSAndroid Build Coastguard Worker "test/ipc_integrationtest.cc", 119*6dbdd20aSAndroid Build Coastguard Worker ] 120*6dbdd20aSAndroid Build Coastguard Worker} 121*6dbdd20aSAndroid Build Coastguard Worker 122*6dbdd20aSAndroid Build Coastguard Workerperfetto_proto_library("test_messages_@TYPE@") { 123*6dbdd20aSAndroid Build Coastguard Worker proto_generators = [ 124*6dbdd20aSAndroid Build Coastguard Worker "ipc", 125*6dbdd20aSAndroid Build Coastguard Worker "zero", 126*6dbdd20aSAndroid Build Coastguard Worker "cpp", 127*6dbdd20aSAndroid Build Coastguard Worker ] 128*6dbdd20aSAndroid Build Coastguard Worker sources = [ 129*6dbdd20aSAndroid Build Coastguard Worker "test/client_unittest_messages.proto", 130*6dbdd20aSAndroid Build Coastguard Worker "test/deferred_unittest_messages.proto", 131*6dbdd20aSAndroid Build Coastguard Worker "test/greeter_service.proto", 132*6dbdd20aSAndroid Build Coastguard Worker ] 133*6dbdd20aSAndroid Build Coastguard Worker} 134*6dbdd20aSAndroid Build Coastguard Worker 135*6dbdd20aSAndroid Build Coastguard Worker# This is used by Bazel BUILD rules. The problem it solves is the following: 136*6dbdd20aSAndroid Build Coastguard Worker# In GN builds we want to keep client and host separate. This allows reducing 137*6dbdd20aSAndroid Build Coastguard Worker# the binary size by splitting targets all the way up to the client library 138*6dbdd20aSAndroid Build Coastguard Worker# (libperfetto_client_experimental). In bazel/blaze we fuse everything together 139*6dbdd20aSAndroid Build Coastguard Worker# because handling this split is too complex due to the lack of a 140*6dbdd20aSAndroid Build Coastguard Worker# source_set-equivalent. 141*6dbdd20aSAndroid Build Coastguard Workerperfetto_component("perfetto_ipc") { 142*6dbdd20aSAndroid Build Coastguard Worker public_deps = [ 143*6dbdd20aSAndroid Build Coastguard Worker ":client", 144*6dbdd20aSAndroid Build Coastguard Worker ":common", 145*6dbdd20aSAndroid Build Coastguard Worker ":host", 146*6dbdd20aSAndroid Build Coastguard Worker "../../gn:default_deps", 147*6dbdd20aSAndroid Build Coastguard Worker ] 148*6dbdd20aSAndroid Build Coastguard Worker} 149