xref: /aosp_15_r20/external/perfetto/src/perfetto_cmd/BUILD.gn (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2018 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/perfetto.gni")
16*6dbdd20aSAndroid Build Coastguard Workerimport("../../gn/proto_library.gni")
17*6dbdd20aSAndroid Build Coastguard Workerimport("../../gn/test.gni")
18*6dbdd20aSAndroid Build Coastguard Worker
19*6dbdd20aSAndroid Build Coastguard Worker# The command line client for Perfetto. Allows to configure / start / stop
20*6dbdd20aSAndroid Build Coastguard Worker# tracing, acting as a Consumer.
21*6dbdd20aSAndroid Build Coastguard Workerexecutable("perfetto") {
22*6dbdd20aSAndroid Build Coastguard Worker  deps = [
23*6dbdd20aSAndroid Build Coastguard Worker    ":perfetto_cmd",
24*6dbdd20aSAndroid Build Coastguard Worker    "../../gn:default_deps",
25*6dbdd20aSAndroid Build Coastguard Worker  ]
26*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "main.cc" ]
27*6dbdd20aSAndroid Build Coastguard Worker}
28*6dbdd20aSAndroid Build Coastguard Worker
29*6dbdd20aSAndroid Build Coastguard Worker# Tool to finalize long running traces.
30*6dbdd20aSAndroid Build Coastguard Worker# This connects to traced as a producer and sends the triggers passed on the
31*6dbdd20aSAndroid Build Coastguard Worker# commandline. This is a subset of what the perfetto binary can do but we
32*6dbdd20aSAndroid Build Coastguard Worker# need a separate binary for programs that cannot (for good reason) use the
33*6dbdd20aSAndroid Build Coastguard Worker# additional functionality (for example starting traces via consumer socket)
34*6dbdd20aSAndroid Build Coastguard Worker# due to selinux rules.
35*6dbdd20aSAndroid Build Coastguard Workerexecutable("trigger_perfetto") {
36*6dbdd20aSAndroid Build Coastguard Worker  deps = [
37*6dbdd20aSAndroid Build Coastguard Worker    ":trigger_perfetto_cmd",
38*6dbdd20aSAndroid Build Coastguard Worker    "../../gn:default_deps",
39*6dbdd20aSAndroid Build Coastguard Worker  ]
40*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "trigger_perfetto_main.cc" ]
41*6dbdd20aSAndroid Build Coastguard Worker}
42*6dbdd20aSAndroid Build Coastguard Worker
43*6dbdd20aSAndroid Build Coastguard Worker# Contains all the implementation but not the main() entry point. This target
44*6dbdd20aSAndroid Build Coastguard Worker# is shared both by the executable and tests.
45*6dbdd20aSAndroid Build Coastguard Workersource_set("perfetto_cmd") {
46*6dbdd20aSAndroid Build Coastguard Worker  public_deps = [
47*6dbdd20aSAndroid Build Coastguard Worker    ":protos_cpp",
48*6dbdd20aSAndroid Build Coastguard Worker    "../../include/perfetto/ext/traced",
49*6dbdd20aSAndroid Build Coastguard Worker  ]
50*6dbdd20aSAndroid Build Coastguard Worker  deps = [
51*6dbdd20aSAndroid Build Coastguard Worker    ":bugreport_path",
52*6dbdd20aSAndroid Build Coastguard Worker    ":trigger_producer",
53*6dbdd20aSAndroid Build Coastguard Worker    "../../gn:default_deps",
54*6dbdd20aSAndroid Build Coastguard Worker    "../../protos/perfetto/common:cpp",
55*6dbdd20aSAndroid Build Coastguard Worker    "../../protos/perfetto/config:cpp",
56*6dbdd20aSAndroid Build Coastguard Worker    "../../protos/perfetto/config/ftrace:cpp",
57*6dbdd20aSAndroid Build Coastguard Worker    "../../protos/perfetto/config/sys_stats:cpp",
58*6dbdd20aSAndroid Build Coastguard Worker    "../android_stats",
59*6dbdd20aSAndroid Build Coastguard Worker    "../base",
60*6dbdd20aSAndroid Build Coastguard Worker    "../base:version",
61*6dbdd20aSAndroid Build Coastguard Worker    "../protozero",
62*6dbdd20aSAndroid Build Coastguard Worker    "../trace_config_utils:txt_to_pb",
63*6dbdd20aSAndroid Build Coastguard Worker    "../tracing/ipc/consumer",
64*6dbdd20aSAndroid Build Coastguard Worker  ]
65*6dbdd20aSAndroid Build Coastguard Worker  sources = [
66*6dbdd20aSAndroid Build Coastguard Worker    "config.cc",
67*6dbdd20aSAndroid Build Coastguard Worker    "config.h",
68*6dbdd20aSAndroid Build Coastguard Worker    "packet_writer.cc",
69*6dbdd20aSAndroid Build Coastguard Worker    "packet_writer.h",
70*6dbdd20aSAndroid Build Coastguard Worker    "perfetto_cmd.cc",
71*6dbdd20aSAndroid Build Coastguard Worker    "perfetto_cmd.h",
72*6dbdd20aSAndroid Build Coastguard Worker  ]
73*6dbdd20aSAndroid Build Coastguard Worker  assert_no_deps = [ "../trace_processor/*" ]
74*6dbdd20aSAndroid Build Coastguard Worker
75*6dbdd20aSAndroid Build Coastguard Worker  if (is_android) {
76*6dbdd20aSAndroid Build Coastguard Worker    deps += [ "../android_internal:lazy_library_loader" ]
77*6dbdd20aSAndroid Build Coastguard Worker    sources += [ "perfetto_cmd_android.cc" ]
78*6dbdd20aSAndroid Build Coastguard Worker  }
79*6dbdd20aSAndroid Build Coastguard Worker}
80*6dbdd20aSAndroid Build Coastguard Worker
81*6dbdd20aSAndroid Build Coastguard Workersource_set("bugreport_path") {
82*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "bugreport_path.h" ]
83*6dbdd20aSAndroid Build Coastguard Worker  deps = [ "../../gn:default_deps" ]
84*6dbdd20aSAndroid Build Coastguard Worker  public_deps = [
85*6dbdd20aSAndroid Build Coastguard Worker    "../../include/perfetto/base",
86*6dbdd20aSAndroid Build Coastguard Worker    "../../include/perfetto/ext/base",
87*6dbdd20aSAndroid Build Coastguard Worker  ]
88*6dbdd20aSAndroid Build Coastguard Worker}
89*6dbdd20aSAndroid Build Coastguard Worker
90*6dbdd20aSAndroid Build Coastguard Workersource_set("trigger_perfetto_cmd") {
91*6dbdd20aSAndroid Build Coastguard Worker  public_deps = [
92*6dbdd20aSAndroid Build Coastguard Worker    ":protos_cpp",
93*6dbdd20aSAndroid Build Coastguard Worker    "../../include/perfetto/ext/traced",
94*6dbdd20aSAndroid Build Coastguard Worker  ]
95*6dbdd20aSAndroid Build Coastguard Worker  deps = [
96*6dbdd20aSAndroid Build Coastguard Worker    ":trigger_producer",
97*6dbdd20aSAndroid Build Coastguard Worker    "../../gn:default_deps",
98*6dbdd20aSAndroid Build Coastguard Worker    "../android_stats",
99*6dbdd20aSAndroid Build Coastguard Worker    "../base",
100*6dbdd20aSAndroid Build Coastguard Worker    "../tracing/ipc/producer",
101*6dbdd20aSAndroid Build Coastguard Worker  ]
102*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "trigger_perfetto.cc" ]
103*6dbdd20aSAndroid Build Coastguard Worker}
104*6dbdd20aSAndroid Build Coastguard Worker
105*6dbdd20aSAndroid Build Coastguard Workersource_set("trigger_producer") {
106*6dbdd20aSAndroid Build Coastguard Worker  sources = [
107*6dbdd20aSAndroid Build Coastguard Worker    "trigger_producer.cc",
108*6dbdd20aSAndroid Build Coastguard Worker    "trigger_producer.h",
109*6dbdd20aSAndroid Build Coastguard Worker  ]
110*6dbdd20aSAndroid Build Coastguard Worker  deps = [
111*6dbdd20aSAndroid Build Coastguard Worker    "../../gn:default_deps",
112*6dbdd20aSAndroid Build Coastguard Worker    "../base",
113*6dbdd20aSAndroid Build Coastguard Worker    "../tracing/ipc/producer",
114*6dbdd20aSAndroid Build Coastguard Worker  ]
115*6dbdd20aSAndroid Build Coastguard Worker}
116*6dbdd20aSAndroid Build Coastguard Worker
117*6dbdd20aSAndroid Build Coastguard Workerperfetto_proto_library("protos_@TYPE@") {
118*6dbdd20aSAndroid Build Coastguard Worker  proto_generators = [ "cpp" ]
119*6dbdd20aSAndroid Build Coastguard Worker  sources = [ "perfetto_cmd_state.proto" ]
120*6dbdd20aSAndroid Build Coastguard Worker  proto_path = perfetto_root_path
121*6dbdd20aSAndroid Build Coastguard Worker}
122*6dbdd20aSAndroid Build Coastguard Worker
123*6dbdd20aSAndroid Build Coastguard Workerperfetto_unittest_source_set("unittests") {
124*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
125*6dbdd20aSAndroid Build Coastguard Worker  public_deps = []
126*6dbdd20aSAndroid Build Coastguard Worker  deps = [
127*6dbdd20aSAndroid Build Coastguard Worker    ":perfetto_cmd",
128*6dbdd20aSAndroid Build Coastguard Worker    "../../gn:default_deps",
129*6dbdd20aSAndroid Build Coastguard Worker    "../../gn:gtest_and_gmock",
130*6dbdd20aSAndroid Build Coastguard Worker    "../../include/perfetto/base",
131*6dbdd20aSAndroid Build Coastguard Worker    "../../include/perfetto/ext/base",
132*6dbdd20aSAndroid Build Coastguard Worker    "../../protos/perfetto/config:cpp",
133*6dbdd20aSAndroid Build Coastguard Worker    "../../protos/perfetto/config/ftrace:cpp",
134*6dbdd20aSAndroid Build Coastguard Worker    "../../protos/perfetto/trace:cpp",
135*6dbdd20aSAndroid Build Coastguard Worker    "../tracing/core",
136*6dbdd20aSAndroid Build Coastguard Worker  ]
137*6dbdd20aSAndroid Build Coastguard Worker  sources = [
138*6dbdd20aSAndroid Build Coastguard Worker    "config_unittest.cc",
139*6dbdd20aSAndroid Build Coastguard Worker    "packet_writer_unittest.cc",
140*6dbdd20aSAndroid Build Coastguard Worker  ]
141*6dbdd20aSAndroid Build Coastguard Worker}
142