################################################################################
# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
# runtime/src/iree/base/internal/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
    internal
  HDRS
    "atomics.h"
    "debugging.h"
    "inline_array.h"
    "math.h"
  SRCS
    "atomics_clang.h"
    "atomics_disabled.h"
    "atomics_gcc.h"
    "atomics_msvc.h"
  DEPS
    iree::base::core_headers
  PUBLIC
)

iree_cc_test(
  NAME
    atomics_test
  SRCS
    "atomics_test.cc"
  DEPS
    ::internal
    iree::base::core_headers
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_test(
  NAME
    math_test
  SRCS
    "math_test.cc"
  DEPS
    ::internal
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    base64
  HDRS
    "base64.h"
  SRCS
    "base64.c"
  DEPS
    iree::base
  PUBLIC
)

iree_cc_test(
  NAME
    base64_test
  SRCS
    "base64_test.cc"
  DEPS
    ::base64
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_fuzz(
  NAME
    base64_fuzz
  SRCS
    "base64_fuzz.cc"
  DEPS
    ::base64
)

iree_cc_binary_benchmark(
  NAME
    base64_benchmark
  SRCS
    "base64_benchmark.cc"
  DEPS
    ::base64
    iree::base
    iree::testing::benchmark
    iree::testing::benchmark_main
  TESTONLY
)

iree_cc_library(
  NAME
    arena
  HDRS
    "arena.h"
  SRCS
    "arena.c"
  DEPS
    ::atomic_slist
    ::internal
    iree::base
  PUBLIC
)

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

iree_cc_test(
  NAME
    atomic_slist_test
  SRCS
    "atomic_slist_test.cc"
  DEPS
    ::atomic_slist
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    atomic_freelist
  HDRS
    "atomic_freelist.h"
  DEPS
    ::internal
    iree::base
    iree::base::core_headers
  PUBLIC
)

iree_cc_test(
  NAME
    atomic_freelist_test
  SRCS
    "atomic_freelist_test.cc"
  DEPS
    ::atomic_freelist
    ::memory
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_binary_benchmark(
  NAME
    atomic_freelist_benchmark
  SRCS
    "atomic_freelist_benchmark.cc"
  DEPS
    ::atomic_freelist
    ::memory
    benchmark
    iree::testing::benchmark_main
  TESTONLY
)

iree_cc_library(
  NAME
    cpu
  HDRS
    "cpu.h"
  SRCS
    "cpu.c"
  DEPS
    iree::base
    iree::base::core_headers
    iree::schemas::cpu_data
  PUBLIC
)

iree_cc_library(
  NAME
    csprng
  HDRS
    "csprng.h"
  SRCS
    "csprng.c"
  DEPS
    iree::base
  PUBLIC
)

iree_cc_test(
  NAME
    csprng_test
  SRCS
    "csprng_test.cc"
  DEPS
    ::csprng
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    dynamic_library
  HDRS
    "dynamic_library.h"
  SRCS
    "dynamic_library_posix.c"
    "dynamic_library_win32.c"
  DEPS
    ${CMAKE_DL_LIBS}
    ::internal
    ::path
    iree::base
    iree::base::threading
  PUBLIC
)

iree_cc_library(
  NAME
    fpu_state
  HDRS
    "fpu_state.h"
  SRCS
    "fpu_state.c"
  DEPS
    ::internal
    iree::base
    iree::base::core_headers
  PUBLIC
)

iree_cc_binary_benchmark(
  NAME
    fpu_state_benchmark
  SRCS
    "fpu_state_benchmark.cc"
  DEPS
    ::fpu_state
    iree::base
    iree::testing::benchmark
    iree::testing::benchmark_main
  TESTONLY
)

iree_cc_test(
  NAME
    fpu_state_test
  SRCS
    "fpu_state_test.cc"
  DEPS
    ::fpu_state
    iree::testing::gtest
    iree::testing::gtest_main
  LABELS
    "requires-dtz"
)

iree_cc_library(
  NAME
    json
  HDRS
    "json.h"
  SRCS
    "json.c"
  DEPS
    ::unicode
    iree::base
  PUBLIC
)

iree_cc_test(
  NAME
    json_test
  SRCS
    "json_test.cc"
  DEPS
    ::json
    iree::testing::gtest
    iree::testing::gtest_main
)

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

iree_cc_test(
  NAME
    memory_test
  SRCS
    "memory_test.cc"
  DEPS
    ::memory
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    path
  HDRS
    "path.h"
  SRCS
    "path.c"
  DEPS
    iree::base
    iree::base::core_headers
  PUBLIC
)

iree_cc_test(
  NAME
    path_test
  SRCS
    "path_test.cc"
  DEPS
    ::path
    iree::base::core_headers
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    prng
  HDRS
    "prng.h"
  DEPS
    ::internal
    iree::base::core_headers
  PUBLIC
)

iree_cc_test(
  NAME
    prng_test
  SRCS
    "prng_test.cc"
  DEPS
    ::prng
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    shm
  HDRS
    "shm.h"
  SRCS
    "shm_posix.c"
    "shm_win32.c"
  DEPS
    ::internal
    ::memory
    iree::base
    iree::base::threading
  PUBLIC
)

if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
  target_link_libraries(iree_base_internal_shm PUBLIC rt)
endif()

iree_cc_test(
  NAME
    shm_test
  SRCS
    "shm_test.cc"
  DEPS
    ::shm
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    spsc_queue
  HDRS
    "spsc_queue.h"
  SRCS
    "spsc_queue.c"
  DEPS
    ::internal
    iree::base
    iree::base::core_headers
  PUBLIC
)

iree_cc_test(
  NAME
    spsc_queue_test
  SRCS
    "spsc_queue_test.cc"
  DEPS
    ::spsc_queue
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_binary_benchmark(
  NAME
    spsc_queue_benchmark
  SRCS
    "spsc_queue_benchmark.cc"
  DEPS
    ::spsc_queue
    benchmark
    iree::testing::benchmark_main
  TESTONLY
)

iree_cc_library(
  NAME
    mpsc_queue
  HDRS
    "mpsc_queue.h"
  SRCS
    "mpsc_queue.c"
  DEPS
    ::internal
    iree::base
    iree::base::core_headers
  PUBLIC
)

iree_cc_test(
  NAME
    mpsc_queue_test
  SRCS
    "mpsc_queue_test.cc"
  DEPS
    ::mpsc_queue
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    span
  HDRS
    "span.h"
  DEPS

  PUBLIC
)

iree_cc_library(
  NAME
    sysfs
  HDRS
    "sysfs.h"
  SRCS
    "sysfs.c"
  DEPS
    iree::base
  PUBLIC
)

iree_cc_library(
  NAME
    time
  HDRS
    "time.h"
  SRCS
    "time.c"
  DEPS
    iree::base::core_headers
  PUBLIC
)

iree_cc_library(
  NAME
    unicode
  HDRS
    "unicode.h"
  SRCS
    "unicode.c"
    "unicode_tables.c"
  DEPS
    iree::base
  PUBLIC
)

iree_cc_fuzz(
  NAME
    unicode_fuzz
  SRCS
    "unicode_fuzz.cc"
  DEPS
    ::unicode
)

iree_cc_test(
  NAME
    unicode_test
  SRCS
    "unicode_test.cc"
  DEPS
    ::unicode
    iree::testing::gtest
    iree::testing::gtest_main
)

iree_cc_library(
  NAME
    wait_handle
  HDRS
    "wait_handle.h"
  SRCS
    "wait_handle.c"
    "wait_handle_emscripten.c"
    "wait_handle_epoll.c"
    "wait_handle_impl.h"
    "wait_handle_inproc.c"
    "wait_handle_kqueue.c"
    "wait_handle_null.c"
    "wait_handle_poll.c"
    "wait_handle_posix.c"
    "wait_handle_posix.h"
    "wait_handle_win32.c"
  DEPS
    iree::base
    iree::base::core_headers
    iree::base::threading
  PUBLIC
)

iree_cc_test(
  NAME
    wait_handle_test
  SRCS
    "wait_handle_test.cc"
  DEPS
    ::wait_handle
    iree::testing::gtest
    iree::testing::gtest_main
)

if(NOT IREE_ENABLE_THREADING)
  return()
endif()

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

### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###

if(EMSCRIPTEN)
  iree_link_js_library(
    TARGET
      ::wait_handle
    SRCS
      "wait_handle_emscripten.js"
  )
endif()
