[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 10/24] meson: prepare move of QEMU_CFLAGS to meson
From: |
Paolo Bonzini |
Subject: |
[PATCH 10/24] meson: prepare move of QEMU_CFLAGS to meson |
Date: |
Thu, 11 May 2023 11:50:07 +0200 |
Clean up the handling of compiler flags in meson.build, splitting
the general flags that should be included in subprojects as well,
from warning flags that only apply to QEMU itself. The two were
mixed in both configure tests and meson tests.
This split makes it easier to move the compiler tests piecewise
from configure to Meson.
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
meson.build | 53 +++++++++++++++++++++++++++++------------------------
1 file changed, 29 insertions(+), 24 deletions(-)
diff --git a/meson.build b/meson.build
index 7e8b29a8fc0b..e194862e7e16 100644
--- a/meson.build
+++ b/meson.build
@@ -190,10 +190,23 @@ endif
# Compiler flags #
##################
-qemu_cflags = config_host['QEMU_CFLAGS'].split()
+qemu_common_flags = []
+qemu_cflags = []
+foreach arg : config_host['QEMU_CFLAGS'].split()
+ if arg.startswith('-W')
+ qemu_cflags += arg
+ else
+ qemu_common_flags += arg
+ endif
+endforeach
qemu_objcflags = config_host['QEMU_OBJCFLAGS'].split()
qemu_ldflags = config_host['QEMU_LDFLAGS'].split()
+if get_option('gprof')
+ qemu_common_flags += ['-p']
+ qemu_ldflags += ['-p']
+endif
+
if get_option('prefer_static')
qemu_ldflags += get_option('b_pie') ? '-static-pie' : '-static'
endif
@@ -207,10 +220,9 @@ if targetos == 'windows'
qemu_ldflags += cc.get_supported_link_arguments('-Wl,--dynamicbase',
'-Wl,--high-entropy-va')
endif
-if get_option('gprof')
- qemu_cflags += ['-p']
- qemu_objcflags += ['-p']
- qemu_ldflags += ['-p']
+# Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
+if targetos != 'sunos' and not config_host.has_key('CONFIG_TSAN')
+ qemu_ldflags += cc.get_supported_link_arguments('-Wl,--warn-common')
endif
# Specify linker-script with add_project_link_arguments so that it is not
placed
@@ -226,8 +238,7 @@ if get_option('fuzzing')
name: '-fsanitize-coverage-allowlist=/dev/null',
args: ['-fsanitize-coverage-allowlist=/dev/null',
'-fsanitize-coverage=trace-pc'] )
-
add_global_arguments('-fsanitize-coverage-allowlist=instrumentation-filter',
- native: false, language: all_languages)
+ qemu_common_flags +=
['-fsanitize-coverage-allowlist=instrumentation-filter']
endif
if get_option('fuzzing_engine') == ''
@@ -235,10 +246,8 @@ if get_option('fuzzing')
# compiled code. To build non-fuzzer binaries with --enable-fuzzing, link
# everything with fsanitize=fuzzer-no-link. Otherwise, the linker will be
# unable to bind the fuzzer-related callbacks added by instrumentation.
- add_global_arguments('-fsanitize=fuzzer-no-link',
- native: false, language: all_languages)
- add_global_link_arguments('-fsanitize=fuzzer-no-link',
- native: false, language: all_languages)
+ qemu_common_flags += ['-fsanitize=fuzzer-no-link']
+ qemu_ldflags += ['-fsanitize=fuzzer-no-link']
# For the actual fuzzer binaries, we need to link against the libfuzzer
# library. They need to be configurable, to support OSS-Fuzz
fuzz_exe_ldflags = ['-fsanitize=fuzzer']
@@ -249,6 +258,9 @@ if get_option('fuzzing')
endif
endif
+add_global_arguments(qemu_common_flags, native: false, language: all_languages)
+add_global_link_arguments(qemu_ldflags, native: false, language: all_languages)
+
# Check that the C++ compiler exists and works with the C compiler.
link_language = 'c'
linker = cc
@@ -272,16 +284,9 @@ if 'cpp' in all_languages
endif
endif
-# Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
-if targetos != 'sunos' and not config_host.has_key('CONFIG_TSAN')
- qemu_ldflags += linker.get_supported_link_arguments('-Wl,--warn-common')
-endif
-
-add_global_link_arguments(qemu_ldflags, native: false, language: all_languages)
-
-add_global_arguments(qemu_cflags, native: false, language: 'c')
-add_global_arguments(qemu_cxxflags, native: false, language: 'cpp')
-add_global_arguments(qemu_objcflags, native: false, language: 'objc')
+add_project_arguments(qemu_cflags, native: false, language: 'c')
+add_project_arguments(qemu_cxxflags, native: false, language: 'cpp')
+add_project_arguments(qemu_objcflags, native: false, language: 'objc')
if targetos == 'linux'
add_project_arguments('-isystem', meson.current_source_dir() /
'linux-headers',
'-isystem', 'linux-headers',
@@ -3841,12 +3846,12 @@ link_args = get_option(link_language + '_link_args')
if link_args.length() > 0
summary_info += {'LDFLAGS': ' '.join(link_args)}
endif
-summary_info += {'QEMU_CFLAGS': ' '.join(qemu_cflags)}
+summary_info += {'QEMU_CFLAGS': ' '.join(qemu_common_flags +
qemu_cflags)}
if 'cpp' in all_languages
- summary_info += {'QEMU_CXXFLAGS': ' '.join(qemu_cxxflags)}
+ summary_info += {'QEMU_CXXFLAGS': ' '.join(qemu_common_flags +
qemu_cxxflags)}
endif
if 'objc' in all_languages
- summary_info += {'QEMU_OBJCFLAGS': ' '.join(qemu_objcflags)}
+ summary_info += {'QEMU_OBJCFLAGS': ' '.join(qemu_common_flags +
qemu_objcflags)}
endif
summary_info += {'QEMU_LDFLAGS': ' '.join(qemu_ldflags)}
summary_info += {'profiler': get_option('profiler')}
--
2.40.1
- [PATCH 00/24] Meson changes for QEMU 8.1, Paolo Bonzini, 2023/05/11
- [PATCH 01/24] meson: regenerate meson-buildoptions.sh, Paolo Bonzini, 2023/05/11
- [PATCH 03/24] meson: use prefer_static option, Paolo Bonzini, 2023/05/11
- [PATCH 04/24] meson: remove static_kwargs, Paolo Bonzini, 2023/05/11
- [PATCH 05/24] meson: add more version numbers to the summary, Paolo Bonzini, 2023/05/11
- [PATCH 08/24] configure: remove pkg-config functions, Paolo Bonzini, 2023/05/11
- [PATCH 09/24] configure, meson: move --enable-modules to Meson, Paolo Bonzini, 2023/05/11
- [PATCH 06/24] meson: drop unnecessary declare_dependency(), Paolo Bonzini, 2023/05/11
- [PATCH 07/24] build: move glib detection and workarounds to meson, Paolo Bonzini, 2023/05/11
- [PATCH 10/24] meson: prepare move of QEMU_CFLAGS to meson,
Paolo Bonzini <=
- [PATCH 11/24] build: move sanitizer tests to meson, Paolo Bonzini, 2023/05/11
- [PATCH 12/24] build: move SafeStack tests to meson, Paolo Bonzini, 2023/05/11
- [PATCH 13/24] build: move coroutine backend selection to meson, Paolo Bonzini, 2023/05/11
- [PATCH 14/24] build: move stack protector flag selection to meson, Paolo Bonzini, 2023/05/11
- [PATCH 15/24] build: move warning flag selection to meson, Paolo Bonzini, 2023/05/11
- [PATCH 17/24] build: move compiler version check to meson, Paolo Bonzini, 2023/05/11
- [PATCH 02/24] meson: require 0.63.0, Paolo Bonzini, 2023/05/11
- [PATCH 16/24] build: move remaining compiler flag tests to meson, Paolo Bonzini, 2023/05/11
- [PATCH 19/24] configure: remove compiler sanity check, Paolo Bonzini, 2023/05/11
- [PATCH 22/24] configure: reorder option parsing code, Paolo Bonzini, 2023/05/11