blob: 15fa31bba5ecf5333f6036c586a2238af2e2517f [file] [log] [blame]
Oystein Eftevaagdd727e42017-12-05 08:49:55 -08001# Copyright (C) 2017 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import("perfetto.gni")
Primiano Tucci4c5efa42018-10-23 13:15:13 +010016import("proto_library.gni")
Primiano Tucci7e05fc12019-08-27 17:29:47 +020017
18if (perfetto_root_path == "//") {
Andres Medina2cf423c2019-03-29 10:27:49 -070019 import("//gn/standalone/sanitizers/vars.gni")
20} else {
21 import("//build/config/sanitizers/sanitizers.gni")
22}
23
Primiano Tucci8e627442019-08-28 07:58:38 +020024# Genereates a header files that contains a macro definition for each build flag
25# that is required by the codebase. This is to avoid sprinkling cflags all over
26# the places, which is very fragile especially for our codebase that needs to
27# deal with several build systems.
28# The way this works is the following:
29# - This rule generates a header that contains a bunch of lines like:
Primiano Tucci02c11762019-08-30 00:57:59 +020030# #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_ANDROID_BUILD()
Primiano Tucci8e627442019-08-28 07:58:38 +020031# - The generated header is included by base/build_config.h
32# - Source files in the codebase #include base/build_config and use the
33# pattern #if PERFETTO_BUILDFLAG(PERFETTO_ANDROID_BUILD)
34buildflag_gen_dir_ = "$root_gen_dir/$perfetto_root_path/build_config"
35action("gen_buildflags") {
36 script = "write_buildflag_header.py"
37 gen_header_path = "$buildflag_gen_dir_/perfetto_build_flags.h"
38
39 perfetto_component_build = false
40 if (defined(is_component_build) && is_component_build) {
41 perfetto_component_build = true
42 }
43 perfetto_force_dlog_on = perfetto_force_dlog == "on"
44 perfetto_force_dlog_off = perfetto_force_dlog == "off"
45
Primiano Tucci18c0cff2019-09-09 17:09:03 -070046 # We can't just use (is_linux || is_android) in perfetto.gni because that
47 # doesn't work in Android Mac host builds. We lose the GN notion of OS once
48 # we run the tools/gen_xxx generators.
49 if (enable_perfetto_watchdog) {
50 perfetto_watchdog = "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() || " +
51 "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX()"
52 } else {
53 perfetto_watchdog = "0"
54 }
Primiano Tucci41af34f2019-10-01 13:09:22 +010055 if (enable_perfetto_tools) {
Florian Mayer4c955702020-06-10 20:37:38 +020056 perfetto_local_symbolizer =
57 "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() || " +
Joshua Gilpatrickcd349942020-11-11 15:18:37 -080058 "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MAC() ||" +
59 "PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN()"
Primiano Tucci41af34f2019-10-01 13:09:22 +010060 } else {
61 perfetto_local_symbolizer = "0"
62 }
Primiano Tucci8e627442019-08-28 07:58:38 +020063 response_file_contents = [
64 "--flags", # Keep this marker first.
65 "PERFETTO_ANDROID_BUILD=$perfetto_build_with_android",
Primiano Tucci8e627442019-08-28 07:58:38 +020066 "PERFETTO_CHROMIUM_BUILD=$build_with_chromium",
67 "PERFETTO_STANDALONE_BUILD=$perfetto_build_standalone",
68 "PERFETTO_START_DAEMONS=$start_daemons_for_testing",
Primiano Tucci02c11762019-08-30 00:57:59 +020069 "PERFETTO_IPC=$enable_perfetto_ipc",
Primiano Tucci18c0cff2019-09-09 17:09:03 -070070 "PERFETTO_WATCHDOG=$perfetto_watchdog",
Primiano Tucci8e627442019-08-28 07:58:38 +020071 "PERFETTO_COMPONENT_BUILD=$perfetto_component_build",
72 "PERFETTO_FORCE_DLOG_ON=$perfetto_force_dlog_on",
73 "PERFETTO_FORCE_DLOG_OFF=$perfetto_force_dlog_off",
Eric Seckler08460482019-12-16 17:40:21 +000074 "PERFETTO_VERBOSE_LOGS=$perfetto_verbose_logs_enabled",
Primiano Tucci02c11762019-08-30 00:57:59 +020075 "PERFETTO_VERSION_GEN=$enable_perfetto_version_gen",
Primiano Tucci02c11762019-08-30 00:57:59 +020076 "PERFETTO_TP_PERCENTILE=$enable_perfetto_trace_processor_percentile",
Eric Secklerde589952019-10-17 12:46:07 +010077 "PERFETTO_TP_LINENOISE=$enable_perfetto_trace_processor_linenoise",
Primiano Tucci3ce4e8e2021-01-04 11:00:19 +010078 "PERFETTO_TP_HTTPD=$enable_perfetto_trace_processor_httpd",
Eric Secklerde589952019-10-17 12:46:07 +010079 "PERFETTO_TP_JSON=$enable_perfetto_trace_processor_json",
Primiano Tucci41af34f2019-10-01 13:09:22 +010080 "PERFETTO_LOCAL_SYMBOLIZER=$perfetto_local_symbolizer",
Primiano Tucci1b5fdae2020-01-16 09:28:05 +000081 "PERFETTO_ZLIB=$enable_perfetto_zlib",
Primiano Tucci890cfbe2021-05-21 13:38:45 +010082 "PERFETTO_TRACED_PERF=$enable_perfetto_traced_perf",
83 "PERFETTO_HEAPPROFD=$enable_perfetto_heapprofd",
Florian Mayer3bf39d02021-05-24 14:04:35 +010084 "PERFETTO_STDERR_CRASH_DUMP=$enable_perfetto_stderr_crash_dump",
Primiano Tucci8e627442019-08-28 07:58:38 +020085 ]
86
87 rel_out_path = rebase_path(gen_header_path, "$root_build_dir")
88 args = [
89 "--out",
90 rel_out_path,
91 "--rsp",
92 "{{response_file_name}}",
93 ]
94
Primiano Tucci2925e9d2020-01-27 10:15:58 +000095 outputs = [ gen_header_path ]
Primiano Tucci8e627442019-08-28 07:58:38 +020096}
97
Primiano Tucci13ae72f2019-06-06 10:53:02 +010098# All targets should depend on this target to inherit the right flags and
99# include directories.
100group("default_deps") {
Eric Seckler911f4d72020-10-08 15:10:51 +0100101 visibility = [ "../*" ] # Prevent chromium targets from depending on this (breaks component).
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100102 public_configs = [ ":default_config" ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000103 deps = [ ":gen_buildflags" ]
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200104 if (perfetto_build_standalone) {
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100105 public_deps = [
Primiano Tucci69132a12020-02-07 22:33:06 +0000106 "//gn/standalone:check_build_deps",
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100107 "//gn/standalone/libc++:deps",
108 "//gn/standalone/sanitizers:deps",
109 ]
Primiano Tucci69132a12020-02-07 22:33:06 +0000110 if (is_android) {
111 public_deps += [ "//gn/standalone:check_build_deps_android" ]
112 }
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100113 }
114}
115
116# The config that all targets in the perfetto codebase inherit by virtue of
117# having explicit deps on //gn:default_deps. This config is NOT propagated up to
118# embedders that depend on perfetto (e.g. chrome). :public_config (see below) is
119# used for that.
120config("default_config") {
Eric Seckler911f4d72020-10-08 15:10:51 +0100121 visibility = [ "../*" ] # Prevent chromium targets from depending on this (breaks component).
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100122 configs = [ ":public_config" ]
123 defines = [ "PERFETTO_IMPLEMENTATION" ]
Florian Mayer5d09f5e2021-02-19 14:59:49 +0000124 include_dirs = [
125 "..",
126 "../src/profiling/memory/include",
127 ]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100128
129 if (build_with_chromium && is_android) {
130 # Included for __android_log_print
131 libs = [ "log" ]
132 }
133}
134
135# This config is propagated to embedders via libperfetto. It's also included in
136# the default_config above.
137config("public_config") {
138 include_dirs = [
139 "../include",
140
Primiano Tucci8e627442019-08-28 07:58:38 +0200141 # For perfetto_build_flags.h
142 buildflag_gen_dir_,
Eric Secklerd7fd6c22020-01-22 18:46:35 +0000143
144 # For generated files (proto libraries etc). We add the directory here
145 # because we stop propagation of the configs for individual proto libraries
146 # to avoid duplicate include directory command line flags in compiler
147 # invocations, see proto_library.gni, crbug.com/1043279, crbug.com/gn/142.
148 "$root_gen_dir/$perfetto_root_path",
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100149 ]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100150}
151
Andres Medina2cf423c2019-03-29 10:27:49 -0700152config("asan_instrumentation") {
153 if (use_sanitizer_configs_without_instrumentation) {
154 defines = [ "ADDRESS_SANITIZER_WITHOUT_INSTRUMENTATION" ]
155 }
156}
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800157
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200158if (perfetto_root_path != "//") {
159 config("gtest_and_gmock_embedder_config") {
160 include_dirs = [
161 "//testing/gtest/include",
162 "//testing/gmock/include",
163 ]
Eric Seckler57c89d92018-10-26 15:11:55 +0100164 }
165}
166
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100167group("gtest_and_gmock") {
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800168 testonly = true
169
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200170 if (perfetto_root_path == "//") {
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800171 public_deps = [
172 "//buildtools:gmock",
173 "//buildtools:gtest",
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800174 ]
175 } else {
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200176 public_configs = [ ":gtest_and_gmock_embedder_config" ]
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800177 public_deps = [
178 "//testing/gmock",
179 "//testing/gtest",
Florian Mayerd8bd81b2018-01-25 12:49:15 +0000180 ]
181 }
182}
183
184group("gtest_main") {
185 testonly = true
186
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200187 if (perfetto_root_path == "//") {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000188 public_deps = [ "//buildtools:gtest_main" ]
Eric Secklera6ba1792019-01-02 12:51:00 +0000189 } else if (build_with_chromium) {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000190 public_deps = [ "//base/test:run_all_unittests" ]
Florian Mayerd8bd81b2018-01-25 12:49:15 +0000191 } else {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000192 public_deps = [ "//testing/gtest:gtest_main" ]
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800193 }
194}
195
Primiano Tuccid0001c32019-09-08 22:45:58 -0700196# Full protobuf is just for host tools .No binary shipped on device should
197# depend on this.
Primiano Tuccia3645202020-08-03 16:28:18 +0200198protobuf_full_deps_allowlist = [
Primiano Tuccid0001c32019-09-08 22:45:58 -0700199 "../src/ipc/protoc_plugin:*",
200 "../src/protozero/protoc_plugin:*",
Primiano Tucci3f003742021-05-14 19:25:14 +0100201 "../src/protozero/filtering:filter_util",
Primiano Tuccid0001c32019-09-08 22:45:58 -0700202 "../src/trace_processor:trace_processor_shell",
Primiano Tucci3f003742021-05-14 19:25:14 +0100203 "../src/protozero/filtering:filter_util",
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000204 "../tools/*",
Primiano Tuccid0001c32019-09-08 22:45:58 -0700205]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100206
Primiano Tuccib7ebffd2019-09-09 07:42:35 -0700207group("protoc") {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000208 public_deps = [ "${perfetto_protobuf_target_prefix}:protoc($host_toolchain)" ]
Primiano Tuccib7ebffd2019-09-09 07:42:35 -0700209}
Primiano Tuccid0001c32019-09-08 22:45:58 -0700210
Joel Fernandes80fc3cd2020-04-01 18:02:57 -0400211config("system_protoc") {
212 libs = [ "protoc" ] # This will link against libprotoc.so
213}
214
215config("system_protobuf") {
216 libs = [ "protobuf" ] # This will link against libprotobuf.so
217}
218
Lalit Magantie0986f32020-09-17 15:35:47 +0100219# protoc compiler library, it's used for building protoc plugins.
Primiano Tuccid0001c32019-09-08 22:45:58 -0700220group("protoc_lib") {
Primiano Tuccia3645202020-08-03 16:28:18 +0200221 visibility = protobuf_full_deps_allowlist
Primiano Tuccib7ebffd2019-09-09 07:42:35 -0700222 if (current_toolchain == host_toolchain) {
Joel Fernandes80fc3cd2020-04-01 18:02:57 -0400223 if (perfetto_use_system_protobuf) {
Primiano Tucci5cbeadf2020-04-03 22:28:40 +0100224 public_configs = [
225 ":system_protobuf",
226 ":system_protoc",
Primiano Tuccie95bb962020-04-06 09:05:02 +0100227 ":protobuf_gen_config",
Primiano Tucci5cbeadf2020-04-03 22:28:40 +0100228 ]
Joel Fernandes80fc3cd2020-04-01 18:02:57 -0400229 } else {
230 public_deps = [ "${perfetto_protobuf_target_prefix}:protoc_lib" ]
231 }
Primiano Tuccib7ebffd2019-09-09 07:42:35 -0700232 }
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800233}
234
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100235group("protobuf_full") {
Primiano Tuccia3645202020-08-03 16:28:18 +0200236 visibility = protobuf_full_deps_allowlist
Lalit Magantia97798d2020-09-16 17:40:57 +0100237 if (perfetto_use_system_protobuf) {
238 public_configs = [ ":system_protobuf" ]
239 } else {
240 public_deps = [ "${perfetto_protobuf_target_prefix}:protobuf_full" ]
Primiano Tuccib7ebffd2019-09-09 07:42:35 -0700241 }
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800242}
243
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100244group("protobuf_lite") {
Joel Fernandes80fc3cd2020-04-01 18:02:57 -0400245 if (perfetto_use_system_protobuf) {
246 public_configs = [ ":system_protobuf" ]
247 } else {
248 public_deps = [ "${perfetto_protobuf_target_prefix}:protobuf_lite" ]
249 }
Oystein Eftevaag5e8a4eb2018-01-09 11:41:58 -0800250}
Florian Mayer3a3974e2018-01-24 11:37:29 +0000251
Primiano Tuccie95bb962020-04-06 09:05:02 +0100252# This config is applied to the .pb.{cc,h} generated by proto_library(). This
253# config is propagated up to the source sets that depend on generated proto
254# headers and proto libraries. Therefore this should stay as lean and clean as
255# possible in terms of -W-no* suppressions. Thankfully the autogenerated .pb.h
256# headers violate less warnings than the libprotobuf_* library itself.
257# This config is defined here (as opposed to //buildtools/BUILD.gn) so that when
258# perfetto_use_system_protobuf=true, the right compiler flags are passed.
259config("protobuf_gen_config") {
260 visibility = [ "*" ] # This is injected by standalone/proto_library.gni
261 defines = [
262 "GOOGLE_PROTOBUF_NO_RTTI",
263 "GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
264 ]
Primiano Tucci2f811552020-12-07 16:48:22 +0100265 cflags = []
266 if (is_clang || !is_win) {
267 cflags += [
268 "-Wno-unknown-warning-option",
269 "-Wno-deprecated",
270 "-Wno-undef",
271 "-Wno-zero-as-null-pointer-constant",
272 ]
273 }
274 if (is_clang && is_win) {
275 cflags += [
276 "-Wno-reserved-id-macro",
277 "-Wno-language-extension-token",
278 "-Wno-sign-conversion",
279 "-Wno-suggest-destructor-override",
280 "-Wno-undefined-reinterpret-cast",
281 "-Wno-inconsistent-missing-destructor-override",
282 "-Wno-unused-parameter",
283 ]
284 }
Primiano Tuccie95bb962020-04-06 09:05:02 +0100285
286 if (!perfetto_use_system_protobuf) {
287 cflags += [
288 # Using -isystem instead of include_dirs (-I), so we don't need to
289 # suppress warnings coming from libprotobuf headers. Doing so would mask
290 # warnings in our own code.
Primiano Tucci2f811552020-12-07 16:48:22 +0100291 perfetto_isystem_cflag,
Primiano Tuccie95bb962020-04-06 09:05:02 +0100292 rebase_path("../buildtools/protobuf/src", root_build_dir),
293 ]
294 }
295}
296
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100297# The Google C++ Benchmark library.
Hector Dearman5145e502019-09-18 16:52:24 +0100298# Only available in standalone builds.
Primiano Tucci02c11762019-08-30 00:57:59 +0200299if (enable_perfetto_benchmarks) {
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200300 group("benchmark") {
301 testonly = true
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000302 public_deps = [ "//buildtools:benchmark" ]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100303 }
304}
305
306# Libbacktrace, used for printing stack traces from crash handler, only in
307# standalone debug builds.
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200308if (perfetto_build_standalone && (is_linux || is_android)) {
309 group("libbacktrace") {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000310 public_deps = [ "//buildtools:libbacktrace" ]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100311 }
312}
313
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000314if (enable_perfetto_trace_processor_sqlite) {
315 group("sqlite") {
316 if (perfetto_root_path == "//") {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000317 public_deps = [ "//buildtools:sqlite" ]
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000318 } else {
Mikhail Khokhlov302f1f62020-03-12 12:08:29 +0000319 if (build_with_chromium) {
320 public_deps = [ "//third_party/sqlite:sqlite_dev" ]
321 } else {
322 public_deps = [ "//third_party/sqlite:sqlite" ]
323 }
Mikhail Khokhlov0f7e68d2020-01-16 15:39:27 +0000324 public_configs = [ ":sqlite_third_party_include_path" ]
325 }
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100326 }
Mikhail Khokhlov2bcfb352019-12-20 10:19:58 +0000327}
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100328
Mikhail Khokhlov2bcfb352019-12-20 10:19:58 +0000329config("sqlite_third_party_include_path") {
Mikhail Khokhlov302f1f62020-03-12 12:08:29 +0000330 if (build_with_chromium) {
331 include_dirs = [ "//third_party/sqlite/dev" ]
332 } else {
333 include_dirs = [ "//third_party/sqlite" ]
334 }
Mikhail Khokhlov2bcfb352019-12-20 10:19:58 +0000335}
Primiano Tucci02c11762019-08-30 00:57:59 +0200336
337if (enable_perfetto_trace_processor_json) {
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200338 group("jsoncpp") {
339 if (perfetto_root_path == "//") {
340 public_configs = [ "//buildtools:jsoncpp_config" ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000341 public_deps = [ "//buildtools:jsoncpp" ]
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200342 } else {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000343 public_deps = [ "//third_party/jsoncpp:jsoncpp" ]
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200344 }
345 }
Primiano Tucci02c11762019-08-30 00:57:59 +0200346}
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200347
Primiano Tucci02c11762019-08-30 00:57:59 +0200348if (enable_perfetto_trace_processor_linenoise) {
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200349 # Used by the trace_processor_shell for REPL history.
Hector Dearman5145e502019-09-18 16:52:24 +0100350 # Only available in standalone builds.
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200351 group("linenoise") {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000352 public_deps = [ "//buildtools:linenoise" ]
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200353 }
Primiano Tucci02c11762019-08-30 00:57:59 +0200354} # if (enable_perfetto_trace_processor_linenoise)
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200355
356# Only used by src/profiling in standalone and android builds.
Ryan Savitski56bc0c62020-01-27 13:50:02 +0000357if (enable_perfetto_heapprofd || enable_perfetto_traced_perf) {
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200358 group("libunwindstack") {
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100359 public_configs = [ "//buildtools:libunwindstack_config" ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000360 public_deps = [ "//buildtools:libunwindstack" ]
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100361 }
362}
Ryan Savitski154bfab2019-06-07 15:12:27 +0100363
Ryan Savitski56bc0c62020-01-27 13:50:02 +0000364# Used by src/profiling/perf for perf_regs.h.
365if (enable_perfetto_traced_perf) {
366 group("bionic_kernel_uapi_headers") {
367 public_configs = [ "//buildtools:bionic_kernel_uapi_headers" ]
368 }
369}
370
Florian Mayer319ba562021-04-20 17:35:03 +0100371config("system_zlib_config") {
372 libs = [ "z" ]
373}
374
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200375# Zlib is used both by trace_processor and by perfetto_cmd.
Primiano Tucci1b5fdae2020-01-16 09:28:05 +0000376if (enable_perfetto_zlib) {
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200377 group("zlib") {
Florian Mayer319ba562021-04-20 17:35:03 +0100378 if (perfetto_use_system_zlib) {
379 public_configs = [ "//gn:system_zlib_config" ]
380 } else if (perfetto_root_path == "//") {
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200381 public_configs = [ "//buildtools:zlib_config" ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000382 public_deps = [ "//buildtools:zlib" ]
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200383 } else {
384 public_configs = [ "//third_party/zlib:zlib_config" ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000385 public_deps = [ "//third_party/zlib" ]
Primiano Tucci7e05fc12019-08-27 17:29:47 +0200386 }
387 }
388}
389
Ryan Savitski154bfab2019-06-07 15:12:27 +0100390# Used by fuzzers.
Florian Mayer0bea7972019-09-02 15:28:13 +0100391if (enable_perfetto_fuzzers && use_libfuzzer) {
Ryan Savitski154bfab2019-06-07 15:12:27 +0100392 group("libfuzzer") {
Primiano Tucci02c11762019-08-30 00:57:59 +0200393 assert(perfetto_root_path == "//")
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000394 public_deps = [ "//buildtools:libfuzzer" ]
Ryan Savitski154bfab2019-06-07 15:12:27 +0100395 }
396}