• 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
15load("@rules_python//python:proto.bzl", "py_proto_library")
16load(
17    "//pw_build:pigweed.bzl",
18    "pw_cc_binary",
19    "pw_cc_test",
20)
21load("//pw_build:selects.bzl", "TARGET_COMPATIBLE_WITH_HOST_SELECT")
22load("//pw_protobuf_compiler:pw_proto_library.bzl", "pw_proto_filegroup", "pw_proto_library")
23
24package(default_visibility = ["//visibility:public"])
25
26licenses(["notice"])
27
28cc_library(
29    name = "linux_config_overrides",
30    hdrs = ["linux_config_overrides.h"],
31    tags = ["manual"],
32)
33
34cc_library(
35    name = "config",
36    hdrs = [
37        "public/pw_trace_tokenized/config.h",
38    ],
39    includes = [
40        "public",
41    ],
42)
43
44cc_library(
45    name = "pw_trace_tokenized",
46    srcs = [
47        "trace.cc",
48    ],
49    hdrs = [
50        "public/pw_trace_tokenized/internal/trace_tokenized_internal.h",
51        "public/pw_trace_tokenized/trace_callback.h",
52        "public/pw_trace_tokenized/trace_tokenized.h",
53        "public_overrides/pw_trace_backend/trace_backend.h",
54    ],
55    includes = [
56        "public",
57        "public_overrides",
58    ],
59    deps = [
60        ":config",
61        "//pw_assert",
62        "//pw_log",
63        "//pw_preprocessor",
64        "//pw_status",
65        "//pw_tokenizer",
66        "//pw_trace:facade",
67        "//pw_varint",
68    ],
69)
70
71cc_library(
72    name = "base_trace_service",
73    srcs = [
74        "base_trace_service.cc",
75    ],
76    hdrs = [
77        "public/pw_trace_tokenized/base_trace_service.h",
78    ],
79    includes = [
80        "public",
81    ],
82    deps = [
83        ":buffer",
84        ":pw_trace_tokenized",
85        "//pw_ring_buffer",
86        "//pw_stream",
87    ],
88)
89
90cc_library(
91    name = "trace_service_pwpb",
92    srcs = [
93        "trace_service_pwpb.cc",
94    ],
95    hdrs = [
96        "public/pw_trace_tokenized/trace_service_pwpb.h",
97    ],
98    includes = [
99        "public",
100    ],
101    deps = [
102        ":base_trace_service",
103        ":protos_cc.pwpb_rpc",
104        "//pw_chrono:system_clock",
105    ],
106)
107
108cc_library(
109    name = "trace_rpc_service",
110    srcs = [
111        "trace_rpc_service_nanopb.cc",
112    ],
113    hdrs = [
114        "public/pw_trace_tokenized/trace_rpc_service_nanopb.h",
115    ],
116    includes = [
117        "public",
118    ],
119    deps = [
120        ":buffer",
121        ":protos_cc.nanopb_rpc",
122        "//pw_log",
123        "//pw_trace",
124    ],
125)
126
127cc_library(
128    name = "buffer",
129    srcs = [
130        "trace_buffer.cc",
131    ],
132    hdrs = [
133        "public/pw_trace_tokenized/trace_buffer.h",
134    ],
135    includes = [
136        "public",
137    ],
138    deps = [
139        ":pw_trace_tokenized",
140        "//pw_bytes",
141        "//pw_ring_buffer",
142        "//pw_status",
143    ],
144)
145
146cc_library(
147    name = "buffer_log",
148    srcs = [
149        "trace_buffer_log.cc",
150    ],
151    hdrs = [
152        "public/pw_trace_tokenized/trace_buffer_log.h",
153    ],
154    deps = [
155        ":buffer",
156        "//pw_base64",
157        "//pw_log",
158        "//pw_string",
159    ],
160)
161
162proto_library(
163    name = "protos",
164    srcs = [
165        "pw_trace_protos/trace.proto",
166        ":trace_rpc_proto_filegroup",
167        ":trace_service_proto_filegroup",
168    ],
169    strip_import_prefix = "/pw_trace_tokenized",
170    deps = [
171        "//pw_chrono:chrono_proto",
172    ],
173)
174
175pw_proto_filegroup(
176    name = "trace_rpc_proto_filegroup",
177    srcs = [
178        "pw_trace_protos/trace_rpc.proto",
179    ],
180    options_files = [
181        "pw_trace_protos/trace_rpc.options",
182    ],
183)
184
185pw_proto_filegroup(
186    name = "trace_service_proto_filegroup",
187    srcs = [
188        "pw_trace_protos/trace_service.proto",
189    ],
190    options_files = [
191        "pw_trace_protos/trace_service.options",
192    ],
193)
194
195pw_proto_library(
196    name = "protos_cc",
197    deps = [":protos"],
198)
199
200py_proto_library(
201    name = "proto_py",
202    deps = [":protos"],
203)
204
205cc_library(
206    name = "pw_trace_tokenized_fake_time",
207    srcs = [
208        "fake_trace_time.cc",
209    ],
210    deps = [
211        ":pw_trace_tokenized",
212    ],
213)
214
215pw_cc_test(
216    name = "trace_tokenized_test",
217    srcs = [
218        "trace_test.cc",
219    ],
220    includes = [
221        "pw_trace_test",
222        "pw_trace_test/public_overrides",
223    ],
224    # TODO: b/260641850 - Get pw_trace_tokenized building in Bazel.
225    tags = ["manual"],
226    deps = [
227        ":pw_trace_tokenized",
228        "//pw_preprocessor",
229        "//pw_unit_test",
230    ],
231)
232
233pw_cc_test(
234    name = "buffer_test",
235    srcs = [
236        "trace_buffer_test.cc",
237    ],
238    # TODO: b/260641850 - Get pw_trace_tokenized building in Bazel.
239    tags = ["manual"],
240    deps = [
241        ":buffer",
242        ":pw_trace_tokenized",
243        "//pw_preprocessor",
244        "//pw_unit_test",
245    ],
246)
247
248pw_cc_test(
249    name = "buffer_log_test",
250    srcs = [
251        "trace_buffer_log_test.cc",
252    ],
253    # TODO: b/260641850 - Get pw_trace_tokenized building in Bazel.
254    tags = ["manual"],
255    deps = [
256        ":buffer_log",
257        ":pw_trace_tokenized",
258        "//pw_preprocessor",
259        "//pw_unit_test",
260    ],
261)
262
263pw_cc_test(
264    name = "trace_service_pwpb_test",
265    srcs = [
266        "trace_service_pwpb_test.cc",
267    ],
268    # TODO: b/343778108 - update to run on all compatible devices
269    target_compatible_with = select(TARGET_COMPATIBLE_WITH_HOST_SELECT),
270    deps = [
271        ":pw_trace_host_trace_time",
272        ":trace_service_pwpb",
273        "//pw_chrono:system_clock",
274        "//pw_rpc/pwpb:test_method_context",
275        "//pw_trace",
276    ],
277)
278
279cc_library(
280    name = "pw_trace_host_trace_time",
281    srcs = ["host_trace_time.cc"],
282    includes = ["example/public"],
283    deps = [":pw_trace_tokenized"],
284)
285
286cc_library(
287    name = "pw_trace_example_to_file",
288    hdrs = ["example/public/pw_trace_tokenized/example/trace_to_file.h"],
289    includes = ["example/public"],
290    deps = [
291        ":pw_trace_tokenized",
292        "//pw_trace",
293    ],
294)
295
296pw_cc_binary(
297    name = "trace_tokenized_example_basic",
298    srcs = ["example/basic.cc"],
299    # TODO: b/258071921 - Fix puzzling compiler errors
300    tags = ["manual"],
301    deps = [
302        ":pw_trace_example_to_file",
303        "//pw_log",
304        "//pw_trace",
305        "//pw_trace:pw_trace_sample_app",
306    ],
307)
308
309pw_cc_binary(
310    name = "trace_tokenized_example_trigger",
311    srcs = ["example/trigger.cc"],
312    # TODO: b/258071921 - Fix puzzling compiler errors
313    tags = ["manual"],
314    deps = [
315        ":pw_trace_example_to_file",
316        "//pw_log",
317        "//pw_trace",
318        "//pw_trace:pw_trace_sample_app",
319    ],
320)
321
322pw_cc_binary(
323    name = "trace_tokenized_example_filter",
324    srcs = ["example/filter.cc"],
325    # TODO: b/258071921 - Fix puzzling compiler errors
326    tags = ["manual"],
327    deps = [
328        ":pw_trace_example_to_file",
329        "//pw_log",
330        "//pw_trace",
331        "//pw_trace:pw_trace_sample_app",
332    ],
333)
334
335cc_library(
336    name = "trace_tokenized_example_rpc",
337    srcs = ["example/rpc.cc"],
338    # TODO: b/258071921 - Fix puzzling compiler errors
339    tags = ["manual"],
340    deps = [
341        "//pw_hdlc",
342        "//pw_log",
343        "//pw_rpc",
344        "//pw_rpc/system_server",
345        "//pw_trace",
346        "//pw_trace:pw_trace_sample_app",
347    ],
348)
349
350cc_library(
351    name = "trace_tokenized_example_linux_group_by_tid",
352    srcs = ["example/linux_group_by_tid.cc"],
353    # TODO: b/258071921 - Fix puzzling compiler errors
354    tags = ["manual"],
355    deps = [
356        ":pw_trace_example_to_file",
357        "//pw_log",
358        "//pw_trace",
359    ],
360)
361