-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefault.nix
95 lines (80 loc) · 2.77 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
let
capnproto_overlay = (self: super: {
capnproto = super.capnproto.overrideAttrs (prev: {
version = "git";
src = self.fetchFromGitHub {
owner = "capnproto";
repo = "capnproto";
rev = "c264e357d6f0304d04fb1267066d7d6ec7436bb3";
sha256 = "sha256-p8E74KoxD9wZ1+2qpalfF/SQs1Axeq4pNWoX+BIW18I=";
};
});
});
in {
pkgs ? import <nixpkgs> {
#config.replaceStdenv = { pkgs }: pkgs.clangStdenv;
#overlays = [capnproto_overlay];
}
, stdenv ? pkgs.stdenv
, debug ? true
}:
let
name = "sqlite-capnp";
add-links = ''
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++
mkdir --parents src/capnp/compat src/capnp/testdata
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/compat/byte-stream.capnp" src/capnp/compat/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/compat/byte-stream.h" src/capnp/compat/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/compat/byte-stream.c++" src/capnp/compat/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/compat/http-over-capnp.capnp" src/capnp/compat/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/compat/http-over-capnp.h" src/capnp/compat/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/compat/http-over-capnp.c++" src/capnp/compat/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/test.capnp" src/capnp/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/c++.capnp" src/capnp/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/testdata/packed" src/capnp/testdata/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/testdata/short.txt" src/capnp/testdata/
ln --symbolic --force "${pkgs.capnproto.src}/c++/src/capnp/testdata/binary" src/capnp/testdata/
'';
in
stdenv.mkDerivation {
inherit name;
src = ./.;
buildInputs = with pkgs; [
capnproto
openssl
sqlite.dev
zlib
];
nativeBuildInputs = with pkgs; [
clang-tools
ekam
pkg-config
gtest
which
];
propagatedBuildInputs = with pkgs; [
];
CAPNPC_FLAGS = with pkgs; [
"-I${capnproto}/include"
];
shellHook = add-links;
buildPhase = ''
${add-links}
make ${if debug then "debug" else "release"}
'';
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
'';
}