authorgravatar for emekankurumeh@outlook.comemekoi <emekankurumeh@outlook.com> 2020-04-11 15:18:54-05:00
committergravatar for emekankurumeh@outlook.comemekoi <emekankurumeh@outlook.com> 2020-04-11 15:18:54-05:00
logde08d283da8f8f4da8dfaee61c0bdd85c813c938
treecd61ca306b1f5021adadce73153194f58498067f
parent1a4f46ae7d185e14bc3ff76f078fc27cfff58e8f

fix compilation under mingw


2 files changed, 23 insertions(+), 4 deletions(-)

CMakeLists.txt+3
...@@ -454,6 +454,9 @@ if("${ZIG_TARGET_TRIPLE}" STREQUAL "native")...@@ -454,6 +454,9 @@ if("${ZIG_TARGET_TRIPLE}" STREQUAL "native")
454 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"454 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
455 )455 )
456 set(ZIG_EXECUTABLE "${zig_BINARY_DIR}/zig")456 set(ZIG_EXECUTABLE "${zig_BINARY_DIR}/zig")
457 if (WIN32)
458 set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe")
459 endif()
457else()460else()
458 add_custom_target(zig_build_libstage2 ALL461 add_custom_target(zig_build_libstage2 ALL
459 COMMAND "${ZIG_EXECUTABLE}" ${BUILD_LIBSTAGE2_ARGS}462 COMMAND "${ZIG_EXECUTABLE}" ${BUILD_LIBSTAGE2_ARGS}
src-self-hosted/stage2.zig+20-4
...@@ -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}
899899
900fn 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 warning916// ABI warning
901const Stage2Target = extern struct {917const 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 {
11141130
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");