xref: /aosp_15_r20/external/pigweed/pw_log_rpc/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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
15import("//build_overrides/pigweed.gni")
16
17import("$dir_pw_build/module_config.gni")
18import("$dir_pw_build/target_types.gni")
19import("$dir_pw_chrono/backend.gni")
20import("$dir_pw_docgen/docs.gni")
21import("$dir_pw_unit_test/test.gni")
22
23declare_args() {
24  # The build target that overrides the default configuration options for this
25  # module. This should point to a source set that provides defines through a
26  # public config (which may -include a file or add defines directly).
27  pw_log_rpc_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
28}
29
30config("public_include_path") {
31  include_dirs = [ "public" ]
32  visibility = [ ":*" ]
33}
34
35# TODO: b/297280281 - Windows+gcc+mingw-w64 thinks that some variables are not
36# always initialized. This is a toolchain bug, not a real issue.
37config("disable_warning") {
38  cflags = [ "-Wno-maybe-uninitialized" ]
39}
40
41pw_source_set("config") {
42  sources = [ "public/pw_log_rpc/internal/config.h" ]
43  public_configs = [ ":public_include_path" ]
44  public_deps = [ pw_log_rpc_CONFIG ]
45  visibility = [ "./*" ]
46  friend = [ "./*" ]
47}
48
49pw_source_set("log_config") {
50  sources = [ "public/pw_log_rpc/internal/log_config.h" ]
51  public_configs = [ ":public_include_path" ]
52  public_deps = [ ":config" ]
53  visibility = [ "./*" ]
54  friend = [ "./*" ]
55}
56
57pw_source_set("log_service") {
58  public_configs = [ ":public_include_path" ]
59  public = [ "public/pw_log_rpc/log_service.h" ]
60  sources = [ "log_service.cc" ]
61  deps = [
62    ":log_config",
63    "$dir_pw_log",
64    "$dir_pw_log:protos.pwpb",
65  ]
66  public_deps = [
67    ":rpc_log_drain",
68    "$dir_pw_log:protos.raw_rpc",
69  ]
70}
71
72pw_source_set("log_filter_service") {
73  public_configs = [ ":public_include_path" ]
74  public = [ "public/pw_log_rpc/log_filter_service.h" ]
75  sources = [ "log_filter_service.cc" ]
76  deps = [
77    "$dir_pw_log",
78    "$dir_pw_log:protos.pwpb",
79    "$dir_pw_protobuf",
80  ]
81  public_deps = [
82    ":log_filter",
83    "$dir_pw_log:protos.raw_rpc",
84    "$dir_pw_protobuf:bytes_utils",
85  ]
86}
87
88pw_source_set("log_filter") {
89  public_configs = [ ":public_include_path" ]
90  public = [
91    "public/pw_log_rpc/log_filter.h",
92    "public/pw_log_rpc/log_filter_map.h",
93  ]
94  sources = [ "log_filter.cc" ]
95  deps = [ "$dir_pw_log" ]
96  public_deps = [
97    ":config",
98    "$dir_pw_assert",
99    "$dir_pw_bytes",
100    "$dir_pw_containers:vector",
101    "$dir_pw_log",
102    "$dir_pw_log:protos.pwpb",
103    "$dir_pw_protobuf",
104    "$dir_pw_status",
105    dir_pw_span,
106  ]
107}
108
109pw_source_set("rpc_log_drain") {
110  public_configs = [ ":public_include_path" ]
111  public = [
112    "public/pw_log_rpc/rpc_log_drain.h",
113    "public/pw_log_rpc/rpc_log_drain_map.h",
114  ]
115  sources = [ "rpc_log_drain.cc" ]
116  public_deps = [
117    ":config",
118    ":log_filter",
119    "$dir_pw_assert",
120    "$dir_pw_chrono:system_clock",
121    "$dir_pw_function",
122    "$dir_pw_log:protos.pwpb",
123    "$dir_pw_log:protos.raw_rpc",
124    "$dir_pw_multisink",
125    "$dir_pw_protobuf",
126    "$dir_pw_result",
127    "$dir_pw_status",
128    "$dir_pw_sync:lock_annotations",
129    "$dir_pw_sync:mutex",
130    dir_pw_span,
131  ]
132}
133
134pw_source_set("rpc_log_drain_thread") {
135  public_configs = [ ":public_include_path" ]
136  public = [ "public/pw_log_rpc/rpc_log_drain_thread.h" ]
137  public_deps = [
138    ":log_service",
139    ":rpc_log_drain",
140    "$dir_pw_chrono:system_clock",
141    "$dir_pw_multisink",
142    "$dir_pw_result",
143    "$dir_pw_rpc/raw:server_api",
144    "$dir_pw_status",
145    "$dir_pw_sync:timed_thread_notification",
146    "$dir_pw_thread:thread",
147  ]
148  if (current_os == "win") {
149    public_configs += [ ":disable_warning" ]
150  }
151}
152
153pw_source_set("test_utils") {
154  # TODO: b/303282642 - Remove this testonly
155  testonly = pw_unit_test_TESTONLY
156
157  public_deps = [
158    "$dir_pw_bytes",
159    "$dir_pw_containers:vector",
160    "$dir_pw_log_tokenized:metadata",
161    "$dir_pw_protobuf",
162    "$dir_pw_unit_test",
163  ]
164  deps = [
165    "$dir_pw_log",
166    "$dir_pw_log:protos.pwpb",
167    "$dir_pw_protobuf:bytes_utils",
168  ]
169  public = [ "pw_log_rpc_private/test_utils.h" ]
170  sources = [ "test_utils.cc" ]
171  visibility = [ ":*" ]
172}
173
174pw_test("log_service_test") {
175  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
176  sources = [ "log_service_test.cc" ]
177  deps = [
178    ":log_filter",
179    ":log_service",
180    ":test_utils",
181    "$dir_pw_containers:vector",
182    "$dir_pw_log",
183    "$dir_pw_log:proto_utils",
184    "$dir_pw_log:protos.pwpb",
185    "$dir_pw_log_tokenized:metadata",
186    "$dir_pw_protobuf",
187    "$dir_pw_protobuf:bytes_utils",
188    "$dir_pw_result",
189    "$dir_pw_rpc/raw:test_method_context",
190    "$dir_pw_status",
191  ]
192}
193
194pw_test("log_filter_service_test") {
195  sources = [ "log_filter_service_test.cc" ]
196  deps = [
197    ":log_filter",
198    ":log_filter_service",
199    "$dir_pw_log:protos.pwpb",
200    "$dir_pw_protobuf",
201    "$dir_pw_protobuf:bytes_utils",
202    "$dir_pw_result",
203    "$dir_pw_rpc/raw:test_method_context",
204    "$dir_pw_status",
205  ]
206}
207
208pw_test("log_filter_test") {
209  sources = [ "log_filter_test.cc" ]
210  deps = [
211    ":log_filter",
212    "$dir_pw_log",
213    "$dir_pw_log:proto_utils",
214    "$dir_pw_log:protos.pwpb",
215    "$dir_pw_log_tokenized:metadata",
216    "$dir_pw_result",
217    "$dir_pw_status",
218  ]
219}
220
221pw_test("rpc_log_drain_test") {
222  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
223  sources = [ "rpc_log_drain_test.cc" ]
224  deps = [
225    ":log_filter",
226    ":log_service",
227    ":rpc_log_drain",
228    ":test_utils",
229    "$dir_pw_bytes",
230    "$dir_pw_log:proto_utils",
231    "$dir_pw_log:protos.pwpb",
232    "$dir_pw_log_tokenized:metadata",
233    "$dir_pw_multisink",
234    "$dir_pw_protobuf",
235    "$dir_pw_rpc:common",
236    "$dir_pw_rpc/raw:fake_channel_output",
237    "$dir_pw_rpc/raw:server_api",
238    "$dir_pw_rpc/raw:test_method_context",
239    "$dir_pw_status",
240    "$dir_pw_sync:mutex",
241  ]
242
243  # TODO: https://pwbug.dev/325509758 - Doesn't work on the Pico yet; hangs
244  # indefinitely.
245  if (pw_build_EXECUTABLE_TARGET_TYPE == "pico_executable") {
246    enable_if = false
247  }
248}
249
250# TODO(cachinchilla): update docs.
251pw_doc_group("docs") {
252  sources = [ "docs.rst" ]
253}
254
255pw_test_group("tests") {
256  tests = [
257    ":log_filter_test",
258    ":log_filter_service_test",
259    ":log_service_test",
260    ":rpc_log_drain_test",
261  ]
262}
263