load("@fbcode_macros//build_defs:build_file_migration.bzl", "fbcode_target")
load("@fbcode_macros//build_defs:cpp_benchmark.bzl", "cpp_benchmark")
load("@fbcode_macros//build_defs:cpp_binary.bzl", "cpp_binary")
load("@fbcode_macros//build_defs:cpp_unittest.bzl", "cpp_unittest")

oncall("fbcode_entropy_wardens_folly")

fbcode_target(
    _kind = cpp_benchmark,
    name = "timed_mutex_benchmark",
    srcs = ["TimedMutexBenchmark.cpp"],
    headers = [],
    deps = [
        "//folly:benchmark",
        "//folly/fibers:timed_mutex",
        "//folly/init:init",
    ],
)

fbcode_target(
    _kind = cpp_unittest,
    name = "fibers_test",
    srcs = ["FibersTest.cpp"],
    headers = [],
    labels = ["heavyweight"],
    deps = [
        "//folly:conv",
        "//folly:memory",
        "//folly:random",
        "//folly/coro:blocking_wait",
        "//folly/coro:gtest_helpers",
        "//folly/coro:timeout",
        "//folly/coro:with_cancellation",
        "//folly/executors:cpu_thread_pool_executor",
        "//folly/fibers:add_tasks",
        "//folly/fibers:atomic_batch_dispatcher",
        "//folly/fibers:batch_dispatcher",
        "//folly/fibers:batch_semaphore",
        "//folly/fibers:core_manager",
        "//folly/fibers:event_base_loop_controller",
        "//folly/fibers:executor_loop_controller",
        "//folly/fibers:fiber_manager_map",
        "//folly/fibers:generic_baton",
        "//folly/fibers:semaphore",
        "//folly/fibers:simple_loop_controller",
        "//folly/fibers:timed_mutex",
        "//folly/fibers:when_n",
        "//folly/futures:core",
        "//folly/io/async:scoped_event_base_thread",
        "//folly/portability:gtest",
        "//folly/synchronization:lock",
        "//folly/tracing:async_stack",
    ],
)

fbcode_target(
    _kind = cpp_binary,
    name = "fibers_test_app",
    srcs = ["FibersTestApp.cpp"],
    headers = [],
    deps = [
        "//folly:memory",
        "//folly/fibers:core_manager",
        "//folly/fibers:simple_loop_controller",
    ],
)

fbcode_target(
    _kind = cpp_binary,
    name = "stack_overflow",
    srcs = ["StackOverflow.cpp"],
    headers = [],
    compiler_flags = ["-Wno-infinite-recursion"],
    deps = [
        "//folly/fibers:fiber_manager_map",
        "//folly/init:init",
    ],
)

fbcode_target(
    _kind = cpp_unittest,
    name = "semaphore_test",
    srcs = ["SemaphoreTest.cpp"],
    headers = [],
    deps = [
        "//folly/fibers:semaphore",
        "//folly/portability:gtest",
        "//folly/synchronization:relaxed_atomic",
        "//folly/synchronization/detail:sleeper",
    ],
)

fbcode_target(
    _kind = cpp_unittest,
    name = "batch_semaphore_test",
    srcs = ["BatchSemaphoreTest.cpp"],
    deps = [
        "//folly/fibers:batch_semaphore",
        "//folly/portability:gtest",
    ],
)
