• 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
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    "$dir_pw_thread:thread_core",
148  ]
149  if (current_os == "win") {
150    public_configs += [ ":disable_warning" ]
151  }
152}
153
154pw_source_set("test_utils") {
155  # TODO: b/303282642 - Remove this testonly
156  testonly = pw_unit_test_TESTONLY
157
158  public_deps = [
159    "$dir_pw_bytes",
160    "$dir_pw_containers:vector",
161    "$dir_pw_log_tokenized:metadata",
162    "$dir_pw_protobuf",
163    "$dir_pw_unit_test",
164  ]
165  deps = [
166    "$dir_pw_log",
167    "$dir_pw_log:protos.pwpb",
168    "$dir_pw_protobuf:bytes_utils",
169  ]
170  public = [ "pw_log_rpc_private/test_utils.h" ]
171  sources = [ "test_utils.cc" ]
172  visibility = [ ":*" ]
173}
174
175pw_test("log_service_test") {
176  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
177  sources = [ "log_service_test.cc" ]
178  deps = [
179    ":log_filter",
180    ":log_service",
181    ":test_utils",
182    "$dir_pw_containers:vector",
183    "$dir_pw_log",
184    "$dir_pw_log:proto_utils",
185    "$dir_pw_log:protos.pwpb",
186    "$dir_pw_log_tokenized:metadata",
187    "$dir_pw_protobuf",
188    "$dir_pw_protobuf:bytes_utils",
189    "$dir_pw_result",
190    "$dir_pw_rpc/raw:test_method_context",
191    "$dir_pw_status",
192  ]
193}
194
195pw_test("log_filter_service_test") {
196  sources = [ "log_filter_service_test.cc" ]
197  deps = [
198    ":log_filter",
199    ":log_filter_service",
200    "$dir_pw_log:protos.pwpb",
201    "$dir_pw_protobuf",
202    "$dir_pw_protobuf:bytes_utils",
203    "$dir_pw_result",
204    "$dir_pw_rpc/raw:test_method_context",
205    "$dir_pw_status",
206  ]
207}
208
209pw_test("log_filter_test") {
210  sources = [ "log_filter_test.cc" ]
211  deps = [
212    ":log_filter",
213    "$dir_pw_log",
214    "$dir_pw_log:proto_utils",
215    "$dir_pw_log:protos.pwpb",
216    "$dir_pw_log_tokenized:metadata",
217    "$dir_pw_result",
218    "$dir_pw_status",
219  ]
220}
221
222pw_test("rpc_log_drain_test") {
223  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
224  sources = [ "rpc_log_drain_test.cc" ]
225  deps = [
226    ":log_filter",
227    ":log_service",
228    ":rpc_log_drain",
229    ":test_utils",
230    "$dir_pw_bytes",
231    "$dir_pw_log:proto_utils",
232    "$dir_pw_log:protos.pwpb",
233    "$dir_pw_log_tokenized:metadata",
234    "$dir_pw_multisink",
235    "$dir_pw_protobuf",
236    "$dir_pw_rpc:common",
237    "$dir_pw_rpc/raw:fake_channel_output",
238    "$dir_pw_rpc/raw:server_api",
239    "$dir_pw_rpc/raw:test_method_context",
240    "$dir_pw_status",
241    "$dir_pw_sync:mutex",
242  ]
243
244  # TODO: https://pwbug.dev/325509758 - Doesn't work on the Pico yet; hangs
245  # indefinitely.
246  if (pw_build_EXECUTABLE_TARGET_TYPE == "pico_executable") {
247    enable_if = false
248  }
249}
250
251# TODO(cachinchilla): update docs.
252pw_doc_group("docs") {
253  sources = [ "docs.rst" ]
254}
255
256pw_test_group("tests") {
257  tests = [
258    ":log_filter_test",
259    ":log_filter_service_test",
260    ":log_service_test",
261    ":rpc_log_drain_test",
262  ]
263}
264