summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChun-wei Fan <fanchunwei@src.gnome.org>2022-05-23 17:04:29 +0800
committerChun-wei Fan <fanchunwei@src.gnome.org>2022-05-24 16:59:43 +0800
commit3a6ca156e2dfd7ddebe38aff0dc260e5127ca48e (patch)
tree4ed691aa76ab5b2a2c6e41c7a885bfa321eac1f3
parente520469e63c14b1e6016aae747546d17ea9b49de (diff)
Meson: Re-organize warnings-related compiler flags for MSVC
Add a short description for the warning-related compiler flags for Visual Studio. Also, use the `/wd4267` compiler flag only when building a 64-bit build, since warning C4267 only applies for 64-bit builds.
-rw-r--r--meson.build28
1 files changed, 22 insertions, 6 deletions
diff --git a/meson.build b/meson.build
index 5b87e35..483ea9e 100644
--- a/meson.build
+++ b/meson.build
@@ -241,17 +241,33 @@ msvc14x_toolset_ver = ''
# MSVC: Ignore warnings that aren't really harmful, but make those
# that should not be overlooked stand out.
if is_msvc
+ disable_warnings_list = [
+ '/EHsc', # avoid warnings caused by exception handling model used
+ '/utf-8', # Avoid C4819 unicode conversion warnings when building on CJK locales
+ '/wd4800', # Implicit conversion from 'type' to bool. Possible information loss
+ ]
+
+ # Turn off harmless warnings but make potentially dangerous ones glaring,
+ # distributed with GLib, if available
use_recommended_pragmas = cpp_compiler.get_supported_arguments('/FImsvc_recommended_pragmas.h')
if use_recommended_pragmas.length() > 0
add_project_arguments(use_recommended_pragmas, language: 'cpp')
else
- disabled_warning = cpp_compiler.get_supported_arguments(['/wd4244', '/wd4101'])
- add_project_arguments(disabled_warning, language: 'cpp')
+ disable_warnings_list += [
+ '/wd4244', # 'conversion' conversion from 'type1' to 'type2', possible loss of data
+ '/wd4101', # unreferenced local variable
+ ]
+ endif
+
+ if host_machine.cpu_family() == 'x86_64' or host_machine.cpu_family() == 'aarch64'
+ # 'var' : conversion from 'size_t' to 'type', possible loss of data (applies on 64-bit builds)
+ disable_warnings_list += '/wd4267'
endif
- foreach wd : ['/wd4267', '/wd4800', '/utf-8']
- disabled_warning = cpp_compiler.get_supported_arguments(wd)
- add_project_arguments(disabled_warning, language: 'cpp')
- endforeach
+
+ add_project_arguments(
+ cpp_compiler.get_supported_arguments(disable_warnings_list),
+ language: 'cpp'
+ )
if use_msvc14x_toolset_ver
if cpp_compiler.version().version_compare('>=19.30')
msvc14x_toolset_ver = '-vc143'