1234567891011121314151617181920212223242526 |
- rule("compiler_setup")
- on_config(function(target)
- if target:has_tool("cxx", "cl") then
- -- MSVC
- target:add("cxxflags", "/bigobj", "/permissive-", "/Zc:__cplusplus", "/Zc:externConstexpr", "/Zc:inline", "/Zc:lambda", "/Zc:preprocessor", "/Zc:referenceBinding", "/Zc:strictStrings", "/Zc:throwingNew", {tools = "cl"})
- target:add("defines", "_CRT_SECURE_NO_WARNINGS", "_ENABLE_EXTENDED_ALIGNED_STORAGE")
- -- Enable the following additional warnings:
- target:add("cxflags", "/we4062", {tools = "cl"}) -- Switch case not handled (warning as error)
- target:add("cxflags", "/we4426", {tools = "cl"}) -- Optimization flags changed after including header, may be due to #pragma optimize() (warning as error)
- target:add("cxflags", "/we5038", {tools = "cl"}) -- Data member will be initialized after data member (warning as error)
-
- -- Disable the following warnings:
- target:add("cxflags", "/wd4251", {tools = "cl"}) -- class needs to have dll-interface to be used by clients of class blah blah blah
- target:add("cxflags", "/wd4275", {tools = "cl"}) -- DLL-interface class 'class_1' used as base for DLL-interface blah
- else
- -- GCC-compatible (GCC, Clang, ...)
- target:add("cxflags", "-Wtrampolines", {tools = "gcc"})
- target:add("cxflags", "-Werror=inconsistent-missing-override", {tools = "clang"})
- target:add("cxflags", "-Werror=pessimizing-move")
- target:add("cxflags", "-Werror=redundant-move")
- target:add("cxflags", "-Werror=reorder")
- target:add("cxflags", "-Werror=suggest-override", {tools = "gcc"})
- target:add("cxflags", "-Werror=switch")
- end
- end)
|