blob: 246377cc9b8d4f26687b8d72026c9b26b36958c1 (
plain) (
tree)
|
|
# -*- mode: cmake; -*-
add_library(nixstore SHARED)
add_library(nixstoremock SHARED)
set_property(TARGET nixstore PROPERTY CXX_STANDARD 17)
set_property(TARGET nixstoremock PROPERTY CXX_STANDARD 17)
include_directories(${PROJECT_BINARY_DIR}) # for config.h
target_include_directories(nixstore PUBLIC "${nix_SOURCE_DIR}/src")
target_include_directories(nixstoremock PUBLIC "${nix_SOURCE_DIR}/src")
# The database schema is stored in schema.sql, but needs to be
# available during the build as static data.
#
# These commands create an includeable source-file out of it.
file(READ "schema.sql" NIX_SCHEMA)
string(CONFIGURE
"#pragma once
namespace nix {
constexpr char kNixSqlSchema[] = R\"(${NIX_SCHEMA})\";
}"
NIX_SCHEMA_GEN)
file(WRITE ${PROJECT_BINARY_DIR}/generated/schema.sql.hh "${NIX_SCHEMA_GEN}")
set(HEADER_FILES
binary-cache-store.hh
builtins.hh
crypto.hh
derivations.hh
download.hh
fs-accessor.hh
globals.hh
local-store.hh
machines.hh
nar-accessor.hh
nar-info-disk-cache.hh
nar-info.hh
parsed-derivations.hh
pathlocks.hh
profiles.hh
references.hh
remote-fs-accessor.hh
remote-store.hh
rpc-store.hh
s3-binary-cache-store.hh
s3.hh
serve-protocol.hh
sqlite.hh
ssh.hh
store-api.hh
worker-protocol.hh
)
target_sources(nixstore
PUBLIC
${HEADER_FILES}
PRIVATE
${PROJECT_BINARY_DIR}/generated/schema.sql.hh
binary-cache-store.cc
build.cc
crypto.cc
derivations.cc
download.cc
export-import.cc
gc.cc
globals.cc
http-binary-cache-store.cc
legacy-ssh-store.cc
local-binary-cache-store.cc
local-fs-store.cc
local-store.cc
machines.cc
misc.cc
nar-accessor.cc
nar-info.cc
nar-info-disk-cache.cc
optimise-store.cc
parsed-derivations.cc
pathlocks.cc
profiles.cc
references.cc
remote-fs-accessor.cc
remote-store.cc
rpc-store.cc
s3-binary-cache-store.cc
sqlite.cc
ssh.cc
ssh-store.cc
store-api.cc
builtins/buildenv.cc
builtins/fetchurl.cc
)
target_link_libraries(nixstore
nixproto
nixutil
CURL::libcurl
SQLite::SQLite3
absl::strings
glog
seccomp
sodium
)
target_sources(nixstoremock
PUBLIC
mock-binary-cache-store.hh
PRIVATE
mock-binary-cache-store.cc
)
target_link_libraries(nixstoremock
nixstore
absl::btree
absl::flat_hash_map
glog
)
configure_file("nix-store.pc.in" "${PROJECT_BINARY_DIR}/nix-store.pc" @ONLY)
INSTALL(FILES "${PROJECT_BINARY_DIR}/nix-store.pc" DESTINATION "${PKGCONFIG_INSTALL_DIR}")
INSTALL(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/nix/libstore)
INSTALL(TARGETS nixstore nixstoremock DESTINATION ${CMAKE_INSTALL_LIBDIR})
|