diff --git a/build/gen.py b/build/gen.py
index c8f0e88..0659545 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -299,7 +299,7 @@
     cxx = os.environ.get('CXX', 'g++')
     ld = os.environ.get('LD', 'g++')
     ar = os.environ.get('AR', 'ar -X64')
-  elif platform.is_msys():
+  elif platform.is_msys() or platform.is_mingw():
     cxx = os.environ.get('CXX', 'g++')
     ld = os.environ.get('LD', 'g++')
     ar = os.environ.get('AR', 'ar')
@@ -384,7 +384,10 @@
           '-Wno-implicit-fallthrough',
           '-Wno-redundant-move',
           '-Wno-unused-variable',
-          '-std=gnu++17'
+          '-Wno-format',             # Use of %llx, which is supported by _UCRT, false positive
+          '-Wno-strict-aliasing',    # Dereferencing punned pointer
+          '-Wno-cast-function-type', # Casting FARPROC to RegDeleteKeyExPtr
+          '-std=gnu++17',
         ])
       else:
         # This is needed by libc++.
diff --git a/src/base/files/file_util.h b/src/base/files/file_util.h
index 27fc998..e2f1197 100644
--- a/src/base/files/file_util.h
+++ b/src/base/files/file_util.h
@@ -26,7 +26,7 @@
 #include "util/build_config.h"
 
 #if defined(OS_WIN)
-#include "base/win/windows_types.h"
+#include <windows.h>
 #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
 #include "base/logging.h"
 #include "base/posix/eintr_wrapper.h"
diff --git a/src/base/files/platform_file.h b/src/base/files/platform_file.h
index cba2fc8..67c2d30 100644
--- a/src/base/files/platform_file.h
+++ b/src/base/files/platform_file.h
@@ -10,7 +10,7 @@
 
 #if defined(OS_WIN)
 #include "base/win/scoped_handle.h"
-#include "base/win/windows_types.h"
+#include <windows.h>
 #endif
 
 // This file defines platform-independent types for dealing with
diff --git a/src/base/win/registry.h b/src/base/win/registry.h
index 1fb2388..f56d2a2 100644
--- a/src/base/win/registry.h
+++ b/src/base/win/registry.h
@@ -8,7 +8,7 @@
 #include <stdint.h>
 #include <string>
 #include <vector>
-#include "base/win/windows_types.h"
+#include <windows.h>
 
 #include "base/macros.h"
 #include "base/win/scoped_handle.h"
diff --git a/src/base/win/scoped_handle.cc b/src/base/win/scoped_handle.cc
index ddc744f..cc034af 100644
--- a/src/base/win/scoped_handle.cc
+++ b/src/base/win/scoped_handle.cc
@@ -3,8 +3,6 @@
 // found in the LICENSE file.
 
 #include "base/win/scoped_handle.h"
-#include "base/win/windows_types.h"
-
 #include <windows.h>
 
 namespace base {
diff --git a/src/base/win/scoped_handle.h b/src/base/win/scoped_handle.h
index e67e447..4573af3 100644
--- a/src/base/win/scoped_handle.h
+++ b/src/base/win/scoped_handle.h
@@ -5,7 +5,7 @@
 #ifndef BASE_WIN_SCOPED_HANDLE_H_
 #define BASE_WIN_SCOPED_HANDLE_H_
 
-#include "base/win/windows_types.h"
+#include <windows.h>
 
 #include "base/gtest_prod_util.h"
 #include "base/logging.h"
diff --git a/src/base/win/windows_types.h b/src/base/win/windows_types.h
deleted file mode 100644
index 880586e..0000000
--- a/src/base/win/windows_types.h
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains defines and typedefs that allow popular Windows types to
-// be used without the overhead of including windows.h.
-
-#ifndef BASE_WIN_WINDOWS_TYPES_H
-#define BASE_WIN_WINDOWS_TYPES_H
-
-// Needed for function prototypes.
-#include <inttypes.h>
-#include <concurrencysal.h>
-#include <sal.h>
-#include <specstrings.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// typedef and define the most commonly used Windows integer types.
-
-typedef unsigned long DWORD;
-typedef long LONG;
-typedef __int64 LONGLONG;
-typedef unsigned __int64 ULONGLONG;
-
-#define VOID void
-typedef char CHAR;
-typedef short SHORT;
-typedef long LONG;
-typedef int INT;
-typedef unsigned int UINT;
-typedef unsigned int* PUINT;
-typedef void* LPVOID;
-typedef void* PVOID;
-typedef void* HANDLE;
-typedef int BOOL;
-typedef unsigned char BYTE;
-typedef BYTE BOOLEAN;
-typedef DWORD ULONG;
-typedef unsigned short WORD;
-typedef WORD UWORD;
-typedef WORD ATOM;
-
-#if defined(_WIN64)
-typedef __int64 INT_PTR, *PINT_PTR;
-typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
-
-typedef __int64 LONG_PTR, *PLONG_PTR;
-typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
-#else
-typedef __w64 int INT_PTR, *PINT_PTR;
-typedef __w64 unsigned int UINT_PTR, *PUINT_PTR;
-
-typedef __w64 long LONG_PTR, *PLONG_PTR;
-typedef __w64 unsigned long ULONG_PTR, *PULONG_PTR;
-#endif
-
-typedef UINT_PTR WPARAM;
-typedef LONG_PTR LPARAM;
-typedef LONG_PTR LRESULT;
-#define LRESULT LONG_PTR
-typedef _Return_type_success_(return >= 0) long HRESULT;
-
-typedef ULONG_PTR SIZE_T, *PSIZE_T;
-typedef LONG_PTR SSIZE_T, *PSSIZE_T;
-
-typedef DWORD ACCESS_MASK;
-typedef ACCESS_MASK REGSAM;
-
-// Forward declare Windows compatible handles.
-
-#define CHROME_DECLARE_HANDLE(name) \
-  struct name##__;                  \
-  typedef struct name##__* name
-CHROME_DECLARE_HANDLE(HGLRC);
-CHROME_DECLARE_HANDLE(HICON);
-CHROME_DECLARE_HANDLE(HINSTANCE);
-CHROME_DECLARE_HANDLE(HKEY);
-CHROME_DECLARE_HANDLE(HKL);
-CHROME_DECLARE_HANDLE(HMENU);
-CHROME_DECLARE_HANDLE(HWND);
-typedef HINSTANCE HMODULE;
-#undef CHROME_DECLARE_HANDLE
-
-// Forward declare some Windows struct/typedef sets.
-
-typedef struct _OVERLAPPED OVERLAPPED;
-typedef struct tagMSG MSG, *PMSG, *NPMSG, *LPMSG;
-
-typedef struct _RTL_SRWLOCK RTL_SRWLOCK;
-typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
-
-typedef struct _GUID GUID;
-typedef GUID CLSID;
-
-typedef struct tagLOGFONTW LOGFONTW, *PLOGFONTW, *NPLOGFONTW, *LPLOGFONTW;
-typedef LOGFONTW LOGFONT;
-
-typedef struct _FILETIME FILETIME;
-
-typedef struct tagMENUITEMINFOW MENUITEMINFOW, MENUITEMINFO;
-
-typedef struct tagNMHDR NMHDR;
-
-// Declare Chrome versions of some Windows structures. These are needed for
-// when we need a concrete type but don't want to pull in Windows.h. We can't
-// declare the Windows types so we declare our types and cast to the Windows
-// types in a few places.
-
-struct CHROME_SRWLOCK {
-  PVOID Ptr;
-};
-
-struct CHROME_CONDITION_VARIABLE {
-  PVOID Ptr;
-};
-
-// Define some commonly used Windows constants. Note that the layout of these
-// macros - including internal spacing - must be 100% consistent with windows.h.
-
-// clang-format off
-
-#ifndef INVALID_HANDLE_VALUE
-// Work around there being two slightly different definitions in the SDK.
-#define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1)
-#endif
-#define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
-#define HTNOWHERE 0
-#define MAX_PATH 260
-#define CS_GLOBALCLASS 0x4000
-
-#define ERROR_SUCCESS 0L
-#define ERROR_FILE_NOT_FOUND 2L
-#define ERROR_ACCESS_DENIED 5L
-#define ERROR_INVALID_HANDLE 6L
-#define ERROR_SHARING_VIOLATION 32L
-#define ERROR_LOCK_VIOLATION 33L
-#define REG_BINARY ( 3ul )
-
-#define STATUS_PENDING ((DWORD   )0x00000103L)
-#define STILL_ACTIVE STATUS_PENDING
-#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
-#define FAILED(hr) (((HRESULT)(hr)) < 0)
-
-#define HKEY_CLASSES_ROOT (( HKEY ) (ULONG_PTR)((LONG)0x80000000) )
-#define HKEY_LOCAL_MACHINE (( HKEY ) (ULONG_PTR)((LONG)0x80000002) )
-#define HKEY_CURRENT_USER (( HKEY ) (ULONG_PTR)((LONG)0x80000001) )
-#define KEY_QUERY_VALUE (0x0001)
-#define KEY_SET_VALUE (0x0002)
-#define KEY_CREATE_SUB_KEY (0x0004)
-#define KEY_ENUMERATE_SUB_KEYS (0x0008)
-#define KEY_NOTIFY (0x0010)
-#define KEY_CREATE_LINK (0x0020)
-#define KEY_WOW64_32KEY (0x0200)
-#define KEY_WOW64_64KEY (0x0100)
-#define KEY_WOW64_RES (0x0300)
-
-#define READ_CONTROL (0x00020000L)
-#define SYNCHRONIZE (0x00100000L)
-
-#define STANDARD_RIGHTS_READ (READ_CONTROL)
-#define STANDARD_RIGHTS_WRITE (READ_CONTROL)
-#define STANDARD_RIGHTS_ALL (0x001F0000L)
-
-#define KEY_READ                ((STANDARD_RIGHTS_READ       |\
-                                  KEY_QUERY_VALUE            |\
-                                  KEY_ENUMERATE_SUB_KEYS     |\
-                                  KEY_NOTIFY)                 \
-                                  &                           \
-                                 (~SYNCHRONIZE))
-
-
-#define KEY_WRITE               ((STANDARD_RIGHTS_WRITE      |\
-                                  KEY_SET_VALUE              |\
-                                  KEY_CREATE_SUB_KEY)         \
-                                  &                           \
-                                 (~SYNCHRONIZE))
-
-#define KEY_ALL_ACCESS          ((STANDARD_RIGHTS_ALL        |\
-                                  KEY_QUERY_VALUE            |\
-                                  KEY_SET_VALUE              |\
-                                  KEY_CREATE_SUB_KEY         |\
-                                  KEY_ENUMERATE_SUB_KEYS     |\
-                                  KEY_NOTIFY                 |\
-                                  KEY_CREATE_LINK)            \
-                                  &                           \
-                                 (~SYNCHRONIZE))
-
-// Define some macros needed when prototyping Windows functions.
-
-#define DECLSPEC_IMPORT __declspec(dllimport)
-#define WINBASEAPI DECLSPEC_IMPORT
-#define WINUSERAPI DECLSPEC_IMPORT
-#define WINAPI __stdcall
-#define CALLBACK __stdcall
-
-// clang-format on
-
-// Needed for optimal lock performance.
-WINBASEAPI _Releases_exclusive_lock_(*SRWLock) VOID WINAPI
-    ReleaseSRWLockExclusive(_Inout_ PSRWLOCK SRWLock);
-
-// Needed to support protobuf's GetMessage macro magic.
-WINUSERAPI BOOL WINAPI GetMessageW(_Out_ LPMSG lpMsg,
-                                   _In_opt_ HWND hWnd,
-                                   _In_ UINT wMsgFilterMin,
-                                   _In_ UINT wMsgFilterMax);
-
-// Needed for thread_local_storage.h
-WINBASEAPI LPVOID WINAPI TlsGetValue(_In_ DWORD dwTlsIndex);
-
-// Needed for scoped_handle.h
-WINBASEAPI _Check_return_ _Post_equals_last_error_ DWORD WINAPI
-    GetLastError(VOID);
-
-WINBASEAPI VOID WINAPI SetLastError(_In_ DWORD dwErrCode);
-
-#ifdef __cplusplus
-}
-#endif
-
-// These macros are all defined by windows.h and are also used as the names of
-// functions in the Chromium code base. Add to this list as needed whenever
-// there is a Windows macro which causes a function call to be renamed. This
-// ensures that the same renaming will happen everywhere. Includes of this file
-// can be added wherever needed to ensure this consistent renaming.
-
-#define CopyFile CopyFileW
-#define CreateDirectory CreateDirectoryW
-#define CreateEvent CreateEventW
-#define CreateFile CreateFileW
-#define CreateService CreateServiceW
-#define DeleteFile DeleteFileW
-#define DispatchMessage DispatchMessageW
-#define DrawText DrawTextW
-#define GetComputerName GetComputerNameW
-#define GetCurrentDirectory GetCurrentDirectoryW
-#define GetCurrentTime() GetTickCount()
-#define GetFileAttributes GetFileAttributesW
-#define GetMessage GetMessageW
-#define GetUserName GetUserNameW
-#define LoadIcon LoadIconW
-#define LoadImage LoadImageW
-#define PostMessage PostMessageW
-#define ReplaceFile ReplaceFileW
-#define ReportEvent ReportEventW
-#define SendMessage SendMessageW
-#define SendMessageCallback SendMessageCallbackW
-#define SetCurrentDirectory SetCurrentDirectoryW
-#define StartService StartServiceW
-#define StrCat StrCatW
-
-#endif  // BASE_WIN_WINDOWS_TYPES_H
diff --git a/src/util/semaphore.h b/src/util/semaphore.h
index 8632713..2952cae 100644
--- a/src/util/semaphore.h
+++ b/src/util/semaphore.h
@@ -12,7 +12,7 @@
 #include "util/build_config.h"
 
 #if defined(OS_WIN)
-#include "base/win/windows_types.h"
+#include <windows.h>
 #elif defined(OS_MACOSX)
 #include <dispatch/dispatch.h>
 #elif defined(OS_POSIX)
