diff --git a/BUILD b/BUILD index d6fb85d81cbc..6c6258321e87 100644 --- a/BUILD +++ b/BUILD @@ -1,4 +1,4 @@ -# Bazel (http://bazel.io/) BUILD file for Protobuf. +# Bazel (https://bazel.build/) BUILD file for Protobuf. licenses(["notice"]) @@ -55,6 +55,18 @@ config_setting( LINK_OPTS = select({ ":android": [], ":msvc": [], + # Linking to setargv.obj makes the default command line argument + # parser expand wildcards, so the main method's argv will contain the + # expanded list instead of the wildcards. + # Using -WHOLEARCHIVE, because: + # - Microsoft ships this object file next to default libraries + # - but this file is not a library, just a precompiled object + # - just listing the name here without "-WHOLEARCHIVE:" would make Bazel + # believe that "setargv.obj" is a source or rule output in this + # package, which it is not. + # See https://msdn.microsoft.com/en-us/library/8bch7bkk.aspx + "-WHOLEARCHIVE:setargv.obj", + ], "//conditions:default": ["-lpthread", "-lm"], })