add_custom_target(OrcRTUnitTests)
set_target_properties(OrcRTUnitTests PROPERTIES FOLDER "orc-rt/Tests")

if (NOT TARGET llvm_gtest)
  message(WARNING "orc-rt unittests disabled due to GTest being unavailable; "
                  "Try LLVM_INSTALL_GTEST=ON for the LLVM build")
  return ()
endif ()

function(add_orc_rt_unittest test_dirname)
  add_unittest(OrcRTUnitTests ${test_dirname} ${ARGN})
endfunction()

add_orc_rt_unittest(CoreTests
  AllocActionTest.cpp
  BitmaskEnumTest.cpp
  BootstrapInfoTest.cpp
  CallableTraitsHelperTest.cpp
  SimpleSymbolTableTest.cpp
  EndianTest.cpp
  ErrorCAPITest.cpp
  ErrorTest.cpp
  ErrorExceptionInteropTest.cpp
  ExecutorAddressTest.cpp
  ExecutorProcessInfoTest.cpp
  IntervalMapTest.cpp
  IntervalSetTest.cpp
  LockedAccessTest.cpp
  MathTest.cpp
  MemoryFlagsTest.cpp
  QueueingTaskDispatcherTest.cpp
  RTTITest.cpp
  ScopeExitTest.cpp
  SessionTest.cpp
  SimpleNativeMemoryMapTest.cpp
  SimpleNativeMemoryMapSPSCITest.cpp
  SimplePackedSerializationTest.cpp
  SPSAllocActionTest.cpp
  SPSMemoryFlagsTest.cpp
  SPSWrapperFunctionTest.cpp
  SPSWrapperFunctionBufferTest.cpp
  TaskGroupTest.cpp
  ThreadPoolTaskDispatcherTest.cpp
  WrapperFunctionBufferTest.cpp
  bind-test.cpp
  bit-test.cpp
  iterator_range-test.cpp
  move_only_function-test.cpp
  span-test.cpp

  DISABLE_LLVM_LINK_LLVM_DYLIB
  )
target_compile_options(CoreTests PRIVATE ${ORC_RT_COMPILE_FLAGS})
target_link_libraries(CoreTests PRIVATE orc-rt-executor)
