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_pigweed/third_party/ambiq/ambiq.gni") 18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pigweed/third_party/freertos/freertos.gni") 19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pigweed/third_party/nanopb/nanopb.gni") 20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pigweed/third_party/pico_sdk/pi_pico.gni") 21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pigweed/third_party/smartfusion_mss/mss.gni") 22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pigweed/third_party/stm32cube/stm32cube.gni") 23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_async2/backend.gni") 24*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/error.gni") 25*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/facade.gni") 26*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/module_config.gni") 27*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni") 28*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_cpu_exception/backend.gni") 29*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni") 30*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_protobuf_compiler/proto.gni") 31*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni") 32*61c4878aSAndroid Build Coastguard Workerimport("backend.gni") 33*61c4878aSAndroid Build Coastguard Worker 34*61c4878aSAndroid Build Coastguard Workerdeclare_args() { 35*61c4878aSAndroid Build Coastguard Worker # The build target that overrides the default configuration options for this 36*61c4878aSAndroid Build Coastguard Worker # module. This should point to a source set that provides defines through a 37*61c4878aSAndroid Build Coastguard Worker # public config (which may -include a file or add defines directly). 38*61c4878aSAndroid Build Coastguard Worker pw_system_CONFIG = pw_build_DEFAULT_MODULE_CONFIG 39*61c4878aSAndroid Build Coastguard Worker} 40*61c4878aSAndroid Build Coastguard Worker 41*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") { 42*61c4878aSAndroid Build Coastguard Worker include_dirs = [ "public" ] 43*61c4878aSAndroid Build Coastguard Worker} 44*61c4878aSAndroid Build Coastguard Worker 45*61c4878aSAndroid Build Coastguard Worker# This config moves RPC logging to a separate RPC channel and HDLC 46*61c4878aSAndroid Build Coastguard Worker# address. This does two things: 47*61c4878aSAndroid Build Coastguard Worker# * The separate RPC channel allows logging traffic to be treated as 48*61c4878aSAndroid Build Coastguard Worker# if it is being sent to a different client via a separate RPC 49*61c4878aSAndroid Build Coastguard Worker# channel. This illustrates the ability for an RPC server to 50*61c4878aSAndroid Build Coastguard Worker# communicate to multiple clients over multiple physical links. 51*61c4878aSAndroid Build Coastguard Worker# * The separate HDLC address completely isolates typical RPC traffic 52*61c4878aSAndroid Build Coastguard Worker# from logging traffic by communicating to a different HDLC endpoint 53*61c4878aSAndroid Build Coastguard Worker# address. This effectively creates two virtual data pipes over the 54*61c4878aSAndroid Build Coastguard Worker# same physical link. 55*61c4878aSAndroid Build Coastguard Worker# 56*61c4878aSAndroid Build Coastguard Worker# This is mostly to illustrate pw_rpc's capability to route and multiplex 57*61c4878aSAndroid Build Coastguard Worker# traffic. 58*61c4878aSAndroid Build Coastguard Workerconfig("multi_endpoint_rpc_overrides") { 59*61c4878aSAndroid Build Coastguard Worker defines = [ 60*61c4878aSAndroid Build Coastguard Worker "PW_SYSTEM_LOGGING_CHANNEL_ID=10000", 61*61c4878aSAndroid Build Coastguard Worker "PW_SYSTEM_LOGGING_RPC_HDLC_ADDRESS=10000", 62*61c4878aSAndroid Build Coastguard Worker ] 63*61c4878aSAndroid Build Coastguard Worker} 64*61c4878aSAndroid Build Coastguard Worker 65*61c4878aSAndroid Build Coastguard Workerconfig("pw_cpu_exception_config") { 66*61c4878aSAndroid Build Coastguard Worker # disable the crash handler entirely if the cpu exception backend has 67*61c4878aSAndroid Build Coastguard Worker # not been set. 68*61c4878aSAndroid Build Coastguard Worker if (pw_cpu_exception_ENTRY_BACKEND == "") { 69*61c4878aSAndroid Build Coastguard Worker defines = [ "PW_SYSTEM_ENABLE_CRASH_HANDLER=0" ] 70*61c4878aSAndroid Build Coastguard Worker } 71*61c4878aSAndroid Build Coastguard Worker} 72*61c4878aSAndroid Build Coastguard Worker 73*61c4878aSAndroid Build Coastguard Worker# The Pigweed config pattern requires a pw_source_set to provide the 74*61c4878aSAndroid Build Coastguard Worker# configuration defines. This provides the flags in 75*61c4878aSAndroid Build Coastguard Worker# multi_endpoint_rpc_overrides. 76*61c4878aSAndroid Build Coastguard Workerpw_source_set("multi_endpoint_rpc_config") { 77*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":multi_endpoint_rpc_overrides" ] 78*61c4878aSAndroid Build Coastguard Worker} 79*61c4878aSAndroid Build Coastguard Worker 80*61c4878aSAndroid Build Coastguard Workerpw_source_set("config") { 81*61c4878aSAndroid Build Coastguard Worker sources = [ "public/pw_system/config.h" ] 82*61c4878aSAndroid Build Coastguard Worker public_configs = [ 83*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 84*61c4878aSAndroid Build Coastguard Worker ":pw_cpu_exception_config", 85*61c4878aSAndroid Build Coastguard Worker ] 86*61c4878aSAndroid Build Coastguard Worker public_deps = [ pw_system_CONFIG ] 87*61c4878aSAndroid Build Coastguard Worker visibility = [ "./*" ] 88*61c4878aSAndroid Build Coastguard Worker} 89*61c4878aSAndroid Build Coastguard Worker 90*61c4878aSAndroid Build Coastguard Workerpw_source_set("log") { 91*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/log.h" ] 92*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 93*61c4878aSAndroid Build Coastguard Worker sources = [ "log.cc" ] 94*61c4878aSAndroid Build Coastguard Worker public_deps = [ 95*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log_rpc:log_service", 96*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log_rpc:rpc_log_drain_thread", 97*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multisink", 98*61c4878aSAndroid Build Coastguard Worker ] 99*61c4878aSAndroid Build Coastguard Worker deps = [ 100*61c4878aSAndroid Build Coastguard Worker ":config", 101*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log_rpc:rpc_log_drain", 102*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:lock_annotations", 103*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:mutex", 104*61c4878aSAndroid Build Coastguard Worker ] 105*61c4878aSAndroid Build Coastguard Worker} 106*61c4878aSAndroid Build Coastguard Worker 107*61c4878aSAndroid Build Coastguard Worker# There is no public part to this backend which does not cause circular 108*61c4878aSAndroid Build Coastguard Worker# dependencies, there is only the pw_build_LINK_DEPS "log_backend.impl". 109*61c4878aSAndroid Build Coastguard Workerpw_source_set("log_backend") { 110*61c4878aSAndroid Build Coastguard Worker} 111*61c4878aSAndroid Build Coastguard Worker 112*61c4878aSAndroid Build Coastguard Workerpw_source_set("log_backend.impl") { 113*61c4878aSAndroid Build Coastguard Worker sources = [ "log_backend.cc" ] 114*61c4878aSAndroid Build Coastguard Worker deps = [ 115*61c4878aSAndroid Build Coastguard Worker ":config", 116*61c4878aSAndroid Build Coastguard Worker ":log", 117*61c4878aSAndroid Build Coastguard Worker "$dir_pw_bytes", 118*61c4878aSAndroid Build Coastguard Worker "$dir_pw_chrono:system_clock", 119*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log:proto_utils", 120*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log:pw_log.facade", 121*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log_string:handler.facade", 122*61c4878aSAndroid Build Coastguard Worker "$dir_pw_metric:global", 123*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multisink", 124*61c4878aSAndroid Build Coastguard Worker "$dir_pw_result", 125*61c4878aSAndroid Build Coastguard Worker "$dir_pw_string", 126*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:interrupt_spin_lock", 127*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:lock_annotations", 128*61c4878aSAndroid Build Coastguard Worker "$dir_pw_tokenizer", 129*61c4878aSAndroid Build Coastguard Worker ] 130*61c4878aSAndroid Build Coastguard Worker} 131*61c4878aSAndroid Build Coastguard Worker 132*61c4878aSAndroid Build Coastguard Workerpw_facade("rpc_server") { 133*61c4878aSAndroid Build Coastguard Worker backend = pw_system_RPC_SERVER_BACKEND 134*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/rpc_server.h" ] 135*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 136*61c4878aSAndroid Build Coastguard Worker public_deps = [ 137*61c4878aSAndroid Build Coastguard Worker ":config", 138*61c4878aSAndroid Build Coastguard Worker "$dir_pw_rpc:server", 139*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread_core", 140*61c4878aSAndroid Build Coastguard Worker ] 141*61c4878aSAndroid Build Coastguard Worker} 142*61c4878aSAndroid Build Coastguard Worker 143*61c4878aSAndroid Build Coastguard Workerpw_facade("io") { 144*61c4878aSAndroid Build Coastguard Worker backend = pw_system_IO_BACKEND 145*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 146*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/io.h" ] 147*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_stream" ] 148*61c4878aSAndroid Build Coastguard Worker} 149*61c4878aSAndroid Build Coastguard Worker 150*61c4878aSAndroid Build Coastguard Workerpw_facade("device_handler") { 151*61c4878aSAndroid Build Coastguard Worker backend = pw_system_DEVICE_HANDLER 152*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 153*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/device_handler.h" ] 154*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_snapshot:snapshot_proto.pwpb" ] 155*61c4878aSAndroid Build Coastguard Worker} 156*61c4878aSAndroid Build Coastguard Worker 157*61c4878aSAndroid Build Coastguard Workerpw_source_set("unknown_device_handler") { 158*61c4878aSAndroid Build Coastguard Worker sources = [ "unknown_device_handler.cc" ] 159*61c4878aSAndroid Build Coastguard Worker deps = [ ":device_handler.facade" ] 160*61c4878aSAndroid Build Coastguard Worker} 161*61c4878aSAndroid Build Coastguard Worker 162*61c4878aSAndroid Build Coastguard Workerpw_source_set("init") { 163*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 164*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/init.h" ] 165*61c4878aSAndroid Build Coastguard Worker sources = [ "init.cc" ] 166*61c4878aSAndroid Build Coastguard Worker deps = [ 167*61c4878aSAndroid Build Coastguard Worker ":device_service", 168*61c4878aSAndroid Build Coastguard Worker ":file_manager", 169*61c4878aSAndroid Build Coastguard Worker ":file_service", 170*61c4878aSAndroid Build Coastguard Worker ":log", 171*61c4878aSAndroid Build Coastguard Worker ":rpc_server", 172*61c4878aSAndroid Build Coastguard Worker ":target_hooks.facade", 173*61c4878aSAndroid Build Coastguard Worker ":thread_snapshot_service", 174*61c4878aSAndroid Build Coastguard Worker ":trace_service", 175*61c4878aSAndroid Build Coastguard Worker ":transfer_service", 176*61c4878aSAndroid Build Coastguard Worker ":work_queue", 177*61c4878aSAndroid Build Coastguard Worker "$dir_pw_metric:global", 178*61c4878aSAndroid Build Coastguard Worker "$dir_pw_metric:metric_service_pwpb", 179*61c4878aSAndroid Build Coastguard Worker "$dir_pw_rpc/pwpb:echo_service", 180*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 181*61c4878aSAndroid Build Coastguard Worker "$dir_pw_trace", 182*61c4878aSAndroid Build Coastguard Worker ] 183*61c4878aSAndroid Build Coastguard Worker if (pw_cpu_exception_ENTRY_BACKEND != "") { 184*61c4878aSAndroid Build Coastguard Worker deps += [ 185*61c4878aSAndroid Build Coastguard Worker ":crash_handler", 186*61c4878aSAndroid Build Coastguard Worker ":crash_snapshot", 187*61c4878aSAndroid Build Coastguard Worker ] 188*61c4878aSAndroid Build Coastguard Worker } 189*61c4878aSAndroid Build Coastguard Worker 190*61c4878aSAndroid Build Coastguard Worker # disable include checking, as there are conditional includes dependent on 191*61c4878aSAndroid Build Coastguard Worker # whether the pw_cpu_exception_ENTRY_BACKEND is set. 192*61c4878aSAndroid Build Coastguard Worker check_includes = false 193*61c4878aSAndroid Build Coastguard Worker} 194*61c4878aSAndroid Build Coastguard Worker 195*61c4878aSAndroid Build Coastguard Workerpw_source_set("hdlc_rpc_server") { 196*61c4878aSAndroid Build Coastguard Worker sources = [ "hdlc_rpc_server.cc" ] 197*61c4878aSAndroid Build Coastguard Worker deps = [ 198*61c4878aSAndroid Build Coastguard Worker ":config", 199*61c4878aSAndroid Build Coastguard Worker ":io", 200*61c4878aSAndroid Build Coastguard Worker ":rpc_server.facade", 201*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert", 202*61c4878aSAndroid Build Coastguard Worker "$dir_pw_hdlc:decoder", 203*61c4878aSAndroid Build Coastguard Worker "$dir_pw_hdlc:default_addresses", 204*61c4878aSAndroid Build Coastguard Worker "$dir_pw_hdlc:rpc_channel_output", 205*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log", 206*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:mutex", 207*61c4878aSAndroid Build Coastguard Worker "$dir_pw_trace", 208*61c4878aSAndroid Build Coastguard Worker ] 209*61c4878aSAndroid Build Coastguard Worker} 210*61c4878aSAndroid Build Coastguard Worker 211*61c4878aSAndroid Build Coastguard Workerpw_source_set("work_queue") { 212*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 213*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/work_queue.h" ] 214*61c4878aSAndroid Build Coastguard Worker sources = [ "work_queue.cc" ] 215*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_work_queue" ] 216*61c4878aSAndroid Build Coastguard Worker deps = [ ":config" ] 217*61c4878aSAndroid Build Coastguard Worker} 218*61c4878aSAndroid Build Coastguard Worker 219*61c4878aSAndroid Build Coastguard Workerpw_source_set("sys_io_target_io") { 220*61c4878aSAndroid Build Coastguard Worker sources = [ "sys_io_target_io.cc" ] 221*61c4878aSAndroid Build Coastguard Worker deps = [ 222*61c4878aSAndroid Build Coastguard Worker ":io.facade", 223*61c4878aSAndroid Build Coastguard Worker "$dir_pw_stream", 224*61c4878aSAndroid Build Coastguard Worker "$dir_pw_stream:sys_io_stream", 225*61c4878aSAndroid Build Coastguard Worker ] 226*61c4878aSAndroid Build Coastguard Worker} 227*61c4878aSAndroid Build Coastguard Worker 228*61c4878aSAndroid Build Coastguard Workerpw_source_set("socket_target_io") { 229*61c4878aSAndroid Build Coastguard Worker sources = [ "socket_target_io.cc" ] 230*61c4878aSAndroid Build Coastguard Worker deps = [ 231*61c4878aSAndroid Build Coastguard Worker ":config", 232*61c4878aSAndroid Build Coastguard Worker ":io.facade", 233*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert", 234*61c4878aSAndroid Build Coastguard Worker "$dir_pw_stream", 235*61c4878aSAndroid Build Coastguard Worker "$dir_pw_stream:socket_stream", 236*61c4878aSAndroid Build Coastguard Worker ] 237*61c4878aSAndroid Build Coastguard Worker} 238*61c4878aSAndroid Build Coastguard Worker 239*61c4878aSAndroid Build Coastguard Workerpw_source_set("transfer_handlers") { 240*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/transfer_handlers.h" ] 241*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 242*61c4878aSAndroid Build Coastguard Worker public_deps = [ 243*61c4878aSAndroid Build Coastguard Worker ":config", 244*61c4878aSAndroid Build Coastguard Worker "$dir_pw_persistent_ram", 245*61c4878aSAndroid Build Coastguard Worker "$dir_pw_trace_tokenized:config", 246*61c4878aSAndroid Build Coastguard Worker "$dir_pw_transfer", 247*61c4878aSAndroid Build Coastguard Worker ] 248*61c4878aSAndroid Build Coastguard Worker sources = [ "transfer_handlers.cc" ] 249*61c4878aSAndroid Build Coastguard Worker deps = [] 250*61c4878aSAndroid Build Coastguard Worker} 251*61c4878aSAndroid Build Coastguard Worker 252*61c4878aSAndroid Build Coastguard Workerpw_source_set("file_manager") { 253*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/file_manager.h" ] 254*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 255*61c4878aSAndroid Build Coastguard Worker public_deps = [ 256*61c4878aSAndroid Build Coastguard Worker ":config", 257*61c4878aSAndroid Build Coastguard Worker ":transfer_handlers", 258*61c4878aSAndroid Build Coastguard Worker "$dir_pw_file:flat_file_system", 259*61c4878aSAndroid Build Coastguard Worker "$dir_pw_persistent_ram:flat_file_system_entry", 260*61c4878aSAndroid Build Coastguard Worker ] 261*61c4878aSAndroid Build Coastguard Worker sources = [ "file_manager.cc" ] 262*61c4878aSAndroid Build Coastguard Worker deps = [ ":trace_service" ] 263*61c4878aSAndroid Build Coastguard Worker if (pw_cpu_exception_ENTRY_BACKEND != "") { 264*61c4878aSAndroid Build Coastguard Worker deps += [ ":crash_snapshot" ] 265*61c4878aSAndroid Build Coastguard Worker } 266*61c4878aSAndroid Build Coastguard Worker 267*61c4878aSAndroid Build Coastguard Worker # disable include checking, as there are conditional includes dependent on 268*61c4878aSAndroid Build Coastguard Worker # whether the pw_cpu_exception_ENTRY_BACKEND is set. 269*61c4878aSAndroid Build Coastguard Worker check_includes = false 270*61c4878aSAndroid Build Coastguard Worker} 271*61c4878aSAndroid Build Coastguard Worker 272*61c4878aSAndroid Build Coastguard Workerpw_source_set("transfer_service") { 273*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/transfer_service.h" ] 274*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 275*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_transfer" ] 276*61c4878aSAndroid Build Coastguard Worker sources = [ "transfer_service.cc" ] 277*61c4878aSAndroid Build Coastguard Worker deps = [ ":file_manager" ] 278*61c4878aSAndroid Build Coastguard Worker} 279*61c4878aSAndroid Build Coastguard Worker 280*61c4878aSAndroid Build Coastguard Workerpw_source_set("file_service") { 281*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/file_service.h" ] 282*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 283*61c4878aSAndroid Build Coastguard Worker public_deps = [] 284*61c4878aSAndroid Build Coastguard Worker sources = [ "file_service.cc" ] 285*61c4878aSAndroid Build Coastguard Worker deps = [ ":file_manager" ] 286*61c4878aSAndroid Build Coastguard Worker} 287*61c4878aSAndroid Build Coastguard Worker 288*61c4878aSAndroid Build Coastguard Workerpw_source_set("trace_service") { 289*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/trace_service.h" ] 290*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 291*61c4878aSAndroid Build Coastguard Worker public_deps = [ ":transfer_handlers" ] 292*61c4878aSAndroid Build Coastguard Worker sources = [ "trace_service.cc" ] 293*61c4878aSAndroid Build Coastguard Worker deps = [ 294*61c4878aSAndroid Build Coastguard Worker "$dir_pw_persistent_ram", 295*61c4878aSAndroid Build Coastguard Worker "$dir_pw_trace_tokenized:trace_service_pwpb", 296*61c4878aSAndroid Build Coastguard Worker ] 297*61c4878aSAndroid Build Coastguard Worker} 298*61c4878aSAndroid Build Coastguard Worker 299*61c4878aSAndroid Build Coastguard Workerpw_source_set("crash_handler") { 300*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/crash_handler.h" ] 301*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 302*61c4878aSAndroid Build Coastguard Worker public_deps = [] 303*61c4878aSAndroid Build Coastguard Worker sources = [ "crash_handler.cc" ] 304*61c4878aSAndroid Build Coastguard Worker deps = [ 305*61c4878aSAndroid Build Coastguard Worker ":crash_snapshot", 306*61c4878aSAndroid Build Coastguard Worker ":device_handler", 307*61c4878aSAndroid Build Coastguard Worker ":log", 308*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert_trap:message", 309*61c4878aSAndroid Build Coastguard Worker "$dir_pw_cpu_exception:handler", 310*61c4878aSAndroid Build Coastguard Worker ] 311*61c4878aSAndroid Build Coastguard Worker} 312*61c4878aSAndroid Build Coastguard Worker 313*61c4878aSAndroid Build Coastguard Workerpw_source_set("crash_snapshot") { 314*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/crash_snapshot.h" ] 315*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 316*61c4878aSAndroid Build Coastguard Worker public_deps = [ 317*61c4878aSAndroid Build Coastguard Worker ":transfer_handlers", 318*61c4878aSAndroid Build Coastguard Worker "$dir_pw_cpu_exception:entry", 319*61c4878aSAndroid Build Coastguard Worker "$dir_pw_persistent_ram", 320*61c4878aSAndroid Build Coastguard Worker "$dir_pw_snapshot:snapshot_proto.pwpb", 321*61c4878aSAndroid Build Coastguard Worker ] 322*61c4878aSAndroid Build Coastguard Worker sources = [ "crash_snapshot.cc" ] 323*61c4878aSAndroid Build Coastguard Worker deps = [ 324*61c4878aSAndroid Build Coastguard Worker ":device_handler", 325*61c4878aSAndroid Build Coastguard Worker ":log", 326*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multisink:util", 327*61c4878aSAndroid Build Coastguard Worker "$dir_pw_snapshot:uuid", 328*61c4878aSAndroid Build Coastguard Worker ] 329*61c4878aSAndroid Build Coastguard Worker} 330*61c4878aSAndroid Build Coastguard Worker 331*61c4878aSAndroid Build Coastguard Workerpw_proto_library("device_service_proto") { 332*61c4878aSAndroid Build Coastguard Worker sources = [ "pw_system_protos/device_service.proto" ] 333*61c4878aSAndroid Build Coastguard Worker inputs = [ "pw_system_protos/device_service.options" ] 334*61c4878aSAndroid Build Coastguard Worker deps = [] 335*61c4878aSAndroid Build Coastguard Worker} 336*61c4878aSAndroid Build Coastguard Worker 337*61c4878aSAndroid Build Coastguard Workerpw_source_set("device_service_pwpb") { 338*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/device_service_pwpb.h" ] 339*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 340*61c4878aSAndroid Build Coastguard Worker public_deps = [] 341*61c4878aSAndroid Build Coastguard Worker sources = [ "device_service_pwpb.cc" ] 342*61c4878aSAndroid Build Coastguard Worker public_deps = [ ":device_service_proto.pwpb_rpc" ] 343*61c4878aSAndroid Build Coastguard Worker deps = [ ":device_handler" ] 344*61c4878aSAndroid Build Coastguard Worker} 345*61c4878aSAndroid Build Coastguard Worker 346*61c4878aSAndroid Build Coastguard Workerpw_source_set("device_service") { 347*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/device_service.h" ] 348*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 349*61c4878aSAndroid Build Coastguard Worker public_deps = [] 350*61c4878aSAndroid Build Coastguard Worker sources = [ "device_service.cc" ] 351*61c4878aSAndroid Build Coastguard Worker deps = [ ":device_service_pwpb" ] 352*61c4878aSAndroid Build Coastguard Worker} 353*61c4878aSAndroid Build Coastguard Worker 354*61c4878aSAndroid Build Coastguard Workerpw_source_set("thread_snapshot_service") { 355*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/thread_snapshot_service.h" ] 356*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 357*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_rpc:server" ] 358*61c4878aSAndroid Build Coastguard Worker sources = [ "thread_snapshot_service.cc" ] 359*61c4878aSAndroid Build Coastguard Worker deps = [ "$dir_pw_thread:thread_snapshot_service" ] 360*61c4878aSAndroid Build Coastguard Worker} 361*61c4878aSAndroid Build Coastguard Worker 362*61c4878aSAndroid Build Coastguard Workerpw_facade("target_hooks") { 363*61c4878aSAndroid Build Coastguard Worker backend = pw_system_TARGET_HOOKS_BACKEND 364*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/target_hooks.h" ] 365*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_thread:thread" ] 366*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 367*61c4878aSAndroid Build Coastguard Worker} 368*61c4878aSAndroid Build Coastguard Worker 369*61c4878aSAndroid Build Coastguard Workerif (pw_system_TARGET_HOOKS_BACKEND == "") { 370*61c4878aSAndroid Build Coastguard Worker # Do nothing, prevents errors from trying to parse pw_system_TARGET_HOOKS_BACKEND as a 371*61c4878aSAndroid Build Coastguard Worker # build target when it's unset. 372*61c4878aSAndroid Build Coastguard Worker} else if (get_label_info(pw_system_TARGET_HOOKS_BACKEND, 373*61c4878aSAndroid Build Coastguard Worker "label_no_toolchain") == 374*61c4878aSAndroid Build Coastguard Worker get_label_info(":stl_target_hooks", "label_no_toolchain")) { 375*61c4878aSAndroid Build Coastguard Worker pw_source_set("stl_target_hooks") { 376*61c4878aSAndroid Build Coastguard Worker deps = [ 377*61c4878aSAndroid Build Coastguard Worker ":config", 378*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 379*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread_stl:thread", 380*61c4878aSAndroid Build Coastguard Worker ] 381*61c4878aSAndroid Build Coastguard Worker sources = [ "stl_target_hooks.cc" ] 382*61c4878aSAndroid Build Coastguard Worker } 383*61c4878aSAndroid Build Coastguard Worker} else if (get_label_info(pw_system_TARGET_HOOKS_BACKEND, 384*61c4878aSAndroid Build Coastguard Worker "label_no_toolchain") == 385*61c4878aSAndroid Build Coastguard Worker get_label_info(":freertos_target_hooks", "label_no_toolchain")) { 386*61c4878aSAndroid Build Coastguard Worker pw_source_set("freertos_target_hooks") { 387*61c4878aSAndroid Build Coastguard Worker deps = [ 388*61c4878aSAndroid Build Coastguard Worker ":config", 389*61c4878aSAndroid Build Coastguard Worker ":init", 390*61c4878aSAndroid Build Coastguard Worker "$dir_pw_third_party/freertos", 391*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 392*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread_freertos:thread", 393*61c4878aSAndroid Build Coastguard Worker ] 394*61c4878aSAndroid Build Coastguard Worker sources = [ "freertos_target_hooks.cc" ] 395*61c4878aSAndroid Build Coastguard Worker } 396*61c4878aSAndroid Build Coastguard Worker} 397*61c4878aSAndroid Build Coastguard Worker 398*61c4878aSAndroid Build Coastguard Workergroup("pw_system") { 399*61c4878aSAndroid Build Coastguard Worker public_deps = [ 400*61c4878aSAndroid Build Coastguard Worker ":init", 401*61c4878aSAndroid Build Coastguard Worker ":io", 402*61c4878aSAndroid Build Coastguard Worker ":log", 403*61c4878aSAndroid Build Coastguard Worker ":rpc_server", 404*61c4878aSAndroid Build Coastguard Worker ":work_queue", 405*61c4878aSAndroid Build Coastguard Worker ] 406*61c4878aSAndroid Build Coastguard Worker deps = [ ":target_hooks" ] 407*61c4878aSAndroid Build Coastguard Worker} 408*61c4878aSAndroid Build Coastguard Worker 409*61c4878aSAndroid Build Coastguard Workerpw_source_set("async") { 410*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/system.h" ] 411*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 412*61c4878aSAndroid Build Coastguard Worker sources = [ 413*61c4878aSAndroid Build Coastguard Worker "pw_system_private/threads.h", 414*61c4878aSAndroid Build Coastguard Worker "system.cc", 415*61c4878aSAndroid Build Coastguard Worker "threads.cc", 416*61c4878aSAndroid Build Coastguard Worker ] 417*61c4878aSAndroid Build Coastguard Worker public_deps = [ 418*61c4878aSAndroid Build Coastguard Worker "$dir_pw_allocator:allocator", 419*61c4878aSAndroid Build Coastguard Worker "$dir_pw_async2:dispatcher", 420*61c4878aSAndroid Build Coastguard Worker "$dir_pw_channel", 421*61c4878aSAndroid Build Coastguard Worker "$dir_pw_rpc:server", 422*61c4878aSAndroid Build Coastguard Worker ] 423*61c4878aSAndroid Build Coastguard Worker deps = [ 424*61c4878aSAndroid Build Coastguard Worker ":async_packet_io", 425*61c4878aSAndroid Build Coastguard Worker ":file_manager", 426*61c4878aSAndroid Build Coastguard Worker ":file_service", 427*61c4878aSAndroid Build Coastguard Worker ":log", 428*61c4878aSAndroid Build Coastguard Worker ":thread_snapshot_service", 429*61c4878aSAndroid Build Coastguard Worker ":transfer_service", 430*61c4878aSAndroid Build Coastguard Worker ":work_queue", 431*61c4878aSAndroid Build Coastguard Worker "$dir_pw_allocator:best_fit_block_allocator", 432*61c4878aSAndroid Build Coastguard Worker "$dir_pw_allocator:synchronized_allocator", 433*61c4878aSAndroid Build Coastguard Worker "$dir_pw_async2:allocate_task", 434*61c4878aSAndroid Build Coastguard Worker "$dir_pw_async2:pend_func_task", 435*61c4878aSAndroid Build Coastguard Worker "$dir_pw_hdlc:router", 436*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multibuf:simple_allocator", 437*61c4878aSAndroid Build Coastguard Worker "$dir_pw_rpc/pwpb:echo_service", 438*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:interrupt_spin_lock", 439*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 440*61c4878aSAndroid Build Coastguard Worker ] 441*61c4878aSAndroid Build Coastguard Worker if (pw_cpu_exception_ENTRY_BACKEND != "") { 442*61c4878aSAndroid Build Coastguard Worker deps += [ 443*61c4878aSAndroid Build Coastguard Worker ":crash_handler", 444*61c4878aSAndroid Build Coastguard Worker ":crash_snapshot", 445*61c4878aSAndroid Build Coastguard Worker ] 446*61c4878aSAndroid Build Coastguard Worker } 447*61c4878aSAndroid Build Coastguard Worker} 448*61c4878aSAndroid Build Coastguard Worker 449*61c4878aSAndroid Build Coastguard Workerpw_executable("system_example") { 450*61c4878aSAndroid Build Coastguard Worker # TODO: b/303282642 - Remove this testonly 451*61c4878aSAndroid Build Coastguard Worker testonly = pw_unit_test_TESTONLY 452*61c4878aSAndroid Build Coastguard Worker 453*61c4878aSAndroid Build Coastguard Worker sources = [ "example_user_app_init.cc" ] 454*61c4878aSAndroid Build Coastguard Worker deps = [ 455*61c4878aSAndroid Build Coastguard Worker ":pw_system", 456*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log", 457*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:sleep", 458*61c4878aSAndroid Build Coastguard Worker "$dir_pw_trace", 459*61c4878aSAndroid Build Coastguard Worker "$dir_pw_unit_test:rpc_service", 460*61c4878aSAndroid Build Coastguard Worker 461*61c4878aSAndroid Build Coastguard Worker # Adds a test that the test server can run. 462*61c4878aSAndroid Build Coastguard Worker "$dir_pw_status:status_test.lib", 463*61c4878aSAndroid Build Coastguard Worker "$dir_pw_string:string_builder_test.lib", 464*61c4878aSAndroid Build Coastguard Worker ] 465*61c4878aSAndroid Build Coastguard Worker} 466*61c4878aSAndroid Build Coastguard Worker 467*61c4878aSAndroid Build Coastguard Workerpw_executable("system_async_host_example") { 468*61c4878aSAndroid Build Coastguard Worker sources = [ "system_async_host_example.cc" ] 469*61c4878aSAndroid Build Coastguard Worker deps = [ 470*61c4878aSAndroid Build Coastguard Worker ":async", 471*61c4878aSAndroid Build Coastguard Worker "$dir_pw_channel:epoll_channel", 472*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multibuf:testing", 473*61c4878aSAndroid Build Coastguard Worker ] 474*61c4878aSAndroid Build Coastguard Worker} 475*61c4878aSAndroid Build Coastguard Worker 476*61c4878aSAndroid Build Coastguard Workerpw_source_set("async_packet_io") { 477*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_include_path" ] 478*61c4878aSAndroid Build Coastguard Worker public = [ "public/pw_system/internal/async_packet_io.h" ] 479*61c4878aSAndroid Build Coastguard Worker sources = [ "async_packet_io.cc" ] 480*61c4878aSAndroid Build Coastguard Worker public_deps = [ 481*61c4878aSAndroid Build Coastguard Worker "$dir_pw_async2:dispatcher", 482*61c4878aSAndroid Build Coastguard Worker "$dir_pw_channel:forwarding_channel", 483*61c4878aSAndroid Build Coastguard Worker "$dir_pw_containers:inline_var_len_entry_queue", 484*61c4878aSAndroid Build Coastguard Worker "$dir_pw_hdlc:router", 485*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multibuf:simple_allocator", 486*61c4878aSAndroid Build Coastguard Worker "$dir_pw_rpc:server", 487*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:lock_annotations", 488*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:mutex", 489*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:thread_notification", 490*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 491*61c4878aSAndroid Build Coastguard Worker dir_pw_allocator, 492*61c4878aSAndroid Build Coastguard Worker dir_pw_channel, 493*61c4878aSAndroid Build Coastguard Worker dir_pw_multibuf, 494*61c4878aSAndroid Build Coastguard Worker ] 495*61c4878aSAndroid Build Coastguard Worker deps = [ 496*61c4878aSAndroid Build Coastguard Worker ":config", 497*61c4878aSAndroid Build Coastguard Worker dir_pw_assert, 498*61c4878aSAndroid Build Coastguard Worker dir_pw_log, 499*61c4878aSAndroid Build Coastguard Worker ] 500*61c4878aSAndroid Build Coastguard Worker visibility = [ "./*" ] 501*61c4878aSAndroid Build Coastguard Worker} 502*61c4878aSAndroid Build Coastguard Worker 503*61c4878aSAndroid Build Coastguard Workerpw_test("async_packet_io_test") { 504*61c4878aSAndroid Build Coastguard Worker sources = [ "async_packet_io_test.cc" ] 505*61c4878aSAndroid Build Coastguard Worker deps = [ 506*61c4878aSAndroid Build Coastguard Worker ":async_packet_io", 507*61c4878aSAndroid Build Coastguard Worker "$dir_pw_allocator:testing", 508*61c4878aSAndroid Build Coastguard Worker "$dir_pw_channel:loopback_channel", 509*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multibuf:testing", 510*61c4878aSAndroid Build Coastguard Worker ] 511*61c4878aSAndroid Build Coastguard Worker 512*61c4878aSAndroid Build Coastguard Worker # TODO: b/317922402 - Run on Windows when thread detaching is supported. 513*61c4878aSAndroid Build Coastguard Worker enable_if = host_os != "win" && pw_async2_DISPATCHER_BACKEND != "" 514*61c4878aSAndroid Build Coastguard Worker} 515*61c4878aSAndroid Build Coastguard Worker 516*61c4878aSAndroid Build Coastguard Workerpw_test("system_async_test") { 517*61c4878aSAndroid Build Coastguard Worker sources = [ "system_async_test.cc" ] 518*61c4878aSAndroid Build Coastguard Worker deps = [ 519*61c4878aSAndroid Build Coastguard Worker ":async", 520*61c4878aSAndroid Build Coastguard Worker "$dir_pw_allocator:testing", 521*61c4878aSAndroid Build Coastguard Worker "$dir_pw_channel:loopback_channel", 522*61c4878aSAndroid Build Coastguard Worker "$dir_pw_multibuf:testing", 523*61c4878aSAndroid Build Coastguard Worker ] 524*61c4878aSAndroid Build Coastguard Worker 525*61c4878aSAndroid Build Coastguard Worker # TODO: b/317922402 - Run on Windows when thread detaching is supported. 526*61c4878aSAndroid Build Coastguard Worker enable_if = host_os != "win" && pw_async2_DISPATCHER_BACKEND != "" 527*61c4878aSAndroid Build Coastguard Worker} 528*61c4878aSAndroid Build Coastguard Worker 529*61c4878aSAndroid Build Coastguard Workergroup("system_examples") { 530*61c4878aSAndroid Build Coastguard Worker # TODO: b/303282642 - Remove this testonly 531*61c4878aSAndroid Build Coastguard Worker testonly = pw_unit_test_TESTONLY 532*61c4878aSAndroid Build Coastguard Worker 533*61c4878aSAndroid Build Coastguard Worker deps = [ ":system_example($dir_pigweed/targets/host_device_simulator:host_device_simulator.speed_optimized)" ] 534*61c4878aSAndroid Build Coastguard Worker if (dir_pw_third_party_stm32cube_f4 != "" && 535*61c4878aSAndroid Build Coastguard Worker dir_pw_third_party_freertos != "") { 536*61c4878aSAndroid Build Coastguard Worker deps += [ ":system_example($dir_pigweed/targets/stm32f429i_disc1_stm32cube:stm32f429i_disc1_stm32cube.size_optimized)" ] 537*61c4878aSAndroid Build Coastguard Worker deps += [ ":system_example($dir_pigweed/targets/stm32f429i_disc1_stm32cube:stm32f429i_disc1_stm32cube_clang.size_optimized)" ] 538*61c4878aSAndroid Build Coastguard Worker } 539*61c4878aSAndroid Build Coastguard Worker if (dir_pw_third_party_smartfusion_mss != "" && 540*61c4878aSAndroid Build Coastguard Worker dir_pw_third_party_freertos != "") { 541*61c4878aSAndroid Build Coastguard Worker deps += [ 542*61c4878aSAndroid Build Coastguard Worker ":system_example($dir_pigweed/targets/emcraft_sf2_som:emcraft_sf2_som.size_optimized)", 543*61c4878aSAndroid Build Coastguard Worker ":system_example($dir_pigweed/targets/emcraft_sf2_som:emcraft_sf2_som.speed_optimized)", 544*61c4878aSAndroid Build Coastguard Worker ":system_example($dir_pigweed/targets/emcraft_sf2_som:emcraft_sf2_som_debug.debug)", 545*61c4878aSAndroid Build Coastguard Worker ] 546*61c4878aSAndroid Build Coastguard Worker } 547*61c4878aSAndroid Build Coastguard Worker if (PICO_SRC_DIR != "" && dir_pw_third_party_freertos != "") { 548*61c4878aSAndroid Build Coastguard Worker deps += [ 549*61c4878aSAndroid Build Coastguard Worker ":system_example($dir_pigweed/targets/rp2040:rp2040.debug)", 550*61c4878aSAndroid Build Coastguard Worker ":system_example($dir_pigweed/targets/rp2040:rp2040.size_optimized)", 551*61c4878aSAndroid Build Coastguard Worker ] 552*61c4878aSAndroid Build Coastguard Worker } 553*61c4878aSAndroid Build Coastguard Worker if (dir_pw_third_party_ambiq_SDK != "" && dir_pw_third_party_freertos != "") { 554*61c4878aSAndroid Build Coastguard Worker deps += [ 555*61c4878aSAndroid Build Coastguard Worker ":system_example($dir_pigweed/targets/apollo4_pw_system:apollo4_pw_system.debug)", 556*61c4878aSAndroid Build Coastguard Worker ":system_example($dir_pigweed/targets/apollo4_pw_system:apollo4_pw_system.size_optimized)", 557*61c4878aSAndroid Build Coastguard Worker ] 558*61c4878aSAndroid Build Coastguard Worker } 559*61c4878aSAndroid Build Coastguard Worker} 560*61c4878aSAndroid Build Coastguard Worker 561*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") { 562*61c4878aSAndroid Build Coastguard Worker sources = [ 563*61c4878aSAndroid Build Coastguard Worker "cli.rst", 564*61c4878aSAndroid Build Coastguard Worker "docs.rst", 565*61c4878aSAndroid Build Coastguard Worker ] 566*61c4878aSAndroid Build Coastguard Worker inputs = [ 567*61c4878aSAndroid Build Coastguard Worker "Kconfig", 568*61c4878aSAndroid Build Coastguard Worker "system_async_test.cc", 569*61c4878aSAndroid Build Coastguard Worker ] 570*61c4878aSAndroid Build Coastguard Worker} 571*61c4878aSAndroid Build Coastguard Worker 572*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") { 573*61c4878aSAndroid Build Coastguard Worker tests = [ 574*61c4878aSAndroid Build Coastguard Worker ":async_packet_io_test", 575*61c4878aSAndroid Build Coastguard Worker ":system_async_test", 576*61c4878aSAndroid Build Coastguard Worker ] 577*61c4878aSAndroid Build Coastguard Worker} 578