aboutsummaryrefslogtreecommitdiff
path: root/std/build.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-05-16 19:40:12 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-05-29 20:32:27 -0400
commit01a4897da54d6c789b0a5232188bbafbbd660946 (patch)
tree274bf44d509e19f832a1f5b8ab7048ce5ba64e66 /std/build.zig
parent4188faeac56d9c022fa33449aa4283b1f55395cf (diff)
downloadzig-01a4897da54d6c789b0a5232188bbafbbd660946.tar.gz
zig-01a4897da54d6c789b0a5232188bbafbbd660946.zip
improve the libc of wasm32-freestanding target
* introduce wasm32-freestanding-musl .h files to fix conflicts with stddef.h and errno.h * fix an issue with zig build system regarding installation of webassembly libraries * add implementations to zig's libc: - strcmp - strncmp - strerror - strlen See #514
Diffstat (limited to 'std/build.zig')
-rw-r--r--std/build.zig20
1 files changed, 19 insertions, 1 deletions
diff --git a/std/build.zig b/std/build.zig
index d427521251..363890bd4b 100644
--- a/std/build.zig
+++ b/std/build.zig
@@ -877,6 +877,13 @@ pub const Target = union(enum) {
};
}
+ pub fn getArch(self: Target) builtin.Arch {
+ switch (self) {
+ Target.Native => return builtin.arch,
+ Target.Cross => |t| return t.arch,
+ }
+ }
+
pub fn isDarwin(self: Target) bool {
return switch (self.getOs()) {
.ios, .macosx, .watchos, .tvos => true,
@@ -891,6 +898,13 @@ pub const Target = union(enum) {
};
}
+ pub fn isWasm(self: Target) bool {
+ return switch (self.getArch()) {
+ .wasm32, .wasm64 => true,
+ else => false,
+ };
+ }
+
pub fn isFreeBSD(self: Target) bool {
return switch (self.getOs()) {
.freebsd => true,
@@ -1080,7 +1094,11 @@ pub const LibExeObjStep = struct {
self.out_filename = self.builder.fmt("{}.lib", self.name);
},
else => {
- self.out_filename = self.builder.fmt("lib{}.a", self.name);
+ if (self.target.isWasm()) {
+ self.out_filename = self.builder.fmt("{}.wasm", self.name);
+ } else {
+ self.out_filename = self.builder.fmt("lib{}.a", self.name);
+ }
},
}
self.out_lib_filename = self.out_filename;