[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 20/30] meson: prepare move of QEMU_CFLAGS to meson
From: |
Marc-André Lureau |
Subject: |
Re: [PATCH 20/30] meson: prepare move of QEMU_CFLAGS to meson |
Date: |
Mon, 12 Dec 2022 16:02:13 +0400 |
On Fri, Dec 9, 2022 at 3:34 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> 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.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> meson.build | 53 +++++++++++++++++++++++++++++------------------------
> 1 file changed, 29 insertions(+), 24 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 99c1bde4d154..dac343d14797 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
> @@ -230,8 +242,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') == ''
> @@ -239,10 +250,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']
> @@ -253,6 +262,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
> @@ -276,16 +288,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',
> @@ -3778,12 +3783,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.38.1
>
>
--
Marc-André Lureau
- Re: [PATCH 17/30] configure: remove pkg-config functions, (continued)
[PATCH 20/30] meson: prepare move of QEMU_CFLAGS to meson, Paolo Bonzini, 2022/12/09
[PATCH 18/30] configure, meson: move --enable-modules to Meson, Paolo Bonzini, 2022/12/09
[PATCH 19/30] configure, meson: move --enable-debug-info to Meson, Paolo Bonzini, 2022/12/09
Re: [PATCH 19/30] configure, meson: move --enable-debug-info to Meson, Daniel P . Berrangé, 2022/12/16