-
Notifications
You must be signed in to change notification settings - Fork 0
/
default.nix
71 lines (55 loc) · 1.29 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{
pkgs ? import <nixpkgs> {}
, debug ? true
}:
let
name = "sdcap";
create-ekam-rules-link = ''
ln --symbolic --force --target-directory=src \
"${pkgs.ekam.src}/src/ekam/rules"
mkdir --parents src/compiler
ln --symbolic --force "${pkgs.capnproto}/bin/capnp" src/compiler/capnp
ln --symbolic --force "${pkgs.capnproto}/bin/capnpc-c++" src/compiler/capnpc-c++
'';
in
pkgs.stdenv.mkDerivation {
inherit name;
src = ./.;
buildInputs = with pkgs; [
capnproto
dbus
systemd
zlib
];
nativeBuildInputs = with pkgs; [
ccache
clang-tools
ekam
gtest
which
];
propagatedBuildInputs = with pkgs; [
];
CAPNPC_FLAGS = with pkgs; [
"-I${capnproto}/include"
];
shellHook = create-ekam-rules-link;
buildPhase = ''
${create-ekam-rules-link}
make ${if debug then "debug" else "release"}
'';
# Pointless for static libraries, but uncomment if we ever move to a shared
# object
#separateDebugInfo = true;
installPhase = ''
install --verbose -D --mode=644 \
--target-directory="''${!outputLib}/lib" \
lib${name}.a
install --verbose -D --mode=644 \
--target-directory="''${!outputInclude}/include/${name}" \
src/*.capnp \
src/*.capnp.h \
tmp/*.capnp.h \
src/*.h
'';
}