update zig build (v0.13.0) (#492)

This commit is contained in:
Matheus C. França
2024-08-02 22:44:35 +03:00
committed by GitHub
parent 139076a98b
commit d755959eb3
2 changed files with 78 additions and 32 deletions
+1
View File
@@ -11,3 +11,4 @@ __pycache__/
.settings .settings
.vscode .vscode
.DS_Store .DS_Store
*zig-*/
+77 -32
View File
@@ -1,39 +1,84 @@
const std = @import("std"); const std = @import("std");
pub fn build(b: *std.build.Builder) !void { pub fn build(b: *std.Build) !void {
const target = b.standardTargetOptions(.{}); const target = b.standardTargetOptions(.{});
const mode = b.standardReleaseOptions(); const optimize = b.standardOptimizeOption(.{});
const wasm3 = b.addExecutable("wasm3", null); const libm3_only = b.option(bool, "libm3", "Build libwasm3 only") orelse false;
wasm3.setTarget(target);
wasm3.setBuildMode(mode);
wasm3.install();
wasm3.linkLibC();
if (target.getCpuArch() == .wasm32 and target.getOsTag() == .wasi) { const libwasm3 = b.addStaticLibrary(.{
wasm3.linkSystemLibrary("wasi-emulated-process-clocks"); .name = "m3",
} .target = target,
.optimize = optimize,
wasm3.addIncludePath("source");
wasm3.addCSourceFiles(&.{
"source/m3_api_libc.c",
"source/m3_api_meta_wasi.c",
"source/m3_api_tracer.c",
"source/m3_api_uvwasi.c",
"source/m3_api_wasi.c",
"source/m3_bind.c",
"source/m3_code.c",
"source/m3_compile.c",
"source/m3_core.c",
"source/m3_env.c",
"source/m3_exec.c",
"source/m3_function.c",
"source/m3_info.c",
"source/m3_module.c",
"source/m3_parse.c",
"platforms/app/main.c",
}, &.{
"-Dd_m3HasWASI",
"-fno-sanitize=undefined", // TODO investigate UB sites in the codebase, then delete this line.
}); });
libwasm3.root_module.sanitize_c = false; // fno-sanitize=undefined
libwasm3.defineCMacro("d_m3HasTracer", null);
if (libwasm3.rootModuleTarget().isWasm()) {
if (libwasm3.rootModuleTarget().os.tag == .wasi) {
libwasm3.defineCMacro("d_m3HasWASI", null);
libwasm3.linkSystemLibrary("wasi-emulated-process-clocks");
}
}
libwasm3.addIncludePath(b.path("source"));
libwasm3.addCSourceFiles(.{
.files = &.{
"source/m3_api_libc.c",
"source/extensions/m3_extensions.c",
"source/m3_api_meta_wasi.c",
"source/m3_api_tracer.c",
"source/m3_api_uvwasi.c",
"source/m3_api_wasi.c",
"source/m3_bind.c",
"source/m3_code.c",
"source/m3_compile.c",
"source/m3_core.c",
"source/m3_env.c",
"source/m3_exec.c",
"source/m3_function.c",
"source/m3_info.c",
"source/m3_module.c",
"source/m3_parse.c",
},
.flags = if (libwasm3.rootModuleTarget().isWasm())
&cflags ++ [_][]const u8{
"-Xclang",
"-target-feature",
"-Xclang",
"+tail-call",
}
else
&cflags,
});
libwasm3.linkSystemLibrary("m");
libwasm3.linkLibC();
if (!libm3_only) {
const wasm3 = b.addExecutable(.{
.name = "wasm3",
.target = target,
.optimize = optimize,
});
for (libwasm3.root_module.include_dirs.items) |dir| {
wasm3.addIncludePath(dir.path);
}
wasm3.addCSourceFile(.{
.file = .{ .cwd_relative = "platforms/app/main.c" },
.flags = &cflags,
});
wasm3.linkLibrary(libwasm3);
b.installArtifact(wasm3);
} else b.installArtifact(libwasm3);
} }
const cflags = [_][]const u8{
"-Wall",
"-Wextra",
"-Wpedantic",
"-Wparentheses",
"-Wundef",
"-Wpointer-arith",
"-Wstrict-aliasing=2",
"-std=gnu11",
};