cmake_minimum_required(VERSION 3.15)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

project(core CXX)

find_package(fmt REQUIRED)
find_package(range-v3 REQUIRED)
find_package(cxxopts REQUIRED)
find_package(Protobuf CONFIG REQUIRED)

set(CMAKE_CXX_STANDARD 17)

add_library(core STATIC
  "${CMAKE_CURRENT_SOURCE_DIR}/protocol/messenger/messenger.proto"
  fib.cpp
)

set(PROTO_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
target_include_directories(core 
  PUBLIC 
    ${CMAKE_CURRENT_SOURCE_DIR}
    "$<BUILD_INTERFACE:${PROTO_BINARY_DIR}>"
)

target_link_libraries(core
  PRIVATE
    fmt::fmt
    range-v3::range-v3
    cxxopts::cxxopts
  PUBLIC
    protobuf::libprotobuf
)

protobuf_generate(
    TARGET core
    IMPORT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/protocol"
    PROTOC_OUT_DIR "${PROTO_BINARY_DIR}"
)
