configure: propagate --extra-cflags and --extra-ldflags to meson compile tests
Meson (intentionally) does not add QEMU_CFLAGS to cc.compiles/cc.links tests, as they are supposed to be independent of the specific sets of compilation flags used to build the programs. However, the user can still use CFLAGS or the toolchain file's LANG_args/LANG_link_args option to specify -I or -L options that apply to cc.compiles/cc.links as well. This is also the intended use of configure's --extra-cflags, --extra-cxxflags and --extra-ldflags options. For example, if one has netmap's header in a nonstandard directory, up to commit837b84b1c0
it used to work fine to do: .../configure --enable-netmap \ --extra-cflags=-I/path/to/netmap/sys but since the test was converted to meson, this does not work anymore. Pass these options to meson via the toolchain file instead of via config-host.mak, since both have the same purpose. Reported-by: Owen LaGarde Reported-by: Thomas Huth <thuth@redhat.com> Fixes:47b30835e4
("configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson", 2020-10-06) Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
8009da0374
commit
a286666044
36
configure
vendored
36
configure
vendored
@ -174,14 +174,14 @@ update_cxxflags() {
|
||||
|
||||
compile_object() {
|
||||
local_cflags="$1"
|
||||
do_cc $CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
|
||||
do_cc $CFLAGS $EXTRA_CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
|
||||
}
|
||||
|
||||
compile_prog() {
|
||||
local_cflags="$1"
|
||||
local_ldflags="$2"
|
||||
do_cc $CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
|
||||
$LDFLAGS $CONFIGURE_LDFLAGS $QEMU_LDFLAGS $local_ldflags
|
||||
do_cc $CFLAGS $EXTRA_CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
|
||||
$LDFLAGS $EXTRA_LDFLAGS $CONFIGURE_LDFLAGS $QEMU_LDFLAGS $local_ldflags
|
||||
}
|
||||
|
||||
# symbolically link $1 to $2. Portable version of "ln -sf".
|
||||
@ -286,6 +286,10 @@ for opt do
|
||||
esac
|
||||
done
|
||||
|
||||
EXTRA_CFLAGS=""
|
||||
EXTRA_CXXFLAGS=""
|
||||
EXTRA_LDFLAGS=""
|
||||
|
||||
xen_ctrl_version="$default_feature"
|
||||
xfs="$default_feature"
|
||||
membarrier="$default_feature"
|
||||
@ -394,13 +398,13 @@ for opt do
|
||||
;;
|
||||
--cpu=*) cpu="$optarg"
|
||||
;;
|
||||
--extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
|
||||
QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg"
|
||||
--extra-cflags=*)
|
||||
EXTRA_CFLAGS="$EXTRA_CFLAGS $optarg"
|
||||
EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $optarg"
|
||||
;;
|
||||
--extra-cxxflags=*) EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $optarg"
|
||||
;;
|
||||
--extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
|
||||
;;
|
||||
--extra-ldflags=*) QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg"
|
||||
EXTRA_LDFLAGS="$optarg"
|
||||
--extra-ldflags=*) EXTRA_LDFLAGS="$EXTRA_LDFLAGS $optarg"
|
||||
;;
|
||||
--enable-debug-info) debug_info="yes"
|
||||
;;
|
||||
@ -1346,8 +1350,8 @@ Advanced options (experts only):
|
||||
build time
|
||||
--cxx=CXX use C++ compiler CXX [$cxx]
|
||||
--objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
|
||||
--extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
|
||||
--extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
|
||||
--extra-cflags=CFLAGS append extra C compiler flags CFLAGS
|
||||
--extra-cxxflags=CXXFLAGS append extra C++ compiler flags CXXFLAGS
|
||||
--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
|
||||
--cross-cc-ARCH=CC use compiler when building ARCH guest test cases
|
||||
--cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
|
||||
@ -3402,7 +3406,7 @@ EOF
|
||||
|
||||
update_cxxflags
|
||||
|
||||
if do_cxx $CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
|
||||
if do_cxx $CXXFLAGS $EXTRA_CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
|
||||
# C++ compiler $cxx works ok with C compiler $cc
|
||||
:
|
||||
else
|
||||
@ -3909,10 +3913,10 @@ if test "$skip_meson" = no; then
|
||||
|
||||
test -z "$cxx" && echo "link_language = 'c'" >> $cross
|
||||
echo "[built-in options]" >> $cross
|
||||
echo "c_args = [$(meson_quote $CFLAGS)]" >> $cross
|
||||
echo "cpp_args = [$(meson_quote $CXXFLAGS)]" >> $cross
|
||||
echo "c_link_args = [$(meson_quote $LDFLAGS)]" >> $cross
|
||||
echo "cpp_link_args = [$(meson_quote $LDFLAGS)]" >> $cross
|
||||
echo "c_args = [$(meson_quote $CFLAGS $EXTRA_CFLAGS)]" >> $cross
|
||||
echo "cpp_args = [$(meson_quote $CXXFLAGS $EXTRA_CXXFLAGS)]" >> $cross
|
||||
echo "c_link_args = [$(meson_quote $CFLAGS $LDFLAGS $EXTRA_CFLAGS $EXTRA_LDFLAGS)]" >> $cross
|
||||
echo "cpp_link_args = [$(meson_quote $CXXFLAGS $LDFLAGS $EXTRA_CXXFLAGS $EXTRA_LDFLAGS)]" >> $cross
|
||||
echo "[binaries]" >> $cross
|
||||
echo "c = [$(meson_quote $cc $CPU_CFLAGS)]" >> $cross
|
||||
test -n "$cxx" && echo "cpp = [$(meson_quote $cxx $CPU_CFLAGS)]" >> $cross
|
||||
|
Loading…
Reference in New Issue
Block a user