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