[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/4] configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meso
From: |
Paolo Bonzini |
Subject: |
[PATCH 4/4] configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson |
Date: |
Mon, 5 Oct 2020 15:56:13 +0200 |
Environment variables like CFLAGS are easy to accidentally change. Meson
warns if that happens, but in a project with a lot of configuration that
is easy to lose. It is also surprising behavior since meson caches -D
options and remembers those on reconfiguration (which we rely on,
since configure options become -D options).
By placing the user-provided CFLAGS, CXXFLAGS and LDFLAGS in the
cross file, we at least get consistent behavior. These environment
variables are still ugly and not really recommended, but there are
distros that rely on them. For the gory details, refer to
https://github.com/mesonbuild/meson/issues/4664.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20200923092617.1593722-5-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 25 +++++++++++++++----------
meson.build | 14 ++++++++++++--
2 files changed, 27 insertions(+), 12 deletions(-)
diff --git a/configure b/configure
index 1b173276ea..04c8cc017c 100755
--- a/configure
+++ b/configure
@@ -7130,24 +7130,29 @@ echo "export PYTHON='$python'" >> "$iotests_common_env"
if test "$skip_meson" = no; then
cross="config-meson.cross.new"
meson_quote() {
- echo "['$(echo $* | sed "s/ /','/g")']"
+ echo "'$(echo $* | sed "s/ /','/g")'"
}
echo "# Automatically generated by configure - do not modify" > $cross
echo "[properties]" >> $cross
test -z "$cxx" && echo "link_language = 'c'" >> $cross
+echo "[built-in options]" >> $cross
+echo "c_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
+echo "cpp_args = [${CXXFLAGS:+$(meson_quote $CXXFLAGS)}]" >> $cross
+echo "c_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
+echo "cpp_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
echo "[binaries]" >> $cross
-echo "c = $(meson_quote $cc)" >> $cross
-test -n "$cxx" && echo "cpp = $(meson_quote $cxx)" >> $cross
-echo "ar = $(meson_quote $ar)" >> $cross
-echo "nm = $(meson_quote $nm)" >> $cross
-echo "pkgconfig = $(meson_quote $pkg_config_exe)" >> $cross
-echo "ranlib = $(meson_quote $ranlib)" >> $cross
+echo "c = [$(meson_quote $cc)]" >> $cross
+test -n "$cxx" && echo "cpp = [$(meson_quote $cxx)]" >> $cross
+echo "ar = [$(meson_quote $ar)]" >> $cross
+echo "nm = [$(meson_quote $nm)]" >> $cross
+echo "pkgconfig = [$(meson_quote $pkg_config_exe)]" >> $cross
+echo "ranlib = [$(meson_quote $ranlib)]" >> $cross
if has $sdl2_config; then
- echo "sdl2-config = $(meson_quote $sdl2_config)" >> $cross
+ echo "sdl2-config = [$(meson_quote $sdl2_config)]" >> $cross
fi
-echo "strip = $(meson_quote $strip)" >> $cross
-echo "windres = $(meson_quote $windres)" >> $cross
+echo "strip = [$(meson_quote $strip)]" >> $cross
+echo "windres = [$(meson_quote $windres)]" >> $cross
if test -n "$cross_prefix"; then
cross_arg="--cross-file config-meson.cross"
echo "[host_machine]" >> $cross
diff --git a/meson.build b/meson.build
index d9377f371d..e9122d2b90 100644
--- a/meson.build
+++ b/meson.build
@@ -1758,8 +1758,18 @@ if targetos == 'darwin'
summary_info += {'Objective-C compiler':
meson.get_compiler('objc').cmd_array()[0]}
endif
summary_info += {'ARFLAGS': config_host['ARFLAGS']}
-summary_info += {'CFLAGS': '-O' + get_option('optimization')
- + (get_option('debug') ? ' -g' :
'')}
+summary_info += {'CFLAGS': ' '.join(get_option('c_args')
+ + ['-O' +
get_option('optimization')]
+ + (get_option('debug') ? ['-g']
: []))}
+if link_language == 'cpp'
+ summary_info += {'CXXFLAGS': ' '.join(get_option('cpp_args')
+ + ['-O' +
get_option('optimization')]
+ + (get_option('debug') ? ['-g']
: []))}
+endif
+link_args = get_option(link_language + '_link_args')
+if link_args.length() > 0
+ summary_info += {'LDFLAGS': ' '.join(link_args)}
+endif
summary_info += {'QEMU_CFLAGS': config_host['QEMU_CFLAGS']}
summary_info += {'QEMU_LDFLAGS': config_host['QEMU_LDFLAGS']}
summary_info += {'make': config_host['MAKE']}
--
2.26.2
- [PATCH 0/4] Convert remaining submodules to meson, cleanup env var handling, Paolo Bonzini, 2020/10/05
- [PATCH 3/4] configure: do not clobber environment CFLAGS/CXXFLAGS/LDFLAGS, Paolo Bonzini, 2020/10/05
- [PATCH 1/4] slirp: Convert Makefile bits to meson bits, Paolo Bonzini, 2020/10/05
- [PATCH 2/4] dtc: Convert Makefile bits to meson bits, Paolo Bonzini, 2020/10/05
- [PATCH 4/4] configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson,
Paolo Bonzini <=
- Re: [PATCH 0/4] Convert remaining submodules to meson, cleanup env var handling, Richard Henderson, 2020/10/05