about summary refs log tree commit diff
path: root/third_party/nix/src
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/nix/src')
-rw-r--r--third_party/nix/src/CMakeLists.txt1
-rw-r--r--third_party/nix/src/proto/CMakeLists.txt37
2 files changed, 38 insertions, 0 deletions
diff --git a/third_party/nix/src/CMakeLists.txt b/third_party/nix/src/CMakeLists.txt
index 37ff3b54af..3f30b16725 100644
--- a/third_party/nix/src/CMakeLists.txt
+++ b/third_party/nix/src/CMakeLists.txt
@@ -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)
diff --git a/third_party/nix/src/proto/CMakeLists.txt b/third_party/nix/src/proto/CMakeLists.txt
new file mode 100644
index 0000000000..726ca8742f
--- /dev/null
+++ b/third_party/nix/src/proto/CMakeLists.txt
@@ -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})