tricu

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

build.zig (3913B)


      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 io_tests_mod = b.createModule(.{
     23         .root_source_file = b.path("src/io_driver.zig"),
     24         .target = target,
     25         .optimize = optimize,
     26     });
     27     io_tests_mod.link_libc = true;
     28     io_tests_mod.linkSystemLibrary("uv", .{});
     29     const io_tests = b.addTest(.{ .root_module = io_tests_mod });
     30     test_step.dependOn(&b.addRunArtifact(io_tests).step);
     31 
     32     // -- kernel generator tool (runs on build host) --
     33     const gen_kernel_mod = b.createModule(.{
     34         .root_source_file = b.path("tools/gen_kernel.zig"),
     35         .target = b.graph.host,
     36         .optimize = .ReleaseSafe,
     37     });
     38     const gen_kernel = b.addExecutable(.{
     39         .name = "gen_kernel",
     40         .root_module = gen_kernel_mod,
     41     });
     42 
     43     const run_gen_kernel = b.addRunArtifact(gen_kernel);
     44     run_gen_kernel.addFileArg(b.path("kernel_run_arboricx_typed.dag"));
     45     const kernel_embed = run_gen_kernel.addOutputFileArg("kernel_embed.zig");
     46 
     47     // -- kernel module shared by exe and lib --
     48     const kernel_mod = b.createModule(.{
     49         .root_source_file = kernel_embed,
     50     });
     51 
     52     // Independent browser evaluator: no WASI, libc, libuv, or host imports.
     53     const wasm_mod = b.createModule(.{
     54         .root_source_file = b.path("src/c_abi.zig"),
     55         .target = b.resolveTargetQuery(.{ .cpu_arch = .wasm32, .os_tag = .freestanding }),
     56         .optimize = .ReleaseSafe,
     57     });
     58     wasm_mod.addImport("kernel_embed", kernel_mod);
     59     const wasm = b.addExecutable(.{ .name = "arboricx", .root_module = wasm_mod });
     60     wasm.entry = .disabled;
     61     wasm.rdynamic = true;
     62     wasm.stack_size = 8 * 1024 * 1024;
     63     wasm.max_memory = 512 * 1024 * 1024;
     64     const install_wasm = b.addInstallArtifact(wasm, .{});
     65     b.step("wasm", "Build the standalone browser evaluator prototype").dependOn(&install_wasm.step);
     66 
     67     // -- main CLI executable --
     68     const exe_mod = b.createModule(.{
     69         .root_source_file = b.path("src/main.zig"),
     70         .target = target,
     71         .optimize = optimize,
     72     });
     73     exe_mod.addImport("kernel_embed", kernel_mod);
     74     exe_mod.link_libc = true;
     75     exe_mod.linkSystemLibrary("uv", .{});
     76     const exe = b.addExecutable(.{
     77         .name = "tricu-zig",
     78         .root_module = exe_mod,
     79     });
     80     b.installArtifact(exe);
     81 
     82     const run_cmd = b.addRunArtifact(exe);
     83     run_cmd.step.dependOn(b.getInstallStep());
     84     const run_step = b.step("run", "Run tricu-zig");
     85     run_step.dependOn(&run_cmd.step);
     86 
     87     // -- C ABI static library --
     88     const lib_mod = b.createModule(.{
     89         .root_source_file = b.path("src/c_abi.zig"),
     90         .target = target,
     91         .optimize = optimize,
     92     });
     93     lib_mod.pic = true;
     94     lib_mod.addImport("kernel_embed", kernel_mod);
     95     lib_mod.link_libc = true;
     96     lib_mod.linkSystemLibrary("uv", .{});
     97     const static_lib = b.addLibrary(.{
     98         .name = "arboricx",
     99         .root_module = lib_mod,
    100     });
    101     b.installArtifact(static_lib);
    102 
    103     // -- C ABI shared library (for dynamic language FFI) --
    104     const shared_lib = b.addLibrary(.{
    105         .name = "arboricx",
    106         .root_module = lib_mod,
    107         .linkage = .dynamic,
    108     });
    109     b.installArtifact(shared_lib);
    110 }