cmake_minimum_required(VERSION 3.16)
project(cedar_cpp_client LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

find_package(CURL REQUIRED)
find_package(OpenSSL REQUIRED)

add_library(cedar_sdk STATIC
  src/cedar_client.cpp
)
add_library(cedar::sdk ALIAS cedar_sdk)
target_include_directories(cedar_sdk PUBLIC
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  $<INSTALL_INTERFACE:include>
)
target_link_libraries(cedar_sdk PUBLIC CURL::libcurl OpenSSL::Crypto)

add_executable(cedar_client
  src/main.cpp
)
target_link_libraries(cedar_client PRIVATE cedar_sdk)

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
  "${CMAKE_CURRENT_BINARY_DIR}/cedar_sdkConfigVersion.cmake"
  VERSION 1.0.0
  COMPATIBILITY SameMajorVersion
)
configure_package_config_file(
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cedar_sdkConfig.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/cedar_sdkConfig.cmake"
  INSTALL_DESTINATION lib/cmake/cedar_sdk
)

install(TARGETS cedar_sdk
  EXPORT cedar_sdkTargets
  ARCHIVE DESTINATION lib
  LIBRARY DESTINATION lib
  RUNTIME DESTINATION bin
)
install(DIRECTORY include/ DESTINATION include)
install(EXPORT cedar_sdkTargets
  FILE cedar_sdkTargets.cmake
  NAMESPACE cedar::
  DESTINATION lib/cmake/cedar_sdk
)
install(FILES
  "${CMAKE_CURRENT_BINARY_DIR}/cedar_sdkConfig.cmake"
  "${CMAKE_CURRENT_BINARY_DIR}/cedar_sdkConfigVersion.cmake"
  DESTINATION lib/cmake/cedar_sdk
)
