# -*- mode: cmake; -*-
#
# The proto generation happens outside of CMake and the path to the
# generated files is passed in via the environment variable
# $NIX_PROTO_SRCS.
#
# This configuration defines a library target that compiles these
# sources and makes the headers available.

add_library(nixproto SHARED)
set_property(TARGET nixproto PROPERTY CXX_STANDARD 17)

set(HEADER_FILES
  $ENV{NIX_PROTO_SRCS}/libproto/worker.grpc.pb.h
  $ENV{NIX_PROTO_SRCS}/libproto/worker.pb.h
)

target_sources(nixproto
  PUBLIC
    ${HEADER_FILES}

  PRIVATE
    $ENV{NIX_PROTO_SRCS}/libproto/worker.grpc.pb.cc
    $ENV{NIX_PROTO_SRCS}/libproto/worker.pb.cc
)

target_link_libraries(nixproto
  gRPC::grpc++_reflection
  protobuf::libprotobuf
)

target_include_directories(nixproto
  INTERFACE $ENV{NIX_PROTO_SRCS}
)

INSTALL(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/nix/libproto)
INSTALL(TARGETS nixproto DESTINATION ${CMAKE_INSTALL_LIBDIR})
