zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 97f6b6093c082c232c0769d2e82e7503c7891248 (tree)
parent 2c6827064cf35be261790bfec29f88244c387c06
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Sun, 30 Apr 2017 20:29:33 -0400

zig build can build and install static C libraries

See #332

Diffstat:
Mstd/build.zig | 21+++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/std/build.zig b/std/build.zig @@ -1032,7 +1032,7 @@ pub const CLibExeObjStep = struct { pub fn createSharedLibrary(builder: &Builder, name: []const u8, version: &const Version) -> &CLibExeObjStep { const self = %%builder.allocator.create(CLibExeObjStep); - *self = init(builder, name, Kind.Lib, builder.version(0, 0, 0), false); + *self = init(builder, name, Kind.Lib, version, false); return self; } @@ -1238,7 +1238,24 @@ pub const CLibExeObjStep = struct { } if (self.static) { - debug.panic("TODO static library"); + // ar + %%cc_args.resize(0); + %%cc_args.append("qc"); + + const output_path = builder.pathFromRoot(self.getOutputPath()); + %%cc_args.append(output_path); + + for (self.object_files.toSliceConst()) |object_file| { + %%cc_args.append(builder.pathFromRoot(object_file)); + } + + %return builder.spawnChild("ar", cc_args.toSliceConst()); + + // ranlib + %%cc_args.resize(0); + %%cc_args.append(output_path); + + %return builder.spawnChild("ranlib", cc_args.toSliceConst()); } else { %%cc_args.resize(0);