xref: /aosp_15_r20/external/perfetto/src/tools/BUILD.gn (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2022 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 Worker
17*6dbdd20aSAndroid Build Coastguard Worker# Prevent that this file is accidentally included in embedder builds.
18*6dbdd20aSAndroid Build Coastguard Workerassert(enable_perfetto_tools)
19*6dbdd20aSAndroid Build Coastguard Worker
20*6dbdd20aSAndroid Build Coastguard Worker# Lists all tools. The root "all" target depends on this.
21*6dbdd20aSAndroid Build Coastguard Workergroup("tools") {
22*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
23*6dbdd20aSAndroid Build Coastguard Worker  deps = [
24*6dbdd20aSAndroid Build Coastguard Worker    ":copy_protoc",
25*6dbdd20aSAndroid Build Coastguard Worker    "ftrace_proto_gen",
26*6dbdd20aSAndroid Build Coastguard Worker    "proto_filter",
27*6dbdd20aSAndroid Build Coastguard Worker    "proto_merger",
28*6dbdd20aSAndroid Build Coastguard Worker    "protoprofile",
29*6dbdd20aSAndroid Build Coastguard Worker  ]
30*6dbdd20aSAndroid Build Coastguard Worker  if (is_linux || is_android) {
31*6dbdd20aSAndroid Build Coastguard Worker    deps += [
32*6dbdd20aSAndroid Build Coastguard Worker      ":idle_alloc",
33*6dbdd20aSAndroid Build Coastguard Worker      "busy_threads",
34*6dbdd20aSAndroid Build Coastguard Worker      "cpu_utilization",
35*6dbdd20aSAndroid Build Coastguard Worker      "dump_ftrace_stats",
36*6dbdd20aSAndroid Build Coastguard Worker      "skippy",
37*6dbdd20aSAndroid Build Coastguard Worker    ]
38*6dbdd20aSAndroid Build Coastguard Worker  }
39*6dbdd20aSAndroid Build Coastguard Worker}
40*6dbdd20aSAndroid Build Coastguard Worker
41*6dbdd20aSAndroid Build Coastguard Workerif (is_linux && enable_perfetto_heapprofd) {
42*6dbdd20aSAndroid Build Coastguard Worker  executable("profiling_sample_distribution") {
43*6dbdd20aSAndroid Build Coastguard Worker    sources = [ "profiling_sample_distribution.cc" ]
44*6dbdd20aSAndroid Build Coastguard Worker    deps = [
45*6dbdd20aSAndroid Build Coastguard Worker      "../../gn:default_deps",
46*6dbdd20aSAndroid Build Coastguard Worker      "../base",
47*6dbdd20aSAndroid Build Coastguard Worker      "../profiling/memory:client",
48*6dbdd20aSAndroid Build Coastguard Worker    ]
49*6dbdd20aSAndroid Build Coastguard Worker  }
50*6dbdd20aSAndroid Build Coastguard Worker
51*6dbdd20aSAndroid Build Coastguard Worker  executable("multithreaded_alloc") {
52*6dbdd20aSAndroid Build Coastguard Worker    sources = [ "multithreaded_alloc.cc" ]
53*6dbdd20aSAndroid Build Coastguard Worker    deps = [
54*6dbdd20aSAndroid Build Coastguard Worker      "../../gn:default_deps",
55*6dbdd20aSAndroid Build Coastguard Worker      "../base",
56*6dbdd20aSAndroid Build Coastguard Worker      "../profiling/memory:client_api_standalone",
57*6dbdd20aSAndroid Build Coastguard Worker    ]
58*6dbdd20aSAndroid Build Coastguard Worker  }
59*6dbdd20aSAndroid Build Coastguard Worker}
60*6dbdd20aSAndroid Build Coastguard Worker
61*6dbdd20aSAndroid Build Coastguard Workerif (is_linux || is_android) {
62*6dbdd20aSAndroid Build Coastguard Worker  executable("idle_alloc") {
63*6dbdd20aSAndroid Build Coastguard Worker    deps = [ "../../gn:default_deps" ]
64*6dbdd20aSAndroid Build Coastguard Worker    sources = [ "idle_alloc.cc" ]
65*6dbdd20aSAndroid Build Coastguard Worker  }
66*6dbdd20aSAndroid Build Coastguard Worker}
67*6dbdd20aSAndroid Build Coastguard Worker
68*6dbdd20aSAndroid Build Coastguard Workergroup("unittests") {
69*6dbdd20aSAndroid Build Coastguard Worker  testonly = true
70*6dbdd20aSAndroid Build Coastguard Worker  deps = []
71*6dbdd20aSAndroid Build Coastguard Worker
72*6dbdd20aSAndroid Build Coastguard Worker  if (current_toolchain == host_toolchain) {
73*6dbdd20aSAndroid Build Coastguard Worker    deps += [ "ftrace_proto_gen:unittests" ]
74*6dbdd20aSAndroid Build Coastguard Worker  }
75*6dbdd20aSAndroid Build Coastguard Worker}
76*6dbdd20aSAndroid Build Coastguard Worker
77*6dbdd20aSAndroid Build Coastguard Worker# The protoc binary can end up in out/protoc or out/gcc_like_host/protoc
78*6dbdd20aSAndroid Build Coastguard Worker# depending on whether this is a pure-host build vs a host+target (i.e. android)
79*6dbdd20aSAndroid Build Coastguard Worker# build. This rule ensures that in both cases we end up with a host binary in
80*6dbdd20aSAndroid Build Coastguard Worker# out/protoc, so tools can consistently refer to that one location.
81*6dbdd20aSAndroid Build Coastguard Workerprotoc_target = "../../gn:protoc($host_toolchain)"
82*6dbdd20aSAndroid Build Coastguard Workerif (current_toolchain != host_toolchain) {
83*6dbdd20aSAndroid Build Coastguard Worker  copy("copy_protoc") {
84*6dbdd20aSAndroid Build Coastguard Worker    testonly = true
85*6dbdd20aSAndroid Build Coastguard Worker    deps = [ protoc_target ]
86*6dbdd20aSAndroid Build Coastguard Worker    host_out_dir = get_label_info(protoc_target, "root_out_dir")
87*6dbdd20aSAndroid Build Coastguard Worker    sources = [ "$host_out_dir/protoc" ]
88*6dbdd20aSAndroid Build Coastguard Worker    outputs = [ "$root_build_dir/protoc" ]
89*6dbdd20aSAndroid Build Coastguard Worker  }
90*6dbdd20aSAndroid Build Coastguard Worker} else {
91*6dbdd20aSAndroid Build Coastguard Worker  # Nothing to do, in this case protoc is already built in the root out dir.
92*6dbdd20aSAndroid Build Coastguard Worker  group("copy_protoc") {
93*6dbdd20aSAndroid Build Coastguard Worker    public_deps = [ protoc_target ]
94*6dbdd20aSAndroid Build Coastguard Worker  }
95*6dbdd20aSAndroid Build Coastguard Worker}
96