| ... | ... | @@ -897,6 +897,22 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file: |
| 897 | 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 | 916 | // ABI warning |
| 901 | 917 | const Stage2Target = extern struct { |
| 902 | 918 | arch: c_int, |
| ... | ... | @@ -1114,13 +1130,13 @@ const Stage2Target = extern struct { |
| 1114 | 1130 | |
| 1115 | 1131 | .windows => try os_builtin_str_buffer.outStream().print( |
| 1116 | 1132 | \\ .windows = .{{ |
| 1117 | | \\ .min = .{}, |
| 1118 | | \\ .max = .{}, |
| 1133 | \\ .min = {}, |
| 1134 | \\ .max = {}, |
| 1119 | 1135 | \\ }}}}, |
| 1120 | 1136 | \\ |
| 1121 | 1137 | , .{ |
| 1122 | | @tagName(target.os.version_range.windows.min), |
| 1123 | | @tagName(target.os.version_range.windows.max), |
| 1138 | try enumToString(target.os.version_range.windows.min, "Target.Os.WindowsVersion"), |
| 1139 | try enumToString(target.os.version_range.windows.max, "Target.Os.WindowsVersion") |
| 1124 | 1140 | }), |
| 1125 | 1141 | } |
| 1126 | 1142 | try os_builtin_str_buffer.appendSlice("};\n"); |