From: Johannes Schindelin <johannes.schinde...@gmx.de>

We frequently build Git using the `DEVELOPER=1` make setting as a
shortcut to enable all kinds of more stringent compiler warnings.

Those compiler warnings are relatively specific to GCC, though, so let's
try our best to translate them to the equivalent options to pass to MS
Visual C++'s `cl.exe`.

Signed-off-by: Johannes Schindelin <johannes.schinde...@gmx.de>
---
 compat/vcbuild/scripts/clink.pl | 46 +++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/compat/vcbuild/scripts/clink.pl b/compat/vcbuild/scripts/clink.pl
index 00fc339cba..ec95a3b2d0 100755
--- a/compat/vcbuild/scripts/clink.pl
+++ b/compat/vcbuild/scripts/clink.pl
@@ -70,6 +70,52 @@
                push(@lflags, $arg);
        } elsif ("$arg" =~ /^-[Rl]/) {
                # eat
+       } elsif ("$arg" eq "-Werror") {
+               push(@cflags, "-WX");
+       } elsif ("$arg" eq "-Wall") {
+               # cl.exe understands -Wall, but it is really overzealous
+               push(@cflags, "-W4");
+               # disable the "signed/unsigned mismatch" warnings; our source 
code violates that
+               push(@cflags, "-wd4018");
+               push(@cflags, "-wd4245");
+               push(@cflags, "-wd4389");
+               # disable the "unreferenced formal parameter" warning; our 
source code violates that
+               push(@cflags, "-wd4100");
+               # disable the "conditional expression is constant" warning; our 
source code violates that
+               push(@cflags, "-wd4127");
+               # disable the "const object should be initialized" warning; 
these warnings affect only objects that are `static`
+               push(@cflags, "-wd4132");
+               # disable the "function/data pointer conversion in expression" 
warning; our source code violates that
+               push(@cflags, "-wd4152");
+               # disable the "non-constant aggregate initializer" warning; our 
source code violates that
+               push(@cflags, "-wd4204");
+               # disable the "cannot be initialized using address of automatic 
variable" warning; our source code violates that
+               push(@cflags, "-wd4221");
+               # disable the "possible loss of data" warnings; our source code 
violates that
+               push(@cflags, "-wd4244");
+               push(@cflags, "-wd4267");
+               # disable the "array is too small to include a terminating null 
character" warning; we ab-use strings to initialize OIDs
+               push(@cflags, "-wd4295");
+               # disable the "'<<': result of 32-bit shift implicitly 
converted to 64 bits" warning; our source code violates that
+               push(@cflags, "-wd4334");
+               # disable the "declaration hides previous local declaration" 
warning; our source code violates that
+               push(@cflags, "-wd4456");
+               # disable the "declaration hides function parameter" warning; 
our source code violates that
+               push(@cflags, "-wd4457");
+               # disable the "declaration hides global declaration" warning; 
our source code violates that
+               push(@cflags, "-wd4459");
+               # disable the "potentially uninitialized local variable 
'<name>' used" warning; our source code violates that
+               push(@cflags, "-wd4701");
+               # disable the "unreachable code" warning; our source code 
violates that
+               push(@cflags, "-wd4702");
+               # disable the "potentially uninitialized local pointer variable 
used" warning; our source code violates that
+               push(@cflags, "-wd4703");
+               # disable the "assignment within conditional expression" 
warning; our source code violates that
+               push(@cflags, "-wd4706");
+               # disable the "'inet_ntoa': Use inet_ntop() or InetNtop() 
instead" warning; our source code violates that
+               push(@cflags, "-wd4996");
+       } elsif ("$arg" =~ /^-W[a-z]/) {
+               # let's ignore those
        } else {
                push(@args, $arg);
        }
-- 
gitgitgadget

Reply via email to