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_cc//cc:cc_library.bzl", "cc_library") 16load("@rules_python//sphinxdocs:sphinx_docs_library.bzl", "sphinx_docs_library") 17load("//pw_build:compatibility.bzl", "incompatible_with_mcu") 18load("//pw_build:pw_facade.bzl", "pw_facade") 19load("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test") 20 21package( 22 default_visibility = ["//visibility:public"], 23 features = ["-layering_check"], 24) 25 26licenses(["notice"]) 27 28cc_library( 29 name = "headers", 30 hdrs = [ 31 "public/pw_log_tokenized/config.h", 32 "public/pw_log_tokenized/log_tokenized.h", 33 "public/pw_log_tokenized/metadata.h", 34 ], 35 strip_include_prefix = "public", 36 deps = [ 37 ":config_override", 38 "//pw_log:pw_log.facade", 39 "//pw_polyfill", 40 "//pw_tokenizer", 41 ], 42) 43 44label_flag( 45 name = "config_override", 46 build_setting_default = "//pw_build:default_module_config", 47) 48 49cc_library( 50 name = "pw_log_tokenized", 51 srcs = ["log_tokenized.cc"], 52 hdrs = [ 53 "public_overrides/pw_log_backend/log_backend.h", 54 "public_overrides/pw_log_backend/log_backend_uses_pw_tokenizer.h", 55 ], 56 includes = [ 57 "public_overrides", 58 ], 59 tags = ["noclangtidy"], 60 deps = [ 61 ":handler.facade", 62 ":headers", 63 "//pw_log:pw_log.facade", 64 ], 65) 66 67cc_library( 68 name = "gcc_partially_tokenized", 69 srcs = ["log_tokenized.cc"], 70 hdrs = [ 71 "gcc_partially_tokenized_public_overrides/pw_log_backend/log_backend.h", 72 "public/pw_log_tokenized/gcc_partially_tokenized.h", 73 ], 74 includes = [ 75 "gcc_partially_tokenized_public_overrides", 76 "public", 77 ], 78 deps = [ 79 ":handler", 80 ":headers", 81 "//pw_log:pw_log.facade", 82 "//pw_log_string:handler", 83 ], 84) 85 86alias( 87 name = "impl", 88 actual = ":handler", 89) 90 91pw_facade( 92 name = "handler", 93 hdrs = ["public/pw_log_tokenized/handler.h"], 94 backend = ":handler_backend", 95 strip_include_prefix = "public", 96 deps = ["//pw_preprocessor"], 97) 98 99label_flag( 100 name = "handler_backend", 101 build_setting_default = ":base64_over_hdlc", 102) 103 104# There is no default backend for now. 105cc_library( 106 name = "backend_multiplexer", 107 visibility = ["//targets:__pkg__"], 108) 109 110cc_library( 111 name = "base64", 112 hdrs = ["public/pw_log_tokenized/base64.h"], 113 strip_include_prefix = "public", 114 deps = [ 115 ":headers", # Only config.h is needed 116 "//pw_tokenizer:base64", 117 ], 118) 119 120cc_library( 121 name = "base64_over_hdlc", 122 srcs = ["base64_over_hdlc.cc"], 123 tags = ["noclangtidy"], 124 deps = [ 125 ":base64", 126 ":handler.facade", 127 "//pw_hdlc", 128 "//pw_stream:sys_io_stream", 129 "//pw_tokenizer:base64", 130 ], 131) 132 133pw_cc_test( 134 name = "log_tokenized_test", 135 srcs = [ 136 "log_tokenized_test.cc", 137 "log_tokenized_test_c.c", 138 "pw_log_tokenized_private/test_utils.h", 139 ], 140 deps = [ 141 ":base64", 142 ":headers", 143 ], 144) 145 146pw_cc_test( 147 name = "metadata_test", 148 srcs = [ 149 "metadata_test.cc", 150 ], 151 deps = [":headers"], 152) 153 154pw_cc_test( 155 name = "tokenized_args_test", 156 srcs = [ 157 "tokenized_args_test.cc", 158 ], 159 deps = [ 160 ":headers", 161 "//pw_log:args", 162 "//pw_tokenizer", 163 ], 164) 165 166filegroup( 167 name = "doxygen", 168 srcs = [ 169 "public/pw_log_tokenized/base64.h", 170 "public/pw_log_tokenized/config.h", 171 "public/pw_log_tokenized/handler.h", 172 "public/pw_log_tokenized/metadata.h", 173 ], 174) 175 176sphinx_docs_library( 177 name = "docs", 178 srcs = [ 179 "docs.rst", 180 ], 181 prefix = "pw_log_tokenized/", 182 target_compatible_with = incompatible_with_mcu(), 183) 184