• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2020 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://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, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15import("//build_overrides/pigweed.gni")
16
17import("$dir_pw_build/target_types.gni")
18import("$dir_pw_docgen/docs.gni")
19import("$dir_pw_protobuf_compiler/proto.gni")
20import("$dir_pw_third_party/nanopb/nanopb.gni")
21import("$dir_pw_unit_test/test.gni")
22import("config.gni")
23
24config("public_include_path") {
25  include_dirs = [ "public" ]
26  visibility = [ ":*" ]
27}
28
29config("backend_config") {
30  include_dirs = [ "public_overrides" ]
31}
32
33pw_source_set("config") {
34  public_deps = [ pw_trace_CONFIG ]
35  public_configs = [ ":public_include_path" ]
36  public = [ "public/pw_trace_tokenized/config.h" ]
37}
38
39config("linux_include_config_overrides") {
40  cflags = [
41    "-include",
42    rebase_path("linux_config_overrides.h", root_build_dir),
43  ]
44  visibility = [ ":*" ]
45}
46
47pw_source_set("linux_config_overrides") {
48  public_configs = [ ":linux_include_config_overrides" ]
49  sources = [ "linux_config_overrides.h" ]
50}
51
52pw_test_group("tests") {
53  tests = [
54    ":trace_tokenized_test",
55    ":tokenized_trace_buffer_test",
56    ":tokenized_trace_buffer_log_test",
57  ]
58}
59
60pw_source_set("pw_trace_tokenized") {
61  public_configs = [
62    ":backend_config",
63    ":public_include_path",
64  ]
65  public_deps = [
66    ":config",
67    ":core",
68    "$dir_pw_tokenizer",
69  ]
70  deps = []
71  if (pw_trace_tokenizer_time != "") {
72    deps += [ "$pw_trace_tokenizer_time" ]
73  }
74
75  public = [ "public_overrides/pw_trace_backend/trace_backend.h" ]
76}
77
78pw_test("trace_tokenized_test") {
79  enable_if = pw_trace_tokenizer_time != ""
80  deps = [
81    ":core",
82    "$dir_pw_trace",
83  ]
84
85  sources = [ "trace_test.cc" ]
86}
87
88config("trace_buffer_size") {
89  defines = [ "PW_TRACE_BUFFER_SIZE_BYTES=${pw_trace_tokenized_BUFFER_SIZE}" ]
90}
91
92pw_proto_library("protos") {
93  sources = [
94    "pw_trace_protos/trace.proto",
95    "pw_trace_protos/trace_rpc.proto",
96  ]
97  inputs = [ "pw_trace_protos/trace_rpc.options" ]
98}
99
100pw_source_set("trace_rpc_service") {
101  public_configs = [ ":public_include_path" ]
102  public_deps = [ ":protos.nanopb_rpc" ]
103  deps = [
104    ":core",
105    ":tokenized_trace_buffer",
106    "$dir_pw_log",
107    "$dir_pw_trace",
108  ]
109  sources = [
110    "public/pw_trace_tokenized/trace_rpc_service_nanopb.h",
111    "trace_rpc_service_nanopb.cc",
112  ]
113}
114
115pw_source_set("tokenized_trace_buffer") {
116  deps = [ ":core" ]
117  public_deps = [
118    ":config",
119    "$dir_pw_bytes",
120    "$dir_pw_ring_buffer",
121    "$dir_pw_tokenizer",
122    "$dir_pw_varint",
123    dir_pw_span,
124  ]
125  sources = [ "trace_buffer.cc" ]
126  public_configs = [
127    ":public_include_path",
128    ":trace_buffer_size",
129  ]
130  public = [ "public/pw_trace_tokenized/trace_buffer.h" ]
131}
132
133pw_test("tokenized_trace_buffer_test") {
134  enable_if = pw_trace_tokenizer_time != ""
135  deps = [
136    ":tokenized_trace_buffer",
137    "$dir_pw_trace",
138  ]
139
140  sources = [ "trace_buffer_test.cc" ]
141}
142
143pw_source_set("tokenized_trace_buffer_log") {
144  deps = [
145    "$dir_pw_base64",
146    "$dir_pw_log",
147    "$dir_pw_string",
148  ]
149  public_deps = [ ":tokenized_trace_buffer" ]
150  sources = [ "trace_buffer_log.cc" ]
151  public = [ "public/pw_trace_tokenized/trace_buffer_log.h" ]
152}
153
154pw_test("tokenized_trace_buffer_log_test") {
155  enable_if = pw_trace_tokenizer_time != ""
156  deps = [
157    ":tokenized_trace_buffer_log",
158    "$dir_pw_trace",
159  ]
160  sources = [ "trace_buffer_log_test.cc" ]
161}
162
163pw_source_set("fake_trace_time") {
164  deps = [ ":core" ]
165  sources = [ "fake_trace_time.cc" ]
166}
167
168pw_source_set("host_trace_time") {
169  deps = [ ":core" ]
170  sources = [ "host_trace_time.cc" ]
171}
172
173pw_source_set("core") {
174  public_configs = [
175    ":backend_config",
176    ":public_include_path",
177  ]
178  public_deps = [
179    "$dir_pw_log",
180    "$dir_pw_status",
181    "$dir_pw_tokenizer",
182    dir_pw_span,
183  ]
184  deps = [
185    ":config",
186    "$dir_pw_assert",
187    "$dir_pw_ring_buffer",
188    "$dir_pw_trace:facade",
189    "$dir_pw_varint",
190  ]
191  public = [
192    "public/pw_trace_tokenized/internal/trace_tokenized_internal.h",
193    "public/pw_trace_tokenized/trace_callback.h",
194    "public/pw_trace_tokenized/trace_tokenized.h",
195  ]
196  sources = [ "trace.cc" ]
197  visibility = [ ":*" ]
198}
199
200pw_doc_group("docs") {
201  sources = [ "docs.rst" ]
202}
203
204config("trace_example_config") {
205  include_dirs = [ "example/public" ]
206}
207
208pw_source_set("trace_example_to_file") {
209  deps = [ ":pw_trace_tokenized" ]
210  public_configs = [ ":trace_example_config" ]
211  public = [ "example/public/pw_trace_tokenized/example/trace_to_file.h" ]
212}
213
214# Builds trace examples
215pw_executable("trace_tokenized_example_basic") {
216  deps = [
217    ":trace_example_to_file",
218    "$dir_pw_log",
219    "$dir_pw_trace",
220    "$dir_pw_trace:trace_sample_app",
221  ]
222  sources = [ "example/basic.cc" ]
223}
224
225pw_executable("trace_tokenized_example_trigger") {
226  deps = [
227    ":trace_example_to_file",
228    "$dir_pw_log",
229    "$dir_pw_trace",
230    "$dir_pw_trace:trace_sample_app",
231  ]
232  sources = [ "example/trigger.cc" ]
233}
234
235pw_executable("trace_tokenized_example_filter") {
236  deps = [
237    ":trace_example_to_file",
238    "$dir_pw_log",
239    "$dir_pw_trace",
240    "$dir_pw_trace:trace_sample_app",
241  ]
242  sources = [ "example/filter.cc" ]
243}
244
245if (dir_pw_third_party_nanopb == "") {
246  group("trace_tokenized_example_rpc") {
247  }
248} else {
249  pw_executable("trace_tokenized_example_rpc") {
250    sources = [ "example/rpc.cc" ]
251    deps = [
252      ":trace_rpc_service",
253      "$dir_pw_hdlc",
254      "$dir_pw_log",
255      "$dir_pw_rpc:server",
256      "$dir_pw_rpc/system_server",
257      "$dir_pw_trace",
258      "$dir_pw_trace:trace_sample_app",
259    ]
260  }
261}
262
263if (current_os != "linux") {
264  group("trace_tokenized_example_linux_group_by_tid") {
265  }
266} else {
267  pw_executable("trace_tokenized_example_linux_group_by_tid") {
268    sources = [ "example/linux_group_by_tid.cc" ]
269    deps = [
270      ":trace_example_to_file",
271      "$dir_pw_log",
272      "$dir_pw_trace",
273    ]
274  }
275}
276