# Copyright 2020 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_library",
)

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

licenses(["notice"])

pw_cc_library(
    name = "binary_semaphore_headers",
    hdrs = [
        "public/pw_sync_freertos/binary_semaphore_inline.h",
        "public/pw_sync_freertos/binary_semaphore_native.h",
        "public_overrides/pw_sync_backend/binary_semaphore_inline.h",
        "public_overrides/pw_sync_backend/binary_semaphore_native.h",
    ],
    includes = [
        "public",
        "public_overrides",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        # TODO(b/234876414): This should depend on FreeRTOS but our third parties currently
        # do not have Bazel support.
        "//pw_assert",
        "//pw_chrono:system_clock",
        "//pw_chrono_freertos:system_clock_headers",
    ],
)

pw_cc_library(
    name = "binary_semaphore",
    srcs = [
        "binary_semaphore.cc",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":binary_semaphore_headers",
        "//pw_assert",
        "//pw_interrupt:context",
        "//pw_sync:binary_semaphore_facade",
    ],
)

pw_cc_library(
    name = "counting_semaphore_headers",
    hdrs = [
        "public/pw_sync_freertos/counting_semaphore_inline.h",
        "public/pw_sync_freertos/counting_semaphore_native.h",
        "public_overrides/pw_sync_backend/counting_semaphore_inline.h",
        "public_overrides/pw_sync_backend/counting_semaphore_native.h",
    ],
    includes = [
        "public",
        "public_overrides",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        # TODO(b/234876414): This should depend on FreeRTOS but our third parties currently
        # do not have Bazel support.
        "//pw_assert",
        "//pw_sync:counting_semaphore_facade",
        "//pw_chrono:system_clock",
        "//pw_chrono_freertos:system_clock_headers",
    ],
)

pw_cc_library(
    name = "counting_semaphore",
    srcs = [
        "counting_semaphore.cc",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":counting_semaphore_headers",
        "//pw_assert",
        "//pw_interrupt:context",
        "//pw_sync:counting_semaphore_facade",
    ],
)

pw_cc_library(
    name = "mutex_headers",
    hdrs = [
        "public/pw_sync_freertos/mutex_inline.h",
        "public/pw_sync_freertos/mutex_native.h",
        "public_overrides/pw_sync_backend/mutex_inline.h",
        "public_overrides/pw_sync_backend/mutex_native.h",
    ],
    includes = [
        "public",
        "public_overrides",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        # TODO(b/234876414): This should depend on FreeRTOS but our third parties currently
        # do not have Bazel support.
        "//pw_assert",
    ],
)

pw_cc_library(
    name = "mutex",
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":mutex_headers",
        "//pw_sync:mutex_facade",
    ],
)

pw_cc_library(
    name = "thread_notification_headers",
    hdrs = [
        "public/pw_sync_freertos/config.h",
        "public/pw_sync_freertos/thread_notification_inline.h",
        "public/pw_sync_freertos/thread_notification_native.h",
        "public_overrides/thread_notification/pw_sync_backend/thread_notification_inline.h",
        "public_overrides/thread_notification/pw_sync_backend/thread_notification_native.h",
    ],
    includes = [
        "public",
        "public_overrides/thread_notification",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        "//pw_assert",
        # TODO(b/234876414): This should depend on FreeRTOS but our third parties
        # currently do not have Bazel support.
        "//pw_interrupt:context",
    ],
)

pw_cc_library(
    name = "thread_notification",
    srcs = [
        "thread_notification.cc",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":thread_notification_headers",
        "//pw_assert",
        "//pw_interrupt:context",
        "//pw_sync:thread_notification_facade",
    ],
)

pw_cc_library(
    name = "timed_thread_notification_headers",
    hdrs = [
        "public/pw_sync_freertos/timed_thread_notification_inline.h",
        "public_overrides/timed_thread_notification/pw_sync_backend/timed_thread_notification_inline.h",
    ],
    includes = [
        "public",
        "public_overrides/timed_thread_notification",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        # TODO(b/234876414): This should depend on FreeRTOS but our third parties
        # currently do not have Bazel support.
        "//pw_chrono:system_clock",
        "//pw_sync:timed_thread_notification_facade",
    ],
)

pw_cc_library(
    name = "timed_thread_notification",
    srcs = [
        "timed_thread_notification.cc",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":timed_thread_notification_headers",
        "//pw_assert",
        "//pw_chrono_freertos:system_clock_headers",
        "//pw_interrupt:context",
        "//pw_sync:timed_thread_notification_facade",
    ],
)

pw_cc_library(
    name = "timed_mutex_headers",
    hdrs = [
        "public/pw_sync_freertos/timed_mutex_inline.h",
        "public_overrides/pw_sync_backend/timed_mutex_inline.h",
    ],
    includes = [
        "public",
        "public_overrides",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        # TODO(b/234876414): This should depend on FreeRTOS but our third parties
        # currently do not have Bazel support.
        "//pw_chrono:system_clock",
        "//pw_sync:timed_mutex_facade",
    ],
)

pw_cc_library(
    name = "timed_mutex",
    srcs = [
        "timed_mutex.cc",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":timed_mutex_headers",
        "//pw_assert",
        "//pw_chrono_freertos:system_clock_headers",
        "//pw_interrupt:context",
        "//pw_sync:timed_mutex_facade",
    ],
)

pw_cc_library(
    name = "interrupt_spin_lock_headers",
    hdrs = [
        "public/pw_sync_freertos/interrupt_spin_lock_inline.h",
        "public/pw_sync_freertos/interrupt_spin_lock_native.h",
        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
    ],
    includes = [
        "public",
        "public_overrides",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    # TODO(b/234876414): This should depend on FreeRTOS but our third parties
    # currently do not have Bazel support.
)

pw_cc_library(
    name = "interrupt_spin_lock",
    srcs = [
        "interrupt_spin_lock.cc",
    ],
    target_compatible_with = [
        "//pw_build/constraints/rtos:freertos",
    ],
    deps = [
        ":interrupt_spin_lock_headers",
        "//pw_assert",
        "//pw_interrupt:context",
        "//pw_sync:interrupt_spin_lock_facade",
    ],
)

# TODO(b/228998350): Figure out how to conditionally enable this test like GN
#
# You can instantiate this with your own implementation of
# "//pw_thread:test_threads_header", see
# ":thread_notification_test_with_static_threads" below as an example.
# pw_cc_library(
#     name = "thread_notification_test",
#     srcs = [
#         "thread_notification_test.cc",
#     ],
#     target_compatible_with = [
#         "//pw_build/constraints/rtos:freertos",
#     ],
#     # TODO(b/234876414): This should depend on FreeRTOS but our third parties
#     # currently do not have Bazel support.
#     deps = [
#         "//pw_chrono:system_clock",
#         "//pw_sync:thread_notification",
#         "//pw_thread:sleep",
#         "//pw_thread:test_threads_header",
#         "//pw_thread:thread",
#         "//pw_unit_test",
#     ],
# )
# This is only used for the python tests.
filegroup(
    name = "thread_notification_test",
    srcs = [
        "thread_notification_test.cc",
    ],
)

# TODO(b/228998350): Figure out how to conditionally enable this test like GN
# with:
#    enable_if = pw_sync_THREAD_NOTIFICATION_BACKEND ==
#                "$dir_pw_sync_freertos:thread_notification" &&
#                pw_chrono_SYSTEM_CLOCK_BACKEND != "" &&
#                pw_thread_THREAD_BACKEND != "" && pw_thread_SLEEP_BACKEND != ""
#
# pw_cc_test(
#     name = "thread_notification_test_with_static_threads",
#     target_compatible_with = [
#         "//pw_build/constraints/rtos:freertos",
#     ],
#     deps = [
#         ":thread_notification_test",
#         "//pw_thread_freertos:static_test_threads",
#     ],
# )

# TODO(b/228998350): Figure out how to conditionally enable this test like GN
#
# You can instantiate this with your own implementation of
# "//pw_thread:test_threads_header", see
# ":timed_thread_notification_test_with_static_threads" below as an example.
#pw_cc_library(
#    name = "timed_thread_notification_test",
#    srcs = [
#        "timed_thread_notification_test.cc",
#    ],
#    # TODO(b/234876414): This should depend on FreeRTOS but our third parties
#    # currently do not have Bazel support.
#    deps = [
#        "//pw_chrono:system_clock",
#        "//pw_sync:timed_thread_notification",
#        "//pw_thread:sleep",
#        "//pw_thread:test_threads_header",
#        "//pw_thread:thread",
#        "//pw_unit_test",
#    ],
#)
filegroup(
    name = "timed_thread_notification_test",
    srcs = [
        "timed_thread_notification_test.cc",
    ],
)

# TODO(b/228998350): Figure out how to conditionally enable this test like GN
# with:
#    enable_if = pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND ==
#                "$dir_pw_sync_freertos:timed_thread_notification" &&
#                pw_chrono_SYSTEM_CLOCK_BACKEND != "" &&
#                pw_thread_THREAD_BACKEND != "" && pw_thread_SLEEP_BACKEND != ""
#
# pw_cc_test(
#     name = "timed_thread_notification_test_with_static_threads",
#     target_compatible_with = [
#         "//pw_build/constraints/rtos:freertos",
#     ],
#     deps = [
#         ":timed_thread_notification_test",
#         "//pw_thread_freertos:static_test_threads",
#     ],
# )
