# Copyright 2023 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

load("//:defs.bzl", "COPTS")

package(default_visibility = ["//:__subpackages__"])

cc_library(
    name = "headers",
    hdrs = [
        "arraysize.h",
        "atomic_ops.h",
        "bit_buffer.h",
        "buffer.h",
        "buffer_queue.h",
        "byte_buffer.h",
        "byte_order.h",
        "checks.h",
        "compile_assert_c.h",
        "constructor_magic.h",
        "copy_on_write_buffer.h",
        "deprecated/recursive_critical_section.h",
        "event.h",
        "event_tracer.h",
        "experiments/field_trial_parser.h",
        "gtest_prod_util.h",
        "ignore_wundef.h",
        "location.h",
        "logging.h",
        "memory/aligned_malloc.h",
        "numerics/histogram_percentile_counter.h",
        "numerics/moving_median_filter.h",
        "numerics/percentile_filter.h",
        "numerics/safe_compare.h",
        "numerics/safe_conversions.h",
        "numerics/safe_conversions_impl.h",
        "numerics/safe_minmax.h",
        "platform_thread.h",
        "platform_thread_types.h",
        "race_checker.h",
        "random.h",
        "rate_statistics.h",
        "rate_tracker.h",
        "ref_count.h",
        "ref_counted_object.h",
        "ref_counter.h",
        "sanitizer.h",
        "string_encode.h",
        "string_to_number.h",
        "string_utils.h",
        "strings/string_builder.h",
        "swap_queue.h",
        "synchronization/mutex.h",
        "synchronization/mutex_pthread.h",
        "synchronization/sequence_checker_internal.h",
        "synchronization/yield.h",
        "synchronization/yield_policy.h",
        "system/arch.h",
        "system/file_wrapper.h",
        "system/ignore_warnings.h",
        "system/inline.h",
        "system/no_unique_address.h",
        "system/rtc_export.h",
        "system/unused.h",
        "system/warn_current_thread_is_deadlocked.h",
        "system_time.h",
        "task_queue.h",
        "task_queue_libevent.h",
        "task_utils/pending_task_safety_flag.h",
        "task_utils/to_queued_task.h",
        "third_party/base64/base64.h",
        "thread_annotations.h",
        "time_utils.h",
        "timestamp_aligner.h",
        "trace_event.h",
        "type_traits.h",
        "units/unit_base.h",
        "zero_memory.h",
    ],
    copts = COPTS,
    deps = ["@com_google_absl//absl/strings"],
)

cc_library(
    name = "rtc_base",
    srcs = [
        "bit_buffer.cc",
        "buffer_queue.cc",
        "byte_buffer.cc",
        "checks.cc",
        "copy_on_write_buffer.cc",
        "deprecated/recursive_critical_section.cc",
        "event.cc",
        "event_tracer.cc",
        "experiments/field_trial_parser.cc",
        "location.cc",
        "logging.cc",
        "memory/aligned_malloc.cc",
        "numerics/histogram_percentile_counter.cc",
        "platform_thread.cc",
        "platform_thread_types.cc",
        "race_checker.cc",
        "random.cc",
        "rate_statistics.cc",
        "rate_tracker.cc",
        "string_encode.cc",
        "string_to_number.cc",
        "string_utils.cc",
        "strings/string_builder.cc",
        "synchronization/sequence_checker_internal.cc",
        "synchronization/yield_policy.cc",
        "system/file_wrapper.cc",
        "system_time.cc",
        "task_queue.cc",
        "task_queue_libevent.cc",
        "third_party/base64/base64.cc",
        "time_utils.cc",
        "timestamp_aligner.cc",
        "zero_memory.cc",
    ],
    copts = COPTS,
    deps = [
        ":headers",
        "//api:headers",
        "//api:task_queue",
        "@com_google_absl//absl/base",
        "@com_google_absl//absl/container:inlined_vector",
        "@com_google_absl//absl/meta:type_traits",
        "@com_google_absl//absl/numeric:bits",
        "@com_google_absl//absl/types:optional",
    ],
)
