cmake_minimum_required(VERSION 3.20)
project(cf_datahive_cpp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(GNUInstallDirs)

get_filename_component(_CF_REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../.." ABSOLUTE)
include("${_CF_REPO_ROOT}/tools/cmake/cf_contracts_include.cmake")
set(CF_SDK_INCLUDE "${CF_CONTRACTS_INCLUDE}")

add_library(cf_datahive_cpp SHARED
  src/cf_datahive_cpp.cpp
)

target_compile_definitions(cf_datahive_cpp PRIVATE CF_DATAHIVE_CPP_EXPORTS)

target_include_directories(cf_datahive_cpp PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/include
  ${CF_SDK_INCLUDE}
)

if (UNIX AND NOT APPLE)
  target_link_libraries(cf_datahive_cpp PRIVATE dl)
endif()

if (MINGW)
  target_link_options(cf_datahive_cpp PRIVATE -static-libgcc -static-libstdc++ -Wl,-Bstatic -lwinpthread -Wl,-Bdynamic)
endif()

install(CODE [[
  file(REMOVE_RECURSE
    "${CMAKE_INSTALL_PREFIX}/cf_datahive/native/include"
    "${CMAKE_INSTALL_PREFIX}/cf_datahive/native/cmake"
  )
  file(REMOVE
    "${CMAKE_INSTALL_PREFIX}/cf_datahive/native/lib/cf_datahive_cpp.lib"
    "${CMAKE_INSTALL_PREFIX}/cf_datahive/native/lib/libcf_datahive_cpp.dll.a"
    "${CMAKE_INSTALL_PREFIX}/cf_datahive/native/lib/libcf_datahive_cpp.a"
    "${CMAKE_INSTALL_PREFIX}/cf_datahive/native/lib/cf_datahive_cpp.dll.a"
  )
]])

install(TARGETS cf_datahive_cpp
  RUNTIME DESTINATION cf_datahive/native/bin
  LIBRARY DESTINATION cf_datahive/native/lib
)
