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("@com_google_protobuf//bazel:java_lite_proto_library.bzl", "java_lite_proto_library") 16load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") 17load("@rules_cc//cc:cc_library.bzl", "cc_library") 18load("@rules_python//python:proto.bzl", "py_proto_library") 19load("@rules_python//sphinxdocs:sphinx_docs_library.bzl", "sphinx_docs_library") 20load("//pw_build:compatibility.bzl", "host_backend_alias", "incompatible_with_mcu") 21load("//pw_build:copy_to_bin.bzl", "copy_to_bin") 22load("//pw_build:pw_facade.bzl", "pw_facade") 23load( 24 "//pw_protobuf_compiler:pw_proto_library.bzl", 25 "pwpb_proto_library", 26 "raw_rpc_proto_library", 27) 28load("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test") 29 30package( 31 default_visibility = ["//visibility:public"], 32) 33 34licenses(["notice"]) 35 36# TODO: pwbug.dev/328679085 - Remove this alias once no-one uses it. 37alias( 38 name = "facade", 39 actual = "pw_log.facade", 40) 41 42pw_facade( 43 name = "pw_log", 44 hdrs = [ 45 "public/pw_log/config.h", 46 "public/pw_log/levels.h", 47 "public/pw_log/log.h", 48 "public/pw_log/options.h", 49 "public/pw_log/short.h", 50 "public/pw_log/shorter.h", 51 ], 52 backend = ":backend", 53 strip_include_prefix = "public", 54 deps = [ 55 ":config_override", 56 "//pw_preprocessor", 57 ], 58) 59 60cc_library( 61 name = "rate_limited", 62 srcs = [ 63 "rate_limited.cc", 64 ], 65 hdrs = [ 66 "public/pw_log/rate_limited.h", 67 ], 68 strip_include_prefix = "public", 69 deps = [ 70 ":config_override", 71 ":pw_log", 72 "//pw_chrono:system_clock", 73 ], 74) 75 76cc_library( 77 name = "args", 78 hdrs = [ 79 "public/pw_log/tokenized_args.h", 80 ], 81 strip_include_prefix = "public", 82 deps = ["//pw_tokenizer"], 83) 84 85label_flag( 86 name = "config_override", 87 build_setting_default = "//pw_build:default_module_config", 88) 89 90label_flag( 91 name = "backend", 92 build_setting_default = ":unspecified_backend", 93 # For internal tooling: go/build-cleaner/troubleshooting-faq#keep-dep 94 tags = ["keep_dep"], 95) 96 97host_backend_alias( 98 name = "unspecified_backend", 99 backend = "//pw_log_basic", 100) 101 102label_flag( 103 name = "backend_impl", 104 build_setting_default = ":unspecified_backend_impl", 105 # For internal tooling: go/build-cleaner/troubleshooting-faq#keep-dep 106 tags = ["keep_dep"], 107) 108 109host_backend_alias( 110 name = "unspecified_backend_impl", 111 backend = "//pw_log_basic:impl", 112) 113 114cc_library( 115 name = "glog_adapter", 116 hdrs = [ 117 "public/pw_log/glog_adapter.h", 118 "public/pw_log/glog_adapter_config.h", 119 "public/pw_log/internal/glog_adapter.h", 120 ], 121 strip_include_prefix = "public", 122 deps = [ 123 ":glog_adapter_config_override", 124 "//pw_assert:check", 125 "//pw_log", 126 "//pw_preprocessor", 127 "//pw_string", 128 ], 129) 130 131label_flag( 132 name = "glog_adapter_config_override", 133 build_setting_default = "//pw_build:default_module_config", 134) 135 136cc_library( 137 name = "proto_utils", 138 srcs = [ 139 "proto_utils.cc", 140 ], 141 hdrs = [ 142 "public/pw_log/proto_utils.h", 143 ], 144 strip_include_prefix = "public", 145 deps = [ 146 ":log_proto_pwpb", 147 ":pw_log.facade", 148 "//pw_bytes", 149 "//pw_log_tokenized:headers", 150 "//pw_protobuf", 151 "//pw_result", 152 "//pw_span", 153 "//pw_status", 154 ], 155) 156 157proto_library( 158 name = "log_proto", 159 srcs = [ 160 "log.proto", 161 ], 162 import_prefix = "pw_log/proto", 163 strip_import_prefix = "/pw_log", 164 deps = [ 165 "//pw_protobuf:common_proto", 166 "//pw_tokenizer:tokenizer_proto", 167 ], 168) 169 170py_proto_library( 171 name = "log_proto_py_pb2", 172 deps = [":log_proto"], 173) 174 175java_lite_proto_library( 176 name = "log_java_proto_lite", 177 deps = [":log_proto"], 178) 179 180pwpb_proto_library( 181 name = "log_proto_pwpb", 182 deps = [":log_proto"], 183) 184 185raw_rpc_proto_library( 186 name = "log_proto_raw_rpc", 187 deps = [":log_proto"], 188) 189 190# https://pwbug.dev/375207472 - Remove this alias after downstream migration. 191alias( 192 name = "log_proto_cc.pwpb", 193 actual = ":log_proto_pwpb", 194) 195 196# https://pwbug.dev/375207472 - Remove this alias after downstream migration. 197alias( 198 name = "log_proto_cc.raw_rpc", 199 actual = ":log_proto_raw_rpc", 200) 201 202pw_cc_test( 203 name = "test", 204 srcs = [ 205 "basic_log_test.cc", 206 "basic_log_test_plain_c.c", 207 ], 208 deps = [ 209 ":pw_log", 210 ":pw_log.facade", 211 ":rate_limited", 212 "//pw_preprocessor", 213 ], 214) 215 216pw_cc_test( 217 name = "glog_adapter_test", 218 srcs = [ 219 "glog_adapter_test.cc", 220 ], 221 deps = [":glog_adapter"], 222) 223 224pw_cc_test( 225 name = "proto_utils_test", 226 srcs = [ 227 "proto_utils_test.cc", 228 ], 229 deps = [ 230 ":log_proto_pwpb", 231 ":proto_utils", 232 ":pw_log.facade", 233 "//pw_bytes", 234 "//pw_containers:algorithm", 235 "//pw_preprocessor", 236 "//pw_protobuf", 237 "//pw_protobuf:bytes_utils", 238 ], 239) 240 241pw_cc_test( 242 name = "log_enum_test", 243 srcs = [ 244 "log_enum_test.cc", 245 ], 246 deps = [ 247 ":args", 248 "//pw_log", 249 "//pw_tokenizer", 250 "//pw_unit_test:constexpr", 251 ], 252) 253 254filegroup( 255 name = "doxygen", 256 srcs = [ 257 "public/pw_log/tokenized_args.h", 258 ], 259) 260 261sphinx_docs_library( 262 name = "docs", 263 srcs = [ 264 "backends.rst", 265 "docs.rst", 266 "log.proto", 267 "protobuf.rst", 268 "tokenized_args.rst", 269 ], 270 prefix = "pw_log/", 271 target_compatible_with = incompatible_with_mcu(), 272) 273 274copy_to_bin( 275 name = "js_protos", 276 srcs = [ 277 "log.proto", 278 ], 279) 280