Mesa (main): meson: Use get_supported_arguments more often.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Nov 24 07:36:00 UTC 2021
Module: Mesa
Branch: main
Commit: 6c89f09b7bc970e6e32da6cce98db69b2badb1f4
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6c89f09b7bc970e6e32da6cce98db69b2badb1f4
Author: Georg Lehmann <dadschoorse at gmail.com>
Date: Fri Jun 25 17:05:31 2021 +0200
meson: Use get_supported_arguments more often.
Signed-off-by: Georg Lehmann <dadschoorse at gmail.com>
Reviewed-by: Dylan Baker <dylan at pnwbakers.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11609>
---
meson.build | 134 +++++++++++++++++++++++++-----------------------------------
1 file changed, 55 insertions(+), 79 deletions(-)
diff --git a/meson.build b/meson.build
index 29f0c3f3912..147d7649ce9 100644
--- a/meson.build
+++ b/meson.build
@@ -1118,35 +1118,31 @@ c_msvc_compat_args = []
no_override_init_args = []
cpp_msvc_compat_args = []
if cc.get_id() == 'msvc'
- foreach a : ['/wd4018', # signed/unsigned mismatch
- '/wd4056', # overflow in floating-point constant arithmetic
- '/wd4244', # conversion from 'type1' to 'type2', possible loss of data
- '/wd4267', # 'var' : conversion from 'size_t' to 'type', possible loss of data
- '/wd4305', # trancation from 'type1' to 'type2'
- '/wd4351', # new behavior: elements of array 'array' will be default initialized
- '/wd4756', # overflow in constant arithmetic
- '/wd4800', # forcing value to bool 'true' or 'false' (performance warning)
- '/wd4996', # disabled deprecated POSIX name warnings
- '/wd4291', # no matching operator delete found
- '/wd4146', # unary minus operator applied to unsigned type, result still unsigned
- '/wd4200', # nonstandard extension used: zero-sized array in struct/union
- '/wd4624', # destructor was implicitly defined as deleted [from LLVM]
- '/wd4309', # 'initializing': truncation of constant value
- '/wd4838', # conversion from 'int' to 'const char' requires a narrowing conversion
- '/wd5105', # macro expansion producing 'defined' has undefined behavior (winbase.h, need Windows SDK upgrade)
- '/we4020', # Error when passing the wrong number of parameters
- '/we4024', # Error when passing different type of parameter
- '/Zc:__cplusplus', #Set __cplusplus macro to match the /std:c++<version> on the command line
- ]
- if cc.has_argument(a)
- c_args += a
- endif
- if cpp.has_argument(a)
- cpp_args += a
- endif
- endforeach
-else
_trial = [
+ '/wd4018', # signed/unsigned mismatch
+ '/wd4056', # overflow in floating-point constant arithmetic
+ '/wd4244', # conversion from 'type1' to 'type2', possible loss of data
+ '/wd4267', # 'var' : conversion from 'size_t' to 'type', possible loss of data
+ '/wd4305', # trancation from 'type1' to 'type2'
+ '/wd4351', # new behavior: elements of array 'array' will be default initialized
+ '/wd4756', # overflow in constant arithmetic
+ '/wd4800', # forcing value to bool 'true' or 'false' (performance warning)
+ '/wd4996', # disabled deprecated POSIX name warnings
+ '/wd4291', # no matching operator delete found
+ '/wd4146', # unary minus operator applied to unsigned type, result still unsigned
+ '/wd4200', # nonstandard extension used: zero-sized array in struct/union
+ '/wd4624', # destructor was implicitly defined as deleted [from LLVM]
+ '/wd4309', # 'initializing': truncation of constant value
+ '/wd4838', # conversion from 'int' to 'const char' requires a narrowing conversion
+ '/wd5105', # macro expansion producing 'defined' has undefined behavior (winbase.h, need Windows SDK upgrade)
+ '/we4020', # Error when passing the wrong number of parameters
+ '/we4024', # Error when passing different type of parameter
+ '/Zc:__cplusplus', #Set __cplusplus macro to match the /std:c++<version> on the command line
+ ]
+ c_args += cc.get_supported_arguments(_trial)
+ cpp_args += cpp.get_supported_arguments(_trial)
+else
+ _trial_c = [
'-Werror=implicit-function-declaration',
'-Werror=missing-prototypes',
'-Werror=return-type',
@@ -1160,22 +1156,10 @@ else
'-fno-trapping-math',
'-Qunused-arguments',
'-fno-common',
+ # Clang
+ '-Wno-microsoft-enum-value',
]
- # MinGW chokes on format specifiers and I can't get it all working
- if not (cc.get_id() == 'gcc' and host_machine.system() == 'windows')
- _trial += ['-Werror=format', '-Wformat-security']
- endif
- # FreeBSD annotated <pthread.h> but Mesa isn't ready
- if not (cc.get_id() == 'clang' and host_machine.system() == 'freebsd')
- _trial += ['-Werror=thread-safety']
- endif
- foreach a : _trial
- if cc.has_argument(a)
- c_args += a
- endif
- endforeach
-
- _trial = [
+ _trial_cpp = [
'-Werror=return-type',
'-Werror=empty-body',
'-Wno-non-virtual-dtor',
@@ -1189,39 +1173,43 @@ else
# to the memory before the constructor as "dead stores".
# For now we disable this optimization.
'-flifetime-dse=1',
+ # Clang
+ '-Wno-microsoft-enum-value',
]
+
# MinGW chokes on format specifiers and I can't get it all working
if not (cc.get_id() == 'gcc' and host_machine.system() == 'windows')
- _trial += ['-Werror=format', '-Wformat-security']
+ _trial_c += ['-Werror=format', '-Wformat-security']
+ _trial_cpp += ['-Werror=format', '-Wformat-security']
endif
- foreach a : _trial
- if cpp.has_argument(a)
- cpp_args += a
- endif
- endforeach
- foreach a : ['-Wno-override-init', '-Wno-initializer-overrides']
- if cc.has_argument(a)
- no_override_init_args += a
- endif
- endforeach
+ # FreeBSD annotated <pthread.h> but Mesa isn't ready
+ if not (cc.get_id() == 'clang' and host_machine.system() == 'freebsd')
+ _trial_c += ['-Werror=thread-safety']
+ endif
+
+ # If the compiler supports it, put function and data symbols in their
+ # own sections and GC the sections after linking. This lets drivers
+ # drop shared code unused by that specific driver (particularly
+ # relevant for Vulkan drivers).
+ if cc.has_link_argument('-Wl,--gc-sections')
+ _trial_c += ['-ffunction-sections', '-fdata-sections']
+ _trial_cpp += ['-ffunction-sections', '-fdata-sections']
+ endif
+
+ c_args += cc.get_supported_arguments(_trial_c)
+ cpp_args += cpp.get_supported_arguments(_trial_cpp)
+
+ no_override_init_args += cc.get_supported_arguments(
+ ['-Wno-override-init', '-Wno-initializer-overrides']
+ )
# Check for C and C++ arguments for MSVC compatibility. These are only used
# in parts of the mesa code base that need to compile with MSVC, mainly
# common code
- foreach a : ['-Werror=pointer-arith', '-Werror=gnu-empty-initializer']
- if cc.has_argument(a)
- c_msvc_compat_args += a
- endif
- if cpp.has_argument(a)
- cpp_msvc_compat_args += a
- endif
- endforeach
-
- if cc.has_argument('-Wmicrosoft-enum-value') # Clang
- c_args += '-Wno-microsoft-enum-value'
- cpp_args += '-Wno-microsoft-enum-value'
- endif
+ _trial_msvc = ['-Werror=pointer-arith', '-Werror=gnu-empty-initializer']
+ c_msvc_compat_args += cc.get_supported_arguments(_trial_msvc)
+ cpp_msvc_compat_args += cpp.get_supported_arguments(_trial_msvc)
endif
# set linker arguments
@@ -2154,18 +2142,6 @@ if with_perfetto
pre_args += '-DHAVE_PERFETTO'
endif
-# If the compiler supports it, put function and data symbols in their
-# own sections and GC the sections after linking. This lets drivers
-# drop shared code unused by that specific driver (particularly
-# relevant for Vulkan drivers).
-if cc.has_link_argument('-Wl,--gc-sections')
- foreach a: ['-ffunction-sections', '-fdata-sections']
- if cc.has_argument(a)
- add_project_arguments(a, language : ['c', 'cpp'])
- endif
- endforeach
-endif
-
foreach a : pre_args
add_project_arguments(a, language : ['c', 'cpp'])
endforeach
More information about the mesa-commit
mailing list