tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

build.zig (8064B)


      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     const reducer_tests = b.addTest(.{ .root_module = b.createModule(.{
      8         .root_source_file = b.path("src/reduce_test.zig"),
      9         .target = target,
     10         .optimize = optimize,
     11     }) });
     12     const test_step = b.step("test", "Run reducer, collection and demand tests");
     13     test_step.dependOn(&b.addRunArtifact(reducer_tests).step);
     14 
     15     const preview_tests = b.addTest(.{ .root_module = b.createModule(.{
     16         .root_source_file = b.path("src/preview.zig"),
     17         .target = target,
     18         .optimize = optimize,
     19     }) });
     20     test_step.dependOn(&b.addRunArtifact(preview_tests).step);
     21 
     22     const v2_protocol_tests = b.addTest(.{ .root_module = b.createModule(.{
     23         .root_source_file = b.path("src/io_v2_protocol.zig"),
     24         .target = target,
     25         .optimize = optimize,
     26     }) });
     27     test_step.dependOn(&b.addRunArtifact(v2_protocol_tests).step);
     28 
     29     const v2_resource_tests = b.addTest(.{ .root_module = b.createModule(.{
     30         .root_source_file = b.path("src/io_v2_resources.zig"),
     31         .target = target,
     32         .optimize = optimize,
     33     }) });
     34     test_step.dependOn(&b.addRunArtifact(v2_resource_tests).step);
     35 
     36     const v2_task_tests = b.addTest(.{ .root_module = b.createModule(.{
     37         .root_source_file = b.path("src/io_v2_tasks.zig"),
     38         .target = target,
     39         .optimize = optimize,
     40     }) });
     41     test_step.dependOn(&b.addRunArtifact(v2_task_tests).step);
     42 
     43     const v2_core_tests = b.addTest(.{ .root_module = b.createModule(.{
     44         .root_source_file = b.path("src/io_v2_core.zig"),
     45         .target = target,
     46         .optimize = optimize,
     47     }) });
     48     test_step.dependOn(&b.addRunArtifact(v2_core_tests).step);
     49 
     50     const v2_files_mod = b.createModule(.{
     51         .root_source_file = b.path("src/io_v2_files.zig"),
     52         .target = target,
     53         .optimize = optimize,
     54     });
     55     v2_files_mod.link_libc = true;
     56     v2_files_mod.linkSystemLibrary("uv", .{});
     57     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_files_mod })).step);
     58 
     59     const v2_file_host_mod = b.createModule(.{
     60         .root_source_file = b.path("src/io_v2_file_host.zig"),
     61         .target = target,
     62         .optimize = optimize,
     63     });
     64     v2_file_host_mod.link_libc = true;
     65     v2_file_host_mod.linkSystemLibrary("uv", .{});
     66     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_file_host_mod })).step);
     67 
     68     const v2_native_mod = b.createModule(.{
     69         .root_source_file = b.path("src/io_v2_native.zig"),
     70         .target = target,
     71         .optimize = optimize,
     72     });
     73     v2_native_mod.link_libc = true;
     74     v2_native_mod.linkSystemLibrary("uv", .{});
     75     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_native_mod })).step);
     76 
     77     const v2_paths_mod = b.createModule(.{
     78         .root_source_file = b.path("src/io_v2_paths.zig"),
     79         .target = target,
     80         .optimize = optimize,
     81     });
     82     v2_paths_mod.link_libc = true;
     83     v2_paths_mod.linkSystemLibrary("uv", .{});
     84     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_paths_mod })).step);
     85 
     86     const v2_digest_mod = b.createModule(.{
     87         .root_source_file = b.path("src/io_v2_digest.zig"),
     88         .target = target,
     89         .optimize = optimize,
     90     });
     91     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_digest_mod })).step);
     92 
     93     const v2_stage_mod = b.createModule(.{
     94         .root_source_file = b.path("src/io_v2_stage_state.zig"),
     95         .target = target,
     96         .optimize = optimize,
     97     });
     98     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_stage_mod })).step);
     99 
    100     const v2_native_stage_mod = b.createModule(.{
    101         .root_source_file = b.path("src/io_v2_stage.zig"),
    102         .target = target,
    103         .optimize = optimize,
    104     });
    105     v2_native_stage_mod.link_libc = true;
    106     v2_native_stage_mod.linkSystemLibrary("uv", .{});
    107     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_native_stage_mod })).step);
    108 
    109     const v2_utf8_mod = b.createModule(.{
    110         .root_source_file = b.path("src/io_v2_utf8.zig"),
    111         .target = target,
    112         .optimize = optimize,
    113     });
    114     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_utf8_mod })).step);
    115 
    116     const v2_probe_tests = b.createModule(.{
    117         .root_source_file = b.path("src/io_v2_core_probe.zig"),
    118         .target = target,
    119         .optimize = optimize,
    120     });
    121     test_step.dependOn(&b.addRunArtifact(b.addTest(.{ .root_module = v2_probe_tests })).step);
    122 
    123     const core_probe = b.addExecutable(.{ .name = "io-v2-core-probe", .root_module = b.createModule(.{
    124         .root_source_file = b.path("src/io_v2_core_probe.zig"),
    125         .target = target,
    126         .optimize = optimize,
    127     }) });
    128     b.installArtifact(core_probe);
    129 
    130     const file_probe_mod = b.createModule(.{
    131         .root_source_file = b.path("src/io_v2_file_probe.zig"),
    132         .target = target,
    133         .optimize = optimize,
    134     });
    135     file_probe_mod.link_libc = true;
    136     file_probe_mod.linkSystemLibrary("uv", .{});
    137     b.installArtifact(b.addExecutable(.{ .name = "io-v2-file-probe", .root_module = file_probe_mod }));
    138 
    139     // -- kernel generator tool (runs on build host) --
    140     const gen_kernel_mod = b.createModule(.{
    141         .root_source_file = b.path("tools/gen_kernel.zig"),
    142         .target = b.graph.host,
    143         .optimize = .ReleaseSafe,
    144     });
    145     const gen_kernel = b.addExecutable(.{
    146         .name = "gen_kernel",
    147         .root_module = gen_kernel_mod,
    148     });
    149 
    150     const run_gen_kernel = b.addRunArtifact(gen_kernel);
    151     run_gen_kernel.addFileArg(b.path("kernel_run_arboricx_typed.dag"));
    152     const kernel_embed = run_gen_kernel.addOutputFileArg("kernel_embed.zig");
    153 
    154     // -- kernel module shared by exe and lib --
    155     const kernel_mod = b.createModule(.{
    156         .root_source_file = kernel_embed,
    157     });
    158 
    159     // Independent browser evaluator: no WASI, libc, libuv, or host imports.
    160     const wasm_mod = b.createModule(.{
    161         .root_source_file = b.path("src/c_abi.zig"),
    162         .target = b.resolveTargetQuery(.{ .cpu_arch = .wasm32, .os_tag = .freestanding }),
    163         .optimize = .ReleaseSafe,
    164     });
    165     wasm_mod.addImport("kernel_embed", kernel_mod);
    166     const wasm = b.addExecutable(.{ .name = "arboricx", .root_module = wasm_mod });
    167     wasm.entry = .disabled;
    168     wasm.rdynamic = true;
    169     wasm.stack_size = 8 * 1024 * 1024;
    170     wasm.max_memory = 512 * 1024 * 1024;
    171     const install_wasm = b.addInstallArtifact(wasm, .{});
    172     b.step("wasm", "Build the standalone browser evaluator prototype").dependOn(&install_wasm.step);
    173 
    174     // -- main CLI executable --
    175     const exe_mod = b.createModule(.{
    176         .root_source_file = b.path("src/main.zig"),
    177         .target = target,
    178         .optimize = optimize,
    179     });
    180     exe_mod.addImport("kernel_embed", kernel_mod);
    181     exe_mod.link_libc = true;
    182     exe_mod.linkSystemLibrary("uv", .{});
    183     const exe = b.addExecutable(.{
    184         .name = "tricu-zig",
    185         .root_module = exe_mod,
    186     });
    187     b.installArtifact(exe);
    188 
    189     const run_cmd = b.addRunArtifact(exe);
    190     run_cmd.step.dependOn(b.getInstallStep());
    191     const run_step = b.step("run", "Run tricu-zig");
    192     run_step.dependOn(&run_cmd.step);
    193 
    194     // -- C ABI static library --
    195     const lib_mod = b.createModule(.{
    196         .root_source_file = b.path("src/c_abi.zig"),
    197         .target = target,
    198         .optimize = optimize,
    199     });
    200     lib_mod.pic = true;
    201     lib_mod.addImport("kernel_embed", kernel_mod);
    202     lib_mod.link_libc = true;
    203     lib_mod.linkSystemLibrary("uv", .{});
    204     const static_lib = b.addLibrary(.{
    205         .name = "arboricx",
    206         .root_module = lib_mod,
    207     });
    208     b.installArtifact(static_lib);
    209 
    210     // -- C ABI shared library (for dynamic language FFI) --
    211     const shared_lib = b.addLibrary(.{
    212         .name = "arboricx",
    213         .root_module = lib_mod,
    214         .linkage = .dynamic,
    215     });
    216     b.installArtifact(shared_lib);
    217 }