cmake_minimum_required(VERSION 3.25.2)
project(deepmd_api_c_test)

file(GLOB TEST_SRC test_*.cc)

set_target_properties(
  ${LIB_DEEPMD_C} PROPERTIES INSTALL_RPATH "$ORIGIN;${BACKEND_LIBRARY_PATH}")

add_executable(runUnitTests_c ${TEST_SRC})
target_link_libraries(runUnitTests_c PRIVATE GTest::gtest_main ${LIB_DEEPMD_C}
                                             coverage_config)
target_link_libraries(runUnitTests_c PRIVATE ${LIB_DEEPMD} ${LIB_DEEPMD_CC})

if(ENABLE_TENSORFLOW)
  target_compile_definitions(runUnitTests_c PRIVATE BUILD_TENSORFLOW)
endif()
if(ENABLE_PYTORCH)
  target_compile_definitions(runUnitTests_c PRIVATE BUILD_PYTORCH)
  # Link torch so __has_include(<torch/csrc/inductor/...>) succeeds and
  # BUILD_PT_EXPT is set for the test binary; otherwise pt_expt tests all
  # GTEST_SKIP() with "PyTorch support is not enabled".
  target_link_libraries(runUnitTests_c PRIVATE "${TORCH_LIBRARIES}")
endif()
if(ENABLE_JAX)
  target_compile_definitions(runUnitTests_c PRIVATE BUILD_JAX)
endif()
if(ENABLE_PADDLE)
  target_compile_definitions(runUnitTests_c PRIVATE BUILD_PADDLE)
endif()

if(UNIX AND NOT APPLE)
  find_library(RT_LIBRARY rt)
  if(RT_LIBRARY)
    target_link_libraries(runUnitTests_c PRIVATE ${RT_LIBRARY})
  endif()
endif()

target_precompile_headers(runUnitTests_c PRIVATE test_utils.h [["deepmd.hpp"]])
add_test(
  NAME runUnitTests_c
  COMMAND runUnitTests_c
  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(runUnitTests_c PROPERTIES INSTALL_RPATH "$ORIGIN/../lib")
install(TARGETS runUnitTests_c DESTINATION bin/)
