authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-12 00:32:50-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-12 00:33:06-04:00
logf58705b4a623b39ad10fe25a9a41507fdfc0b089
tree41c076ca172f0ca8b541541752238813de72c5c5
parent3f1c8e3d58f31dabd22fd6d1fa408512e5cbbb07
signaturelock-open Commit is signed but in an unrecognized format.

fix `zig targets` not reporting native info


4 files changed, 29 insertions(+), 28 deletions(-)

src-self-hosted/stage2.zig+24-23
...@@ -626,16 +626,24 @@ fn detectNativeCpuWithLLVM(...@@ -626,16 +626,24 @@ fn detectNativeCpuWithLLVM(
626}626}
627627
628// ABI warning628// ABI warning
629export fn stage2_cmd_targets(zig_triple: [*:0]const u8) c_int {629export fn stage2_cmd_targets(
630 cmdTargets(zig_triple) catch |err| {630 zig_triple: ?[*:0]const u8,
631 mcpu: ?[*:0]const u8,
632 dynamic_linker: ?[*:0]const u8,
633) c_int {
634 cmdTargets(zig_triple, mcpu, dynamic_linker) catch |err| {
631 std.debug.warn("unable to list targets: {}\n", .{@errorName(err)});635 std.debug.warn("unable to list targets: {}\n", .{@errorName(err)});
632 return -1;636 return -1;
633 };637 };
634 return 0;638 return 0;
635}639}
636640
637fn cmdTargets(zig_triple: [*:0]const u8) !void {641fn cmdTargets(
638 var cross_target = try CrossTarget.parse(.{ .arch_os_abi = mem.toSliceConst(u8, zig_triple) });642 zig_triple_oz: ?[*:0]const u8,
643 mcpu_oz: ?[*:0]const u8,
644 dynamic_linker_oz: ?[*:0]const u8,
645) !void {
646 const cross_target = try stage2CrossTarget(zig_triple_oz, mcpu_oz, dynamic_linker_oz);
639 var dynamic_linker: ?[*:0]u8 = null;647 var dynamic_linker: ?[*:0]u8 = null;
640 const target = try crossTargetToTarget(cross_target, &dynamic_linker);648 const target = try crossTargetToTarget(cross_target, &dynamic_linker);
641 return @import("print_targets.zig").cmdTargets(649 return @import("print_targets.zig").cmdTargets(
...@@ -673,12 +681,11 @@ export fn stage2_target_parse(...@@ -673,12 +681,11 @@ export fn stage2_target_parse(
673 return .None;681 return .None;
674}682}
675683
676fn stage2TargetParse(684fn stage2CrossTarget(
677 stage1_target: *Stage2Target,
678 zig_triple_oz: ?[*:0]const u8,685 zig_triple_oz: ?[*:0]const u8,
679 mcpu_oz: ?[*:0]const u8,686 mcpu_oz: ?[*:0]const u8,
680 dynamic_linker_oz: ?[*:0]const u8,687 dynamic_linker_oz: ?[*:0]const u8,
681) !void {688) !CrossTarget {
682 const zig_triple = if (zig_triple_oz) |zig_triple_z| mem.toSliceConst(u8, zig_triple_z) else "native";689 const zig_triple = if (zig_triple_oz) |zig_triple_z| mem.toSliceConst(u8, zig_triple_z) else "native";
683 const mcpu = if (mcpu_oz) |mcpu_z| mem.toSliceConst(u8, mcpu_z) else null;690 const mcpu = if (mcpu_oz) |mcpu_z| mem.toSliceConst(u8, mcpu_z) else null;
684 const dynamic_linker = if (dynamic_linker_oz) |dl_z| mem.toSliceConst(u8, dl_z) else null;691 const dynamic_linker = if (dynamic_linker_oz) |dl_z| mem.toSliceConst(u8, dl_z) else null;
...@@ -716,6 +723,16 @@ fn stage2TargetParse(...@@ -716,6 +723,16 @@ fn stage2TargetParse(
716 else => |e| return e,723 else => |e| return e,
717 };724 };
718725
726 return target;
727}
728
729fn stage2TargetParse(
730 stage1_target: *Stage2Target,
731 zig_triple_oz: ?[*:0]const u8,
732 mcpu_oz: ?[*:0]const u8,
733 dynamic_linker_oz: ?[*:0]const u8,
734) !void {
735 const target = try stage2CrossTarget(zig_triple_oz, mcpu_oz, dynamic_linker_oz);
719 try stage1_target.fromTarget(target);736 try stage1_target.fromTarget(target);
720}737}
721738
...@@ -905,22 +922,6 @@ const Stage2Target = extern struct {...@@ -905,22 +922,6 @@ const Stage2Target = extern struct {
905922
906 dynamic_linker: ?[*:0]const u8,923 dynamic_linker: ?[*:0]const u8,
907924
908 fn toTarget(in_target: Stage2Target) CrossTarget {
909 if (in_target.is_native) return .{};
910
911 const in_arch = in_target.arch - 1; // skip over ZigLLVM_UnknownArch
912 const in_os = in_target.os;
913 const in_abi = in_target.abi;
914
915 return .{
916 .Cross = .{
917 .cpu = Target.Cpu.baseline(enumInt(Target.Cpu.Arch, in_arch)),
918 .os = Target.Os.defaultVersionRange(enumInt(Target.Os.Tag, in_os)),
919 .abi = enumInt(Target.Abi, in_abi),
920 },
921 };
922 }
923
924 fn fromTarget(self: *Stage2Target, cross_target: CrossTarget) !void {925 fn fromTarget(self: *Stage2Target, cross_target: CrossTarget) !void {
925 const allocator = std.heap.c_allocator;926 const allocator = std.heap.c_allocator;
926927
src/main.cpp+1-1
...@@ -1391,7 +1391,7 @@ static int main0(int argc, char **argv) {...@@ -1391,7 +1391,7 @@ static int main0(int argc, char **argv) {
1391 return main_exit(root_progress_node, EXIT_SUCCESS);1391 return main_exit(root_progress_node, EXIT_SUCCESS);
1392 }1392 }
1393 case CmdTargets:1393 case CmdTargets:
1394 return stage2_cmd_targets(buf_ptr(&zig_triple_buf));1394 return stage2_cmd_targets(target_string, mcpu, dynamic_linker);
1395 case CmdNone:1395 case CmdNone:
1396 return print_full_usage(arg0, stderr, EXIT_FAILURE);1396 return print_full_usage(arg0, stderr, EXIT_FAILURE);
1397 }1397 }
src/stage2.cpp+1-1
...@@ -260,7 +260,7 @@ Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, cons...@@ -260,7 +260,7 @@ Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, cons
260 return ErrorNone;260 return ErrorNone;
261}261}
262262
263int stage2_cmd_targets(const char *zig_triple) {263int stage2_cmd_targets(const char *zig_triple, const char *mcpu, const char *dynamic_linker) {
264 const char *msg = "stage0 called stage2_cmd_targets";264 const char *msg = "stage0 called stage2_cmd_targets";
265 stage2_panic(msg, strlen(msg));265 stage2_panic(msg, strlen(msg));
266}266}
src/stage2.h+3-3
...@@ -201,9 +201,6 @@ ZIG_EXTERN_C void stage2_progress_complete_one(Stage2ProgressNode *node);...@@ -201,9 +201,6 @@ ZIG_EXTERN_C void stage2_progress_complete_one(Stage2ProgressNode *node);
201ZIG_EXTERN_C void stage2_progress_update_node(Stage2ProgressNode *node,201ZIG_EXTERN_C void stage2_progress_update_node(Stage2ProgressNode *node,
202 size_t completed_count, size_t estimated_total_items);202 size_t completed_count, size_t estimated_total_items);
203203
204// ABI warning
205ZIG_EXTERN_C int stage2_cmd_targets(const char *zig_triple);
206
207// ABI warning204// ABI warning
208struct Stage2LibCInstallation {205struct Stage2LibCInstallation {
209 const char *include_dir;206 const char *include_dir;
...@@ -302,6 +299,9 @@ struct ZigTarget {...@@ -302,6 +299,9 @@ struct ZigTarget {
302ZIG_EXTERN_C enum Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, const char *mcpu,299ZIG_EXTERN_C enum Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, const char *mcpu,
303 const char *dynamic_linker);300 const char *dynamic_linker);
304301
302// ABI warning
303ZIG_EXTERN_C int stage2_cmd_targets(const char *zig_triple, const char *mcpu, const char *dynamic_linker);
304
305305
306// ABI warning306// ABI warning
307struct Stage2NativePaths {307struct Stage2NativePaths {