╭ build.zig ────────────────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │http│ ssh │ │ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯
1 const std = @import("std"); 2 3 pub fn build(b: *std.Build) void { 4 const target = b.standardTargetOptions(.{}); 5 const optimize = b.standardOptimizeOption(.{}); 6 7 // main 8 const install_main_exe = blk: { 9 const exe = b.addExecutable(.{ 10 .name = "haxy", 11 .root_module = b.createModule(.{ 12 .root_source_file = b.path("src/main.zig"), 13 .target = target, 14 .optimize = optimize, 15 }), 16 }); 17 exe.root_module.addImport("xit", b.dependency("xit", .{}).module("xit")); 18 19 const install_exe = b.addInstallArtifact(exe, .{}); 20 b.getInstallStep().dependOn(&install_exe.step); 21 22 const run_cmd = b.addRunArtifact(exe); 23 24 run_cmd.step.dependOn(b.getInstallStep()); 25 26 if (b.args) |args| { 27 run_cmd.addArgs(args); 28 } 29 30 const run_step = b.step("run", "Run the app"); 31 run_step.dependOn(&run_cmd.step); 32 33 break :blk install_exe; 34 }; 35 36 // wasm 37 { 38 const wasm_target = b.resolveTargetQuery(.{ 39 .cpu_arch = .wasm32, 40 .os_tag = .freestanding, 41 }); 42 43 const exe = b.addExecutable(.{ 44 .name = "haxy", 45 .root_module = b.createModule(.{ 46 .root_source_file = b.path("src/main_wasm.zig"), 47 .target = wasm_target, 48 .optimize = .ReleaseSmall, 49 }), 50 }); 51 exe.root_module.addImport("xit", b.dependency("xit", .{}).module("xit")); 52 53 exe.global_base = 6560; 54 exe.entry = .disabled; 55 exe.rdynamic = true; 56 exe.import_memory = false; 57 exe.export_memory = true; 58 exe.stack_size = std.wasm.page_size; 59 60 const initial_pages = 16; 61 const max_pages = 256; 62 exe.initial_memory = std.wasm.page_size * initial_pages; 63 exe.max_memory = std.wasm.page_size * max_pages; 64 65 b.installArtifact(exe); 66 67 const wasm_step = b.step("wasm", "Generate the wasm"); 68 wasm_step.dependOn(&exe.step); 69 wasm_step.dependOn(b.getInstallStep()); 70 } 71 72 // module for using haxy as a library 73 // (the commands below consume haxy this way) 74 const haxy = b.addModule("haxy", .{ 75 .root_source_file = b.path("src/lib.zig"), 76 }); 77 haxy.addImport("xit", b.dependency("xit", .{}).module("xit")); 78 79 // test 80 { 81 const unit_tests = b.addTest(.{ 82 .root_module = b.createModule(.{ 83 .root_source_file = b.path("src/test.zig"), 84 .target = target, 85 .optimize = optimize, 86 }), 87 }); 88 unit_tests.root_module.addImport("haxy", haxy); 89 90 const run_unit_tests = b.addRunArtifact(unit_tests); 91 run_unit_tests.has_side_effects = true; 92 const test_step = b.step("test", "Run unit tests"); 93 test_step.dependOn(&install_main_exe.step); 94 test_step.dependOn(&run_unit_tests.step); 95 } 96 97 // testnet 98 { 99 const unit_tests = b.addTest(.{ 100 .root_module = b.createModule(.{ 101 .root_source_file = b.path("src/testnet.zig"), 102 .target = target, 103 .optimize = optimize, 104 }), 105 }); 106 unit_tests.root_module.addImport("haxy", haxy); 107 108 const run_unit_tests = b.addRunArtifact(unit_tests); 109 run_unit_tests.has_side_effects = true; 110 const test_step = b.step("testnet", "Run network unit tests"); 111 test_step.dependOn(&install_main_exe.step); 112 test_step.dependOn(&run_unit_tests.step); 113 } 114 } 115