mirror of https://github.com/xemu-project/xemu.git
configure: do not clobber environment CFLAGS/CXXFLAGS/LDFLAGS
If the CFLAGS, CXXFLAGS or LDFLAGS variables are present in the environment, any modification made within the configure script is passed down to Meson. This is particularly undesirable for the "-pie" option, since it overrides "-shared" and thus messes up the linker flags for shared modules. Using a separate variable therefore fixes the bug, while clarifying that the scope of these CFLAGS is just the configure script. We also do not need to pass those variables in config-host.mak; they were only used for printing the summary now that all submodules are built with handwritten Meson rules). For now synthesize CFLAGS in the configuration summary, the next patch will also pass them in a cleaner way using the cross file. Reported-by: Frederic Bezies Analyzed-by: Toolybird 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-4-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
fbb4121d59
commit
5770e8afd6
|
@ -155,7 +155,7 @@ update_cxxflags() {
|
|||
# options which some versions of GCC's C++ compiler complain about
|
||||
# because they only make sense for C programs.
|
||||
QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS"
|
||||
CXXFLAGS=$(echo "$CFLAGS" | sed s/-std=gnu99/-std=gnu++11/)
|
||||
CONFIGURE_CXXFLAGS=$(echo "$CONFIGURE_CFLAGS" | sed s/-std=gnu99/-std=gnu++11/)
|
||||
for arg in $QEMU_CFLAGS; do
|
||||
case $arg in
|
||||
-Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
|
||||
|
@ -170,13 +170,14 @@ update_cxxflags() {
|
|||
|
||||
compile_object() {
|
||||
local_cflags="$1"
|
||||
do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
|
||||
do_cc $CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
|
||||
}
|
||||
|
||||
compile_prog() {
|
||||
local_cflags="$1"
|
||||
local_ldflags="$2"
|
||||
do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $QEMU_LDFLAGS $local_ldflags
|
||||
do_cc $CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
|
||||
$LDFLAGS $CONFIGURE_LDFLAGS $QEMU_LDFLAGS $local_ldflags
|
||||
}
|
||||
|
||||
# symbolically link $1 to $2. Portable version of "ln -sf".
|
||||
|
@ -537,7 +538,10 @@ QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
|
|||
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
||||
QEMU_INCLUDES="-iquote . -iquote ${source_path} -iquote ${source_path}/accel/tcg -iquote ${source_path}/include"
|
||||
QEMU_INCLUDES="$QEMU_INCLUDES -iquote ${source_path}/disas/libvixl"
|
||||
CFLAGS="-std=gnu99 -Wall"
|
||||
|
||||
# Flags that are needed during configure but later taken care of by Meson
|
||||
CONFIGURE_CFLAGS="-std=gnu99 -Wall"
|
||||
CONFIGURE_LDFLAGS=
|
||||
|
||||
|
||||
check_define() {
|
||||
|
@ -851,7 +855,7 @@ if test "$mingw32" = "yes" ; then
|
|||
EXESUF=".exe"
|
||||
HOST_DSOSUF=".dll"
|
||||
# MinGW needs -mthreads for TLS and macro _MT.
|
||||
CFLAGS="-mthreads $CFLAGS"
|
||||
CONFIGURE_CFLAGS="-mthreads $CONFIGURE_CFLAGS"
|
||||
write_c_skeleton;
|
||||
prefix="/qemu"
|
||||
qemu_suffix=""
|
||||
|
@ -2109,7 +2113,7 @@ fi
|
|||
|
||||
if test "$static" = "yes"; then
|
||||
if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then
|
||||
CFLAGS="-fPIE -DPIE $CFLAGS"
|
||||
CONFIGURE_CFLAGS="-fPIE -DPIE $CONFIGURE_CFLAGS"
|
||||
QEMU_LDFLAGS="-static-pie $QEMU_LDFLAGS"
|
||||
pie="yes"
|
||||
elif test "$pie" = "yes"; then
|
||||
|
@ -2119,11 +2123,11 @@ if test "$static" = "yes"; then
|
|||
pie="no"
|
||||
fi
|
||||
elif test "$pie" = "no"; then
|
||||
CFLAGS="$CFLAGS_NOPIE $CFLAGS"
|
||||
LDFLAGS="$LDFLAGS_NOPIE $LDFLAGS"
|
||||
CONFIGURE_CFLAGS="$CFLAGS_NOPIE $CONFIGURE_CFLAGS"
|
||||
CONFIGURE_LDFLAGS="$LDFLAGS_NOPIE $CONFIGURE_LDFLAGS"
|
||||
elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
|
||||
CFLAGS="-fPIE -DPIE $CFLAGS"
|
||||
LDFLAGS="-pie $LDFLAGS"
|
||||
CONFIGURE_CFLAGS="-fPIE -DPIE $CONFIGURE_CFLAGS"
|
||||
CONFIGURE_LDFLAGS="-pie $CONFIGURE_LDFLAGS"
|
||||
pie="yes"
|
||||
elif test "$pie" = "yes"; then
|
||||
error_exit "PIE not available due to missing toolchain support"
|
||||
|
@ -3667,7 +3671,7 @@ EOF
|
|||
if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
|
||||
if cc_has_warning_flag "-Wno-unknown-attributes"; then
|
||||
glib_cflags="-Wno-unknown-attributes $glib_cflags"
|
||||
CFLAGS="-Wno-unknown-attributes $CFLAGS"
|
||||
CONFIGURE_CFLAGS="-Wno-unknown-attributes $CONFIGURE_CFLAGS"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -3687,7 +3691,7 @@ EOF
|
|||
if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
|
||||
if cc_has_warning_flag "-Wno-unused-function"; then
|
||||
glib_cflags="$glib_cflags -Wno-unused-function"
|
||||
CFLAGS="$CFLAGS -Wno-unused-function"
|
||||
CONFIGURE_CFLAGS="$CONFIGURE_CFLAGS -Wno-unused-function"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -5814,13 +5818,6 @@ elif test "$fortify_source" = "yes" ; then
|
|||
QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
|
||||
debug=no
|
||||
fi
|
||||
if test "$debug_info" = "yes"; then
|
||||
CFLAGS="-g $CFLAGS"
|
||||
LDFLAGS="-g $LDFLAGS"
|
||||
fi
|
||||
if test "$debug" = "no"; then
|
||||
CFLAGS="-O2 $CFLAGS"
|
||||
fi
|
||||
|
||||
case "$ARCH" in
|
||||
alpha)
|
||||
|
@ -6043,7 +6040,7 @@ EOF
|
|||
|
||||
update_cxxflags
|
||||
|
||||
if do_cxx $CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
|
||||
if do_cxx $CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
|
||||
# C++ compiler $cxx works ok with C compiler $cc
|
||||
:
|
||||
else
|
||||
|
@ -6953,7 +6950,6 @@ echo "RANLIB=$ranlib" >> $config_host_mak
|
|||
echo "NM=$nm" >> $config_host_mak
|
||||
echo "PKG_CONFIG=$pkg_config_exe" >> $config_host_mak
|
||||
echo "WINDRES=$windres" >> $config_host_mak
|
||||
echo "CFLAGS=$CFLAGS" >> $config_host_mak
|
||||
echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
|
||||
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
|
||||
echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
|
||||
|
|
|
@ -1771,7 +1771,8 @@ 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': config_host['CFLAGS']}
|
||||
summary_info += {'CFLAGS': '-O' + get_option('optimization')
|
||||
+ (get_option('debug') ? ' -g' : '')}
|
||||
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