################################################################################
# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
# samples/hal/hello/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_binary(
  NAME
    hello
  SRCS
    "hello.c"
  DEPS
    iree::async
    iree::async::util::proactor_pool
    iree::base
    iree::base::threading
    iree::base::tooling::flags
    iree::hal
    iree::hal::drivers
)

iree_native_test(
  NAME
    "hello_test"
  SRC
    ::hello
)

### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###

if(IREE_ARCH STREQUAL "wasm_32")
  target_link_libraries(iree_samples_hal_hello_hello PRIVATE
    iree_wasm_libc
  )
endif()
