blob: 9fd8db3b2b56dca2fda94f89d39ad0632f2f9dc9 [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("../../gn/perfetto.gni")
16import("//build_overrides/build.gni")
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000017
18# Core tracing library, platform independent, no transport layer.
19source_set("tracing") {
20 public_deps = [
21 "../../include/perfetto/tracing/core",
Primiano Tucci6aa75572018-03-21 05:33:14 -070022 "../../protos/perfetto/common",
Primiano Tucci07e104d2018-04-03 20:45:35 +020023 "../../protos/perfetto/trace:minimal_lite",
Primiano Tucci20b760c2018-01-19 12:36:12 +000024 "../../protos/perfetto/trace:zero",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000025 ]
26 deps = [
27 "../../gn:default_deps",
Sami Kyostila32e0b542018-02-14 08:55:43 +000028 "../../gn:gtest_prod_config",
Primiano Tucci20b760c2018-01-19 12:36:12 +000029 "../../protos/perfetto/config",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000030 "../base",
31 ]
32 sources = [
Oystein Eftevaagab3b1b22018-03-08 16:27:06 -080033 "core/chrome_config.cc",
Primiano Tucci79f3f912018-03-02 12:00:31 +000034 "core/commit_data_request.cc",
Primiano Tucci114b6492017-12-11 23:09:45 +000035 "core/data_source_config.cc",
36 "core/data_source_descriptor.cc",
Hector Dearmana89cc572018-02-23 12:02:58 +000037 "core/ftrace_config.cc",
Primiano Tucci422caff2017-12-18 23:58:52 +010038 "core/id_allocator.cc",
39 "core/id_allocator.h",
Primiano Tuccidae35652018-03-29 18:32:02 +010040 "core/inode_file_config.cc",
Hector Dearman9a5a0e92018-03-27 17:52:24 +010041 "core/null_trace_writer.cc",
42 "core/null_trace_writer.h",
Sami Kyostila32e0b542018-02-14 08:55:43 +000043 "core/packet_stream_validator.cc",
44 "core/packet_stream_validator.h",
Primiano Tucci09db8272018-03-08 17:47:47 +000045 "core/patch_list.h",
Hector Dearman1b9c58a2018-03-29 18:45:06 +010046 "core/process_stats_config.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000047 "core/service_impl.cc",
48 "core/service_impl.h",
Primiano Tuccif5d6d532017-12-19 00:59:34 +010049 "core/shared_memory_abi.cc",
Oystein Eftevaag6d0bc7f2018-01-13 12:21:55 -080050 "core/shared_memory_arbiter_impl.cc",
51 "core/shared_memory_arbiter_impl.h",
Primiano Tucci16d1d632018-02-22 10:16:22 +000052 "core/sliced_protobuf_input_stream.cc",
53 "core/sliced_protobuf_input_stream.h",
Lalit Maganti3f5705c2018-03-09 12:09:44 +000054 "core/test_config.cc",
Primiano Tucci5c599012018-03-01 17:52:07 +000055 "core/trace_buffer.cc",
56 "core/trace_buffer.h",
Primiano Tucci114b6492017-12-11 23:09:45 +000057 "core/trace_config.cc",
Primiano Tucci42e2de12017-12-07 16:46:04 +000058 "core/trace_packet.cc",
Primiano Tuccid7b59c42017-12-19 01:43:07 +010059 "core/trace_writer_impl.cc",
60 "core/trace_writer_impl.h",
Primiano Tucci3cbb10a2018-04-10 17:52:40 +010061 "core/virtual_destructors.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000062 ]
63}
64
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000065# Posix specialization of the tracing library for Linux/Android/Mac. Provides
66# an IPC transport over a UNIX domain socket.
Sami Kyostilaebba0fe2017-12-19 14:01:52 +000067static_library("ipc") {
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000068 public_deps = [
69 "../../include/perfetto/tracing/core",
70 "../../include/perfetto/tracing/ipc",
71 ]
72 sources = [
Primiano Tuccidcbbf132017-12-11 23:17:53 +000073 "ipc/consumer/consumer_ipc_client_impl.cc",
74 "ipc/consumer/consumer_ipc_client_impl.h",
Florian Mayerc29e0d32018-04-04 15:55:46 +010075 "ipc/default_socket.cc",
76 "ipc/default_socket.h",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000077 "ipc/posix_shared_memory.cc",
78 "ipc/posix_shared_memory.h",
79 "ipc/producer/producer_ipc_client_impl.cc",
80 "ipc/producer/producer_ipc_client_impl.h",
Primiano Tucciaf429f92017-12-19 01:51:50 +010081 "ipc/service/consumer_ipc_service.cc",
82 "ipc/service/consumer_ipc_service.h",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000083 "ipc/service/producer_ipc_service.cc",
84 "ipc/service/producer_ipc_service.h",
85 "ipc/service/service_ipc_host_impl.cc",
86 "ipc/service/service_ipc_host_impl.h",
87 ]
88 deps = [
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000089 ":tracing",
90 "../../gn:default_deps",
Primiano Tucci20b760c2018-01-19 12:36:12 +000091 "../../protos/perfetto/ipc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +000092 "../base",
93 "../ipc",
94 ]
95}
96
Florian Mayer35ddfe22018-01-23 15:30:33 +000097# IPC transport: only consumer side
98# TODO(fmayer): Remove duplication between this and ipc.
99source_set("ipc_consumer") {
100 public_deps = [
101 "../../include/perfetto/tracing/core",
102 "../../include/perfetto/tracing/ipc",
103 ]
104 sources = [
105 "ipc/consumer/consumer_ipc_client_impl.cc",
106 "ipc/consumer/consumer_ipc_client_impl.h",
Florian Mayerc29e0d32018-04-04 15:55:46 +0100107 "ipc/default_socket.cc",
108 "ipc/default_socket.h",
Florian Mayer35ddfe22018-01-23 15:30:33 +0000109 "ipc/posix_shared_memory.cc",
110 "ipc/posix_shared_memory.h",
111 ]
112 deps = [
113 ":tracing",
114 "../../gn:default_deps",
115 "../../protos/perfetto/ipc",
116 "../base",
117 ]
118}
119
Hector Dearman6cfec8a2018-03-14 16:54:09 +0000120source_set("unittests") {
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000121 testonly = true
122 deps = [
123 ":ipc",
Hector Dearman13bd85c2018-04-27 16:46:52 +0100124 ":test_support",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000125 ":tracing",
126 "../../gn:default_deps",
127 "../../gn:gtest_deps",
Primiano Tucci20b760c2018-01-19 12:36:12 +0000128 "../../protos/perfetto/trace:lite",
129 "../../protos/perfetto/trace:zero",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000130 "../base",
131 "../base:test_support",
132 ]
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000133 sources = [
Primiano Tucci422caff2017-12-18 23:58:52 +0100134 "core/id_allocator_unittest.cc",
Hector Dearman9a5a0e92018-03-27 17:52:24 +0100135 "core/null_trace_writer_unittest.cc",
Sami Kyostila32e0b542018-02-14 08:55:43 +0000136 "core/packet_stream_validator_unittest.cc",
Primiano Tucci09db8272018-03-08 17:47:47 +0000137 "core/patch_list_unittest.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000138 "core/service_impl_unittest.cc",
Primiano Tuccif5d6d532017-12-19 00:59:34 +0100139 "core/shared_memory_abi_unittest.cc",
Oystein Eftevaag6d0bc7f2018-01-13 12:21:55 -0800140 "core/shared_memory_arbiter_impl_unittest.cc",
Primiano Tucci16d1d632018-02-22 10:16:22 +0000141 "core/sliced_protobuf_input_stream_unittest.cc",
Primiano Tucci5c599012018-03-01 17:52:07 +0000142 "core/trace_buffer_unittest.cc",
Primiano Tucci42e2de12017-12-07 16:46:04 +0000143 "core/trace_packet_unittest.cc",
Primiano Tuccid7b59c42017-12-19 01:43:07 +0100144 "core/trace_writer_impl_unittest.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000145 "ipc/posix_shared_memory_unittest.cc",
Primiano Tuccid7b59c42017-12-19 01:43:07 +0100146 "test/aligned_buffer_test.cc",
147 "test/aligned_buffer_test.h",
Primiano Tucci5c599012018-03-01 17:52:07 +0000148 "test/fake_packet.cc",
149 "test/fake_packet.h",
Primiano Tuccidca727d2018-04-04 11:31:55 +0200150 "test/mock_consumer.cc",
151 "test/mock_consumer.h",
152 "test/mock_producer.cc",
153 "test/mock_producer.h",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000154 "test/test_shared_memory.cc",
155 "test/test_shared_memory.h",
Primiano Tucci53589332017-12-19 11:31:13 +0100156 "test/tracing_integration_test.cc",
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000157 ]
158}
159
Hector Dearman13bd85c2018-04-27 16:46:52 +0100160source_set("test_support") {
161 testonly = true
162 public_deps = [
163 "../../gn:default_deps",
164 "../../protos/perfetto/trace:lite",
165 "../../protos/perfetto/trace:zero",
166 "../ftrace_reader:test_support",
167 ]
168 sources = [
169 "core/trace_writer_for_testing.cc",
170 "core/trace_writer_for_testing.h",
171 ]
172}
173
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000174if (!build_with_chromium) {
Primiano Tuccib03ba362017-12-06 09:47:41 +0000175 source_set("tracing_benchmarks") {
Primiano Tucci4f9b6d72017-12-05 20:59:16 +0000176 testonly = true
177 deps = [
178 "../../gn:default_deps",
179 "//buildtools:benchmark",
180 ]
181 sources = [
182 "test/hello_world_benchmark.cc",
183 ]
184 }
185}