Fixed the Windows build of protoc by statically linking deps.
diff --git a/BUILD.bazel b/BUILD.bazel
index 4763717..6017730 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -6,7 +6,7 @@
load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain", "proto_library")
load("@rules_python//python:defs.bzl", "py_library")
load("@rules_java//java:defs.bzl", "java_binary", "java_lite_proto_library", "java_proto_library")
-load("//build_defs:cpp_opts.bzl", "COPTS", "LINK_OPTS")
+load("//build_defs:cpp_opts.bzl", "COPTS", "LINK_OPTS", "PROTOC_LINK_OPTS")
load(
":protobuf.bzl",
"adapt_proto_library",
@@ -442,7 +442,7 @@
cc_binary(
name = "protoc",
srcs = ["src/google/protobuf/compiler/main.cc"],
- linkopts = LINK_OPTS,
+ linkopts = LINK_OPTS + PROTOC_LINK_OPTS,
visibility = ["//visibility:public"],
deps = [":protoc_lib"],
)
diff --git a/build_defs/BUILD.bazel b/build_defs/BUILD.bazel
index 29a1f12..a5d831c 100644
--- a/build_defs/BUILD.bazel
+++ b/build_defs/BUILD.bazel
@@ -59,6 +59,20 @@
},
)
+config_setting(
+ name = "config_win32",
+ values = {
+ "cpu": "win32",
+ },
+)
+
+config_setting(
+ name = "config_win64",
+ values = {
+ "cpu": "win64",
+ },
+)
+
# Internal testing:
starlark_cc_proto_library(
diff --git a/build_defs/cpp_opts.bzl b/build_defs/cpp_opts.bzl
index f868c4a..1d5594d 100644
--- a/build_defs/cpp_opts.bzl
+++ b/build_defs/cpp_opts.bzl
@@ -38,3 +38,10 @@
"-lm",
],
})
+
+# When cross-compiling for Windows we need to statically link pthread and the C++ library.
+PROTOC_LINK_OPTS = select({
+ "//build_defs:config_win32": ["-static"],
+ "//build_defs:config_win64": ["-static"],
+ "//conditions:default": [],
+})