@@ -3,7 +3,8 @@ const Builder = std.Build;
3
3
4
4
const zkvmTarget = struct {
5
5
name : []const u8 ,
6
- set_pie : bool ,
6
+ set_pie : bool = false ,
7
+ build_glue : bool = false ,
7
8
};
8
9
9
10
const zkvm_targets : []const zkvmTarget = &.{
@@ -142,12 +143,10 @@ fn build_zkvm_targets(b: *Builder) !void {
142
143
zeam_state_transition .addImport ("ssz" , ssz );
143
144
144
145
for (zkvm_targets ) | zkvm_target | {
145
- var module_root_path : [256 ]u8 = undefined ;
146
- _ = try std .fmt .bufPrintZ (& module_root_path , "pkgs/state-transition-runtime/src/{s}/lib.zig" , .{zkvm_target .name });
147
146
const zkvm_module = b .addModule ("zkvm" , .{
148
147
.optimize = optimize ,
149
148
.target = target ,
150
- .root_source_file = b .path (& module_root_path ),
149
+ .root_source_file = b .path (b . fmt ( "pkgs/state-transition-runtime/src/{s}/lib.zig" , .{ zkvm_target . name }) ),
151
150
});
152
151
153
152
// target has to be riscv5 runtime provable/verifiable on zkVMs
@@ -164,13 +163,21 @@ fn build_zkvm_targets(b: *Builder) !void {
164
163
exe .root_module .addImport ("@zeam/state-transition" , zeam_state_transition );
165
164
exe .root_module .addImport ("zkvm" , zkvm_module );
166
165
exe .root_module .addImport ("params" , params );
167
- var start_s_path : [256 ]u8 = undefined ;
168
- exe .addAssemblyFile (b .path (try std .fmt .bufPrint (& start_s_path , "pkgs/state-transition-runtime/src/{s}/start.s" , .{zkvm_target .name })));
166
+ exe .addAssemblyFile (b .path (b .fmt ("pkgs/state-transition-runtime/src/{s}/start.s" , .{zkvm_target .name })));
169
167
if (zkvm_target .set_pie ) {
170
168
exe .pie = true ;
171
169
}
172
- var linker_script_path : [256 ]u8 = undefined ;
173
- 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 })));
170
+ exe .setLinkerScript (b .path (b .fmt ("pkgs/state-transition-runtime/src/{s}/{s}.ld" , .{ zkvm_target .name , zkvm_target .name })));
174
171
b .installArtifact (exe );
172
+
173
+ // build the library connecting to the zkvm
174
+ if (zkvm_target .build_glue ) {
175
+ _ = b .addSystemCommand (&.{
176
+ "cargo" ,
177
+ "-C" ,
178
+ b .fmt ("pkgs/state-transition-runtime/src/{s}/host" , .{zkvm_target .name }),
179
+ "build" ,
180
+ });
181
+ }
175
182
}
176
183
}
0 commit comments