@@ -101,6 +101,59 @@ pub fn build(b: *std.Build) void {
101101 const benchmark_step = b .step ("benchmark" , "Run performance benchmark" );
102102 benchmark_step .dependOn (& run_benchmark .step );
103103
104+ // Add SIMD modules
105+ const simd_winternitz_module = b .addModule ("simd_winternitz" , .{
106+ .root_source_file = b .path ("src/simd_winternitz.zig" ),
107+ .target = target ,
108+ .optimize = optimize ,
109+ });
110+
111+ const simd_poseidon2_module = b .addModule ("simd_poseidon2" , .{
112+ .root_source_file = b .path ("src/poseidon2/simd_poseidon2.zig" ),
113+ .target = target ,
114+ .optimize = optimize ,
115+ });
116+
117+ const simd_montgomery_module = b .addModule ("simd_montgomery" , .{
118+ .root_source_file = b .path ("src/poseidon2/fields/koalabear/simd_montgomery.zig" ),
119+ .target = target ,
120+ .optimize = optimize ,
121+ });
122+
123+ const simd_signature_module = b .addModule ("simd_signature" , .{
124+ .root_source_file = b .path ("src/simd_signature.zig" ),
125+ .target = target ,
126+ .optimize = optimize ,
127+ });
128+
129+ // Set up module dependencies
130+ simd_signature_module .addImport ("simd_winternitz" , simd_winternitz_module );
131+ simd_signature_module .addImport ("simd_poseidon2" , simd_poseidon2_module );
132+ simd_signature_module .addImport ("params" , hash_zig_module );
133+
134+ simd_winternitz_module .addImport ("simd_montgomery" , simd_montgomery_module );
135+ simd_winternitz_module .addImport ("simd_poseidon2" , simd_poseidon2_module );
136+
137+ simd_poseidon2_module .addImport ("simd_montgomery" , simd_montgomery_module );
138+
139+ // SIMD benchmark executable
140+ const simd_benchmark = b .addExecutable (.{
141+ .name = "hash-zig-simd-benchmark" ,
142+ .root_source_file = b .path ("examples/simd_benchmark.zig" ),
143+ .target = target ,
144+ .optimize = optimize ,
145+ });
146+ simd_benchmark .root_module .addImport ("hash-zig" , hash_zig_module );
147+ simd_benchmark .root_module .addImport ("simd_signature" , simd_signature_module );
148+ simd_benchmark .root_module .addImport ("simd_winternitz" , simd_winternitz_module );
149+ simd_benchmark .root_module .addImport ("simd_poseidon2" , simd_poseidon2_module );
150+ simd_benchmark .root_module .addImport ("simd_montgomery" , simd_montgomery_module );
151+ b .installArtifact (simd_benchmark );
152+
153+ const run_simd_benchmark = b .addRunArtifact (simd_benchmark );
154+ const simd_benchmark_step = b .step ("simd-benchmark" , "Run SIMD performance benchmark" );
155+ simd_benchmark_step .dependOn (& run_simd_benchmark .step );
156+
104157 // Optimized benchmark executable (commented out for now)
105158 // const optimized_benchmark_module = b.createModule(.{
106159 // .root_source_file = b.path("examples/optimized_benchmark.zig"),
@@ -124,16 +177,12 @@ pub fn build(b: *std.Build) void {
124177 // const optimized_benchmark_step = b.step("optimized-benchmark", "Run optimized performance benchmark");
125178 // optimized_benchmark_step.dependOn(&run_optimized_benchmark.step);
126179
127- // Documentation (separate from main library build)
128- const docs_obj = b .addObject (.{
129- .name = "hash-zig-docs" ,
130- .root_module = hash_zig_module ,
131- });
180+ // Documentation
181+ const docs_step = b .step ("docs" , "Generate documentation" );
132182 const install_docs = b .addInstallDirectory (.{
133- .source_dir = docs_obj .getEmittedDocs (),
183+ .source_dir = lib .getEmittedDocs (),
134184 .install_dir = .prefix ,
135185 .install_subdir = "docs" ,
136186 });
137- const docs_step = b .step ("docs" , "Generate documentation" );
138187 docs_step .dependOn (& install_docs .step );
139188}
0 commit comments