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