include(${PROJECT_SOURCE_DIR}/unittest/googletest.cmake)

include(GoogleTest)
enable_testing()

function(add_triton_ut)
  set(options)
  set(oneValueArgs NAME)
  set(multiValueArgs SRCS LIBS DEFS)
  cmake_parse_arguments(_ "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

  add_test(NAME ${__NAME}
          COMMAND ${__NAME})
  add_executable(
          ${__NAME}
          ${__SRCS})
  target_link_libraries(
          ${__NAME}
          PRIVATE
          GTest::gtest_main
          gmock
          ${__LIBS})

  if(NOT MSVC)
    target_compile_options(${__NAME} PRIVATE -fno-rtti)
  endif()

  target_compile_definitions(${__NAME} PRIVATE ${__DEFS})

  # Without the TEST_DISCOVERY_TIMEOUT, the tests randomly time out on my mac
  # laptop.  I think the issue may be that the very first time you run a program
  # it's a bit slow.
  gtest_discover_tests(${__NAME} DISCOVERY_TIMEOUT 60)

  # Add the unit test to the top-level unit test target.
  add_dependencies(TritonUnitTests ${__NAME})
endfunction()