• 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_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