diff options
Diffstat (limited to 'pw_system/BUILD.bazel')
-rw-r--r-- | pw_system/BUILD.bazel | 155 |
1 files changed, 126 insertions, 29 deletions
diff --git a/pw_system/BUILD.bazel b/pw_system/BUILD.bazel index d9fb2e97c..5bdd83dbc 100644 --- a/pw_system/BUILD.bazel +++ b/pw_system/BUILD.bazel @@ -22,11 +22,25 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) +constraint_setting( + name = "system_example_tracing_setting", +) + +constraint_value( + name = "system_example_tracing", + constraint_setting = ":system_example_tracing_setting", +) + pw_cc_library( name = "config", hdrs = [ "public/pw_system/config.h", ], + defines = select({ + "//conditions:default": [ + "PW_SYSTEM_ENABLE_TRACE_SERVICE=0", + ], + }), ) pw_cc_library( @@ -72,43 +86,33 @@ pw_cc_library( "//pw_sync:lock_annotations", "//pw_tokenizer", ], -) - -pw_cc_library( - name = "rpc_server_headers", - hdrs = [ - "public/pw_system/rpc_server.h", - ], - includes = ["public"], - deps = [ - ":config", - ], + # Log backends, like assert backends, generally need to be alwayslink'ed + # because we don't inform Bazel correctly about dependencies on them. We + # only add them as deps of binary targets, not intermediate library targets, + # to avoid circular dependencies. But this may lead the linker to eagerly + # remove some symbols defined here as unused. + alwayslink = 1, ) pw_cc_library( name = "rpc_server", - deps = [ - ":config", - ":hdlc_rpc_server", - ":rpc_server_headers", - ], -) - -pw_cc_library( - name = "hdlc_rpc_server", srcs = [ "hdlc_rpc_server.cc", ], + hdrs = [ + "public/pw_system/rpc_server.h", + ], includes = ["public"], deps = [ + ":config", ":io", - ":rpc_server_headers", ":target_io", "//pw_assert", "//pw_hdlc:pw_rpc", "//pw_hdlc:rpc_channel_output", "//pw_sync:mutex", "//pw_thread:thread_core", + "//pw_trace", ], ) @@ -147,16 +151,26 @@ pw_cc_library( ], includes = ["public"], deps = [ + ":file_manager", ":log", ":rpc_server", ":target_hooks", ":thread_snapshot_service", + ":transfer_service", ":work_queue", "//pw_metric:global", "//pw_metric:metric_service_pwpb", "//pw_rpc/pwpb:echo_service", "//pw_thread:thread", - ], + ] + select({ + ":system_example_tracing": [ + ":file_service", + ":trace_service", + "//pw_trace", + ], + "//conditions:default": [ + ], + }), ) pw_cc_library( @@ -203,13 +217,86 @@ pw_cc_library( ) pw_cc_library( - name = "target_hooks_headers", + name = "transfer_handlers", + srcs = [ + "transfer_handlers.cc", + ], hdrs = [ - "public/pw_system/target_hooks.h", + "public/pw_system/transfer_handlers.h", ], includes = ["public"], deps = [ - "//pw_thread:thread", + "//pw_persistent_ram", + "//pw_trace_tokenized:config", + "//pw_transfer", + ], +) + +pw_cc_library( + name = "file_manager", + srcs = [ + "file_manager.cc", + ], + hdrs = [ + "public/pw_system/file_manager.h", + ], + includes = ["public"], + deps = [ + ":config", + ":transfer_handlers", + "//pw_file:flat_file_system", + "//pw_persistent_ram:flat_file_system_entry", + ] + select({ + ":system_example_tracing": [ + ":trace_service", + ], + "//conditions:default": [ + ], + }), +) + +pw_cc_library( + name = "transfer_service", + srcs = [ + "transfer_service.cc", + ], + hdrs = [ + "public/pw_system/transfer_service.h", + ], + includes = ["public"], + deps = [ + ":file_manager", + "//pw_transfer", + ], +) + +pw_cc_library( + name = "file_service", + srcs = [ + "file_service.cc", + ], + hdrs = [ + "public/pw_system/file_service.h", + ], + includes = ["public"], + deps = [ + ":file_manager", + ], +) + +pw_cc_library( + name = "trace_service", + srcs = [ + "trace_service.cc", + ], + hdrs = [ + "public/pw_system/trace_service.h", + ], + includes = ["public"], + deps = [ + ":transfer_handlers", + "//pw_persistent_ram", + "//pw_trace_tokenized:trace_service_pwpb", ], ) @@ -221,7 +308,7 @@ pw_cc_library( includes = ["public"], deps = [ "//pw_thread:thread", - "@pigweed_config//:pw_system_target_hooks_backend", + "@pigweed//targets:pw_system_target_hooks_backend", ], ) @@ -230,7 +317,7 @@ pw_cc_library( # projects. For now, assume the pre-baked OS-specific hooks are good enough. pw_cc_library( name = "target_hooks_multiplexer", - visibility = ["@pigweed_config//:__pkg__"], + visibility = ["@pigweed//targets:__pkg__"], deps = select({ "//pw_build/constraints/rtos:freertos": [":freertos_target_hooks"], "//conditions:default": [":stl_target_hooks"], @@ -242,7 +329,9 @@ pw_cc_library( srcs = [ "stl_target_hooks.cc", ], + includes = ["public"], deps = [ + ":config", "//pw_thread:thread", "//pw_thread_stl:thread", ], @@ -253,11 +342,15 @@ pw_cc_library( srcs = [ "freertos_target_hooks.cc", ], + hdrs = [ + "public/pw_system/target_hooks.h", + ], + includes = ["public"], target_compatible_with = [ "//pw_build/constraints/rtos:freertos", ], deps = [ - ":target_hooks_headers", + ":config", "//pw_thread:thread", "//pw_thread_freertos:thread", ], @@ -274,7 +367,11 @@ pw_cc_binary( "//pw_stream:sys_io_stream", "//pw_unit_test:rpc_service", ] + select({ - "//pw_build/constraints/rtos:freertos": [], + "//pw_build/constraints/rtos:freertos": [ + "//pw_tokenizer:linker_script", + "//targets/stm32f429i_disc1_stm32cube:linker_script", + "//targets/stm32f429i_disc1_stm32cube:pre_init", + ], "//conditions:default": ["//targets/host_device_simulator:boot"], }), ) |