xref: /aosp_15_r20/external/pigweed/pw_log_tokenized/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2020 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni")
16*61c4878aSAndroid Build Coastguard Worker
17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/facade.gni")
18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/module_config.gni")
19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni")
20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni")
21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_log/backend.gni")
22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_log_tokenized/backend.gni")
23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni")
24*61c4878aSAndroid Build Coastguard Worker
25*61c4878aSAndroid Build Coastguard Workerdeclare_args() {
26*61c4878aSAndroid Build Coastguard Worker  # The build target that overrides the default configuration options for this
27*61c4878aSAndroid Build Coastguard Worker  # module. This should point to a source set that provides defines through a
28*61c4878aSAndroid Build Coastguard Worker  # public config (which may -include a file or add defines directly).
29*61c4878aSAndroid Build Coastguard Worker  pw_log_tokenized_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
30*61c4878aSAndroid Build Coastguard Worker}
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") {
33*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public" ]
34*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
35*61c4878aSAndroid Build Coastguard Worker}
36*61c4878aSAndroid Build Coastguard Worker
37*61c4878aSAndroid Build Coastguard Workerconfig("backend_config") {
38*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public_overrides" ]
39*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
40*61c4878aSAndroid Build Coastguard Worker}
41*61c4878aSAndroid Build Coastguard Worker
42*61c4878aSAndroid Build Coastguard Workerconfig("gcc_partially_tokenized_backend_config") {
43*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public_overrides" ]
44*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
45*61c4878aSAndroid Build Coastguard Worker}
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw_log.
48*61c4878aSAndroid Build Coastguard Workerpw_source_set("pw_log_tokenized") {
49*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":backend_config" ]
50*61c4878aSAndroid Build Coastguard Worker  public_deps = [
51*61c4878aSAndroid Build Coastguard Worker    ":handler.facade",  # Depend on the facade to avoid circular dependencies.
52*61c4878aSAndroid Build Coastguard Worker    ":headers",
53*61c4878aSAndroid Build Coastguard Worker  ]
54*61c4878aSAndroid Build Coastguard Worker  public = [
55*61c4878aSAndroid Build Coastguard Worker    "public_overrides/pw_log_backend/log_backend.h",
56*61c4878aSAndroid Build Coastguard Worker    "public_overrides/pw_log_backend/log_backend_uses_pw_tokenizer.h",
57*61c4878aSAndroid Build Coastguard Worker  ]
58*61c4878aSAndroid Build Coastguard Worker
59*61c4878aSAndroid Build Coastguard Worker  sources = [ "log_tokenized.cc" ]
60*61c4878aSAndroid Build Coastguard Worker}
61*61c4878aSAndroid Build Coastguard Worker
62*61c4878aSAndroid Build Coastguard Workerpw_source_set("headers") {
63*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
64*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
65*61c4878aSAndroid Build Coastguard Worker  public_deps = [
66*61c4878aSAndroid Build Coastguard Worker    ":config",
67*61c4878aSAndroid Build Coastguard Worker    ":metadata",
68*61c4878aSAndroid Build Coastguard Worker    dir_pw_preprocessor,
69*61c4878aSAndroid Build Coastguard Worker    dir_pw_tokenizer,
70*61c4878aSAndroid Build Coastguard Worker  ]
71*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log_tokenized/log_tokenized.h" ]
72*61c4878aSAndroid Build Coastguard Worker}
73*61c4878aSAndroid Build Coastguard Worker
74*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw_log for GCC which tokenizes as much as
75*61c4878aSAndroid Build Coastguard Worker# it can and uses pw_log_string:handler for the rest.
76*61c4878aSAndroid Build Coastguard Workerpw_source_set("gcc_partially_tokenized") {
77*61c4878aSAndroid Build Coastguard Worker  public_configs = [
78*61c4878aSAndroid Build Coastguard Worker    ":gcc_partially_tokenized_backend_config",
79*61c4878aSAndroid Build Coastguard Worker    ":public_include_path",
80*61c4878aSAndroid Build Coastguard Worker  ]
81*61c4878aSAndroid Build Coastguard Worker  public_deps = [
82*61c4878aSAndroid Build Coastguard Worker    ":handler.facade",  # Depend on the facade to avoid circular dependencies.
83*61c4878aSAndroid Build Coastguard Worker    ":headers",
84*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log_string:handler",
85*61c4878aSAndroid Build Coastguard Worker  ]
86*61c4878aSAndroid Build Coastguard Worker  public = [
87*61c4878aSAndroid Build Coastguard Worker    "gcc_partially_tokenized_public_overrides/pw_log_backend/log_backend.h",
88*61c4878aSAndroid Build Coastguard Worker    "public/pw_log_tokenized/gcc_partially_tokenized.h",
89*61c4878aSAndroid Build Coastguard Worker  ]
90*61c4878aSAndroid Build Coastguard Worker  sources = [ "log_tokenized.cc" ]
91*61c4878aSAndroid Build Coastguard Worker}
92*61c4878aSAndroid Build Coastguard Worker
93*61c4878aSAndroid Build Coastguard Workerpw_facade("handler") {
94*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
95*61c4878aSAndroid Build Coastguard Worker  public_deps = [ dir_pw_preprocessor ]
96*61c4878aSAndroid Build Coastguard Worker
97*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log_tokenized/handler.h" ]
98*61c4878aSAndroid Build Coastguard Worker
99*61c4878aSAndroid Build Coastguard Worker  backend = pw_log_tokenized_HANDLER_BACKEND
100*61c4878aSAndroid Build Coastguard Worker}
101*61c4878aSAndroid Build Coastguard Worker
102*61c4878aSAndroid Build Coastguard Workerpw_source_set("metadata") {
103*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
104*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":config" ]
105*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log_tokenized/metadata.h" ]
106*61c4878aSAndroid Build Coastguard Worker}
107*61c4878aSAndroid Build Coastguard Worker
108*61c4878aSAndroid Build Coastguard Workerpw_source_set("config") {
109*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
110*61c4878aSAndroid Build Coastguard Worker  public_deps = [
111*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log:facade",
112*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_tokenizer:config",
113*61c4878aSAndroid Build Coastguard Worker    dir_pw_polyfill,
114*61c4878aSAndroid Build Coastguard Worker    pw_log_tokenized_CONFIG,
115*61c4878aSAndroid Build Coastguard Worker  ]
116*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log_tokenized/config.h" ]
117*61c4878aSAndroid Build Coastguard Worker}
118*61c4878aSAndroid Build Coastguard Worker
119*61c4878aSAndroid Build Coastguard Worker# The log backend deps that might cause circular dependencies, since
120*61c4878aSAndroid Build Coastguard Worker# pw_log is so ubiquitous. These deps are kept separate so they can be
121*61c4878aSAndroid Build Coastguard Worker# depended on from elsewhere.
122*61c4878aSAndroid Build Coastguard Workerpw_source_set("pw_log_tokenized.impl") {
123*61c4878aSAndroid Build Coastguard Worker  deps = [ ":pw_log_tokenized" ]
124*61c4878aSAndroid Build Coastguard Worker
125*61c4878aSAndroid Build Coastguard Worker  if (pw_log_tokenized_HANDLER_BACKEND != "") {
126*61c4878aSAndroid Build Coastguard Worker    deps += [ ":handler" ]
127*61c4878aSAndroid Build Coastguard Worker  }
128*61c4878aSAndroid Build Coastguard Worker}
129*61c4878aSAndroid Build Coastguard Worker
130*61c4878aSAndroid Build Coastguard Workerpw_source_set("base64") {
131*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
132*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log_tokenized/base64.h" ]
133*61c4878aSAndroid Build Coastguard Worker  public_deps = [
134*61c4878aSAndroid Build Coastguard Worker    ":config",
135*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_tokenizer:base64",
136*61c4878aSAndroid Build Coastguard Worker  ]
137*61c4878aSAndroid Build Coastguard Worker}
138*61c4878aSAndroid Build Coastguard Worker
139*61c4878aSAndroid Build Coastguard Worker# This target provides a backend for pw_tokenizer that encodes tokenized logs as
140*61c4878aSAndroid Build Coastguard Worker# Base64, encodes them into HDLC frames, and writes them over sys_io.
141*61c4878aSAndroid Build Coastguard Workerpw_source_set("base64_over_hdlc") {
142*61c4878aSAndroid Build Coastguard Worker  sources = [ "base64_over_hdlc.cc" ]
143*61c4878aSAndroid Build Coastguard Worker  deps = [
144*61c4878aSAndroid Build Coastguard Worker    ":base64",
145*61c4878aSAndroid Build Coastguard Worker    ":handler.facade",
146*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_hdlc:encoder",
147*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_stream:sys_io_stream",
148*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_tokenizer:base64",
149*61c4878aSAndroid Build Coastguard Worker    dir_pw_span,
150*61c4878aSAndroid Build Coastguard Worker  ]
151*61c4878aSAndroid Build Coastguard Worker}
152*61c4878aSAndroid Build Coastguard Worker
153*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") {
154*61c4878aSAndroid Build Coastguard Worker  tests = [
155*61c4878aSAndroid Build Coastguard Worker    ":log_tokenized_test",
156*61c4878aSAndroid Build Coastguard Worker    ":metadata_test",
157*61c4878aSAndroid Build Coastguard Worker    ":tokenized_args_test",
158*61c4878aSAndroid Build Coastguard Worker  ]
159*61c4878aSAndroid Build Coastguard Worker}
160*61c4878aSAndroid Build Coastguard Worker
161*61c4878aSAndroid Build Coastguard Workerpw_test("log_tokenized_test") {
162*61c4878aSAndroid Build Coastguard Worker  sources = [
163*61c4878aSAndroid Build Coastguard Worker    "log_tokenized_test.cc",
164*61c4878aSAndroid Build Coastguard Worker    "log_tokenized_test_c.c",
165*61c4878aSAndroid Build Coastguard Worker    "pw_log_tokenized_private/test_utils.h",
166*61c4878aSAndroid Build Coastguard Worker  ]
167*61c4878aSAndroid Build Coastguard Worker  deps = [
168*61c4878aSAndroid Build Coastguard Worker    ":base64",
169*61c4878aSAndroid Build Coastguard Worker    ":headers",
170*61c4878aSAndroid Build Coastguard Worker    dir_pw_preprocessor,
171*61c4878aSAndroid Build Coastguard Worker  ]
172*61c4878aSAndroid Build Coastguard Worker}
173*61c4878aSAndroid Build Coastguard Worker
174*61c4878aSAndroid Build Coastguard Workerpw_test("metadata_test") {
175*61c4878aSAndroid Build Coastguard Worker  sources = [ "metadata_test.cc" ]
176*61c4878aSAndroid Build Coastguard Worker  deps = [ ":metadata" ]
177*61c4878aSAndroid Build Coastguard Worker}
178*61c4878aSAndroid Build Coastguard Worker
179*61c4878aSAndroid Build Coastguard Workerpw_test("tokenized_args_test") {
180*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_log_BACKEND != "" &&
181*61c4878aSAndroid Build Coastguard Worker              (host_os != "win" || pw_log_tokenized_HANDLER_BACKEND != "")
182*61c4878aSAndroid Build Coastguard Worker  deps = [
183*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log:args",
184*61c4878aSAndroid Build Coastguard Worker    dir_pw_log_tokenized,
185*61c4878aSAndroid Build Coastguard Worker    dir_pw_tokenizer,
186*61c4878aSAndroid Build Coastguard Worker  ]
187*61c4878aSAndroid Build Coastguard Worker
188*61c4878aSAndroid Build Coastguard Worker  sources = [ "tokenized_args_test.cc" ]
189*61c4878aSAndroid Build Coastguard Worker}
190*61c4878aSAndroid Build Coastguard Worker
191*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") {
192*61c4878aSAndroid Build Coastguard Worker  sources = [ "docs.rst" ]
193*61c4878aSAndroid Build Coastguard Worker  other_deps = [ "py" ]
194*61c4878aSAndroid Build Coastguard Worker}
195