Commit de08d283da

emekoi <emekankurumeh@outlook.com>
2020-04-11 22:18:54
fix compilation under mingw
1 parent 1a4f46a
Changed files (2)
src-self-hosted
src-self-hosted/stage2.zig
@@ -897,6 +897,22 @@ export fn stage2_libc_render(stage1_libc: *Stage2LibCInstallation, output_file:
     return .None;
 }
 
+fn enumToString(value: var, type_name: []const u8) ![]const u8 {
+    switch (@typeInfo(@TypeOf(value))) {
+        .Enum => |e| {
+            if (e.is_exhaustive) {
+                return std.fmt.allocPrint(std.heap.c_allocator, ".{}", .{@tagName(value)});
+            } else {
+                return std.fmt.allocPrint(std.heap.c_allocator,
+                    "@intToEnum({}, {})",
+                    .{type_name, @enumToInt(value)}
+                );
+            }
+        },
+        else => unreachable 
+    }
+}
+
 // ABI warning
 const Stage2Target = extern struct {
     arch: c_int,
@@ -1114,13 +1130,13 @@ const Stage2Target = extern struct {
 
             .windows => try os_builtin_str_buffer.outStream().print(
                 \\ .windows = .{{
-                \\        .min = .{},
-                \\        .max = .{},
+                \\        .min = {},
+                \\        .max = {},
                 \\    }}}},
                 \\
             , .{
-                @tagName(target.os.version_range.windows.min),
-                @tagName(target.os.version_range.windows.max),
+                try enumToString(target.os.version_range.windows.min, "Target.Os.WindowsVersion"),
+                try enumToString(target.os.version_range.windows.max, "Target.Os.WindowsVersion")
             }),
         }
         try os_builtin_str_buffer.appendSlice("};\n");
CMakeLists.txt
@@ -454,6 +454,9 @@ if("${ZIG_TARGET_TRIPLE}" STREQUAL "native")
       WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
   )
   set(ZIG_EXECUTABLE "${zig_BINARY_DIR}/zig")
+  if (WIN32)
+    set(ZIG_EXECUTABLE "${ZIG_EXECUTABLE}.exe")
+  endif()
 else()
   add_custom_target(zig_build_libstage2 ALL
       COMMAND "${ZIG_EXECUTABLE}" ${BUILD_LIBSTAGE2_ARGS}