CMake: fix warnings on msvc builds
Remove /W3 from default flags, and disable a couple of warnings:
C4127: conditional expression is constant
C4458: declaration of 'identifier' hides class member
These match our warning settings of Clang/GCC more closely.
Also fix some valid warnings in some tests.
Change-Id: I46cb30b93ece74039db4aa0d6b52a675ee36859d
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/44960
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 92669f9..7d2e1bf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -76,6 +76,14 @@
message(STATUS "Using python3")
find_package(PythonInterp 3 REQUIRED)
+# CMake < 3.15 sets /W3 in CMAKE_CXX_FLAGS. Remove it if it's there.
+# See https://gitlab.kitware.com/cmake/cmake/-/issues/18317
+if (MSVC)
+ if (CMAKE_CXX_FLAGS MATCHES "/W3")
+ string(REPLACE "/W3" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+ endif()
+endif()
+
if (${TINT_CHECK_CHROMIUM_STYLE})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -add-plugin -Xclang find-bad-constructs")
endif()
@@ -186,8 +194,10 @@
/W4
/WX
/wd4068
+ /wd4127
/wd4244
/wd4267
+ /wd4458
/wd4514
/wd4571
/wd4625
diff --git a/src/writer/spirv/builder_discard_test.cc b/src/writer/spirv/builder_discard_test.cc
index 938a130..6784893 100644
--- a/src/writer/spirv/builder_discard_test.cc
+++ b/src/writer/spirv/builder_discard_test.cc
@@ -28,7 +28,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateStatement(expr), 1u) << b.error();
+ EXPECT_TRUE(b.GenerateStatement(expr)) << b.error();
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"(OpKill
)");
}
diff --git a/src/writer/spirv/builder_function_decoration_test.cc b/src/writer/spirv/builder_function_decoration_test.cc
index 34b8e89..f46ccfb 100644
--- a/src/writer/spirv/builder_function_decoration_test.cc
+++ b/src/writer/spirv/builder_function_decoration_test.cc
@@ -65,7 +65,8 @@
EXPECT_EQ(preamble[0].opcode(), spv::Op::OpEntryPoint);
ASSERT_GE(preamble[0].operands().size(), 3u);
- EXPECT_EQ(preamble[0].operands()[0].to_i(), params.model);
+ EXPECT_EQ(preamble[0].operands()[0].to_i(),
+ static_cast<uint32_t>(params.model));
}
INSTANTIATE_TEST_SUITE_P(
BuilderTest,