From 4c83f1253593ef46a0a190afb8ecead21f483196 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 31 Mar 2026 08:38:24 +0200 Subject: [PATCH] meson: Make room for C++-only warning flags for MSVC Refactor the MSVC warning option handling to have a list of common flags and lists of flags specific to C and C++. Reviewed-by: Jelte Fennema-Nio Discussion: https://www.postgresql.org/message-id/flat/CAGECzQR21OnnKiZO_1rLWO0-16kg1JBxnVq-wymYW0-_1cUNtg%40mail.gmail.com --- meson.build | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/meson.build b/meson.build index 0ee772cd475..cfd9cc2890d 100644 --- a/meson.build +++ b/meson.build @@ -2297,27 +2297,42 @@ endforeach if cc.get_id() == 'msvc' - cflags_warn += [ + msvc_common_warning_flags = [ + # Disable warnings in system headers + '/external:anglebrackets', + '/external:W0', + + # Warnings to disable: + # from /W2: + '/wd4244', # conversion from 'type1' to 'type2', possible loss of data + + # Additional warnings to enable: + '/w24062', # enumerator 'identifier' in switch of enum 'enumeration' is not handled [like -Wswitch] + '/w24102', # unreferenced label [like -Wunused-label] + ] + + msvc_c_warning_flags = [ # Warnings to disable: # from /W1: '/wd4090', # different 'modifier' qualifiers - # from /W2: - '/wd4244', # conversion from 'type1' to 'type2', possible loss of data # from /W3: '/wd4018', # signed/unsigned mismatch '/wd4101', # unreferenced local variable [like -Wunused-variable, but there is no "unused" attribute, so too noisy] '/wd4267', # conversion from 'size_t' to 'type', possible loss of data # Additional warnings to enable: - '/w24062', # enumerator 'identifier' in switch of enum 'enumeration' is not handled [like -Wswitch] - '/w24102', # unreferenced label [like -Wunused-label] '/w24255', # 'function' : no function prototype given: converting '()' to '(void)' [like -Wstrict-prototypes] - - # Disable warnings in system headers - '/external:anglebrackets', - '/external:W0', ] + msvc_cxx_warning_flags = [ + ] + + cflags_warn += msvc_common_warning_flags + cflags_warn += msvc_c_warning_flags + + cxxflags_warn += msvc_common_warning_flags + cxxflags_warn += msvc_cxx_warning_flags + cppflags += [ '/DWIN32', '/DWINDOWS',