| ... | @@ -897,6 +897,22 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file: | ... | @@ -897,6 +897,22 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file: |
| 897 | return .None; | 897 | return .None; |
| 898 | } | 898 | } |
| 899 | | 899 | |
| | 900 | fn enumToString(value: var, type_name: []const u8) ![]const u8 { |
| | 901 | switch (@typeInfo(@TypeOf(value))) { |
| | 902 | .Enum => |e| { |
| | 903 | if (e.is_exhaustive) { |
| | 904 | return std.fmt.allocPrint(std.heap.c_allocator, ".{}", .{@tagName(value)}); |
| | 905 | } else { |
| | 906 | return std.fmt.allocPrint(std.heap.c_allocator, |
| | 907 | "@intToEnum({}, {})", |
| | 908 | .{type_name, @enumToInt(value)} |
| | 909 | ); |
| | 910 | } |
| | 911 | }, |
| | 912 | else => unreachable |
| | 913 | } |
| | 914 | } |
| | 915 | |
| 900 | // ABI warning | 916 | // ABI warning |
| 901 | const Stage2Target = extern struct { | 917 | const Stage2Target = extern struct { |
| 902 | arch: c_int, | 918 | arch: c_int, |
| ... | @@ -1114,13 +1130,13 @@ const Stage2Target = extern struct { | ... | @@ -1114,13 +1130,13 @@ const Stage2Target = extern struct { |
| 1114 | | 1130 | |
| 1115 | .windows => try os_builtin_str_buffer.outStream().print( | 1131 | .windows => try os_builtin_str_buffer.outStream().print( |
| 1116 | \\ .windows = .{{ | 1132 | \\ .windows = .{{ |
| 1117 | \\ .min = .{}, | 1133 | \\ .min = {}, |
| 1118 | \\ .max = .{}, | 1134 | \\ .max = {}, |
| 1119 | \\ }}}}, | 1135 | \\ }}}}, |
| 1120 | \\ | 1136 | \\ |
| 1121 | , .{ | 1137 | , .{ |
| 1122 | @tagName(target.os.version_range.windows.min), | 1138 | try enumToString(target.os.version_range.windows.min, "Target.Os.WindowsVersion"), |
| 1123 | @tagName(target.os.version_range.windows.max), | 1139 | try enumToString(target.os.version_range.windows.max, "Target.Os.WindowsVersion") |
| 1124 | }), | 1140 | }), |
| 1125 | } | 1141 | } |
| 1126 | try os_builtin_str_buffer.appendSlice("};\n"); | 1142 | try os_builtin_str_buffer.appendSlice("};\n"); |