file(GLOB HARKLIB_SRCS *.cc node/*.cc)

# # set option
# if(CMAKE_VERSION VERSION_LESS "3.1")
#   #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#   target_compile_options(${PROJECT_NAME} PUBLIC "-std=c++11")
# else()
#   set(CMAKE_CXX_STANDARD 11)
# endif()

set(CXX_STANDARD 11)
if(USES_LIBTORCH)
  set(CXX_STANDARD 14)
  find_package(Torch REQUIRED)
  # target_compile_definitions(${PROJECT_NAME} PRIVATE HARKLIB_USES_LIBTORCH=1)
endif()

find_package(Threads REQUIRED)
find_package(fmt REQUIRED)

if(MSVC)
    #add_library(${PROJECT_NAME} SHARED ${HARKLIB_SRCS})
    add_library(${PROJECT_NAME} ${HARKLIB_SRCS})
else()
  add_library(${PROJECT_NAME} SHARED ${HARKLIB_SRCS})
endif()

target_include_directories(${PROJECT_NAME} PRIVATE ../include PUBLIC ${EIGEN_PATH})
target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads PRIVATE Eigen3::Eigen fmt::fmt "${TORCH_LIBRARIES}")

set_target_properties(${PROJECT_NAME} PROPERTIES
    CXX_STANDARD ${CXX_STANDARD}
    CXX_STANDARD_REQUIRED YES
    CXX_EXTENSIONS NO
)

# set platform specific options
target_compile_options(${PROJECT_NAME} PUBLIC
  $<$<CXX_COMPILER_ID:MSVC>:/Zc:__cplusplus>
)

if(USES_LIBTORCH)
  target_compile_definitions(${PROJECT_NAME} PRIVATE HARKLIB_USES_LIBTORCH=1)
endif()

install(TARGETS ${PROJECT_NAME}
        DESTINATION lib
        EXPORT ${PROJECT_NAME})

# install(EXPORT ${PROJECT_NAME}
#         FILE ${PROJECT_NAME}-config.cmake
#         DESTINATION lib/cmake/${PROJECT_NAME})
