[gtkmm/meson-msvc-warnings-3-24: 1/2] meson.build/MSVC: Re-order warnings-related c[xx]flags a bit




commit 90b00f068f0addaf346610c4d02c915d739ede04
Author: Chun-wei Fan <fanchunwei src gnome org>
Date:   Mon May 23 11:05:39 2022 +0800

    meson.build/MSVC: Re-order warnings-related c[xx]flags a bit
    
    Don't (needlessly) repeat checking for the '/utf-8' compiler flag, and
    use the `/wd4267` compiler flag only when building a 64-bit build, since
    warning C4267 only applies for 64-bit builds.
    
    Also, add a short description for the warning-related compiler flags for
    Visual Studio.

 meson.build | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/meson.build b/meson.build
index b6c62cd2..8288c91e 100644
--- a/meson.build
+++ b/meson.build
@@ -275,8 +275,7 @@ use_msvc14x_toolset_ver = get_option('msvc14x-parallel-installable')
 msvc14x_toolset_ver = ''
 
 if is_msvc
-  add_project_arguments(cpp_compiler.get_supported_arguments([ '/utf-8', '/wd4828']), language: 'cpp')
-  add_project_arguments(cpp_compiler.get_supported_arguments([ '/utf-8']), language: 'c')
+  add_project_arguments(cpp_compiler.get_supported_arguments([ '/utf-8', '/wd4828']), language: ['cpp','c'])
 
   # Check for the first line in a file generated with gmmproc,
   # to see which gmmproc version was used
@@ -366,7 +365,18 @@ gui_app_ldflags = []
 #       otherwise the program will fail to link unless we defined a WinMain()
 #       for them
 if is_msvc
-  foreach wd : ['/FImsvc_recommended_pragmas.h', '/wd4267', '/EHsc', '/wd4250', '/wd4805']
+  disable_warnings_list = [
+    '/FImsvc_recommended_pragmas.h', # Turn off harmless warnings but make potentially
+                                     # dangerous ones glaring, distributed with GLib
+    '/EHsc',  # avoid warnings caused by exception handling model used
+    '/wd4250', # 'class1' : inherits 'class2::member' via dominance
+    '/wd4805' # unsafe mix of type 'type' and type 'type' in operation
+  ]
+  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 : disable_warnings_list
     disabled_warning = cpp_compiler.get_supported_arguments(wd)
     add_project_arguments(disabled_warning, language: 'cpp')
   endforeach


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]