configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson
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. Tested-by: Richard Henderson <richard.henderson@linaro.org> 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>
This commit is contained in:
parent
5770e8afd6
commit
47b30835e4
25
configure
vendored
25
configure
vendored
@ -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
|
||||
|
14
meson.build
14
meson.build
@ -1771,8 +1771,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']}
|
||||
|
Loading…
Reference in New Issue
Block a user