@@ -97,8 +97,6 @@ out_lib_filename: []const u8,
9797out_pdb_filename : []const u8 ,
9898modules : std .StringArrayHashMap (* Module ),
9999
100- object_src : []const u8 ,
101-
102100link_objects : ArrayList (LinkObject ),
103101include_dirs : ArrayList (IncludeDir ),
104102c_macros : ArrayList ([]const u8 ),
@@ -287,6 +285,8 @@ pub const Options = struct {
287285 linkage : ? Linkage = null ,
288286 version : ? std.builtin.Version = null ,
289287 max_rss : usize = 0 ,
288+ filter : ? []const u8 = null ,
289+ test_runner : ? []const u8 = null ,
290290};
291291
292292pub const Kind = enum {
@@ -339,6 +339,23 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
339339 options .target .zigTriple (owner .allocator ) catch @panic ("OOM" ),
340340 });
341341
342+ const target_info = NativeTargetInfo .detect (options .target ) catch @panic ("unhandled error" );
343+
344+ const out_filename = std .zig .binNameAlloc (owner .allocator , .{
345+ .root_name = name ,
346+ .target = target_info .target ,
347+ .output_mode = switch (options .kind ) {
348+ .lib = > .Lib ,
349+ .obj = > .Obj ,
350+ .exe , .@"test" = > .Exe ,
351+ },
352+ .link_mode = if (options .linkage ) | some | @as (std .builtin .LinkMode , switch (some ) {
353+ .dynamic = > .Dynamic ,
354+ .static = > .Static ,
355+ }) else null ,
356+ .version = options .version ,
357+ }) catch @panic ("OOM" );
358+
342359 const self = owner .allocator .create (CompileStep ) catch @panic ("OOM" );
343360 self .* = CompileStep {
344361 .strip = null ,
@@ -360,7 +377,7 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
360377 .max_rss = options .max_rss ,
361378 }),
362379 .version = options .version ,
363- .out_filename = undefined ,
380+ .out_filename = out_filename ,
364381 .out_h_filename = owner .fmt ("{s}.h" , .{name }),
365382 .out_lib_filename = undefined ,
366383 .out_pdb_filename = owner .fmt ("{s}.pdb" , .{name }),
@@ -374,13 +391,12 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
374391 .rpaths = ArrayList (FileSource ).init (owner .allocator ),
375392 .framework_dirs = ArrayList (FileSource ).init (owner .allocator ),
376393 .installed_headers = ArrayList (* Step ).init (owner .allocator ),
377- .object_src = undefined ,
378394 .c_std = std .Build .CStd .C99 ,
379395 .zig_lib_dir = null ,
380396 .main_pkg_path = null ,
381397 .exec_cmd_args = null ,
382- .filter = null ,
383- .test_runner = null ,
398+ .filter = options . filter ,
399+ .test_runner = options . test_runner ,
384400 .disable_stack_probing = false ,
385401 .disable_sanitize_c = false ,
386402 .sanitize_thread = false ,
@@ -395,60 +411,41 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
395411 .output_pdb_path_source = GeneratedFile { .step = & self .step },
396412 .output_dirname_source = GeneratedFile { .step = & self .step },
397413
398- .target_info = NativeTargetInfo . detect ( self . target ) catch @panic ( "unhandled error" ) ,
414+ .target_info = target_info ,
399415 };
400- self .computeOutFileNames ();
401- if (root_src ) | rs | rs .addStepDependencies (& self .step );
402- return self ;
403- }
404-
405- fn computeOutFileNames (self : * CompileStep ) void {
406- const b = self .step .owner ;
407- const target = self .target_info .target ;
408-
409- self .out_filename = std .zig .binNameAlloc (b .allocator , .{
410- .root_name = self .name ,
411- .target = target ,
412- .output_mode = switch (self .kind ) {
413- .lib = > .Lib ,
414- .obj = > .Obj ,
415- .exe , .@"test" = > .Exe ,
416- },
417- .link_mode = if (self .linkage ) | some | @as (std .builtin .LinkMode , switch (some ) {
418- .dynamic = > .Dynamic ,
419- .static = > .Static ,
420- }) else null ,
421- .version = self .version ,
422- }) catch @panic ("OOM" );
423416
424417 if (self .kind == .lib ) {
425418 if (self .linkage != null and self .linkage .? == .static ) {
426419 self .out_lib_filename = self .out_filename ;
427420 } else if (self .version ) | version | {
428- if (target .isDarwin ()) {
429- self .major_only_filename = b .fmt ("lib{s}.{d}.dylib" , .{
421+ if (target_info . target .isDarwin ()) {
422+ self .major_only_filename = owner .fmt ("lib{s}.{d}.dylib" , .{
430423 self .name ,
431424 version .major ,
432425 });
433- self .name_only_filename = b .fmt ("lib{s}.dylib" , .{self .name });
426+ self .name_only_filename = owner .fmt ("lib{s}.dylib" , .{self .name });
434427 self .out_lib_filename = self .out_filename ;
435- } else if (target .os .tag == .windows ) {
436- self .out_lib_filename = b .fmt ("{s}.lib" , .{self .name });
428+ } else if (target_info . target .os .tag == .windows ) {
429+ self .out_lib_filename = owner .fmt ("{s}.lib" , .{self .name });
437430 } else {
438- self .major_only_filename = b .fmt ("lib{s}.so.{d}" , .{ self .name , version .major });
439- self .name_only_filename = b .fmt ("lib{s}.so" , .{self .name });
431+ self .major_only_filename = owner .fmt ("lib{s}.so.{d}" , .{ self .name , version .major });
432+ self .name_only_filename = owner .fmt ("lib{s}.so" , .{self .name });
440433 self .out_lib_filename = self .out_filename ;
441434 }
442435 } else {
443- if (target .isDarwin ()) {
436+ if (target_info . target .isDarwin ()) {
444437 self .out_lib_filename = self .out_filename ;
445- } else if (target .os .tag == .windows ) {
446- self .out_lib_filename = b .fmt ("{s}.lib" , .{self .name });
438+ } else if (target_info . target .os .tag == .windows ) {
439+ self .out_lib_filename = owner .fmt ("{s}.lib" , .{self .name });
447440 } else {
448441 self .out_lib_filename = self .out_filename ;
449442 }
450443 }
451444 }
445+
446+ if (root_src ) | rs | rs .addStepDependencies (& self .step );
447+
448+ return self ;
452449}
453450
454451pub fn installHeader (cs : * CompileStep , src_path : []const u8 , dest_rel_path : []const u8 ) void {
@@ -841,24 +838,6 @@ fn linkSystemLibraryInner(self: *CompileStep, name: []const u8, opts: struct {
841838 }) catch @panic ("OOM" );
842839}
843840
844- pub fn setName (self : * CompileStep , text : []const u8 ) void {
845- const b = self .step .owner ;
846- assert (self .kind == .@"test" );
847- self .name = b .dupe (text );
848- }
849-
850- pub fn setFilter (self : * CompileStep , text : ? []const u8 ) void {
851- const b = self .step .owner ;
852- assert (self .kind == .@"test" );
853- self .filter = if (text ) | t | b .dupe (t ) else null ;
854- }
855-
856- pub fn setTestRunner (self : * CompileStep , path : ? []const u8 ) void {
857- const b = self .step .owner ;
858- assert (self .kind == .@"test" );
859- self .test_runner = if (path ) | p | b .dupePath (p ) else null ;
860- }
861-
862841/// Handy when you have many C/C++ source files and want them all to have the same flags.
863842pub fn addCSourceFiles (self : * CompileStep , files : []const []const u8 , flags : []const []const u8 ) void {
864843 const b = self .step .owner ;
0 commit comments