blob: f25c6542cec27e030651e0df8f450ab70a308038 [file] [log] [blame]
Primiano Tucciae2879e2017-09-27 11:02:09 +09001# 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
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080015import("../gn/perfetto.gni")
16import("//build_overrides/build.gni")
17import("../ipc//ipc_library.gni")
Primiano Tuccia6166482017-11-20 13:05:45 +000018
Primiano Tuccice720022017-10-30 12:50:06 +000019config("tracing_config") {
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080020 include_dirs = [
21 "include",
22 perfetto_root_path,
23 ]
Primiano Tuccice720022017-10-30 12:50:06 +000024}
25
Primiano Tuccia6166482017-11-20 13:05:45 +000026# Core tracing library, platform independent, no transport layer.
Primiano Tuccice720022017-10-30 12:50:06 +000027source_set("tracing") {
28 all_dependent_configs = [ ":tracing_config" ]
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080029 deps = [
30 "../perfetto_base",
31 ]
Primiano Tuccice720022017-10-30 12:50:06 +000032 sources = [
Primiano Tuccid7d1be02017-10-30 17:41:34 +000033 "include/tracing/core/basic_types.h",
34 "include/tracing/core/data_source_config.h",
35 "include/tracing/core/data_source_descriptor.h",
36 "include/tracing/core/producer.h",
37 "include/tracing/core/service.h",
38 "include/tracing/core/shared_memory.h",
Primiano Tuccice720022017-10-30 12:50:06 +000039 "src/core/service_impl.cc",
Primiano Tuccid7d1be02017-10-30 17:41:34 +000040 "src/core/service_impl.h",
Primiano Tuccice720022017-10-30 12:50:06 +000041 ]
42}
43
Primiano Tuccia6166482017-11-20 13:05:45 +000044# IPC service definitions.
45ipc_library("ipc_protos") {
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080046 proto_in_dir = perfetto_root_path
47 extra_configs = [ "../ipc:config" ]
Primiano Tuccia6166482017-11-20 13:05:45 +000048 sources = [
49 "src/ipc/data_source_config.proto",
50 "src/ipc/data_source_descriptor.proto",
51 "src/ipc/producer_port.proto",
52 ]
53}
54
55# Posix specialization of the tracing library for Linux/Android/Mac. Provides
56# an IPC transport over a UNIX domain socket.
57source_set("ipc") {
58 sources = [
Primiano Tucci1d94e7d2017-11-20 14:45:16 +000059 "include/tracing/ipc/producer_ipc_client.h",
Primiano Tuccia6166482017-11-20 13:05:45 +000060 "include/tracing/ipc/service_ipc_host.h",
61 "src/ipc/posix_shared_memory.cc",
62 "src/ipc/posix_shared_memory.h",
Primiano Tucci1d94e7d2017-11-20 14:45:16 +000063 "src/ipc/producer/producer_ipc_client_impl.cc",
64 "src/ipc/producer/producer_ipc_client_impl.h",
Primiano Tuccia6166482017-11-20 13:05:45 +000065 "src/ipc/service/producer_ipc_service.cc",
66 "src/ipc/service/producer_ipc_service.h",
67 "src/ipc/service/service_ipc_host_impl.cc",
68 "src/ipc/service/service_ipc_host_impl.h",
69 ]
70 deps = [
71 ":ipc_protos",
72 ":tracing",
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080073 "../ipc",
74 "../perfetto_base",
Primiano Tuccia6166482017-11-20 13:05:45 +000075 ]
76}
77
Primiano Tuccice720022017-10-30 12:50:06 +000078executable("tracing_unittests") {
Primiano Tucciae2879e2017-09-27 11:02:09 +090079 testonly = true
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080080 deps = [
Primiano Tuccia6166482017-11-20 13:05:45 +000081 ":ipc",
Primiano Tuccice720022017-10-30 12:50:06 +000082 ":tracing",
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080083 "../gn:default_deps",
84 "../gn:gtest_deps",
85 "../perfetto_base",
86 "../perfetto_base:test_support",
Primiano Tucciae2879e2017-09-27 11:02:09 +090087 ]
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080088
Primiano Tucciae2879e2017-09-27 11:02:09 +090089 sources = [
Primiano Tuccice720022017-10-30 12:50:06 +000090 "src/core/service_impl_unittest.cc",
Primiano Tucci69ca1262017-11-20 19:42:22 +000091 "src/ipc/posix_shared_memory_unittest.cc",
Primiano Tuccice720022017-10-30 12:50:06 +000092 "src/test/test_shared_memory.cc",
Primiano Tuccid7d1be02017-10-30 17:41:34 +000093 "src/test/test_shared_memory.h",
Primiano Tucciae2879e2017-09-27 11:02:09 +090094 ]
95}
Primiano Tucci0825bc82017-09-28 18:50:23 +010096
Primiano Tucci1d94e7d2017-11-20 14:45:16 +000097executable("tracing_test") {
98 testonly = true
Oystein Eftevaagdd727e42017-12-05 08:49:55 -080099 deps = [
Primiano Tucci1d94e7d2017-11-20 14:45:16 +0000100 ":ipc",
Primiano Tuccif54cae42017-11-21 19:37:13 +0000101 ":ipc_protos",
Primiano Tucci1d94e7d2017-11-20 14:45:16 +0000102 ":tracing",
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800103 "../gn:default_deps",
104 "../ipc",
105 "../perfetto_base",
106 "../perfetto_base:test_support",
Primiano Tucci1d94e7d2017-11-20 14:45:16 +0000107 ]
108 sources = [
109 "src/test/ipc_test.cc",
110 ]
111}
112
Oystein Eftevaagdd727e42017-12-05 08:49:55 -0800113if (!build_with_chromium) {
114 executable("tracing_benchmarks") {
115 testonly = true
116
117 deps = [
118 "../gn:default_deps",
119 "//buildtools:benchmark",
120 ]
121
122 sources = [
123 "src/test/hello_world_benchmark.cc",
124 ]
125 }
Hector Dearman88a10112017-10-12 11:07:10 +0100126}