# Copyright 2021 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

load(
    "//pw_build:pigweed.bzl",
    "pw_cc_binary",
)

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",
)

cc_library(
    name = "config",
    hdrs = [
        "public/pw_system/config.h",
    ],
    deps = [":config_override"],
)

label_flag(
    name = "config_override",
    build_setting_default = ":default_config",
)

cc_library(
    name = "default_config",
    defines = [
        # TODO(b/260641850): Remove this Bazel-only default configuration once
        # pw_trace builds with Bazel.
        "PW_SYSTEM_ENABLE_TRACE_SERVICE=0",
    ],
)

cc_library(
    name = "pw_system",
    deps = [
        ":init",
        ":io",
        ":extra_platform_libs",
        ":target_hooks",
        ":work_queue",
        # pw_system has (transitive) dependencies on pw_assert and pw_log. So,
        # we add deps on the backend_impl here, saving the user from having to
        # add them manually to their cc_binary target.
        #
        # When implementing a backend for pw_assert or pw_log, *do not* depend
        # on @pigweed//pw_system:pw_system. Instead, depend on the appropriate
        # component library. See :log_backend, below, for an examples.
        "//pw_assert:backend_impl",
        "//pw_log:backend_impl",
    ],
)

# Any platform-specific pw_system components. At the very least, this should
# include platform-specific initialization code. It may also include linker
# scripts.
#
# TODO: https://github.com/bazelbuild/bazel/issues/22457 - Recommend using
# @bazel_tool//tools/cpp:link_extra_libs instead, once they're not propagated
# to the exec configuration.
label_flag(
    name = "extra_platform_libs",
    build_setting_default = "//targets/host_device_simulator:boot",
)

cc_library(
    name = "log",
    srcs = [
        "log.cc",
    ],
    hdrs = [
        "pw_system_private/log.h",
    ],
    deps = [
        ":config",
        ":rpc_server",
        "//pw_log_rpc:log_service",
        "//pw_log_rpc:rpc_log_drain",
        "//pw_log_rpc:rpc_log_drain_thread",
        "//pw_multisink",
        "//pw_sync:lock_annotations",
        "//pw_sync:mutex",
    ],
)

cc_library(
    name = "log_backend",
    srcs = [
        "log_backend.cc",
    ],
    deps = [
        ":config",
        ":log",
        "//pw_bytes",
        "//pw_chrono:system_clock",
        "//pw_log:proto_utils",
        "//pw_log:pw_log.facade",
        "//pw_log_string:handler_facade",
        "//pw_log_tokenized:handler_facade",
        "//pw_log_tokenized:headers",
        "//pw_metric:global",
        "//pw_multisink",
        "//pw_result",
        "//pw_string",
        "//pw_sync:interrupt_spin_lock",
        "//pw_sync:lock_annotations",
        "//pw_tokenizer",
    ],
    # 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,
)

cc_library(
    name = "rpc_server",
    srcs = [
        "hdlc_rpc_server.cc",
    ],
    hdrs = [
        "public/pw_system/rpc_server.h",
    ],
    includes = ["public"],
    deps = [
        ":config",
        ":io",
        ":target_io",
        "//pw_assert",
        "//pw_hdlc",
        "//pw_hdlc:default_addresses",
        "//pw_hdlc:rpc_channel_output",
        "//pw_sync:mutex",
        "//pw_thread:thread_core",
        "//pw_trace",
    ],
)

cc_library(
    name = "thread_snapshot_service",
    srcs = [
        "thread_snapshot_service.cc",
    ],
    hdrs = [
        "public/pw_system/thread_snapshot_service.h",
    ],
    includes = ["public"],
    deps = [
        "//pw_rpc",
        "//pw_thread:thread_snapshot_service",
    ],
)

cc_library(
    name = "io",
    hdrs = [
        "public/pw_system/io.h",
    ],
    deps = [
        "//pw_stream",
    ],
)

cc_library(
    name = "init",
    srcs = [
        "init.cc",
    ],
    hdrs = [
        "public/pw_system/init.h",
    ],
    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": [
        ],
    }),
)

cc_library(
    name = "work_queue",
    srcs = [
        "work_queue.cc",
    ],
    hdrs = [
        "public/pw_system/work_queue.h",
    ],
    includes = ["public"],
    deps = [
        ":config",
        "//pw_work_queue",
    ],
)

cc_library(
    name = "target_io",
    srcs = [
        "target_io.cc",
    ],
    includes = ["public"],
    deps = [
        ":io",
        "//pw_stream",
        "//pw_stream:sys_io_stream",
    ],
)

cc_library(
    name = "socket_target_io",
    srcs = [
        "socket_target_io.cc",
    ],
    includes = ["public"],
    deps = [
        ":config",
        ":io",
        "//pw_assert",
        "//pw_stream",
        "//pw_stream:socket_stream",
    ],
)

cc_library(
    name = "transfer_handlers",
    srcs = [
        "transfer_handlers.cc",
    ],
    hdrs = [
        "public/pw_system/transfer_handlers.h",
    ],
    includes = ["public"],
    deps = [
        "//pw_persistent_ram",
        "//pw_trace_tokenized:config",
        "//pw_transfer",
    ],
)

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": [
        ],
    }),
)

cc_library(
    name = "transfer_service",
    srcs = [
        "transfer_service.cc",
    ],
    hdrs = [
        "public/pw_system/transfer_service.h",
    ],
    includes = ["public"],
    deps = [
        ":file_manager",
        "//pw_transfer",
    ],
)

cc_library(
    name = "file_service",
    srcs = [
        "file_service.cc",
    ],
    hdrs = [
        "public/pw_system/file_service.h",
    ],
    includes = ["public"],
    deps = [
        ":file_manager",
    ],
)

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",
    ],
)

cc_library(
    name = "target_hooks",
    hdrs = [
        "public/pw_system/target_hooks.h",
    ],
    includes = ["public"],
    deps = [
        ":target_hooks_backend",
        "//pw_thread:thread",
    ],
)

label_flag(
    name = "target_hooks_backend",
    build_setting_default = ":target_hooks_multiplexer",
)

# This isn't the best solution, but it's close enough for now. Target hooks are
# not generically related to an OS, and should be inject-able by downstream
# projects. For now, assume the pre-baked OS-specific hooks are good enough.
cc_library(
    name = "target_hooks_multiplexer",
    visibility = ["@pigweed//targets:__pkg__"],
    deps = select({
        "//pw_build/constraints/rtos:freertos": [":freertos_target_hooks"],
        "//conditions:default": [":stl_target_hooks"],
    }),
)

cc_library(
    name = "stl_target_hooks",
    srcs = [
        "stl_target_hooks.cc",
    ],
    includes = ["public"],
    deps = [
        ":config",
        "//pw_thread:thread",
        "//pw_thread_stl:thread",
    ],
)

cc_library(
    name = "freertos_target_hooks",
    srcs = [
        "freertos_target_hooks.cc",
    ],
    hdrs = [
        "public/pw_system/target_hooks.h",
    ],
    includes = ["public"],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":config",
        "//pw_thread:thread",
        "//pw_thread_freertos:thread",
    ],
)

pw_cc_binary(
    name = "system_example",
    # This is marked as testonly because the example app pulls in the RPC unit
    # test runner. In a real production binary, you wouldn't want to have any
    # testonly dependencies.
    testonly = True,
    srcs = ["example_user_app_init.cc"],
    deps = [
        ":pw_system",
        "//pw_unit_test:rpc_service",
    ],
)
