feat(3p/nix): Add protobuf & gRPC dependencies and generate sources
Adds dependencies on the gRPC & protobuf libraries, and implements Nix code to generate the C++ sources from the included proto definitions. This is theoretically supported via CMake, but practically doesn't work and I don't care to debug why. Doing it like this lets us instead add a CMake library target for our proto definitions based on the sources generated by Nix. Pros: * no need to deal with the gRPC CMake mess * it works! Cons: * iteration requires nix-shell restart Change-Id: Ie1fe9807fc96c49cb8f7161ba59d093456062b15 Reviewed-on: https://cl.tvl.fyi/c/depot/+/927 Tested-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi>
This commit is contained in:
parent
a6da980a0b
commit
0064e55486
4 changed files with 62 additions and 2 deletions
1
third_party/nix/src/CMakeLists.txt
vendored
1
third_party/nix/src/CMakeLists.txt
vendored
|
|
@ -5,6 +5,7 @@
|
|||
# this location and this setup mimics that (with the exception of the
|
||||
# various Nix libraries).
|
||||
|
||||
add_subdirectory(proto)
|
||||
add_subdirectory(libutil)
|
||||
add_subdirectory(libstore)
|
||||
add_subdirectory(libmain)
|
||||
|
|
|
|||
37
third_party/nix/src/proto/CMakeLists.txt
vendored
Normal file
37
third_party/nix/src/proto/CMakeLists.txt
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# -*- 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})
|
||||
Loading…
Add table
Add a link
Reference in a new issue