| ... | @@ -1388,66 +1388,50 @@ pub const LibExeObjStep = struct { | ... | @@ -1388,66 +1388,50 @@ pub const LibExeObjStep = struct { |
| 1388 | } | 1388 | } |
| 1389 | | 1389 | |
| 1390 | fn computeOutFileNames(self: *LibExeObjStep) void { | 1390 | fn computeOutFileNames(self: *LibExeObjStep) void { |
| 1391 | // TODO make this call std.zig.binNameAlloc | 1391 | const target_info = std.zig.system.NativeTargetInfo.detect( |
| 1392 | switch (self.kind) { | 1392 | self.builder.allocator, |
| 1393 | .Obj => { | 1393 | self.target, |
| 1394 | self.out_filename = self.builder.fmt("{}{}", .{ self.name, self.target.oFileExt() }); | 1394 | ) catch unreachable; |
| 1395 | }, | 1395 | const target = target_info.target; |
| 1396 | .Exe => { | 1396 | self.out_filename = std.zig.binNameAlloc(self.builder.allocator, .{ |
| 1397 | self.out_filename = self.builder.fmt("{}{}", .{ self.name, self.target.exeFileExt() }); | 1397 | .root_name = self.name, |
| 1398 | }, | 1398 | .target = target, |
| 1399 | .Test => { | 1399 | .output_mode = switch (self.kind) { |
| 1400 | self.out_filename = self.builder.fmt("test{}", .{self.target.exeFileExt()}); | 1400 | .Lib => .Lib, |
| | 1401 | .Obj => .Obj, |
| | 1402 | .Exe, .Test => .Exe, |
| 1401 | }, | 1403 | }, |
| 1402 | .Lib => { | 1404 | .link_mode = if (self.is_dynamic) .Dynamic else .Static, |
| 1403 | if (!self.is_dynamic) { | 1405 | .version = self.version, |
| 1404 | self.out_filename = self.builder.fmt("{}{}{}", .{ | 1406 | }) catch unreachable; |
| 1405 | self.target.libPrefix(), | 1407 | |
| | 1408 | if (self.kind == .Lib) { |
| | 1409 | if (!self.is_dynamic) { |
| | 1410 | self.out_lib_filename = self.out_filename; |
| | 1411 | } else if (self.version) |version| { |
| | 1412 | if (target.isDarwin()) { |
| | 1413 | self.major_only_filename = self.builder.fmt("lib{}.{d}.dylib", .{ |
| 1406 | self.name, | 1414 | self.name, |
| 1407 | self.target.staticLibSuffix(), | 1415 | version.major, |
| 1408 | }); | 1416 | }); |
| | 1417 | self.name_only_filename = self.builder.fmt("lib{}.dylib", .{self.name}); |
| 1409 | self.out_lib_filename = self.out_filename; | 1418 | self.out_lib_filename = self.out_filename; |
| 1410 | } else if (self.version) |version| { | 1419 | } else if (target.os.tag == .windows) { |
| 1411 | if (self.target.isDarwin()) { | 1420 | self.out_lib_filename = self.builder.fmt("{}.lib", .{self.name}); |
| 1412 | self.out_filename = self.builder.fmt("lib{}.{d}.{d}.{d}.dylib", .{ | | |
| 1413 | self.name, | | |
| 1414 | version.major, | | |
| 1415 | version.minor, | | |
| 1416 | version.patch, | | |
| 1417 | }); | | |
| 1418 | self.major_only_filename = self.builder.fmt("lib{}.{d}.dylib", .{ | | |
| 1419 | self.name, | | |
| 1420 | version.major, | | |
| 1421 | }); | | |
| 1422 | self.name_only_filename = self.builder.fmt("lib{}.dylib", .{self.name}); | | |
| 1423 | self.out_lib_filename = self.out_filename; | | |
| 1424 | } else if (self.target.isWindows()) { | | |
| 1425 | self.out_filename = self.builder.fmt("{}.dll", .{self.name}); | | |
| 1426 | self.out_lib_filename = self.builder.fmt("{}.lib", .{self.name}); | | |
| 1427 | } else { | | |
| 1428 | self.out_filename = self.builder.fmt("lib{}.so.{d}.{d}.{d}", .{ | | |
| 1429 | self.name, | | |
| 1430 | version.major, | | |
| 1431 | version.minor, | | |
| 1432 | version.patch, | | |
| 1433 | }); | | |
| 1434 | self.major_only_filename = self.builder.fmt("lib{}.so.{d}", .{ self.name, version.major }); | | |
| 1435 | self.name_only_filename = self.builder.fmt("lib{}.so", .{self.name}); | | |
| 1436 | self.out_lib_filename = self.out_filename; | | |
| 1437 | } | | |
| 1438 | } else { | 1421 | } else { |
| 1439 | if (self.target.isDarwin()) { | 1422 | self.major_only_filename = self.builder.fmt("lib{}.so.{d}", .{ self.name, version.major }); |
| 1440 | self.out_filename = self.builder.fmt("lib{}.dylib", .{self.name}); | 1423 | self.name_only_filename = self.builder.fmt("lib{}.so", .{self.name}); |
| 1441 | self.out_lib_filename = self.out_filename; | 1424 | self.out_lib_filename = self.out_filename; |
| 1442 | } else if (self.target.isWindows()) { | | |
| 1443 | self.out_filename = self.builder.fmt("{}.dll", .{self.name}); | | |
| 1444 | self.out_lib_filename = self.builder.fmt("{}.lib", .{self.name}); | | |
| 1445 | } else { | | |
| 1446 | self.out_filename = self.builder.fmt("lib{}.so", .{self.name}); | | |
| 1447 | self.out_lib_filename = self.out_filename; | | |
| 1448 | } | | |
| 1449 | } | 1425 | } |
| 1450 | }, | 1426 | } else { |
| | 1427 | if (target.isDarwin()) { |
| | 1428 | self.out_lib_filename = self.out_filename; |
| | 1429 | } else if (target.os.tag == .windows) { |
| | 1430 | self.out_lib_filename = self.builder.fmt("{}.lib", .{self.name}); |
| | 1431 | } else { |
| | 1432 | self.out_lib_filename = self.out_filename; |
| | 1433 | } |
| | 1434 | } |
| 1451 | } | 1435 | } |
| 1452 | } | 1436 | } |
| 1453 | | 1437 | |
| ... | @@ -2046,7 +2030,7 @@ pub const LibExeObjStep = struct { | ... | @@ -2046,7 +2030,7 @@ pub const LibExeObjStep = struct { |
| 2046 | | 2030 | |
| 2047 | if (self.image_base) |image_base| { | 2031 | if (self.image_base) |image_base| { |
| 2048 | try zig_args.append("--image-base"); | 2032 | try zig_args.append("--image-base"); |
| 2049 | try zig_args.append(image_base); | 2033 | try zig_args.append(builder.fmt("0x{x}", .{image_base})); |
| 2050 | } | 2034 | } |
| 2051 | | 2035 | |
| 2052 | if (self.filter) |filter| { | 2036 | if (self.filter) |filter| { |