aboutsummaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
authorJulien Dessaux2022-09-21 23:19:45 +0200
committerJulien Dessaux2022-09-21 23:19:45 +0200
commit8f76ba782669bc986a5e450e5a50ac84232c1323 (patch)
tree6c3b0b55437a453dabfe4f1ea5ba1d6a702dba10 /build.zig
parentFixed game reset (diff)
downloadgrenade-brothers-8f76ba782669bc986a5e450e5a50ac84232c1323.tar.gz
grenade-brothers-8f76ba782669bc986a5e450e5a50ac84232c1323.tar.bz2
grenade-brothers-8f76ba782669bc986a5e450e5a50ac84232c1323.zip
Began rewriting the game as a wasm4 cartridge
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig61
1 files changed, 11 insertions, 50 deletions
diff --git a/build.zig b/build.zig
index f350b17..7431b33 100644
--- a/build.zig
+++ b/build.zig
@@ -1,57 +1,18 @@
const std = @import("std");
-pub fn build(b: *std.build.Builder) void {
- // Standard target options allows the person running `zig build` to choose
- // what target to build for. Here we do not override the defaults, which
- // means any target is allowed, and the default is native. Other options
- // for restricting supported target set are available.
- const target = b.standardTargetOptions(.{});
-
- // Standard release options allow the person running `zig build` to select
- // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
+pub fn build(b: *std.build.Builder) !void {
const mode = b.standardReleaseOptions();
+ const lib = b.addSharedLibrary("cart", "src/main.zig", .unversioned);
- const exe = b.addExecutable("grenade-brothers", "src/main.zig");
- exe.addPackagePath("spoon", "lib/spoon/import.zig");
- exe.setTarget(target);
- exe.setBuildMode(mode);
- exe.install();
-
- const run_cmd = exe.run();
- run_cmd.step.dependOn(b.getInstallStep());
- if (b.args) |args| {
- run_cmd.addArgs(args);
- }
-
- const coverage = b.option(bool, "test-coverage", "Generate test coverage") orelse false;
-
- const run_step = b.step("run", "Run the app");
- run_step.dependOn(&run_cmd.step);
-
- const exe_tests = b.addTest("src/main.zig");
- exe_tests.addPackagePath("spoon", "lib/spoon/import.zig");
- exe_tests.setTarget(target);
- exe_tests.setBuildMode(mode);
+ lib.setBuildMode(mode);
+ lib.setTarget(.{ .cpu_arch = .wasm32, .os_tag = .freestanding });
+ lib.import_memory = true;
+ lib.initial_memory = 65536;
+ lib.max_memory = 65536;
+ lib.stack_size = 14752;
- // Code coverage with kcov, we need an allocator for the setup
- var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){};
- defer _ = general_purpose_allocator.deinit();
- const gpa = general_purpose_allocator.allocator();
- // We want to exclude the $HOME/.zig path
- const home = std.process.getEnvVarOwned(gpa, "HOME") catch "";
- defer gpa.free(home);
- const exclude = std.fmt.allocPrint(gpa, "--exclude-path={s}/.zig/,/usr", .{home}) catch "";
- defer gpa.free(exclude);
- if (coverage) {
- exe_tests.setExecCmd(&[_]?[]const u8{
- "kcov",
- exclude,
- //"--path-strip-level=3", // any kcov flags can be specified here
- "kcov-output", // output dir for kcov
- null, // to get zig to use the --test-cmd-bin flag
- });
- }
+ // Export WASM-4 symbols
+ lib.export_symbol_names = &[_][]const u8{ "start", "update" };
- const test_step = b.step("test", "Run unit tests");
- test_step.dependOn(&exe_tests.step);
+ lib.install();
}