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