################################################################################
# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
# runtime/src/iree/async/BUILD.bazel                                           #
#                                                                              #
# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
# CMake-only content.                                                          #
#                                                                              #
# To disable autogeneration for this file entirely, delete this header.        #
################################################################################

iree_add_all_subdirs()

iree_cc_library(
  NAME
    types
  HDRS
    "types.h"
  DEPS
    iree::base
  PUBLIC
)

iree_cc_library(
  NAME
    async
  HDRS
    "address.h"
    "affinity.h"
    "api.h"
    "buffer_pool.h"
    "event.h"
    "file.h"
    "frontier.h"
    "frontier_tracker.h"
    "notification.h"
    "operation.h"
    "operations/file.h"
    "operations/futex.h"
    "operations/message.h"
    "operations/net.h"
    "operations/scheduling.h"
    "operations/semaphore.h"
    "primitive.h"
    "proactor.h"
    "region.h"
    "relay.h"
    "semaphore.h"
    "slab.h"
    "socket.h"
    "span.h"
  SRCS
    "address.c"
    "address_generic.c"
    "address_impl.h"
    "address_posix.c"
    "address_win32.c"
    "buffer_pool.c"
    "event.c"
    "file.c"
    "frontier.c"
    "frontier_tracker.c"
    "notification.c"
    "operation.c"
    "primitive.c"
    "proactor.c"
    "region.c"
    "semaphore.c"
    "slab.c"
    "socket.c"
  DEPS
    ::types
    iree::base
    iree::base::internal
    iree::base::internal::atomic_freelist
    iree::base::internal::memory
    iree::base::threading
    iree::base::threading::thread
  PUBLIC
)

iree_cc_library(
  NAME
    event_pool
  HDRS
    "event_pool.h"
  SRCS
    "event_pool.c"
  DEPS
    ::async
    iree::base
    iree::base::internal
    iree::base::threading
  PUBLIC
)

set(_platform_platform_deps "")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
  list(APPEND _platform_platform_deps iree::async::platform::io_uring)
  list(APPEND _platform_platform_deps iree::async::platform::posix)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
  list(APPEND _platform_platform_deps iree::async::platform::posix)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  list(APPEND _platform_platform_deps iree::async::platform::iocp)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  list(APPEND _platform_platform_deps iree::async::platform::posix)
endif()
iree_cc_library(
  NAME
    platform
  HDRS
    "proactor_platform.h"
  SRCS
    "proactor_platform.c"
  DEPS
    ::async
    ${_platform_platform_deps}
  PUBLIC
)

iree_cc_test(
  NAME
    primitive_test
  SRCS
    "primitive_test.cc"
  DEPS
    ::async
    iree::base
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_test(
  NAME
    address_test
  SRCS
    "address_test.cc"
  DEPS
    ::async
    iree::base
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_test(
  NAME
    event_pool_test
  SRCS
    "event_pool_test.cc"
  DEPS
    ::event_pool
    ::platform
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_test(
  NAME
    frontier_test
  SRCS
    "frontier_test.cc"
  DEPS
    ::async
    iree::base
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_test(
  NAME
    frontier_tracker_test
  SRCS
    "frontier_tracker_test.cc"
  DEPS
    ::async
    iree::base
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_test(
  NAME
    semaphore_test
  SRCS
    "semaphore_test.cc"
  DEPS
    ::async
    iree::base
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_binary_benchmark(
  NAME
    frontier_benchmark
  SRCS
    "frontier_benchmark.cc"
  DEPS
    ::async
    benchmark
    iree::testing::benchmark_main
  TESTONLY
)

iree_cc_binary_benchmark(
  NAME
    frontier_tracker_benchmark
  SRCS
    "frontier_tracker_benchmark.cc"
  DEPS
    ::async
    benchmark
    iree::testing::benchmark_main
  TESTONLY
)

iree_cc_fuzz(
  NAME
    address_fuzz
  SRCS
    "address_fuzz.cc"
  DEPS
    ::async
    iree::base
)

### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
