xref: /aosp_15_r20/external/pigweed/pw_log/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2021 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_chrono/backend.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_protobuf_compiler/proto.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_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
30*61c4878aSAndroid Build Coastguard Worker
31*61c4878aSAndroid Build Coastguard Worker  # The build target that overrides the default configuration options for the
32*61c4878aSAndroid Build Coastguard Worker  # glog adapter portion of this module.
33*61c4878aSAndroid Build Coastguard Worker  pw_log_GLOG_ADAPTER_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
34*61c4878aSAndroid Build Coastguard Worker}
35*61c4878aSAndroid Build Coastguard Worker
36*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") {
37*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public" ]
38*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
39*61c4878aSAndroid Build Coastguard Worker}
40*61c4878aSAndroid Build Coastguard Worker
41*61c4878aSAndroid Build Coastguard Workerpw_source_set("config") {
42*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log/config.h" ]
43*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
44*61c4878aSAndroid Build Coastguard Worker  public_deps = [ pw_log_CONFIG ]
45*61c4878aSAndroid Build Coastguard Worker}
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Workerpw_facade("pw_log") {
48*61c4878aSAndroid Build Coastguard Worker  backend = pw_log_BACKEND
49*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
50*61c4878aSAndroid Build Coastguard Worker  public = [
51*61c4878aSAndroid Build Coastguard Worker    "public/pw_log/levels.h",
52*61c4878aSAndroid Build Coastguard Worker    "public/pw_log/log.h",
53*61c4878aSAndroid Build Coastguard Worker    "public/pw_log/options.h",
54*61c4878aSAndroid Build Coastguard Worker    "public/pw_log/short.h",
55*61c4878aSAndroid Build Coastguard Worker    "public/pw_log/shorter.h",
56*61c4878aSAndroid Build Coastguard Worker  ]
57*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":config" ]
58*61c4878aSAndroid Build Coastguard Worker
59*61c4878aSAndroid Build Coastguard Worker  require_link_deps = [ ":impl" ]
60*61c4878aSAndroid Build Coastguard Worker}
61*61c4878aSAndroid Build Coastguard Worker
62*61c4878aSAndroid Build Coastguard Workerpw_source_set("rate_limited") {
63*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
64*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log/rate_limited.h" ]
65*61c4878aSAndroid Build Coastguard Worker  public_deps = [
66*61c4878aSAndroid Build Coastguard Worker    ":config",
67*61c4878aSAndroid Build Coastguard Worker    ":pw_log",
68*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
69*61c4878aSAndroid Build Coastguard Worker  ]
70*61c4878aSAndroid Build Coastguard Worker  sources = [ "rate_limited.cc" ]
71*61c4878aSAndroid Build Coastguard Worker}
72*61c4878aSAndroid Build Coastguard Worker
73*61c4878aSAndroid Build Coastguard Workerpw_source_set("args") {
74*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
75*61c4878aSAndroid Build Coastguard Worker  public_deps = [ dir_pw_tokenizer ]
76*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log/tokenized_args.h" ]
77*61c4878aSAndroid Build Coastguard Worker}
78*61c4878aSAndroid Build Coastguard Worker
79*61c4878aSAndroid Build Coastguard Workerpw_source_set("glog_adapter") {
80*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
81*61c4878aSAndroid Build Coastguard Worker  public = [
82*61c4878aSAndroid Build Coastguard Worker    "public/pw_log/glog_adapter.h",
83*61c4878aSAndroid Build Coastguard Worker    "public/pw_log/glog_adapter_config.h",
84*61c4878aSAndroid Build Coastguard Worker  ]
85*61c4878aSAndroid Build Coastguard Worker  public_deps = [
86*61c4878aSAndroid Build Coastguard Worker    ":config",
87*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_assert",
88*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log",
89*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
90*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_string",
91*61c4878aSAndroid Build Coastguard Worker    pw_log_GLOG_ADAPTER_CONFIG,
92*61c4878aSAndroid Build Coastguard Worker  ]
93*61c4878aSAndroid Build Coastguard Worker  sources = [ "public/pw_log/internal/glog_adapter.h" ]
94*61c4878aSAndroid Build Coastguard Worker}
95*61c4878aSAndroid Build Coastguard Worker
96*61c4878aSAndroid Build Coastguard Workerpw_source_set("proto_utils") {
97*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
98*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_log/proto_utils.h" ]
99*61c4878aSAndroid Build Coastguard Worker  public_deps = [
100*61c4878aSAndroid Build Coastguard Worker    ":pw_log.facade",
101*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes",
102*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log:protos.pwpb",
103*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log_tokenized:metadata",
104*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_result",
105*61c4878aSAndroid Build Coastguard Worker    dir_pw_span,
106*61c4878aSAndroid Build Coastguard Worker  ]
107*61c4878aSAndroid Build Coastguard Worker  deps = [ "$dir_pw_protobuf" ]
108*61c4878aSAndroid Build Coastguard Worker  sources = [ "proto_utils.cc" ]
109*61c4878aSAndroid Build Coastguard Worker}
110*61c4878aSAndroid Build Coastguard Worker
111*61c4878aSAndroid Build Coastguard Worker# pw_log is low-level and ubiquitous. Because of this, it can often cause
112*61c4878aSAndroid Build Coastguard Worker# circular dependencies. This target collects dependencies from the backend that
113*61c4878aSAndroid Build Coastguard Worker# cannot be used because they would cause circular deps.
114*61c4878aSAndroid Build Coastguard Worker#
115*61c4878aSAndroid Build Coastguard Worker# This group ("$dir_pw_log:impl") must listed in pw_build_LINK_DEPS if
116*61c4878aSAndroid Build Coastguard Worker# pw_log_BACKEND is set.
117*61c4878aSAndroid Build Coastguard Worker#
118*61c4878aSAndroid Build Coastguard Worker# pw_log backends must provide their own "impl" target that collects their
119*61c4878aSAndroid Build Coastguard Worker# actual dependencies. The backend "impl" group may be empty if everything can
120*61c4878aSAndroid Build Coastguard Worker# go directly in the backend target without causing circular dependencies.
121*61c4878aSAndroid Build Coastguard Workergroup("impl") {
122*61c4878aSAndroid Build Coastguard Worker  public_deps = []
123*61c4878aSAndroid Build Coastguard Worker
124*61c4878aSAndroid Build Coastguard Worker  if (pw_log_BACKEND != "") {
125*61c4878aSAndroid Build Coastguard Worker    public_deps +=
126*61c4878aSAndroid Build Coastguard Worker        [ get_label_info(pw_log_BACKEND, "label_no_toolchain") + ".impl" ]
127*61c4878aSAndroid Build Coastguard Worker  }
128*61c4878aSAndroid Build Coastguard Worker}
129*61c4878aSAndroid Build Coastguard Worker
130*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") {
131*61c4878aSAndroid Build Coastguard Worker  tests = [
132*61c4878aSAndroid Build Coastguard Worker    ":basic_log_test",
133*61c4878aSAndroid Build Coastguard Worker    ":glog_adapter_test",
134*61c4878aSAndroid Build Coastguard Worker    ":proto_utils_test",
135*61c4878aSAndroid Build Coastguard Worker    ":log_enum_test",
136*61c4878aSAndroid Build Coastguard Worker  ]
137*61c4878aSAndroid Build Coastguard Worker}
138*61c4878aSAndroid Build Coastguard Worker
139*61c4878aSAndroid Build Coastguard Workerpw_test("basic_log_test") {
140*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_log_BACKEND != ""
141*61c4878aSAndroid Build Coastguard Worker  deps = [
142*61c4878aSAndroid Build Coastguard Worker    ":pw_log",
143*61c4878aSAndroid Build Coastguard Worker    dir_pw_preprocessor,
144*61c4878aSAndroid Build Coastguard Worker    pw_log_BACKEND,
145*61c4878aSAndroid Build Coastguard Worker  ]
146*61c4878aSAndroid Build Coastguard Worker
147*61c4878aSAndroid Build Coastguard Worker  sources = [
148*61c4878aSAndroid Build Coastguard Worker    "basic_log_test.cc",
149*61c4878aSAndroid Build Coastguard Worker    "basic_log_test_plain_c.c",
150*61c4878aSAndroid Build Coastguard Worker  ]
151*61c4878aSAndroid Build Coastguard Worker}
152*61c4878aSAndroid Build Coastguard Worker
153*61c4878aSAndroid Build Coastguard Workerpw_test("glog_adapter_test") {
154*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_log_BACKEND != ""
155*61c4878aSAndroid Build Coastguard Worker  deps = [
156*61c4878aSAndroid Build Coastguard Worker    ":glog_adapter",
157*61c4878aSAndroid Build Coastguard Worker    pw_log_BACKEND,
158*61c4878aSAndroid Build Coastguard Worker  ]
159*61c4878aSAndroid Build Coastguard Worker  sources = [ "glog_adapter_test.cc" ]
160*61c4878aSAndroid Build Coastguard Worker}
161*61c4878aSAndroid Build Coastguard Worker
162*61c4878aSAndroid Build Coastguard Workerpw_test("proto_utils_test") {
163*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_log_BACKEND != ""
164*61c4878aSAndroid Build Coastguard Worker  deps = [
165*61c4878aSAndroid Build Coastguard Worker    ":proto_utils",
166*61c4878aSAndroid Build Coastguard Worker    ":pw_log.facade",
167*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers",
168*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_log:protos.pwpb",
169*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
170*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_protobuf",
171*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_protobuf:bytes_utils",
172*61c4878aSAndroid Build Coastguard Worker  ]
173*61c4878aSAndroid Build Coastguard Worker  sources = [ "proto_utils_test.cc" ]
174*61c4878aSAndroid Build Coastguard Worker}
175*61c4878aSAndroid Build Coastguard Worker
176*61c4878aSAndroid Build Coastguard Workerpw_test("log_enum_test") {
177*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_log_BACKEND != ""
178*61c4878aSAndroid Build Coastguard Worker  deps = [
179*61c4878aSAndroid Build Coastguard Worker    ":args",
180*61c4878aSAndroid Build Coastguard Worker    ":pw_log",
181*61c4878aSAndroid Build Coastguard Worker    dir_pw_tokenizer,
182*61c4878aSAndroid Build Coastguard Worker  ]
183*61c4878aSAndroid Build Coastguard Worker
184*61c4878aSAndroid Build Coastguard Worker  sources = [ "log_enum_test.cc" ]
185*61c4878aSAndroid Build Coastguard Worker}
186*61c4878aSAndroid Build Coastguard Worker
187*61c4878aSAndroid Build Coastguard Workerpw_proto_library("protos") {
188*61c4878aSAndroid Build Coastguard Worker  sources = [ "log.proto" ]
189*61c4878aSAndroid Build Coastguard Worker  prefix = "pw_log/proto"
190*61c4878aSAndroid Build Coastguard Worker  deps = [
191*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_protobuf:common_protos",
192*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_tokenizer:proto",
193*61c4878aSAndroid Build Coastguard Worker  ]
194*61c4878aSAndroid Build Coastguard Worker  python_package = "py"
195*61c4878aSAndroid Build Coastguard Worker}
196*61c4878aSAndroid Build Coastguard Worker
197*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") {
198*61c4878aSAndroid Build Coastguard Worker  sources = [
199*61c4878aSAndroid Build Coastguard Worker    "backends.rst",
200*61c4878aSAndroid Build Coastguard Worker    "docs.rst",
201*61c4878aSAndroid Build Coastguard Worker    "protobuf.rst",
202*61c4878aSAndroid Build Coastguard Worker    "tokenized_args.rst",
203*61c4878aSAndroid Build Coastguard Worker  ]
204*61c4878aSAndroid Build Coastguard Worker  inputs = [
205*61c4878aSAndroid Build Coastguard Worker    "example_layer_diagram.svg",
206*61c4878aSAndroid Build Coastguard Worker    "log.proto",
207*61c4878aSAndroid Build Coastguard Worker  ]
208*61c4878aSAndroid Build Coastguard Worker}
209