summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorspycrab <spycrab@users.noreply.github.com>2019-05-08 23:57:47 +0200
committerspycrab <spycrab@users.noreply.github.com>2019-05-12 00:44:00 +0200
commit53ef641da49671f37464e14d8d387cf8effcbc7d (patch)
tree63625ff32aeacbd57d2c23271931e4e7fd72ba43 /Source
parent199c0943a499e7f8d7c1c6e18ffabbcef1f3eedc (diff)
CMake: Add MSVC support
Diffstat (limited to 'Source')
-rw-r--r--Source/CMakeLists.txt33
1 files changed, 33 insertions, 0 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index 7d435e1ca2..2563a618c1 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -13,6 +13,39 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
+if (MSVC)
+ # Set warning level to 4
+ add_compile_options(/W4)
+
+ # Disable some warnings
+ add_compile_options(
+ /wd4201 # nonstandard extension used : nameless struct/union
+ /wd4127 # conditional expression is constant
+ /wd4100 # 'identifier' : unreferenced formal parameter
+ /wd4200 # InputCommon fix temp.
+ /wd4244 # 'conversion' conversion from 'type1' to 'type2', possible loss of data
+ /wd4121 # 'symbol' : alignment of a member was sensitive to packing
+ /wd4324 # Padding was added at the end of a structure because you specified a __declspec(align) value.
+ /wd4714 # function 'function' marked as __forceinline not inlined
+ /wd4351 # new behavior: elements of array 'array' will be default initialized
+ # TODO: Enable this warning once possible
+ /wd4245 # conversion from 'type1' to 'type2', signed/unsigned mismatch
+ # Currently jits use some annoying code patterns which makes this common
+ )
+
+ # Additional warnings
+ add_compile_options(
+ /w44263 # Non-virtual member function hides base class virtual function
+ /w44265 # Class has virtual functions, but destructor is not virtual
+ )
+
+ # Treat all warnings as errors
+ add_compile_options(/WX)
+
+ add_definitions(/D _CRT_NONSTDC_NO_WARNINGS)
+ add_definitions(/utf-8)
+endif()
+
# These aren't actually needed for C11/C++11
# but some dependencies require them (LLVM, libav).
add_definitions(-D__STDC_LIMIT_MACROS)