blob: 098103c78955006daa3806addccd9bb0e20330a9 [file] [log] [blame]
Primiano Tucci4f9b6d72017-12-05 20:59:16 +00001# 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("//build_overrides/build.gni")
Primiano Tucciec590132020-11-16 14:16:44 +010016import("../../gn/gen_perfetto_version_header.gni")
Primiano Tucci38faa6f2018-04-01 20:12:08 +020017import("../../gn/perfetto.gni")
Primiano Tucci916f4e52020-10-16 20:40:33 +020018import("../../gn/perfetto_component.gni")
Primiano Tucci02c11762019-08-30 00:57:59 +020019import("../../gn/test.gni")
Primiano Tucci4bdc4c42018-05-10 15:52:33 +010020import("../../gn/wasm.gni")
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000021
Primiano Tucci4dde23f2021-01-06 09:18:19 +010022# On standalone builds this is all the OSes we support. On chromium builds,
23# though, this really means !is_fuchsia && !is_nacl.
Yuta Hijikata91a21f52021-01-20 13:31:21 +000024_subprocess_supported =
25 is_linux || is_chromeos || is_android || is_mac || is_win
Primiano Tucci4dde23f2021-01-06 09:18:19 +010026
Primiano Tucci916f4e52020-10-16 20:40:33 +020027perfetto_component("base") {
Primiano Tucci2925e9d2020-01-27 10:15:58 +000028 deps = [ "../../gn:default_deps" ]
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000029 public_deps = [
30 "../../include/perfetto/base",
Primiano Tucci2c5488f2019-06-01 03:27:28 +010031 "../../include/perfetto/ext/base",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000032 ]
33 sources = [
Daniele Di Proietto5ce0d142021-11-01 18:30:44 +000034 "android_utils.cc",
Primiano Tuccif4f2b452021-11-06 12:14:40 +000035 "base64.cc",
Primiano Tucciab699b72021-10-15 11:53:00 +010036 "crash_keys.cc",
Primiano Tucci1bc10c62021-01-06 09:38:07 +010037 "ctrl_c_handler.cc",
Primiano Tuccibc2b2442020-12-09 01:30:14 +010038 "event_fd.cc",
Florian Mayer74b73a92018-03-09 17:37:13 +000039 "file_utils.cc",
Primiano Tucciccaf6db2021-01-05 22:32:26 +010040 "getopt_compat.cc",
Primiano Tuccic7fb63f2021-10-11 16:28:05 +010041 "log_ring_buffer.h",
Primiano Tuccic64b05f2019-12-05 10:30:52 +000042 "logging.cc",
Florian Mayer236ba472018-05-09 15:47:53 +010043 "metatrace.cc",
Eric Seckleredf3f7c2018-10-23 16:44:53 +010044 "paged_memory.cc",
Primiano Tuccidac91702021-04-30 15:47:51 +010045 "periodic_task.cc",
Primiano Tucci1366dd02020-12-02 10:17:10 +010046 "pipe.cc",
Primiano Tuccidf440312020-10-30 16:43:58 +010047 "status.cc",
Primiano Tucci825e6de2018-03-13 05:43:15 +000048 "string_splitter.cc",
Hector Dearman3afb1e02018-04-27 16:46:52 +010049 "string_utils.cc",
Primiano Tucci60c4a2b2019-03-02 17:11:18 +000050 "string_view.cc",
Primiano Tuccie4de2da2020-12-01 14:54:07 +010051 "temp_file.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000052 "thread_checker.cc",
Bruce Dawson2af6ef72018-05-01 15:28:39 +010053 "time.cc",
Primiano Tuccia81d2772020-10-07 00:12:41 +020054 "utils.cc",
Hector Dearmanf275f692019-07-31 12:56:59 +010055 "uuid.cc",
Primiano Tucciec590132020-11-16 14:16:44 +010056 "version.cc",
Primiano Tucci3cbb10a2018-04-10 17:52:40 +010057 "virtual_destructors.cc",
Sami Kyostila389861f2019-07-09 20:52:43 +010058 "waitable_event.cc",
Sami Kyostilafacfa142019-08-08 17:08:43 +010059 "watchdog_posix.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000060 ]
Florian Mayer236ba472018-05-09 15:47:53 +010061
Mikhail Khokhlov0226b682020-12-09 13:47:33 +000062 if (!is_nacl) {
Primiano Tucci5ff758d2021-01-07 08:47:48 +010063 sources += [
64 "thread_task_runner.cc",
65 "unix_task_runner.cc",
66 ]
Primiano Tucci4dde23f2021-01-06 09:18:19 +010067 }
68
69 if (_subprocess_supported) {
Primiano Tucci325d6662021-01-05 21:40:52 +010070 sources += [
71 "subprocess.cc",
72 "subprocess_posix.cc",
73 "subprocess_windows.cc",
Primiano Tucci325d6662021-01-05 21:40:52 +010074 ]
Mikhail Khokhlov0226b682020-12-09 13:47:33 +000075 }
76
Primiano Tucci824be142020-07-08 16:15:44 +010077 if (enable_perfetto_stderr_crash_dump) {
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000078 deps += [ ":debug_crash_stack_trace" ]
79 }
Primiano Tucciec590132020-11-16 14:16:44 +010080
81 if (enable_perfetto_version_gen) {
82 deps += [ ":version_gen_h" ]
83 }
84}
85
86if (enable_perfetto_version_gen) {
87 config("version_gen_config") {
88 include_dirs = [ root_gen_dir ]
89 }
90
91 # Note: the build file translators (tools/gn_utils.py) depend on the hardcoded
92 # "//src/base:version_gen_h". If you rename this target, update build file
93 # translators accordingly.
94 gen_perfetto_version_header("version_gen_h") {
95 cpp_out = "${root_gen_dir}/perfetto_version.gen.h"
96 }
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000097}
98
Primiano Tucci824be142020-07-08 16:15:44 +010099if (enable_perfetto_stderr_crash_dump) {
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000100 source_set("debug_crash_stack_trace") {
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000101 sources = [ "debug_crash_stack_trace.cc" ]
Primiano Tuccia5ff2a82017-12-20 11:37:00 +0100102 deps = [
103 "../../gn:default_deps",
Primiano Tucci2c5488f2019-06-01 03:27:28 +0100104 "../../include/perfetto/ext/base",
105 "../../include/perfetto/ext/base",
Primiano Tuccia5ff2a82017-12-20 11:37:00 +0100106 ]
Primiano Tucci38faa6f2018-04-01 20:12:08 +0200107 if (is_linux || is_android) {
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100108 deps += [ "../../gn:libbacktrace" ]
Primiano Tucci38faa6f2018-04-01 20:12:08 +0200109 }
Primiano Tucci3cbb10a2018-04-10 17:52:40 +0100110 cflags = [ "-Wno-deprecated" ]
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000111 }
112}
113
Primiano Tucci02c11762019-08-30 00:57:59 +0200114if (enable_perfetto_ipc) {
Florian Mayerb6c3bff2018-09-13 16:36:49 +0100115 # This cannot be in :base as it does not build on WASM.
Primiano Tucci916f4e52020-10-16 20:40:33 +0200116 perfetto_component("unix_socket") {
Florian Mayerb6c3bff2018-09-13 16:36:49 +0100117 deps = [
118 "../../gn:default_deps",
Primiano Tucci2c5488f2019-06-01 03:27:28 +0100119 "../../include/perfetto/ext/base",
Florian Mayerb6c3bff2018-09-13 16:36:49 +0100120 ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000121 sources = [ "unix_socket.cc" ]
Primiano Tuccieb7e3662021-01-07 21:30:40 +0100122 if (is_win && perfetto_build_standalone) {
123 libs = [ "Ws2_32.lib" ]
124 }
Florian Mayerb6c3bff2018-09-13 16:36:49 +0100125 }
Florian Mayerf427a802018-09-13 11:21:46 +0100126}
127
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000128source_set("test_support") {
129 testonly = true
130 deps = [
131 ":base",
132 "../../gn:default_deps",
133 ]
134 sources = [
Daniele Di Proietto7e6d6b72021-09-17 12:46:41 +0000135 "test/tmp_dir_tree.cc",
136 "test/tmp_dir_tree.h",
Hector Dearman7f71d0e2018-08-09 11:26:10 +0100137 "test/utils.cc",
138 "test/utils.h",
Florian Mayerd8bd81b2018-01-25 12:49:15 +0000139 "test/vm_test_utils.cc",
140 "test/vm_test_utils.h",
Florian Mayerc7255fd2018-01-25 10:29:24 +0000141 ]
Alexander Timin597658e2021-03-01 14:07:22 +0000142
143 if (!is_nacl) {
144 # test_task_runner depends on unix_task_runner, which isn't available on
145 # NaCL.
146 sources += [
147 "test/test_task_runner.cc",
148 "test/test_task_runner.h",
149 ]
150 }
Florian Mayerc7255fd2018-01-25 10:29:24 +0000151}
152
Primiano Tucci02c11762019-08-30 00:57:59 +0200153perfetto_unittest_source_set("unittests") {
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000154 testonly = true
155 deps = [
156 ":base",
Bruce Dawson78bca4b2018-05-10 17:35:30 +0100157 ":test_support",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000158 "../../gn:default_deps",
Primiano Tucci13ae72f2019-06-06 10:53:02 +0100159 "../../gn:gtest_and_gmock",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000160 ]
Florian Mayer236ba472018-05-09 15:47:53 +0100161
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000162 sources = [
Primiano Tuccif4f2b452021-11-06 12:14:40 +0000163 "base64_unittest.cc",
Primiano Tucci89795fd2019-02-18 23:08:06 +0000164 "circular_queue_unittest.cc",
Primiano Tucci79dd3bc2019-12-05 13:17:37 +0000165 "flat_set_unittest.cc",
Primiano Tucciccaf6db2021-01-05 22:32:26 +0100166 "getopt_compat_unittest.cc",
Tobias Sargeant163509e2021-04-27 09:54:49 +0000167 "logging_unittest.cc",
Ryan Savitski478c1182019-04-04 23:28:11 +0100168 "no_destructor_unittest.cc",
Lalit Magantif3e5b072018-11-19 21:51:47 +0000169 "optional_unittest.cc",
Eric Seckleredf3f7c2018-10-23 16:44:53 +0100170 "paged_memory_unittest.cc",
Primiano Tuccidac91702021-04-30 15:47:51 +0100171 "periodic_task_unittest.cc",
Bruce Dawson2c4a4602018-05-08 19:51:49 +0100172 "scoped_file_unittest.cc",
Primiano Tucci34abb8d2021-11-16 13:38:01 +0000173 "small_vector_unittest.cc",
Bruce Dawson2c4a4602018-05-08 19:51:49 +0100174 "string_splitter_unittest.cc",
175 "string_utils_unittest.cc",
Primiano Tucci2da5d2e2018-08-10 14:23:31 +0100176 "string_view_unittest.cc",
Lalit Magantibd3fb822019-02-08 10:08:20 +0000177 "string_writer_unittest.cc",
Primiano Tuccibc2b2442020-12-09 01:30:14 +0100178 "task_runner_unittest.cc",
Primiano Tuccie4de2da2020-12-01 14:54:07 +0100179 "temp_file_unittest.cc",
Primiano Tuccibc2b2442020-12-09 01:30:14 +0100180 "thread_checker_unittest.cc",
Primiano Tucci8934c6c2018-03-15 11:39:27 +0000181 "time_unittest.cc",
Primiano Tucci1366dd02020-12-02 10:17:10 +0100182 "utils_unittest.cc",
Hector Dearmanf275f692019-07-31 12:56:59 +0100183 "uuid_unittest.cc",
Bruce Dawson2c4a4602018-05-08 19:51:49 +0100184 "weak_ptr_unittest.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000185 ]
Primiano Tucci4dde23f2021-01-06 09:18:19 +0100186 if (_subprocess_supported) {
Primiano Tucci6aa3b752021-01-05 14:22:43 +0100187 # Don't run on Fuchsia, NaCL. They pretend to be POSIX but then give up on
188 # execve(2).
189 sources += [ "subprocess_unittest.cc" ]
190 }
Florian Mayer236ba472018-05-09 15:47:53 +0100191
Primiano Tucci02c11762019-08-30 00:57:59 +0200192 # TODO: Enable these for Windows when possible.
Bruce Dawson2af6ef72018-05-01 15:28:39 +0100193 if (!is_win) {
194 sources += [
Primiano Tuccif80d2d42019-06-05 09:30:59 +0100195 "metatrace_unittest.cc",
Ryan Savitski29885792019-03-14 12:10:13 +0000196 "thread_task_runner_unittest.cc",
Florian Mayer623f0fc2020-11-18 17:37:35 +0000197 "watchdog_posix_unittest.cc",
Bruce Dawson2af6ef72018-05-01 15:28:39 +0100198 ]
199 }
Greg Thompson56e6c6c2021-11-03 17:07:10 +0100200 if (is_fuchsia) {
201 deps += [ "//third_party/fuchsia-sdk/sdk/pkg/fdio" ]
202 }
Primiano Tucci4c5efa42018-10-23 13:15:13 +0100203 if (perfetto_build_standalone || perfetto_build_with_android) {
Primiano Tucci02c11762019-08-30 00:57:59 +0200204 # This causes some problems on the chromium waterfall.
Florian Mayerf7f0def2018-09-27 13:59:24 +0100205 if (is_linux || is_android) {
206 sources += [ "watchdog_unittest.cc" ]
207 }
Primiano Tuccieb7e3662021-01-07 21:30:40 +0100208 sources += [ "unix_socket_unittest.cc" ]
209 deps += [ ":unix_socket" ]
Primiano Tuccic96f71b2018-02-06 19:21:09 +0000210 }
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000211}
Primiano Tucci79dd3bc2019-12-05 13:17:37 +0000212
213if (enable_perfetto_benchmarks) {
214 source_set("benchmarks") {
215 testonly = true
216 deps = [
217 ":base",
218 "../../gn:benchmark",
219 "../../gn:default_deps",
220 ]
Primiano Tucci2925e9d2020-01-27 10:15:58 +0000221 sources = [ "flat_set_benchmark.cc" ]
Primiano Tucci79dd3bc2019-12-05 13:17:37 +0000222 }
223}