Adding windows toolchains
diff --git a/toolchain/BUILD b/toolchain/BUILD
index 2b0a815..46e0348 100644
--- a/toolchain/BUILD
+++ b/toolchain/BUILD
@@ -12,6 +12,8 @@
     "linux-s390_64": "cc-compiler-linux-s390_64",
     "linux-x86_32": "cc-compiler-linux-x86_32",
     "linux-x86_64": "cc-compiler-linux-x86_64",
+    "win32": "cc-compiler-windows-x86_32",
+    "win64": "cc-compiler-windows-x86_64",
 }
 
 cc_toolchain_suite(
@@ -135,3 +137,39 @@
     toolchain_dir = "/usr/tools/apple_sdks/xcode_13_0/macosx",
     toolchain_name = "darwin_x86_64",
 )
+
+cc_toolchain_config(
+    name = "win32-config",
+    bit_flag = "-m32",
+    cpp_flag = "-lstdc++",
+    extra_include = "/usr/lib/gcc/i686-w64-mingw32/10-posix/include",
+    extra_linker_flag = "-L/usr/lib/gcc/i686-w64-mingw32/10-posix",
+    include_flag = [
+        "-I/usr/lib/gcc/i686-w64-mingw32/10-posix/include/c++",
+        "-I/usr/lib/gcc/i686-w64-mingw32/10-posix/include/c++/i686-w64-mingw32",
+        "-I/usr/i686-w64-mingw32/include"
+    ],
+    linker_path = "/usr/bin/ld",
+    target_cpu = "x86_32",
+    target_full_name = "i686-w64-mingw32",
+    toolchain_dir = "/usr/i686-w64-mingw32/include",
+    toolchain_name = "i686-w64-mingw32",
+)
+
+cc_toolchain_config(
+    name = "win64-config",
+    bit_flag = "-m64",
+    cpp_flag = "-lstdc++",
+    extra_include = "/usr/lib/gcc/x86_64-w64-mingw32/10-posix/include",
+    extra_linker_flag = "-L/usr/lib/gcc/x86_64-w64-mingw32/10-posix",
+    include_flag = [
+        "-I/usr/lib/gcc/x86_64-w64-mingw32/10-posix/include/c++/",
+        "-I/usr/lib/gcc/x86_64-w64-mingw32/10-posix/include/c++/x86_64-w64-mingw32",
+        "-I/usr/x86_64-w64-mingw32/include"
+    ],
+    linker_path = "/usr/bin/ld",
+    target_cpu = "x86_64",
+    target_full_name = "x86_64-w64-mingw32",
+    toolchain_dir = "/usr/x86_64-w64-mingw32/include",
+    toolchain_name = "x86_64-w64-mingw32",
+)
diff --git a/toolchain/cc_toolchain_config.bzl b/toolchain/cc_toolchain_config.bzl
index 1c0e330..f9b9267 100644
--- a/toolchain/cc_toolchain_config.bzl
+++ b/toolchain/cc_toolchain_config.bzl
@@ -86,6 +86,7 @@
                           "-B" + ctx.attr.linker_path,
                           ctx.attr.cpp_flag,
                           "--target=" + ctx.attr.target_full_name,
+                          ctx.attr.extra_linker_flag,
                       ],
                   ),
               ],
@@ -142,6 +143,7 @@
       compiler = "clang",
       cxx_builtin_include_directories = [
           ctx.attr.toolchain_dir,
+          ctx.attr.extra_include,
           "/usr/include",
           "/usr/local/include",
           "/usr/local/lib/clang",
@@ -161,6 +163,8 @@
         "abi_version": attr.string(default = "local"),
         "bit_flag": attr.string(mandatory = True, values = ["-m32", "-m64"]),
         "cpp_flag": attr.string(mandatory = True),
+        "extra_include": attr.string(mandatory = False),
+        "extra_linker_flag": attr.string(mandatory = False),
         "include_flag": attr.string_list(),
         "linker_path": attr.string(mandatory = True),
         "sysroot": attr.string(mandatory = False),
diff --git a/toolchain/toolchains.bazelrc b/toolchain/toolchains.bazelrc
index 60fb6a4..e28aa80 100644
--- a/toolchain/toolchains.bazelrc
+++ b/toolchain/toolchains.bazelrc
@@ -8,3 +8,5 @@
 build:linux-x86_64 --config=cross_config --cpu=linux-x86_64
 build:osx-aarch_64 --config=cross_config --cpu=darwin-aarch_64
 build:osx-x86_64 --config=cross_config --cpu=darwin-x86_64
+build:win32 --config=cross_config --cpu=win32
+build:win64 --config=cross_config --cpu=win64