Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 161 additions & 3 deletions build.zig
Original file line number Diff line number Diff line change
@@ -1,7 +1,165 @@
const Builder = @import("std").Build;
const std = @import("std");
const Builder = std.Build;

const zkvmTarget = struct {
name: []const u8,
set_pie: bool,
};

const zkvm_targets: []const zkvmTarget = &.{
.{ .name = "powdr", .set_pie = true },
.{ .name = "ceno", .set_pie = false },
};

// TODO build test monorepo
pub fn build(b: *Builder) void {
pub fn build(b: *Builder) !void {
try build_zkvm_targets(b);

const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});

// add ssz
const ssz = b.dependency("ssz.zig", .{
.target = target,
.optimize = optimize,
}).module("ssz.zig");

// add zeam-params
const params = b.addModule("zeam-params", .{
.target = target,
.optimize = optimize,
.root_source_file = b.path("pkgs/params/src/lib.zig"),
});

// add zeam-types
const zeam_types = b.addModule("zeam-types", .{
.root_source_file = b.path("pkgs/types/src/lib.zig"),
.target = target,
.optimize = optimize,
});

// add zeam-state-transition
const zeam_state_transition = b.addModule("zeam-state-transition", .{
.root_source_file = b.path("pkgs/state-transition/src/lib.zig"),
.target = target,
.optimize = optimize,
});

// add state proving manager
const zeam_state_proving_manager = b.addModule("zeam-state-proving-manager", .{
.root_source_file = b.path("pkgs/state-proving-manager/src/manager.zig"),
.target = target,
.optimize = optimize,
});

// add beam node
const zeam_beam_node = b.addModule("zeam-beam-node", .{
.target = target,
.optimize = optimize,
.root_source_file = b.path("pkgs/beam-node/src/node.zig"),
});

const st_lib = b.addStaticLibrary(.{
.name = "zeam-state-transition",
.root_source_file = b.path("pkgs/state-transition/src/lib.zig"),
.optimize = optimize,
.target = target,
});
b.installArtifact(st_lib);

// Add the cli executable
const cli_exe = b.addExecutable(.{
.name = "zeam",
.root_source_file = b.path("pkgs/cli/src/main.zig"),
.optimize = optimize,
.target = target,
});
// addimport to root module is even required afer declaring it in mod
cli_exe.root_module.addImport("ssz", ssz);
cli_exe.root_module.addImport("zeam-types", zeam_types);
cli_exe.root_module.addImport("zeam-state-transition", zeam_state_transition);
cli_exe.root_module.addImport("zeam-state-proving-manager", zeam_state_proving_manager);
cli_exe.root_module.addImport("zeam-beam-node", zeam_beam_node);
cli_exe.root_module.addImport("zeam-params", params);
b.installArtifact(cli_exe);

const tests = b.addTest(.{
.root_source_file = b.path("pkgs/tests.zig"),
.optimize = optimize,
.target = target,
});
tests.root_module.addImport("ssz", ssz);
tests.root_module.addImport("zeam-types", zeam_types);

const run_tests = b.addRunArtifact(tests);
const test_step = b.step("test", "Run unit tests");
_ = test_step;
test_step.dependOn(&run_tests.step);
}

fn build_zkvm_targets(b: *Builder) !void {
const target_query = .{ .cpu_arch = .riscv32, .os_tag = .freestanding, .abi = .none, .cpu_model = .{ .explicit = &std.Target.riscv.cpu.generic_rv32 } };
const target = b.resolveTargetQuery(target_query);
const optimize = .ReleaseFast;

// add ssz
const ssz = b.dependency("ssz.zig", .{
.target = target,
.optimize = optimize,
}).module("ssz.zig");

// add zeam-params
const params = b.addModule("zeam-params", .{
.target = target,
.optimize = optimize,
.root_source_file = b.path("pkgs/params/src/lib.zig"),
});

// add zeam-types
const zeam_types = b.addModule("zeam-types", .{
.target = target,
.optimize = optimize,
.root_source_file = b.path("pkgs/types/src/lib.zig"),
});

// add state transition
const zeam_state_transition = b.addModule("zeam-state-transition", .{
.root_source_file = b.path("pkgs/state-transition/src/lib.zig"),
.target = target,
.optimize = optimize,
});
zeam_state_transition.addImport("zeam-types", zeam_types);
zeam_state_transition.addImport("ssz", ssz);

for (zkvm_targets) |zkvm_target| {
var module_root_path: [256]u8 = undefined;
_ = try std.fmt.bufPrintZ(&module_root_path, "pkgs/state-transition-runtime/src/{s}/lib.zig", .{zkvm_target.name});
const zkvm_module = b.addModule("zkvm", .{
.optimize = optimize,
.target = target,
.root_source_file = b.path(&module_root_path),
});

// target has to be riscv5 runtime provable/verifiable on zkVMs
var exec_name: [256]u8 = undefined;
const exe = b.addExecutable(.{
.name = try std.fmt.bufPrint(&exec_name, "zeam-stf-{s}", .{zkvm_target.name}),
.root_source_file = b.path("pkgs/state-transition-runtime/src/main.zig"),
.optimize = optimize,
.target = target,
});
// addimport to root module is even required afer declaring it in mod
exe.root_module.addImport("ssz", ssz);
exe.root_module.addImport("zeam-types", zeam_types);
exe.root_module.addImport("zeam-state-transition", zeam_state_transition);
exe.root_module.addImport("zkvm", zkvm_module);
exe.root_module.addImport("params", params);
var start_s_path: [256]u8 = undefined;
exe.addAssemblyFile(b.path(try std.fmt.bufPrint(&start_s_path, "pkgs/state-transition-runtime/src/{s}/start.s", .{zkvm_target.name})));
if (zkvm_target.set_pie) {
exe.pie = true;
}
var linker_script_path: [256]u8 = undefined;
exe.setLinkerScript(b.path(try std.fmt.bufPrint(&linker_script_path, "pkgs/state-transition-runtime/src/{s}/{s}.ld", .{ zkvm_target.name, zkvm_target.name })));
b.installArtifact(exe);
}
}
6 changes: 6 additions & 0 deletions build.zig.zon
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
.{
.name = "zeam",
.version = "0.0.0",
.dependencies = .{
.@"ssz.zig" = .{
.url = "https://github.com/blockblaz/ssz.zig/archive/refs/tags/v0.0.3.tar.gz",
.hash = "12205edd9484a4d1988afcf29010cd04102ea81da3d0ddf7244c55a75258aa844201",
},
},
.paths = .{""},
}
62 changes: 0 additions & 62 deletions pkgs/beam-node/build.zig

This file was deleted.

20 changes: 0 additions & 20 deletions pkgs/beam-node/build.zig.zon

This file was deleted.

77 changes: 0 additions & 77 deletions pkgs/cli/build.zig

This file was deleted.

23 changes: 0 additions & 23 deletions pkgs/cli/build.zig.zon

This file was deleted.

9 changes: 9 additions & 0 deletions pkgs/cli/src/main.zig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const std = @import("std");
const types = @import("zeam-types");

pub fn main() !void {
// Random action to confirm that module imports are working.
// Replace with real code.
const slot: types.Slot = undefined;
std.debug.print("slot={any}", .{slot});
}
Loading