
cmake_minimum_required(VERSION 3.10)

##set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMakeModules/")

project(hark-lib-sample
    VERSION 1.1.0
    LANGUAGES CXX)

set(SHORT_PACKAGE "HARKLIB_SAMPLE")

set(OPTIONAL_LIBRARIES "")

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE)

option(USE_DETAIL_DEBUG "[For developer] Full dumps." OFF)

if(USE_DETAIL_DEBUG)
    add_definitions(-DVERBOSE_DEBUG)
endif(USE_DETAIL_DEBUG)


# # 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()

find_package(Threads REQUIRED)
find_package(fmt REQUIRED)
find_package(Eigen3 REQUIRED NO_MODULE)
#find_package(LibHarkio3 REQUIRED)
find_package(pybind11 REQUIRED)
find_package(HarkLib REQUIRED)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
if(HARKLIB_USE_LIBTORCH)
    set(CMAKE_CXX_STANDARD 14)
    find_package(Torch REQUIRED)
    # target_compile_definitions(${PROJECT_NAME} PRIVATE HARKLIB_USES_LIBTORCH=1)
endif()
set(CXX_STANDARD ${CMAKE_CXX_STANDARD})
set(CXX_STANDARD_REQUIRED ${CMAKE_CXX_STANDARD_REQUIRED})
set(CXX_EXTENSIONS ${CMAKE_CXX_EXTENSIONS})

add_subdirectory(include)
add_subdirectory(src)


#include(CMakePackageConfigHelpers)
#configure_package_config_file(${PROJECT_NAME}-config.cmake.in
#    ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
#    INSTALL_DESTINATION lib/${PROJECT_NAME}/cmake
#    PATH_VARS PROJECT_NAME)
#
#write_basic_package_version_file(
#    ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-version.cmake
#    VERSION ${PROJECT_VERSION}
#    COMPATIBILITY SameMajorVersion)
#
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
#              ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-version.cmake
#        DESTINATION lib/${PROJECT_NAME}/cmake )

#export(EXPORT ${PROJECT_NAME} 
#    FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.cmake"
#)

# uninstall target
configure_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
    IMMEDIATE @ONLY)

add_custom_target(uninstall
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)

