@@ -32,15 +32,18 @@ pub fn build(b: &Builder) {
32
32
docs_step .dependOn (& docgen_cmd .step );
33
33
docs_step .dependOn (& docgen_home_cmd .step );
34
34
35
- var exe = b .addExecutable ("zig" , "src-self-hosted/main.zig" );
36
- exe .setBuildMode (mode );
37
- exe .linkSystemLibrary ("c" );
38
- dependOnLib (exe , findLLVM (b ));
35
+ if (findLLVM (b )) | llvm | {
36
+ var exe = b .addExecutable ("zig" , "src-self-hosted/main.zig" );
37
+ exe .setBuildMode (mode );
38
+ exe .linkSystemLibrary ("c" );
39
+ dependOnLib (exe , llvm );
39
40
40
- b .default_step .dependOn (& exe .step );
41
- b .default_step .dependOn (docs_step );
41
+ b .default_step .dependOn (& exe .step );
42
+ b .default_step .dependOn (docs_step );
42
43
43
- b .installArtifact (exe );
44
+ b .installArtifact (exe );
45
+ installStdLib (b );
46
+ }
44
47
45
48
46
49
const test_filter = b .option ([]const u8 , "test-filter" , "Skip tests that do not match filter" );
@@ -91,7 +94,7 @@ const LibraryDep = struct {
91
94
includes : ArrayList ([]const u8 ),
92
95
};
93
96
94
- fn findLLVM (b : & Builder ) - > LibraryDep {
97
+ fn findLLVM (b : & Builder ) - > ? LibraryDep {
95
98
const llvm_config_exe = b .findProgram (
96
99
[][]const u8 {"llvm-config-5.0" , "llvm-config" },
97
100
[][]const u8 {
@@ -102,7 +105,8 @@ fn findLLVM(b: &Builder) -> LibraryDep {
102
105
"C:/Libraries/llvm-5.0.0/bin" ,
103
106
}) %% | err |
104
107
{
105
- std .debug .panic ("unable to find llvm-config: {}\n " , err );
108
+ warn ("unable to find llvm-config: {}\n " , err );
109
+ return null ;
106
110
};
107
111
const libs_output = b .exec ([][]const u8 {llvm_config_exe , "--libs" , "--system-libs" });
108
112
const includes_output = b .exec ([][]const u8 {llvm_config_exe , "--includedir" });
@@ -143,3 +147,126 @@ fn findLLVM(b: &Builder) -> LibraryDep {
143
147
}
144
148
return result ;
145
149
}
150
+
151
+ pub fn installStdLib (b : & Builder ) {
152
+ const stdlib_files = []const []const u8 {
153
+ "array_list.zig" ,
154
+ "base64.zig" ,
155
+ "buf_map.zig" ,
156
+ "buf_set.zig" ,
157
+ "buffer.zig" ,
158
+ "build.zig" ,
159
+ "c/darwin.zig" ,
160
+ "c/index.zig" ,
161
+ "c/linux.zig" ,
162
+ "c/windows.zig" ,
163
+ "cstr.zig" ,
164
+ "debug.zig" ,
165
+ "dwarf.zig" ,
166
+ "elf.zig" ,
167
+ "empty.zig" ,
168
+ "endian.zig" ,
169
+ "fmt/errol/enum3.zig" ,
170
+ "fmt/errol/index.zig" ,
171
+ "fmt/errol/lookup.zig" ,
172
+ "fmt/index.zig" ,
173
+ "hash_map.zig" ,
174
+ "heap.zig" ,
175
+ "index.zig" ,
176
+ "io.zig" ,
177
+ "linked_list.zig" ,
178
+ "math/acos.zig" ,
179
+ "math/acosh.zig" ,
180
+ "math/asin.zig" ,
181
+ "math/asinh.zig" ,
182
+ "math/atan.zig" ,
183
+ "math/atan2.zig" ,
184
+ "math/atanh.zig" ,
185
+ "math/cbrt.zig" ,
186
+ "math/ceil.zig" ,
187
+ "math/copysign.zig" ,
188
+ "math/cos.zig" ,
189
+ "math/cosh.zig" ,
190
+ "math/exp.zig" ,
191
+ "math/exp2.zig" ,
192
+ "math/expm1.zig" ,
193
+ "math/expo2.zig" ,
194
+ "math/fabs.zig" ,
195
+ "math/floor.zig" ,
196
+ "math/fma.zig" ,
197
+ "math/frexp.zig" ,
198
+ "math/hypot.zig" ,
199
+ "math/ilogb.zig" ,
200
+ "math/index.zig" ,
201
+ "math/inf.zig" ,
202
+ "math/isfinite.zig" ,
203
+ "math/isinf.zig" ,
204
+ "math/isnan.zig" ,
205
+ "math/isnormal.zig" ,
206
+ "math/ln.zig" ,
207
+ "math/log.zig" ,
208
+ "math/log10.zig" ,
209
+ "math/log1p.zig" ,
210
+ "math/log2.zig" ,
211
+ "math/modf.zig" ,
212
+ "math/nan.zig" ,
213
+ "math/pow.zig" ,
214
+ "math/round.zig" ,
215
+ "math/scalbn.zig" ,
216
+ "math/signbit.zig" ,
217
+ "math/sin.zig" ,
218
+ "math/sinh.zig" ,
219
+ "math/sqrt.zig" ,
220
+ "math/tan.zig" ,
221
+ "math/tanh.zig" ,
222
+ "math/trunc.zig" ,
223
+ "mem.zig" ,
224
+ "net.zig" ,
225
+ "os/child_process.zig" ,
226
+ "os/darwin.zig" ,
227
+ "os/darwin_errno.zig" ,
228
+ "os/get_user_id.zig" ,
229
+ "os/index.zig" ,
230
+ "os/linux.zig" ,
231
+ "os/linux_errno.zig" ,
232
+ "os/linux_i386.zig" ,
233
+ "os/linux_x86_64.zig" ,
234
+ "os/path.zig" ,
235
+ "os/windows/error.zig" ,
236
+ "os/windows/index.zig" ,
237
+ "os/windows/util.zig" ,
238
+ "rand.zig" ,
239
+ "sort.zig" ,
240
+ "special/bootstrap.zig" ,
241
+ "special/bootstrap_lib.zig" ,
242
+ "special/build_file_template.zig" ,
243
+ "special/build_runner.zig" ,
244
+ "special/builtin.zig" ,
245
+ "special/compiler_rt/aulldiv.zig" ,
246
+ "special/compiler_rt/aullrem.zig" ,
247
+ "special/compiler_rt/comparetf2.zig" ,
248
+ "special/compiler_rt/fixuint.zig" ,
249
+ "special/compiler_rt/fixunsdfdi.zig" ,
250
+ "special/compiler_rt/fixunsdfsi.zig" ,
251
+ "special/compiler_rt/fixunsdfti.zig" ,
252
+ "special/compiler_rt/fixunssfdi.zig" ,
253
+ "special/compiler_rt/fixunssfsi.zig" ,
254
+ "special/compiler_rt/fixunssfti.zig" ,
255
+ "special/compiler_rt/fixunstfdi.zig" ,
256
+ "special/compiler_rt/fixunstfsi.zig" ,
257
+ "special/compiler_rt/fixunstfti.zig" ,
258
+ "special/compiler_rt/index.zig" ,
259
+ "special/compiler_rt/udivmod.zig" ,
260
+ "special/compiler_rt/udivmoddi4.zig" ,
261
+ "special/compiler_rt/udivmodti4.zig" ,
262
+ "special/compiler_rt/udivti3.zig" ,
263
+ "special/compiler_rt/umodti3.zig" ,
264
+ "special/panic.zig" ,
265
+ "special/test_runner.zig" ,
266
+ };
267
+ for (stdlib_files ) | stdlib_file | {
268
+ const src_path = %% os .path .join (b .allocator , "std" , stdlib_file );
269
+ const dest_path = %% os .path .join (b .allocator , "lib" , "zig" , "std" , stdlib_file );
270
+ b .installFile (src_path , dest_path );
271
+ }
272
+ }
0 commit comments