[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 21/37] configure: do not clobber environment CFLAGS/CXXFLAGS/LDFLA
From: |
Paolo Bonzini |
Subject: |
[PULL 21/37] configure: do not clobber environment CFLAGS/CXXFLAGS/LDFLAGS |
Date: |
Tue, 6 Oct 2020 09:29:31 +0200 |
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>
---
configure | 38 +++++++++++++++++---------------------
meson.build | 3 ++-
2 files changed, 19 insertions(+), 22 deletions(-)
diff --git a/configure b/configure
index 2fdb4339e8..1b173276ea 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/meson.build b/meson.build
index 0b8ec210f0..8904f7d79b 100644
--- a/meson.build
+++ b/meson.build
@@ -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']}
--
2.26.2
- [PULL 11/37] cpus: remove checks for non-NULL cpus_accel, (continued)
- [PULL 11/37] cpus: remove checks for non-NULL cpus_accel, Paolo Bonzini, 2020/10/06
- [PULL 14/37] whpx: remove whpx specific functions from global includes, Paolo Bonzini, 2020/10/06
- [PULL 16/37] kvm: remove kvm specific functions from global includes, Paolo Bonzini, 2020/10/06
- [PULL 17/37] kvm: kvm_init_vcpu take Error pointer, Paolo Bonzini, 2020/10/06
- [PULL 18/37] accel/tcg: use current_machine as it is always set for softmmu, Paolo Bonzini, 2020/10/06
- [PULL 19/37] slirp: Convert Makefile bits to meson bits, Paolo Bonzini, 2020/10/06
- [PULL 20/37] dtc: Convert Makefile bits to meson bits, Paolo Bonzini, 2020/10/06
- [PULL 23/37] configure: don't enable ASLR for --enable-debug Windows builds, Paolo Bonzini, 2020/10/06
- [PULL 22/37] configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson, Paolo Bonzini, 2020/10/06
- [PULL 25/37] replay: provide an accessor for rr filename, Paolo Bonzini, 2020/10/06
- [PULL 21/37] configure: do not clobber environment CFLAGS/CXXFLAGS/LDFLAGS,
Paolo Bonzini <=
- [PULL 24/37] replay: don't record interrupt poll, Paolo Bonzini, 2020/10/06
- [PULL 26/37] qcow2: introduce icount field for snapshots, Paolo Bonzini, 2020/10/06
- [PULL 27/37] migration: introduce icount field for snapshots, Paolo Bonzini, 2020/10/06
- [PULL 28/37] qapi: introduce replay.json for record/replay-related stuff, Paolo Bonzini, 2020/10/06
- [PULL 29/37] replay: introduce info hmp/qmp command, Paolo Bonzini, 2020/10/06
- [PULL 30/37] replay: introduce breakpoint at the specified step, Paolo Bonzini, 2020/10/06
- [PULL 35/37] replay: describe reverse debugging in docs/replay.txt, Paolo Bonzini, 2020/10/06
- [PULL 32/37] replay: flush rr queue before loading the vmstate, Paolo Bonzini, 2020/10/06
- [PULL 31/37] replay: implement replay-seek command, Paolo Bonzini, 2020/10/06