@@ -97,8 +97,6 @@ out_lib_filename: []const u8,
97
97
out_pdb_filename : []const u8 ,
98
98
modules : std .StringArrayHashMap (* Module ),
99
99
100
- object_src : []const u8 ,
101
-
102
100
link_objects : ArrayList (LinkObject ),
103
101
include_dirs : ArrayList (IncludeDir ),
104
102
c_macros : ArrayList ([]const u8 ),
@@ -288,6 +286,8 @@ pub const Options = struct {
288
286
linkage : ? Linkage = null ,
289
287
version : ? std.builtin.Version = null ,
290
288
max_rss : usize = 0 ,
289
+ filter : ? []const u8 = null ,
290
+ test_runner : ? []const u8 = null ,
291
291
};
292
292
293
293
pub const Kind = enum {
@@ -340,6 +340,23 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
340
340
options .target .zigTriple (owner .allocator ) catch @panic ("OOM" ),
341
341
});
342
342
343
+ const target_info = NativeTargetInfo .detect (options .target ) catch @panic ("unhandled error" );
344
+
345
+ const out_filename = std .zig .binNameAlloc (owner .allocator , .{
346
+ .root_name = name ,
347
+ .target = target_info .target ,
348
+ .output_mode = switch (options .kind ) {
349
+ .lib = > .Lib ,
350
+ .obj = > .Obj ,
351
+ .exe , .@"test" = > .Exe ,
352
+ },
353
+ .link_mode = if (options .linkage ) | some | @as (std .builtin .LinkMode , switch (some ) {
354
+ .dynamic = > .Dynamic ,
355
+ .static = > .Static ,
356
+ }) else null ,
357
+ .version = options .version ,
358
+ }) catch @panic ("OOM" );
359
+
343
360
const self = owner .allocator .create (CompileStep ) catch @panic ("OOM" );
344
361
self .* = CompileStep {
345
362
.strip = null ,
@@ -361,7 +378,7 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
361
378
.max_rss = options .max_rss ,
362
379
}),
363
380
.version = options .version ,
364
- .out_filename = undefined ,
381
+ .out_filename = out_filename ,
365
382
.out_h_filename = owner .fmt ("{s}.h" , .{name }),
366
383
.out_lib_filename = undefined ,
367
384
.out_pdb_filename = owner .fmt ("{s}.pdb" , .{name }),
@@ -375,13 +392,12 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
375
392
.rpaths = ArrayList (FileSource ).init (owner .allocator ),
376
393
.framework_dirs = ArrayList (FileSource ).init (owner .allocator ),
377
394
.installed_headers = ArrayList (* Step ).init (owner .allocator ),
378
- .object_src = undefined ,
379
395
.c_std = std .Build .CStd .C99 ,
380
396
.zig_lib_dir = null ,
381
397
.main_pkg_path = null ,
382
398
.exec_cmd_args = null ,
383
- .filter = null ,
384
- .test_runner = null ,
399
+ .filter = options . filter ,
400
+ .test_runner = options . test_runner ,
385
401
.disable_stack_probing = false ,
386
402
.disable_sanitize_c = false ,
387
403
.sanitize_thread = false ,
@@ -397,60 +413,41 @@ pub fn create(owner: *std.Build, options: Options) *CompileStep {
397
413
.output_pdb_path_source = GeneratedFile { .step = & self .step },
398
414
.output_dirname_source = GeneratedFile { .step = & self .step },
399
415
400
- .target_info = NativeTargetInfo . detect ( self . target ) catch @panic ( "unhandled error" ) ,
416
+ .target_info = target_info ,
401
417
};
402
- self .computeOutFileNames ();
403
- if (root_src ) | rs | rs .addStepDependencies (& self .step );
404
- return self ;
405
- }
406
-
407
- fn computeOutFileNames (self : * CompileStep ) void {
408
- const b = self .step .owner ;
409
- const target = self .target_info .target ;
410
-
411
- self .out_filename = std .zig .binNameAlloc (b .allocator , .{
412
- .root_name = self .name ,
413
- .target = target ,
414
- .output_mode = switch (self .kind ) {
415
- .lib = > .Lib ,
416
- .obj = > .Obj ,
417
- .exe , .@"test" = > .Exe ,
418
- },
419
- .link_mode = if (self .linkage ) | some | @as (std .builtin .LinkMode , switch (some ) {
420
- .dynamic = > .Dynamic ,
421
- .static = > .Static ,
422
- }) else null ,
423
- .version = self .version ,
424
- }) catch @panic ("OOM" );
425
418
426
419
if (self .kind == .lib ) {
427
420
if (self .linkage != null and self .linkage .? == .static ) {
428
421
self .out_lib_filename = self .out_filename ;
429
422
} else if (self .version ) | version | {
430
- if (target .isDarwin ()) {
431
- self .major_only_filename = b .fmt ("lib{s}.{d}.dylib" , .{
423
+ if (target_info . target .isDarwin ()) {
424
+ self .major_only_filename = owner .fmt ("lib{s}.{d}.dylib" , .{
432
425
self .name ,
433
426
version .major ,
434
427
});
435
- self .name_only_filename = b .fmt ("lib{s}.dylib" , .{self .name });
428
+ self .name_only_filename = owner .fmt ("lib{s}.dylib" , .{self .name });
436
429
self .out_lib_filename = self .out_filename ;
437
- } else if (target .os .tag == .windows ) {
438
- self .out_lib_filename = b .fmt ("{s}.lib" , .{self .name });
430
+ } else if (target_info . target .os .tag == .windows ) {
431
+ self .out_lib_filename = owner .fmt ("{s}.lib" , .{self .name });
439
432
} else {
440
- self .major_only_filename = b .fmt ("lib{s}.so.{d}" , .{ self .name , version .major });
441
- self .name_only_filename = b .fmt ("lib{s}.so" , .{self .name });
433
+ self .major_only_filename = owner .fmt ("lib{s}.so.{d}" , .{ self .name , version .major });
434
+ self .name_only_filename = owner .fmt ("lib{s}.so" , .{self .name });
442
435
self .out_lib_filename = self .out_filename ;
443
436
}
444
437
} else {
445
- if (target .isDarwin ()) {
438
+ if (target_info . target .isDarwin ()) {
446
439
self .out_lib_filename = self .out_filename ;
447
- } else if (target .os .tag == .windows ) {
448
- self .out_lib_filename = b .fmt ("{s}.lib" , .{self .name });
440
+ } else if (target_info . target .os .tag == .windows ) {
441
+ self .out_lib_filename = owner .fmt ("{s}.lib" , .{self .name });
449
442
} else {
450
443
self .out_lib_filename = self .out_filename ;
451
444
}
452
445
}
453
446
}
447
+
448
+ if (root_src ) | rs | rs .addStepDependencies (& self .step );
449
+
450
+ return self ;
454
451
}
455
452
456
453
pub fn install (self : * CompileStep ) void {
@@ -847,24 +844,6 @@ fn linkSystemLibraryInner(self: *CompileStep, name: []const u8, opts: struct {
847
844
}) catch @panic ("OOM" );
848
845
}
849
846
850
- pub fn setName (self : * CompileStep , text : []const u8 ) void {
851
- const b = self .step .owner ;
852
- assert (self .kind == .@"test" );
853
- self .name = b .dupe (text );
854
- }
855
-
856
- pub fn setFilter (self : * CompileStep , text : ? []const u8 ) void {
857
- const b = self .step .owner ;
858
- assert (self .kind == .@"test" );
859
- self .filter = if (text ) | t | b .dupe (t ) else null ;
860
- }
861
-
862
- pub fn setTestRunner (self : * CompileStep , path : ? []const u8 ) void {
863
- const b = self .step .owner ;
864
- assert (self .kind == .@"test" );
865
- self .test_runner = if (path ) | p | b .dupePath (p ) else null ;
866
- }
867
-
868
847
/// Handy when you have many C/C++ source files and want them all to have the same flags.
869
848
pub fn addCSourceFiles (self : * CompileStep , files : []const []const u8 , flags : []const []const u8 ) void {
870
849
const b = self .step .owner ;
0 commit comments