Skip to content

Commit e071f87

Browse files
committed
Add an experimental nix-make file
To use it, just do (e.g.) "nix-build build.nix -A nix_env".
1 parent cac9eb3 commit e071f87

File tree

1 file changed

+169
-0
lines changed

1 file changed

+169
-0
lines changed

build.nix

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
with import <nix-make/lib>;
2+
with pkgs;
3+
4+
rec {
5+
6+
bin2c = link {
7+
objects = [ (compileC { main = ./src/bin2c/bin2c.c; }) ];
8+
programName = "bin2c";
9+
};
10+
11+
bsdiff = link {
12+
objects = [ (compileC { main = ./src/bsdiff-4.3/bsdiff.c; buildInputs = [ pkgs.bzip2 ]; }) ];
13+
programName = "bsdiff";
14+
buildInputs = [ pkgs.bzip2 ];
15+
flags = "-lbz2";
16+
};
17+
18+
bspatch = link {
19+
objects = [ (compileC { main = ./src/bsdiff-4.3/bspatch.c; buildInputs = [ pkgs.bzip2 ]; }) ];
20+
programName = "bspatch";
21+
buildInputs = [ pkgs.bzip2 ];
22+
flags = "-lbz2";
23+
};
24+
25+
libformat = makeLibrary {
26+
objects =
27+
map (fn: compileC {
28+
main = fn;
29+
localIncludePath = [ ./src ];
30+
})
31+
[ ./src/boost/format/format_implementation.cc
32+
./src/boost/format/free_funcs.cc
33+
./src/boost/format/parsing.cc
34+
];
35+
libraryName = "format";
36+
};
37+
38+
libutil = makeLibrary {
39+
objects =
40+
map (fn: compileC {
41+
main = fn;
42+
localIncludePath = [ ./src/libutil ./src ./. ];
43+
buildInputs = [ pkgs.openssl ];
44+
})
45+
[ ./src/libutil/util.cc
46+
./src/libutil/hash.cc
47+
./src/libutil/serialise.cc
48+
./src/libutil/archive.cc
49+
./src/libutil/xml-writer.cc
50+
./src/libutil/immutable.cc
51+
];
52+
libraryName = "util";
53+
};
54+
55+
libstore = makeLibrary {
56+
objects =
57+
map (fn: compileC {
58+
main = fn;
59+
localIncludePath = [ ./src/libstore ./src/libutil ./src ./. ];
60+
buildInputs = [ pkgs.sqlite ];
61+
cFlags = "-DNIX_STORE_DIR=\"/nix/store\" -DNIX_DATA_DIR=\"/home/eelco/Dev/nix/inst/share\" -DNIX_STATE_DIR=\"/nix/var/nix\" -DNIX_LOG_DIR=\"/foo\" -DNIX_CONF_DIR=\"/foo\" -DNIX_LIBEXEC_DIR=\"/foo\" -DNIX_BIN_DIR=\"/home/eelco/Dev/nix/inst/bin\"";
62+
})
63+
[ ./src/libstore/store-api.cc
64+
./src/libstore/local-store.cc
65+
./src/libstore/remote-store.cc
66+
./src/libstore/derivations.cc
67+
./src/libstore/build.cc
68+
./src/libstore/misc.cc
69+
./src/libstore/globals.cc
70+
./src/libstore/references.cc
71+
./src/libstore/pathlocks.cc
72+
./src/libstore/gc.cc
73+
./src/libstore/optimise-store.cc
74+
];
75+
libraryName = "store";
76+
};
77+
78+
libmain = makeLibrary {
79+
objects =
80+
map (fn: compileC {
81+
main = fn;
82+
localIncludePath = [ ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
83+
})
84+
[ ./src/libmain/shared.cc ];
85+
libraryName = "main";
86+
};
87+
88+
nix_hash = link {
89+
objects =
90+
map (fn: compileC {
91+
main = fn;
92+
localIncludePath = [ ./src/nix-hash ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
93+
})
94+
[ ./src/nix-hash/nix-hash.cc
95+
];
96+
libraries = [ libformat libutil libstore libmain ];
97+
buildInputs = [ pkgs.openssl pkgs.sqlite ];
98+
flags = "-lssl -lsqlite3 -lstdc++";
99+
programName = "nix-hash";
100+
};
101+
102+
nix_store = link {
103+
objects =
104+
map (fn: compileC {
105+
main = fn;
106+
localIncludePath = [ ./src/nix-store ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
107+
})
108+
[ ./src/nix-store/nix-store.cc
109+
./src/nix-store/dotgraph.cc
110+
./src/nix-store/xmlgraph.cc
111+
];
112+
libraries = [ libformat libutil libstore libmain ];
113+
buildInputs = [ pkgs.openssl pkgs.sqlite ];
114+
flags = "-lssl -lsqlite3 -lstdc++";
115+
programName = "nix-store";
116+
};
117+
118+
libexpr = makeLibrary {
119+
objects =
120+
map (fn: compileC {
121+
main = fn;
122+
localIncludePath = [ ./src/libexpr ./src/libstore ./src/libutil ./src ./. ];
123+
})
124+
[ ./src/libexpr/nixexpr.cc
125+
./src/libexpr/eval.cc
126+
./src/libexpr/primops.cc
127+
./src/libexpr/lexer-tab.cc
128+
./src/libexpr/parser-tab.cc
129+
./src/libexpr/get-drvs.cc
130+
./src/libexpr/attr-path.cc
131+
./src/libexpr/value-to-xml.cc
132+
./src/libexpr/common-opts.cc
133+
./src/libexpr/names.cc
134+
];
135+
libraryName = "expr";
136+
};
137+
138+
nix_instantiate = link {
139+
objects =
140+
map (fn: compileC {
141+
main = fn;
142+
localIncludePath = [ ./src/nix-instantiate ./src/libexpr ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
143+
})
144+
[ ./src/nix-instantiate/nix-instantiate.cc ];
145+
libraries = [ libformat libutil libstore libmain libexpr ];
146+
buildInputs = [ pkgs.openssl pkgs.sqlite ];
147+
flags = "-lssl -lsqlite3 -lstdc++";
148+
programName = "nix-instantiate";
149+
};
150+
151+
nix_env = link {
152+
objects =
153+
map (fn: compileC {
154+
main = fn;
155+
localIncludePath = [ ./src/nix-env ./src/libexpr ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
156+
})
157+
[ ./src/nix-env/nix-env.cc
158+
./src/nix-env/profiles.cc
159+
./src/nix-env/user-env.cc
160+
];
161+
libraries = [ libformat libutil libstore libmain libexpr ];
162+
buildInputs = [ pkgs.openssl pkgs.sqlite ];
163+
flags = "-lssl -lsqlite3 -lstdc++";
164+
programName = "nix-env";
165+
};
166+
167+
all = [ bsdiff bspatch nix_hash nix_store nix_instantiate nix_env ];
168+
169+
}

0 commit comments

Comments
 (0)