@@ -62,7 +62,7 @@ pub fn build(b: *std.Build) void {
6262 }),
6363 });
6464
65- const test_exe = b .addExecutable (.{
65+ const test_runner_exe = b .addExecutable (.{
6666 .name = "test" ,
6767 .root_module = b .createModule (.{
6868 .root_source_file = b .path ("tests/test.zig" ),
@@ -75,39 +75,67 @@ pub fn build(b: *std.Build) void {
7575 }),
7676 });
7777
78- const generate_test_data_run = b .addRunArtifact (generate_test_data_exe );
79- if (b .option (bool , "rebuild-test-elf" , "rebuild the test program elf" ) == true ) {
80- const mz_dep = b .lazyDependency ("microzig" , .{}) orelse return ;
78+ const test_dwarf32_exe = b .addExecutable (.{
79+ .name = "test_program.dwarf32" ,
80+ .root_module = b .createModule (.{
81+ .root_source_file = b .path ("tests/test_program.zig" ),
82+ .optimize = .Debug ,
83+ .target = b .resolveTargetQuery (.{
84+ .os_tag = .linux ,
85+ .cpu_arch = .x86_64 ,
86+ .abi = .gnu ,
87+ .ofmt = .elf ,
88+ }),
89+ .dwarf_format = .@"32" ,
90+ .strip = false ,
91+ }),
92+ });
8193
82- const mb = b .lazyImport (@This (), "microzig" ).? .MicroBuild (.{
83- .rp2xxx = true ,
84- }).init (b , mz_dep ) orelse return ;
94+ const test_dwarf64_exe = b .addExecutable (.{
95+ .name = "test_program.dwarf64" ,
96+ .root_module = b .createModule (.{
97+ .root_source_file = b .path ("tests/test_program.zig" ),
98+ .optimize = .Debug ,
99+ .target = b .resolveTargetQuery (.{
100+ .os_tag = .linux ,
101+ .cpu_arch = .x86_64 ,
102+ .abi = .gnu ,
103+ .ofmt = .elf ,
104+ }),
105+ .dwarf_format = .@"64" ,
106+ }),
107+ });
85108
86- generate_test_data_run .addFileArg (blk : {
87- break :blk mb .add_firmware (.{
88- .name = "test_program.dwarf32" ,
89- .root_source_file = b .path ("tests/test_program.zig" ),
90- .optimize = .Debug ,
91- .target = mb .ports .rp2xxx .boards .raspberrypi .pico2_arm ,
92- .dwarf_format = .@"32" ,
93- }).get_emitted_elf ();
94- });
109+ const generate_test_data_step = b .step ("generate-test-data" , "regenerate test data" );
110+ const test_step = b .step ("test" , "test printer" );
95111
96- generate_test_data_run . addFileArg ( blk : {
97- break : blk mb . add_firmware (.{
98- . name = "test_program.dwarf64" ,
99- . root_source_file = b . path ( "tests/test_program.zig" ) ,
100- . optimize = .Debug ,
101- . target = mb . ports . rp2xxx . boards . raspberrypi . pico2_arm ,
102- . dwarf_format = .@"64" ,
103- }). get_emitted_elf ();
104- } );
112+ inline for (&.{ test_dwarf32_exe , test_dwarf64_exe }) | exe | {
113+ register_test (
114+ b ,
115+ generate_test_data_step ,
116+ generate_test_data_exe ,
117+ test_step ,
118+ test_runner_exe ,
119+ exe ,
120+ );
105121 }
122+ }
106123
107- const generate_test_results_step = b .step ("generate-test-data" , "regenerate test data" );
108- generate_test_results_step .dependOn (& generate_test_data_run .step );
124+ pub fn register_test (
125+ b : * std.Build ,
126+ generate_test_data_step : * std.Build.Step ,
127+ generate_test_data_exe : * std.Build.Step.Compile ,
128+ test_step : * std.Build.Step ,
129+ test_runner_exe : * std.Build.Step.Compile ,
130+ test_exe : * std.Build.Step.Compile ,
131+ ) void {
132+ const generate_test_data_run = b .addRunArtifact (generate_test_data_exe );
133+ generate_test_data_run .addFileArg (test_exe .getEmittedBin ());
134+ generate_test_data_run .addFileArg (b .path (b .fmt ("tests/{s}.zon" , .{test_exe .name })));
135+ generate_test_data_step .dependOn (& generate_test_data_run .step );
109136
110- const run_tests_run = b .addRunArtifact (test_exe );
111- const run_tests_step = b .step ("test" , "test printer" );
112- run_tests_step .dependOn (& run_tests_run .step );
137+ const test_runner_run = b .addRunArtifact (test_runner_exe );
138+ test_runner_run .addFileArg (test_exe .getEmittedBin ());
139+ test_runner_run .addFileArg (b .path (b .fmt ("tests/{s}.zon" , .{test_exe .name })));
140+ test_step .dependOn (& test_runner_run .step );
113141}
0 commit comments