# 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.

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

label_flag(
    name = "pw_log_backend",
    build_setting_default = "@pigweed//pw_log:backend_multiplexer",
)

label_flag(
    name = "pw_assert_backend",
    build_setting_default = "@pigweed//pw_assert:backend_multiplexer",
)

label_flag(
    name = "pw_chrono_backend",
    build_setting_default = "@pigweed//pw_chrono:backend_multiplexer",
)

label_flag(
    name = "pw_sync_binary_semaphore_backend",
    build_setting_default = "@pigweed//pw_sync:binary_semaphore_backend_multiplexer",
)

label_flag(
    name = "pw_sync_counting_semaphore_backend",
    build_setting_default = "@pigweed//pw_sync:counting_semaphore_backend_multiplexer",
)

label_flag(
    name = "pw_sync_mutex_backend",
    build_setting_default = "@pigweed//pw_sync:mutex_backend_multiplexer",
)

label_flag(
    name = "pw_sync_timed_mutex_backend",
    build_setting_default = "@pigweed//pw_sync:timed_mutex_backend_multiplexer",
)

label_flag(
    name = "pw_sync_interrupt_spin_lock_backend",
    build_setting_default = "@pigweed//pw_sync:interrupt_spin_lock_backend_multiplexer",
)

label_flag(
    name = "pw_interrupt_backend",
    build_setting_default = "@pigweed//pw_interrupt:backend_multiplexer",
)

label_flag(
    name = "pw_malloc_backend",
    build_setting_default = "@pigweed//pw_malloc:backend_multiplexer",
)

label_flag(
    name = "pw_thread_id_backend",
    build_setting_default = "@pigweed//pw_thread:id_backend_multiplexer",
)

label_flag(
    name = "pw_thread_sleep_backend",
    build_setting_default = "@pigweed//pw_thread:sleep_backend_multiplexer",
)

label_flag(
    name = "pw_thread_thread_backend",
    build_setting_default = "@pigweed//pw_thread:thread_backend_multiplexer",
)

label_flag(
    name = "pw_thread_yield_backend",
    build_setting_default = "@pigweed//pw_thread:yield_backend_multiplexer",
)

label_flag(
    name = "pw_tokenizer_global_handler_backend",
    build_setting_default = "@pigweed//pw_tokenizer:test_backend",
)

label_flag(
    name = "pw_tokenizer_global_handler_with_payload_backend",
    build_setting_default = "@pigweed//pw_tokenizer:test_backend",
)

label_flag(
    name = "pw_sys_io_backend",
    build_setting_default = "@pigweed//pw_sys_io:backend_multiplexer",
)

label_flag(
    name = "target_rtos",
    build_setting_default = "@pigweed//pw_build/constraints/rtos:none",
)
