56 lines
1.7 KiB
Zig
56 lines
1.7 KiB
Zig
const std = @import("std");
|
|
|
|
fn mapgen(b: *std.build.Step) !void {
|
|
_ = b;
|
|
var alloc = std.heap.page_allocator;
|
|
|
|
const maps = [_][2][]const u8{
|
|
[2][]const u8{ "./maps/dungeon.json", "./src/maps/dungeon.zig" },
|
|
[2][]const u8{ "./maps/RPGmap.json", "./src/maps/overworld.zig" },
|
|
};
|
|
|
|
for (&maps) |map| {
|
|
var deno = std.ChildProcess.init(&.{ "deno", "run", "-A", "./src/tools/genmap.js", map[0], map[1] }, alloc);
|
|
try deno.spawn();
|
|
_ = try deno.wait();
|
|
var zig = std.ChildProcess.init(&.{ "zig", "fmt", map[1] }, alloc);
|
|
try zig.spawn();
|
|
_ = try zig.wait();
|
|
|
|
std.log.info("generated map {s}", .{map[1]});
|
|
}
|
|
}
|
|
|
|
fn release(b: *std.build.Step) !void {
|
|
_ = b;
|
|
var alloc = std.heap.page_allocator;
|
|
|
|
var rel = std.ChildProcess.init(&.{ "bash", "./release.sh" }, alloc);
|
|
try rel.spawn();
|
|
_ = try rel.wait();
|
|
|
|
std.log.info("generated release assets in dist/{s}", .{""});
|
|
}
|
|
|
|
pub fn build(b: *std.build.Builder) !void {
|
|
const map_step = b.step("mapgen", "Generate maps from Tiled JSON");
|
|
map_step.makeFn = mapgen;
|
|
|
|
const release_step = b.step("release", "Generate release binaries");
|
|
release_step.makeFn = release;
|
|
release_step.dependOn(map_step);
|
|
|
|
const mode = b.standardReleaseOptions();
|
|
const lib = b.addSharedLibrary("cart", "src/main.zig", .unversioned);
|
|
|
|
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;
|
|
|
|
lib.export_symbol_names = &[_][]const u8{ "start", "update" };
|
|
lib.install();
|
|
}
|