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