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:56:43 +0800
commit07223e7c19a79458084c872cba9b371155dde037 (patch)
treefb551824a85d7017c3f0e696bc706918e9c0c772
parent3612a16e3a4d148a41d209cb5c9a7249be97a73c (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 e7eb27d..f84658a 100644
--- a/meson.build
+++ b/meson.build
@@ -234,17 +234,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
- foreach wd : ['/wd4267', '/wd4800', '/utf-8']
- disabled_warning = cpp_compiler.get_supported_arguments(wd)
- add_project_arguments(disabled_warning, language: 'cpp')
- endforeach
+
+ 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
+
+ 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'