# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

load("@rules_cc//cc:cc_library.bzl", "cc_library")

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "configuration_core",
    srcs = [
        "composable_always_off_sampler_configuration.cc",
        "composable_always_on_sampler_configuration.cc",
        "composable_parent_threshold_sampler_configuration.cc",
        "composable_probability_sampler_configuration.cc",
        "composable_rule_based_sampler_configuration.cc",
        "configured_sdk.cc",
        "document_node.cc",
        "registry.cc",
        "sdk_builder.cc",
    ],
    include_prefix = "src/configuration",
    deps = [
        "//api",
        "//sdk:headers",
        "//sdk/src/common:wildcard_match",
        "//sdk/src/resource",
    ],
)

cc_library(
    name = "configuration_trace_builders",
    srcs = [
        "trace_builder_utils.cc",
        "trace_builders.cc",
    ],
    include_prefix = "src/configuration",
    deps = [
        ":configuration_core",
        "//api",
        "//sdk:headers",
        "//sdk/src/common:wildcard_match",
        "//sdk/src/trace",
    ],
)

cc_library(
    name = "configuration_logs_builders",
    srcs = [
        "logs_builder_utils.cc",
        "logs_builders.cc",
    ],
    include_prefix = "src/configuration",
    deps = [
        ":configuration_core",
        "//api",
        "//sdk:headers",
        "//sdk/src/common:wildcard_match",
        "//sdk/src/logs",
    ],
)

cc_library(
    name = "configuration_metrics_builders",
    srcs = [
        "metrics_builder_utils.cc",
        "metrics_builders.cc",
    ],
    include_prefix = "src/configuration",
    deps = [
        ":configuration_core",
        "//api",
        "//sdk:headers",
        "//sdk/src/common:wildcard_match",
        "//sdk/src/metrics",
    ],
)

cc_library(
    name = "configuration_registry_factory",
    srcs = ["registry_factory.cc"],
    include_prefix = "src/configuration",
    deps = [
        ":configuration_core",
        ":configuration_logs_builders",
        ":configuration_metrics_builders",
        ":configuration_trace_builders",
        "//api",
        "//sdk:headers",
    ],
)

cc_library(
    name = "configuration_yaml",
    srcs = [
        "configuration_parser.cc",
        "ryml_document.cc",
        "ryml_document_node.cc",
        "yaml_configuration_parser.cc",
    ],
    include_prefix = "src/configuration",
    deps = [
        ":configuration_core",
        "//api",
        "//sdk:headers",
        "@rapidyaml",
    ],
)

cc_library(
    name = "configuration",
    deps = [
        ":configuration_core",
        ":configuration_logs_builders",
        ":configuration_metrics_builders",
        ":configuration_registry_factory",
        ":configuration_trace_builders",
        ":configuration_yaml",
    ],
)
