summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure1189
1 files changed, 429 insertions, 760 deletions
diff --git a/configure b/configure
index 2acc4d1465..4e5fe33211 100755
--- a/configure
+++ b/configure
@@ -11,6 +11,55 @@ unset CLICOLOR_FORCE GREP_OPTIONS
# Don't allow CCACHE, if present, to use cached results of compile tests!
export CCACHE_RECACHE=yes
+# make source path absolute
+source_path=$(cd "$(dirname -- "$0")"; pwd)
+
+if test "$PWD" = "$source_path"
+then
+ echo "Using './build' as the directory for build output"
+
+ MARKER=build/auto-created-by-configure
+
+ if test -e build
+ then
+ if test -f $MARKER
+ then
+ rm -rf build
+ else
+ echo "ERROR: ./build dir already exists and was not previously created by configure"
+ exit 1
+ fi
+ fi
+
+ mkdir build
+ touch $MARKER
+
+ cat > GNUmakefile <<'EOF'
+# This file is auto-generated by configure to support in-source tree
+# 'make' command invocation
+
+ifeq ($(MAKECMDGOALS),)
+recurse: all
+endif
+
+.NOTPARALLEL: %
+%: force
+ @echo 'changing dir to build for $(MAKE) "$(MAKECMDGOALS)"...'
+ @$(MAKE) -C build -f Makefile $(MAKECMDGOALS)
+ @if test "$(MAKECMDGOALS)" = "distclean" && \
+ test -e build/auto-created-by-configure ; \
+ then \
+ rm -rf build GNUmakefile ; \
+ fi
+force: ;
+.PHONY: force
+GNUmakefile: ;
+
+EOF
+ cd build
+ exec $source_path/configure "$@"
+fi
+
# Temporary directory used for files created while
# configure runs. Since it is in the build directory
# we can safely blow away any previous version of it
@@ -29,7 +78,6 @@ TMPC="${TMPDIR1}/${TMPB}.c"
TMPO="${TMPDIR1}/${TMPB}.o"
TMPCXX="${TMPDIR1}/${TMPB}.cxx"
TMPE="${TMPDIR1}/${TMPB}.exe"
-TMPMO="${TMPDIR1}/${TMPB}.mo"
TMPTXT="${TMPDIR1}/${TMPB}.txt"
rm -f config.log
@@ -107,15 +155,12 @@ 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/)
for arg in $QEMU_CFLAGS; do
case $arg in
-Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
-Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
;;
- -std=gnu99)
- QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }"-std=gnu++98"
- ;;
*)
QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
;;
@@ -125,13 +170,13 @@ update_cxxflags() {
compile_object() {
local_cflags="$1"
- do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
+ do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
}
compile_prog() {
local_cflags="$1"
local_ldflags="$2"
- do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $QEMU_LDFLAGS $local_ldflags
+ do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $QEMU_LDFLAGS $local_ldflags
}
# symbolically link $1 to $2. Portable version of "ln -sf".
@@ -177,6 +222,25 @@ path_of() {
return 1
}
+version_ge () {
+ local_ver1=`echo $1 | tr . ' '`
+ local_ver2=`echo $2 | tr . ' '`
+ while true; do
+ set x $local_ver1
+ local_first=${2-0}
+ # shift 2 does nothing if there are less than 2 arguments
+ shift; shift
+ local_ver1=$*
+ set x $local_ver2
+ # the second argument finished, the first must be greater or equal
+ test $# = 1 && return 0
+ test $local_first -lt $2 && return 1
+ test $local_first -gt $2 && return 0
+ shift; shift
+ local_ver2=$*
+ done
+}
+
have_backend () {
echo "$trace_backends" | grep "$1" >/dev/null
}
@@ -282,9 +346,6 @@ ld_has() {
$ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
}
-# make source path absolute
-source_path=$(cd "$(dirname -- "$0")"; pwd)
-
if printf %s\\n "$source_path" "$PWD" | grep -q "[[:space:]:]";
then
error_exit "main directory cannot contain spaces nor colons"
@@ -300,8 +361,6 @@ audio_drv_list=""
block_drv_rw_whitelist=""
block_drv_ro_whitelist=""
host_cc="cc"
-libs_cpu=""
-libs_softmmu=""
libs_tools=""
audio_win_int=""
libs_qga=""
@@ -363,16 +422,16 @@ curses=""
docs=""
fdt=""
netmap="no"
-sdl=""
-sdl_image=""
+sdl="auto"
+sdl_image="auto"
virtfs=""
mpath=""
-vnc="yes"
+vnc="enabled"
sparse="no"
vde=""
-vnc_sasl=""
-vnc_jpeg=""
-vnc_png=""
+vnc_sasl="auto"
+vnc_jpeg="auto"
+vnc_png="auto"
xkbcommon=""
xen=""
xen_ctrl_version=""
@@ -408,24 +467,13 @@ tcg_interpreter="no"
bigendian="no"
mingw32="no"
gcov="no"
-gcov_tool="gcov"
EXESUF=""
-DSOSUF=".so"
+HOST_DSOSUF=".so"
LDFLAGS_SHARED="-shared"
modules="no"
module_upgrades="no"
prefix="/usr/local"
-mandir="\${prefix}/share/man"
-datadir="\${prefix}/share"
firmwarepath="\${prefix}/share/qemu-firmware"
-efi_aarch64=""
-qemu_docdir="\${prefix}/share/doc/qemu"
-bindir="\${prefix}/bin"
-libdir="\${prefix}/lib"
-libexecdir="\${prefix}/libexec"
-includedir="\${prefix}/include"
-sysconfdir="\${prefix}/etc"
-local_statedir="\${prefix}/var"
confsuffix="/qemu"
slirp=""
oss_lib=""
@@ -519,9 +567,10 @@ fuzzing="no"
rng_none="no"
secret_keyring=""
libdaxctl=""
+meson=""
+skip_meson=no
+gettext=""
-supported_cpu="no"
-supported_os="no"
bogus_os="no"
malloc_trim=""
@@ -607,15 +656,14 @@ ARFLAGS="${ARFLAGS-rv}"
# left shift of signed integers is well defined and has the expected
# 2s-complement style results. (Both clang and gcc agree that it
# provides these semantics.)
-QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS"
-QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
+QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
+QEMU_CFLAGS="-Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
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 \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
-QEMU_INCLUDES="$QEMU_INCLUDES -iquote \$(SRC_PATH)/disas/libvixl"
-if test "$debug_info" = "yes"; then
- CFLAGS="-g $CFLAGS"
-fi
+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"
+
# running configure in the source tree?
# we know that's the case if configure is there.
@@ -761,35 +809,27 @@ ARCH=
# Note that this case should only have supported host CPUs, not guests.
case "$cpu" in
ppc|ppc64|s390x|sparc64|x32|riscv32|riscv64)
- supported_cpu="yes"
;;
ppc64le)
ARCH="ppc64"
- supported_cpu="yes"
;;
i386|i486|i586|i686|i86pc|BePC)
cpu="i386"
- supported_cpu="yes"
;;
x86_64|amd64)
cpu="x86_64"
- supported_cpu="yes"
;;
armv*b|armv*l|arm)
cpu="arm"
- supported_cpu="yes"
;;
aarch64)
cpu="aarch64"
- supported_cpu="yes"
;;
mips*)
cpu="mips"
- supported_cpu="yes"
;;
sparc|sun4[cdmuv])
cpu="sparc"
- supported_cpu="yes"
;;
*)
# This will result in either an error or falling back to TCI later
@@ -817,7 +857,6 @@ MINGW32*)
audio_drv_list=""
fi
supported_os="yes"
- pie="no"
;;
GNU/kFreeBSD)
bsd="yes"
@@ -831,11 +870,8 @@ FreeBSD)
audio_possible_drivers="oss sdl pa"
# needed for kinfo_getvmmap(3) in libutil.h
LIBS="-lutil $LIBS"
- # needed for kinfo_getproc
- libs_qga="-lutil $libs_qga"
netmap="" # enable netmap autodetect
HOST_VARIANT_DIR="freebsd"
- supported_os="yes"
;;
DragonFly)
bsd="yes"
@@ -852,7 +888,6 @@ NetBSD)
audio_possible_drivers="oss sdl"
oss_lib="-lossaudio"
HOST_VARIANT_DIR="netbsd"
- supported_os="yes"
;;
OpenBSD)
bsd="yes"
@@ -860,7 +895,6 @@ OpenBSD)
audio_drv_list="try-sdl"
audio_possible_drivers="sdl"
HOST_VARIANT_DIR="openbsd"
- supported_os="yes"
;;
Darwin)
bsd="yes"
@@ -876,12 +910,10 @@ Darwin)
audio_drv_list="coreaudio try-sdl"
audio_possible_drivers="coreaudio sdl"
QEMU_LDFLAGS="-framework CoreFoundation -framework IOKit $QEMU_LDFLAGS"
- libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
# Disable attempts to use ObjectiveC features in os/object.h since they
# won't work when we're compiling with gcc as a C compiler.
QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
HOST_VARIANT_DIR="darwin"
- supported_os="yes"
;;
SunOS)
solaris="yes"
@@ -896,10 +928,8 @@ SunOS)
QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
# needed for TIOCWIN* defines in termios.h
QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
- QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
solarisnetlibs="-lsocket -lnsl -lresolv"
LIBS="$solarisnetlibs $LIBS"
- libs_qga="$solarisnetlibs $libs_qga"
;;
Haiku)
haiku="yes"
@@ -912,8 +942,7 @@ Linux)
linux="yes"
linux_user="yes"
kvm="yes"
- QEMU_INCLUDES="-isystem \$(SRC_PATH)/linux-headers -isystem $PWD/linux-headers $QEMU_INCLUDES"
- supported_os="yes"
+ QEMU_INCLUDES="-isystem ${source_path}/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES"
libudev="yes"
;;
esac
@@ -930,6 +959,7 @@ fi
# python 2.x, but some distros have it as python 3.x, so
# we check that too
python=
+explicit_python=no
for binary in "${PYTHON-python3}" python
do
if has "$binary"
@@ -960,13 +990,6 @@ do
fi
done
-# Check for existence of python3 yaml, needed to
-# import yaml config files into vm-build.
-python_yaml="no"
-if $(python3 -c "import yaml" 2> /dev/null); then
- python_yaml="yes"
-fi
-
: ${smbd=${SMBD-/usr/sbin/smbd}}
# Default objcc to clang if available, otherwise use CC
@@ -978,21 +1001,15 @@ fi
if test "$mingw32" = "yes" ; then
EXESUF=".exe"
- DSOSUF=".dll"
+ HOST_DSOSUF=".dll"
# MinGW needs -mthreads for TLS and macro _MT.
- QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
+ CFLAGS="-mthreads $CFLAGS"
LIBS="-lwinmm -lws2_32 $LIBS"
write_c_skeleton;
if compile_prog "" "-liberty" ; then
LIBS="-liberty $LIBS"
fi
prefix="c:/Program Files/QEMU"
- mandir="\${prefix}"
- datadir="\${prefix}"
- qemu_docdir="\${prefix}"
- bindir="\${prefix}"
- sysconfdir="\${prefix}"
- local_statedir=
confsuffix=""
libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
fi
@@ -1026,11 +1043,13 @@ for opt do
;;
--install=*) install="$optarg"
;;
- --python=*) python="$optarg"
+ --python=*) python="$optarg" ; explicit_python=yes
;;
--sphinx-build=*) sphinx_build="$optarg"
;;
- --gcov=*) gcov_tool="$optarg"
+ --skip-meson) skip_meson=yes
+ ;;
+ --meson=*) meson="$optarg"
;;
--smbd=*) smbd="$optarg"
;;
@@ -1109,8 +1128,6 @@ for opt do
;;
--firmwarepath=*) firmwarepath="$optarg"
;;
- --efi-aarch64=*) efi_aarch64="$optarg"
- ;;
--host=*|--build=*|\
--disable-dependency-tracking|\
--sbindir=*|--sharedstatedir=*|\
@@ -1121,13 +1138,13 @@ for opt do
# configure to be used by RPM and similar macros that set
# lots of directory switches by default.
;;
- --disable-sdl) sdl="no"
+ --disable-sdl) sdl="disabled"
;;
- --enable-sdl) sdl="yes"
+ --enable-sdl) sdl="enabled"
;;
- --disable-sdl-image) sdl_image="no"
+ --disable-sdl-image) sdl_image="disabled"
;;
- --enable-sdl-image) sdl_image="yes"
+ --enable-sdl-image) sdl_image="enabled"
;;
--disable-qom-cast-debug) qom_cast_debug="no"
;;
@@ -1141,9 +1158,13 @@ for opt do
;;
--enable-mpath) mpath="yes"
;;
- --disable-vnc) vnc="no"
+ --disable-vnc) vnc="disabled"
+ ;;
+ --enable-vnc) vnc="enabled"
;;
- --enable-vnc) vnc="yes"
+ --disable-gettext) gettext="false"
+ ;;
+ --enable-gettext) gettext="true"
;;
--oss-lib=*) oss_lib="$optarg"
;;
@@ -1179,17 +1200,17 @@ for opt do
;;
--disable-strip) strip_opt="no"
;;
- --disable-vnc-sasl) vnc_sasl="no"
+ --disable-vnc-sasl) vnc_sasl="disabled"
;;
- --enable-vnc-sasl) vnc_sasl="yes"
+ --enable-vnc-sasl) vnc_sasl="enabled"
;;
- --disable-vnc-jpeg) vnc_jpeg="no"
+ --disable-vnc-jpeg) vnc_jpeg="disabled"
;;
- --enable-vnc-jpeg) vnc_jpeg="yes"
+ --enable-vnc-jpeg) vnc_jpeg="enabled"
;;
- --disable-vnc-png) vnc_png="no"
+ --disable-vnc-png) vnc_png="disabled"
;;
- --enable-vnc-png) vnc_png="yes"
+ --enable-vnc-png) vnc_png="enabled"
;;
--disable-slirp) slirp="no"
;;
@@ -1648,6 +1669,26 @@ for opt do
esac
done
+libdir="${libdir:-$prefix/lib}"
+libexecdir="${libexecdir:-$prefix/libexec}"
+includedir="${includedir:-$prefix/include}"
+
+if test "$mingw32" = "yes" ; then
+ mandir="$prefix"
+ datadir="$prefix"
+ qemu_docdir="$prefix"
+ bindir="$prefix"
+ sysconfdir="$prefix"
+ local_statedir=
+else
+ mandir="${mandir:-$prefix/share/man}"
+ datadir="${datadir:-$prefix/share}"
+ qemu_docdir="${qemu_docdir:-$prefix/share/doc/qemu}"
+ bindir="${bindir:-$prefix/bin}"
+ sysconfdir="${sysconfdir:-$prefix/etc}"
+ local_statedir="${local_statedir:-$prefix/var}"
+fi
+
case "$cpu" in
ppc)
CPU_CFLAGS="-m32"
@@ -1777,6 +1818,7 @@ Advanced options (experts only):
--install=INSTALL use specified install [$install]
--python=PYTHON use specified python [$python]
--sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
+ --meson=MESON use specified meson [$meson]
--smbd=SMBD use specified smbd [$smbd]
--with-git=GIT use specified git [$git]
--static enable static build [$static]
@@ -1819,7 +1861,6 @@ Advanced options (experts only):
--with-coroutine=BACKEND coroutine backend. Supported options:
ucontext, sigaltstack, windows
--enable-gcov enable test coverage analysis with gcov
- --gcov=GCOV use specified gcov [$gcov_tool]
--disable-blobs disable installing provided firmware blobs
--with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
--with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
@@ -1952,20 +1993,6 @@ fi
# Remove old dependency files to make sure that they get properly regenerated
rm -f */config-devices.mak.d
-# Remove syscall_nr.h to be sure they will be regenerated in the build
-# directory, not in the source directory
-for arch in alpha hppa m68k xtensa sh4 microblaze arm ppc s390x sparc sparc64 \
- i386 x86_64 mips mips64 ; do
- # remove the file if it has been generated in the source directory
- rm -f "${source_path}/linux-user/${arch}/syscall_nr.h"
- # remove the dependency files
- for target in ${arch}*-linux-user ; do
- test -d "${target}" && find "${target}" -type f -name "*.d" \
- -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \
- -print | while read file ; do rm "${file}" "${file%.d}.o" ; done
- done
-done
-
if test -z "$python"
then
error_exit "Python not found. Use --python=/path/to/python"
@@ -1984,6 +2011,53 @@ python_version=$($python -c 'import sys; print("%d.%d.%d" % (sys.version_info[0]
# Suppress writing compiled files
python="$python -B"
+if test -z "$meson"; then
+ if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.0; then
+ meson=meson
+ elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
+ meson=git
+ elif test -e "${source_path}/meson/meson.py" ; then
+ meson=internal
+ else
+ if test "$explicit_python" = yes; then
+ error_exit "--python requires using QEMU's embedded Meson distribution, but it was not found."
+ else
+ error_exit "Meson not found. Use --meson=/path/to/meson"
+ fi
+ fi
+else
+ # Meson uses its own Python interpreter to invoke other Python scripts,
+ # but the user wants to use the one they specified with --python.
+ #
+ # We do not want to override the distro Python interpreter (and sometimes
+ # cannot: for example in Homebrew /usr/bin/meson is a bash script), so
+ # just require --meson=git|internal together with --python.
+ if test "$explicit_python" = yes; then
+ case "$meson" in
+ git | internal) ;;
+ *) error_exit "--python requires using QEMU's embedded Meson distribution." ;;
+ esac
+ fi
+fi
+
+if test "$meson" = git; then
+ git_submodules="${git_submodules} meson"
+fi
+if test "$git_update" = yes; then
+ (cd "${source_path}" && GIT="$git" "./scripts/git-submodule.sh" update "$git_submodules")
+fi
+
+case "$meson" in
+ git | internal)
+ if ! $python -c 'import pkg_resources' > /dev/null 2>&1; then
+ error_exit "Python setuptools not found"
+ fi
+ meson="$python ${source_path}/meson/meson.py"
+ ;;
+ *) meson=$(command -v meson) ;;
+esac
+
+
# Check that the C compiler works. Doing this here before testing
# the host CPU ensures that we had a valid CC to autodetect the
# $cpu var (and we should bail right here if that's not the case).
@@ -2114,7 +2188,7 @@ EOF
for flag in $gcc_flags; do
# We need to check both a compile and a link, since some compiler
# setups fail only on a .c->.o compile and some only at link time
- if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
+ if compile_object "-Werror $flag" &&
compile_prog "-Werror $flag" ""; then
QEMU_CFLAGS="$QEMU_CFLAGS $flag"
QEMU_LDFLAGS="$QEMU_LDFLAGS $flag"
@@ -2189,7 +2263,7 @@ fi
if test "$static" = "yes"; then
if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then
- QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
+ CFLAGS="-fPIE -DPIE $CFLAGS"
QEMU_LDFLAGS="-static-pie $QEMU_LDFLAGS"
pie="yes"
elif test "$pie" = "yes"; then
@@ -2199,11 +2273,11 @@ if test "$static" = "yes"; then
pie="no"
fi
elif test "$pie" = "no"; then
- QEMU_CFLAGS="$CFLAGS_NOPIE $QEMU_CFLAGS"
- QEMU_LDFLAGS="$LDFLAGS_NOPIE $QEMU_LDFLAGS"
+ CFLAGS="$CFLAGS_NOPIE $CFLAGS"
+ LDFLAGS="$LDFLAGS_NOPIE $LDFLAGS"
elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
- QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
- QEMU_LDFLAGS="-pie $QEMU_LDFLAGS"
+ CFLAGS="-fPIE -DPIE $CFLAGS"
+ LDFLAGS="-pie $LDFLAGS"
pie="yes"
elif test "$pie" = "yes"; then
error_exit "PIE not available due to missing toolchain support"
@@ -2366,7 +2440,7 @@ if test "$cocoa" = "yes"; then
error_exit "Cocoa and GTK UIs cannot both be enabled at once"
fi
gtk=no
- sdl=no
+ sdl=disabled
fi
# Some versions of Mac OS X incorrectly define SIZE_MAX
@@ -2532,7 +2606,7 @@ if test "$lzo" != "no" ; then
int main(void) { lzo_version(); return 0; }
EOF
if compile_prog "" "-llzo2" ; then
- libs_softmmu="$libs_softmmu -llzo2"
+ lzo_libs="-llzo2"
lzo="yes"
else
if test "$lzo" = "yes"; then
@@ -2551,7 +2625,7 @@ if test "$snappy" != "no" ; then
int main(void) { snappy_max_compressed_length(4096); return 0; }
EOF
if compile_prog "" "-lsnappy" ; then
- libs_softmmu="$libs_softmmu -lsnappy"
+ snappy_libs='-lsnappy'
snappy="yes"
else
if test "$snappy" = "yes"; then
@@ -2605,8 +2679,6 @@ if test "$zstd" != "no" ; then
if $pkg_config --atleast-version=$libzstd_minver libzstd ; then
zstd_cflags="$($pkg_config --cflags libzstd)"
zstd_libs="$($pkg_config --libs libzstd)"
- LIBS="$zstd_libs $LIBS"
- QEMU_CFLAGS="$QEMU_CFLAGS $zstd_cflags"
zstd="yes"
else
if test "$zstd" = "yes" ; then
@@ -2652,7 +2724,8 @@ if test "$xen" != "no" ; then
xen_pc="$xen_pc xentoolcore"
fi
QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
- libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
+ xen_cflags="$($pkg_config --cflags $xen_pc)"
+ xen_libs="$($pkg_config --libs $xen_pc)"
else
xen_libs="-lxenstore -lxenctrl -lxenguest"
@@ -2933,9 +3006,8 @@ EOF
if test "$xen" = yes; then
if test $xen_ctrl_version -ge 40701 ; then
- libs_softmmu="$xen_stable_libs $libs_softmmu"
+ xen_libs="$xen_libs $xen_stable_libs "
fi
- libs_softmmu="$xen_libs $libs_softmmu"
fi
fi
fi
@@ -2966,9 +3038,22 @@ if test "$whpx" != "no" ; then
fi
##########################################
+# gettext probe
+if test "$gettext" != "false" ; then
+ if has xgettext; then
+ gettext=true
+ else
+ if test "$gettext" = "true" ; then
+ feature_not_found "gettext" "Install xgettext binary"
+ fi
+ gettext=false
+ fi
+fi
+
+##########################################
# Sparse probe
if test "$sparse" != "no" ; then
- if has cgcc; then
+ if has sparse; then
sparse=yes
else
if test "$sparse" = "yes" ; then
@@ -3268,125 +3353,6 @@ if test "$vte" != "no"; then
fi
##########################################
-# SDL probe
-
-# Look for sdl configuration program (pkg-config or sdl2-config). Try
-# sdl2-config even without cross prefix, and favour pkg-config over sdl2-config.
-
-sdl_probe ()
-{
- if $pkg_config sdl2 --exists; then
- sdlconfig="$pkg_config sdl2"
- sdlversion=$($sdlconfig --modversion 2>/dev/null)
- elif has "$sdl2_config"; then
- sdlconfig="$sdl2_config"
- sdlversion=$($sdlconfig --version)
- else
- if test "$sdl" = "yes" ; then
- feature_not_found "sdl" "Install SDL2-devel"
- fi
- sdl=no
- # no need to do the rest
- return
- fi
- if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl2-config; then
- echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
- fi
-
- cat > $TMPC << EOF
-#include <SDL.h>
-#undef main /* We don't want SDL to override our main() */
-int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
-EOF
- sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
- sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
- if test "$static" = "yes" ; then
- if $pkg_config sdl2 --exists; then
- sdl_libs=$($pkg_config sdl2 --static --libs 2>/dev/null)
- else
- sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
- fi
- else
- sdl_libs=$($sdlconfig --libs 2>/dev/null)
- fi
- if compile_prog "$sdl_cflags" "$sdl_libs" ; then
- sdl=yes
-
- # static link with sdl ? (note: sdl.pc's --static --libs is broken)
- if test "$sdl" = "yes" && test "$static" = "yes" ; then
- if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
- sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
- sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
- fi
- if compile_prog "$sdl_cflags" "$sdl_libs" ; then
- :
- else
- sdl=no
- fi
- fi # static link
- else # sdl not found
- if test "$sdl" = "yes" ; then
- feature_not_found "sdl" "Install SDL2 devel"
- fi
- sdl=no
- fi # sdl compile test
-}
-
-sdl_image_probe ()
-{
- if test "$sdl_image" != "no" ; then
- if $pkg_config SDL2_image --exists; then
- if test "$static" = "yes"; then
- sdl_image_libs=$($pkg_config SDL2_image --libs --static 2>/dev/null)
- else
- sdl_image_libs=$($pkg_config SDL2_image --libs 2>/dev/null)
- fi
- sdl_image_cflags=$($pkg_config SDL2_image --cflags 2>/dev/null)
- sdl_image=yes
-
- sdl_cflags="$sdl_cflags $sdl_image_cflags"
- sdl_libs="$sdl_libs $sdl_image_libs"
- else
- if test "$sdl_image" = "yes" ; then
- feature_not_found "sdl_image" "Install SDL Image devel"
- else
- sdl_image=no
- fi
- fi
- fi
-}
-
-if test "$sdl" != "no" ; then
- sdl_probe
-fi
-
-if test "$sdl" = "yes" ; then
- sdl_image_probe
-else
- if test "$sdl_image" = "yes"; then
- echo "warning: SDL Image requested, but SDL is not available, disabling"
- fi
- sdl_image=no
-fi
-
-if test "$sdl" = "yes" ; then
- cat > $TMPC <<EOF
-#include <SDL.h>
-#if defined(SDL_VIDEO_DRIVER_X11)
-#include <X11/XKBlib.h>
-#else
-#error No x11 support
-#endif
-int main(void) { return 0; }
-EOF
- if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
- need_x11=yes
- sdl_cflags="$sdl_cflags $x11_cflags"
- sdl_libs="$sdl_libs $x11_libs"
- fi
-fi
-
-##########################################
# RDMA needs OpenFabrics libraries
if test "$rdma" != "no" ; then
cat > $TMPC <<EOF
@@ -3396,7 +3362,6 @@ EOF
rdma_libs="-lrdmacm -libverbs -libumad"
if compile_prog "" "$rdma_libs" ; then
rdma="yes"
- libs_softmmu="$libs_softmmu $rdma_libs"
else
if test "$rdma" = "yes" ; then
error_exit \
@@ -3482,85 +3447,6 @@ EOF
fi
##########################################
-# VNC SASL detection
-if test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then
- cat > $TMPC <<EOF
-#include <sasl/sasl.h>
-#include <stdio.h>
-int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
-EOF
- # Assuming Cyrus-SASL installed in /usr prefix
- # QEMU defines struct iovec in "qemu/osdep.h",
- # we don't want libsasl to redefine it in <sasl/sasl.h>.
- vnc_sasl_cflags="-DSTRUCT_IOVEC_DEFINED"
- vnc_sasl_libs="-lsasl2"
- if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
- vnc_sasl=yes
- libs_softmmu="$vnc_sasl_libs $libs_softmmu"
- QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
- else
- if test "$vnc_sasl" = "yes" ; then
- feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
- fi
- vnc_sasl=no
- fi
-fi
-
-##########################################
-# VNC JPEG detection
-if test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then
-cat > $TMPC <<EOF
-#include <stdio.h>
-#include <jpeglib.h>
-int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
-EOF
- vnc_jpeg_cflags=""
- vnc_jpeg_libs="-ljpeg"
- if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
- vnc_jpeg=yes
- libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
- QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
- else
- if test "$vnc_jpeg" = "yes" ; then
- feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
- fi
- vnc_jpeg=no
- fi
-fi
-
-##########################################
-# VNC PNG detection
-if test "$vnc" = "yes" && test "$vnc_png" != "no" ; then
-cat > $TMPC <<EOF
-//#include <stdio.h>
-#include <png.h>
-#include <stddef.h>
-int main(void) {
- png_structp png_ptr;
- png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
- return png_ptr != 0;
-}
-EOF
- if $pkg_config libpng --exists; then
- vnc_png_cflags=$($pkg_config libpng --cflags)
- vnc_png_libs=$($pkg_config libpng --libs)
- else
- vnc_png_cflags=""
- vnc_png_libs="-lpng"
- fi
- if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
- vnc_png=yes
- libs_softmmu="$vnc_png_libs $libs_softmmu"
- QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
- else
- if test "$vnc_png" = "yes" ; then
- feature_not_found "vnc-png" "Install libpng devel"
- fi
- vnc_png=no
- fi
-fi
-
-##########################################
# xkbcommon probe
if test "$xkbcommon" != "no" ; then
if $pkg_config xkbcommon --exists; then
@@ -3650,20 +3536,6 @@ EOF
fi
fi
-############################################
-# efi-aarch64 probe
-# Check for efi files needed by aarch64 VMs.
-# By default we will use the efi included with QEMU.
-# Allow user to override the path for efi also.
-if ! test -f "$efi_aarch64"; then
- if test -f $source_path/pc-bios/edk2-aarch64-code.fd.bz2; then
- # valid after build
- efi_aarch64=$PWD/pc-bios/edk2-aarch64-code.fd
- else
- efi_aarch64=""
- fi
-fi
-
##########################################
# libcap-ng library probe
if test "$cap_ng" != "no" ; then
@@ -3678,7 +3550,6 @@ int main(void)
EOF
if compile_prog "" "$cap_libs" ; then
cap_ng=yes
- libs_tools="$cap_libs $libs_tools"
else
if test "$cap_ng" = "yes" ; then
feature_not_found "cap_ng" "Install libcap-ng devel"
@@ -3696,6 +3567,8 @@ for drv in $audio_drv_list; do
alsa | try-alsa)
if $pkg_config alsa --exists; then
alsa_libs=$($pkg_config alsa --libs)
+ alsa_cflags=$($pkg_config alsa --cflags)
+ alsa=yes
if test "$drv" = "try-alsa"; then
audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa/alsa/')
fi
@@ -3711,7 +3584,9 @@ for drv in $audio_drv_list; do
pa | try-pa)
if $pkg_config libpulse --exists; then
+ libpulse=yes
pulse_libs=$($pkg_config libpulse --libs)
+ pulse_cflags=$($pkg_config libpulse --cflags)
if test "$drv" = "try-pa"; then
audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa/pa/')
fi
@@ -3754,6 +3629,7 @@ for drv in $audio_drv_list; do
jack | try-jack)
if $pkg_config jack --exists; then
+ libjack=yes
jack_libs=$($pkg_config jack --libs)
if test "$drv" = "try-jack"; then
audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack/jack/')
@@ -3945,7 +3821,6 @@ for i in $glib_modules; do
glib_libs=$($pkg_config --libs $i)
QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
LIBS="$glib_libs $LIBS"
- libs_qga="$glib_libs $libs_qga"
else
error_exit "glib-$glib_req_ver $i is required to compile QEMU"
fi
@@ -4000,7 +3875,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"
+ QEMU_CFLAGS="-Wno-unknown-attributes $CFLAGS"
fi
fi
@@ -4039,7 +3914,8 @@ if test "$zlib" != "no" ; then
int main(void) { zlibVersion(); return 0; }
EOF
if compile_prog "" "-lz" ; then
- LIBS="$LIBS -lz"
+ zlib_libs=-lz
+ LIBS="$LIBS $zlib_libs"
else
error_exit "zlib check failed" \
"Make sure to have the zlib libs and headers installed."
@@ -4156,7 +4032,6 @@ else
done
if test "$found" = "no"; then
LIBS="$pthread_lib $LIBS"
- libs_qga="$pthread_lib $libs_qga"
fi
PTHREAD_LIB="$pthread_lib"
break
@@ -4317,6 +4192,7 @@ fi
##########################################
# attr probe
+libattr_libs=
if test "$attr" != "no" ; then
cat > $TMPC <<EOF
#include <stdio.h>
@@ -4333,7 +4209,8 @@ EOF
# Older distros have <attr/xattr.h>, and need -lattr:
elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
attr=yes
- LIBS="-lattr $LIBS"
+ libattr_libs="-lattr"
+ LIBS="$libattr_libs $LIBS"
libattr=yes
else
if test "$attr" = "yes" ; then
@@ -4421,8 +4298,8 @@ EOF
if [ "$pwd_is_source_path" != "y" ] ; then
symlink "$source_path/dtc/Makefile" "dtc/Makefile"
fi
- fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
- fdt_ldflags="-L\$(BUILD_DIR)/dtc/libfdt"
+ fdt_cflags="-I${source_path}/dtc/libfdt"
+ fdt_ldflags="-L$PWD/dtc/libfdt"
fdt_libs="$fdt_libs"
elif test "$fdt" = "yes" ; then
# Not a git build & no libfdt found, prompt for system install
@@ -4436,8 +4313,6 @@ EOF
fi
fi
-libs_softmmu="$libs_softmmu $fdt_libs"
-
##########################################
# opengl probe (for sdl2, gtk, milkymist-tmu2)
@@ -4661,7 +4536,7 @@ EOF
if compile_prog "" "-lnuma" ; then
numa=yes
- libs_softmmu="-lnuma $libs_softmmu"
+ numa_libs="-lnuma"
else
if test "$numa" = "yes" ; then
feature_not_found "numa" "install numactl devel"
@@ -5165,7 +5040,6 @@ if compile_prog "" "" ; then
:
elif compile_prog "" "-lm" ; then
LIBS="-lm $LIBS"
- libs_qga="-lm $libs_qga"
else
error_exit "libm check failed"
fi
@@ -5190,7 +5064,6 @@ if compile_prog "" "" ; then
# we need pthread for static linking. use previous pthread test result
elif compile_prog "" "$pthread_lib -lrt" ; then
LIBS="$LIBS -lrt"
- libs_qga="$libs_qga -lrt"
fi
# Check whether we need to link libutil for openpty()
@@ -5204,7 +5077,6 @@ if compile_prog "" "" ; then
have_openpty="yes"
else
if compile_prog "" "-lutil" ; then
- libs_softmmu="-lutil $libs_softmmu"
libs_tools="-lutil $libs_tools"
have_openpty="yes"
fi
@@ -5223,10 +5095,7 @@ EOF
$pkg_config --atleast-version=0.12.3 spice-protocol && \
compile_prog "$spice_cflags" "$spice_libs" ; then
spice="yes"
- libs_softmmu="$libs_softmmu $spice_libs"
QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
- spice_protocol_version=$($pkg_config --modversion spice-protocol)
- spice_server_version=$($pkg_config --modversion spice-server)
else
if test "$spice" = "yes" ; then
feature_not_found "spice" \
@@ -5409,18 +5278,20 @@ case "$capstone" in
git_submodules="${git_submodules} capstone"
fi
mkdir -p capstone
- QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
+ QEMU_CFLAGS="$QEMU_CFLAGS -I${source_path}/capstone/include"
if test "$mingw32" = "yes"; then
LIBCAPSTONE=capstone.lib
else
LIBCAPSTONE=libcapstone.a
fi
- libs_cpu="-L\$(BUILD_DIR)/capstone -lcapstone $libs_cpu"
+ capstone_libs="-L$PWD/capstone -lcapstone"
+ capstone_cflags="-I${source_path}/capstone/include"
;;
system)
+ capstone_libs="$($pkg_config --libs capstone)"
+ capstone_cflags="$($pkg_config --cflags capstone)"
QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
- libs_cpu="$($pkg_config --libs capstone) $libs_cpu"
;;
no)
@@ -5571,7 +5442,6 @@ EOF
fi
LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
- libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
else
error_exit "Trace backend 'ust' missing lttng-ust header files"
fi
@@ -6204,31 +6074,6 @@ EOF
fi
fi
-#################################################
-# Sparc implicitly links with --relax, which is
-# incompatible with -r, so --no-relax should be
-# given. It does no harm to give it on other
-# platforms too.
-
-# Note: the prototype is needed since QEMU_CFLAGS
-# contains -Wmissing-prototypes
-cat > $TMPC << EOF
-extern int foo(void);
-int foo(void) { return 0; }
-EOF
-if ! compile_object ""; then
- error_exit "Failed to compile object file for LD_REL_FLAGS test"
-fi
-for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
- if do_cc -nostdlib $i -o $TMPMO $TMPO; then
- LD_REL_FLAGS=$i
- break
- fi
-done
-if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
- feature_not_found "modules" "Cannot find how to build relocatable objects"
-fi
-
##########################################
# check for sysmacros.h
@@ -6338,7 +6183,10 @@ fi
if test "$fuzzing" = "yes" ; then
write_c_fuzzer_skeleton
if compile_prog "$CPU_CFLAGS -Werror -fsanitize=fuzzer" ""; then
- have_fuzzer=yes
+ have_fuzzer=yes
+ else
+ error_exit "Your compiler doesn't support -fsanitize=fuzzer"
+ exit 1
fi
fi
@@ -6374,7 +6222,6 @@ if test "$libpmem" != "no"; then
libpmem="yes"
libpmem_libs=$($pkg_config --libs libpmem)
libpmem_cflags=$($pkg_config --cflags libpmem)
- libs_softmmu="$libs_softmmu $libpmem_libs"
QEMU_CFLAGS="$QEMU_CFLAGS $libpmem_cflags"
else
if test "$libpmem" = "yes" ; then
@@ -6392,7 +6239,6 @@ if test "$libdaxctl" != "no"; then
libdaxctl="yes"
libdaxctl_libs=$($pkg_config --libs libdaxctl)
libdaxctl_cflags=$($pkg_config --cflags libdaxctl)
- libs_softmmu="$libs_softmmu $libdaxctl_libs"
QEMU_CFLAGS="$QEMU_CFLAGS $libdaxctl_cflags"
else
if test "$libdaxctl" = "yes" ; then
@@ -6438,8 +6284,8 @@ case "$slirp" in
git_submodules="${git_submodules} slirp"
fi
mkdir -p slirp
- slirp_cflags="-I\$(SRC_PATH)/slirp/src -I\$(BUILD_DIR)/slirp/src"
- slirp_libs="-L\$(BUILD_DIR)/slirp -lslirp"
+ slirp_cflags="-I${source_path}/slirp/src -I$PWD/slirp/src"
+ slirp_libs="-L$PWD/slirp -lslirp"
if test "$mingw32" = "yes" ; then
slirp_libs="$slirp_libs -lws2_32 -liphlpapi"
fi
@@ -6522,14 +6368,31 @@ fi
write_c_skeleton
if test "$gcov" = "yes" ; then
- QEMU_CFLAGS="-fprofile-arcs -ftest-coverage -g $QEMU_CFLAGS"
- QEMU_LDFLAGS="-fprofile-arcs -ftest-coverage $QEMU_LDFLAGS"
+ :
elif test "$fortify_source" = "yes" ; then
- CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
-elif test "$debug" = "no"; 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)
+ # Ensure there's only a single GP
+ QEMU_CFLAGS="-msmall-data $QEMU_CFLAGS"
+;;
+esac
+
+if test "$gprof" = "yes" ; then
+ QEMU_CFLAGS="-p $QEMU_CFLAGS"
+ QEMU_LDFLAGS="-p $QEMU_LDFLAGS"
+fi
+
if test "$have_asan" = "yes"; then
QEMU_CFLAGS="-fsanitize=address $QEMU_CFLAGS"
QEMU_LDFLAGS="-fsanitize=address $QEMU_LDFLAGS"
@@ -6632,24 +6495,10 @@ if [ "$eventfd" = "yes" ]; then
ivshmem=yes
fi
-tools=""
-if test "$want_tools" = "yes" ; then
- tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
- if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
- tools="qemu-nbd\$(EXESUF) qemu-storage-daemon\$(EXESUF) $tools"
- fi
- if [ "$ivshmem" = "yes" ]; then
- tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
- fi
- if [ "$curl" = "yes" ]; then
- tools="elf2dmp\$(EXESUF) $tools"
- fi
-fi
if test "$softmmu" = yes ; then
if test "$linux" = yes; then
if test "$virtfs" != no && test "$cap_ng" = yes && test "$attr" = yes ; then
virtfs=yes
- helpers="$helpers fsdev/virtfs-proxy-helper\$(EXESUF)"
else
if test "$virtfs" = yes; then
error_exit "VirtFS requires libcap-ng devel and libattr devel"
@@ -6664,7 +6513,6 @@ if test "$softmmu" = yes ; then
fi
mpath=no
fi
- helpers="$helpers scsi/qemu-pr-helper\$(EXESUF)"
else
if test "$virtfs" = yes; then
error_exit "VirtFS is supported only on Linux"
@@ -6675,9 +6523,6 @@ if test "$softmmu" = yes ; then
fi
mpath=no
fi
- if test "$xkbcommon" = "yes"; then
- tools="qemu-keymap\$(EXESUF) $tools"
- fi
fi
# Probe for guest agent support/options
@@ -6686,7 +6531,6 @@ if [ "$guest_agent" != "no" ]; then
if [ "$softmmu" = no -a "$want_tools" = no ] ; then
guest_agent=no
elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
- tools="qemu-ga\$(EXESUF) $tools"
guest_agent=yes
elif [ "$guest_agent" != yes ]; then
guest_agent=no
@@ -6801,7 +6645,7 @@ EOF
update_cxxflags
- if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
+ if do_cxx $CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
# C++ compiler $cxx works ok with C compiler $cc
:
else
@@ -6823,228 +6667,6 @@ echo_version() {
# prepend pixman and ftd flags after all config tests are done
QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
QEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS"
-libs_softmmu="$pixman_libs $libs_softmmu"
-
-echo "Install prefix $prefix"
-echo "BIOS directory $(eval echo $qemu_datadir)"
-echo "firmware path $(eval echo $firmwarepath)"
-echo "binary directory $(eval echo $bindir)"
-echo "library directory $(eval echo $libdir)"
-echo "module directory $(eval echo $qemu_moddir)"
-echo "libexec directory $(eval echo $libexecdir)"
-echo "include directory $(eval echo $includedir)"
-echo "config directory $(eval echo $sysconfdir)"
-if test "$mingw32" = "no" ; then
-echo "local state directory $(eval echo $local_statedir)"
-echo "Manual directory $(eval echo $mandir)"
-echo "ELF interp prefix $interp_prefix"
-else
-echo "local state directory queried at runtime"
-echo "Windows SDK $win_sdk"
-fi
-echo "Build directory $(pwd)"
-echo "Source path $source_path"
-echo "GIT binary $git"
-echo "GIT submodules $git_submodules"
-echo "C compiler $cc"
-echo "Host C compiler $host_cc"
-echo "C++ compiler $cxx"
-echo "Objective-C compiler $objcc"
-echo "ARFLAGS $ARFLAGS"
-echo "CFLAGS $CFLAGS"
-echo "QEMU_CFLAGS $QEMU_CFLAGS"
-echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
-echo "make $make"
-echo "install $install"
-echo "python $python ($python_version)"
-if test "$docs" != "no"; then
- echo "sphinx-build $sphinx_build"
-fi
-echo "genisoimage $genisoimage"
-echo "efi_aarch64 $efi_aarch64"
-echo "python_yaml $python_yaml"
-echo "slirp support $slirp $(echo_version $slirp $slirp_version)"
-if test "$slirp" != "no" ; then
- echo "smbd $smbd"
-fi
-echo "module support $modules"
-echo "alt path mod load $module_upgrades"
-echo "host CPU $cpu"
-echo "host big endian $bigendian"
-echo "target list $target_list"
-echo "gprof enabled $gprof"
-echo "sparse enabled $sparse"
-echo "strip binaries $strip_opt"
-echo "profiler $profiler"
-echo "static build $static"
-echo "safe stack $safe_stack"
-if test "$darwin" = "yes" ; then
- echo "Cocoa support $cocoa"
-fi
-echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
-echo "SDL image support $sdl_image"
-echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
-echo "GTK GL support $gtk_gl"
-echo "VTE support $vte $(echo_version $vte $vteversion)"
-echo "TLS priority $tls_priority"
-echo "GNUTLS support $gnutls"
-echo "libgcrypt $gcrypt"
-if test "$gcrypt" = "yes"
-then
- echo " hmac $gcrypt_hmac"
- echo " XTS $gcrypt_xts"
-fi
-echo "nettle $nettle $(echo_version $nettle $nettle_version)"
-if test "$nettle" = "yes"
-then
- echo " XTS $nettle_xts"
-fi
-echo "libtasn1 $tasn1"
-echo "PAM $auth_pam"
-echo "iconv support $iconv"
-echo "curses support $curses"
-echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
-echo "curl support $curl"
-echo "mingw32 support $mingw32"
-echo "Audio drivers $audio_drv_list"
-echo "Block whitelist (rw) $block_drv_rw_whitelist"
-echo "Block whitelist (ro) $block_drv_ro_whitelist"
-echo "VirtFS support $virtfs"
-echo "Multipath support $mpath"
-echo "VNC support $vnc"
-if test "$vnc" = "yes" ; then
- echo "VNC SASL support $vnc_sasl"
- echo "VNC JPEG support $vnc_jpeg"
- echo "VNC PNG support $vnc_png"
-fi
-echo "xen support $xen"
-if test "$xen" = "yes" ; then
- echo "xen ctrl version $xen_ctrl_version"
-fi
-echo "brlapi support $brlapi"
-echo "Documentation $docs"
-echo "PIE $pie"
-echo "vde support $vde"
-echo "netmap support $netmap"
-echo "Linux AIO support $linux_aio"
-echo "Linux io_uring support $linux_io_uring"
-echo "ATTR/XATTR support $attr"
-echo "Install blobs $blobs"
-echo "KVM support $kvm"
-echo "HAX support $hax"
-echo "HVF support $hvf"
-echo "WHPX support $whpx"
-echo "TCG support $tcg"
-if test "$tcg" = "yes" ; then
- echo "TCG debug enabled $debug_tcg"
- echo "TCG interpreter $tcg_interpreter"
-fi
-echo "malloc trim support $malloc_trim"
-echo "RDMA support $rdma"
-echo "PVRDMA support $pvrdma"
-echo "fdt support $fdt"
-echo "membarrier $membarrier"
-echo "preadv support $preadv"
-echo "fdatasync $fdatasync"
-echo "madvise $madvise"
-echo "posix_madvise $posix_madvise"
-echo "posix_memalign $posix_memalign"
-echo "libcap-ng support $cap_ng"
-echo "vhost-net support $vhost_net"
-echo "vhost-crypto support $vhost_crypto"
-echo "vhost-scsi support $vhost_scsi"
-echo "vhost-vsock support $vhost_vsock"
-echo "vhost-user support $vhost_user"
-echo "vhost-user-fs support $vhost_user_fs"
-echo "vhost-vdpa support $vhost_vdpa"
-echo "Trace backends $trace_backends"
-if have_backend "simple"; then
-echo "Trace output file $trace_file-<pid>"
-fi
-echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
-echo "rbd support $rbd"
-echo "xfsctl support $xfs"
-echo "smartcard support $smartcard"
-echo "libusb $libusb"
-echo "usb net redir $usb_redir"
-echo "OpenGL support $opengl"
-echo "OpenGL dmabufs $opengl_dmabuf"
-echo "libiscsi support $libiscsi"
-echo "libnfs support $libnfs"
-echo "build guest agent $guest_agent"
-echo "QGA VSS support $guest_agent_with_vss"
-echo "QGA w32 disk info $guest_agent_ntddscsi"
-echo "QGA MSI support $guest_agent_msi"
-echo "seccomp support $seccomp"
-echo "coroutine backend $coroutine"
-echo "coroutine pool $coroutine_pool"
-echo "debug stack usage $debug_stack_usage"
-echo "mutex debugging $debug_mutex"
-echo "crypto afalg $crypto_afalg"
-echo "GlusterFS support $glusterfs"
-echo "gcov $gcov_tool"
-echo "gcov enabled $gcov"
-echo "TPM support $tpm"
-echo "libssh support $libssh"
-echo "QOM debugging $qom_cast_debug"
-echo "Live block migration $live_block_migration"
-echo "lzo support $lzo"
-echo "snappy support $snappy"
-echo "bzip2 support $bzip2"
-echo "lzfse support $lzfse"
-echo "zstd support $zstd"
-echo "NUMA host support $numa"
-echo "libxml2 $libxml2"
-echo "tcmalloc support $tcmalloc"
-echo "jemalloc support $jemalloc"
-echo "avx2 optimization $avx2_opt"
-echo "avx512f optimization $avx512f_opt"
-echo "replication support $replication"
-echo "bochs support $bochs"
-echo "cloop support $cloop"
-echo "dmg support $dmg"
-echo "qcow v1 support $qcow1"
-echo "vdi support $vdi"
-echo "vvfat support $vvfat"
-echo "qed support $qed"
-echo "parallels support $parallels"
-echo "sheepdog support $sheepdog"
-echo "capstone $capstone"
-echo "libpmem support $libpmem"
-echo "libdaxctl support $libdaxctl"
-echo "libudev $libudev"
-echo "default devices $default_devices"
-echo "plugin support $plugins"
-echo "fuzzing support $fuzzing"
-echo "gdb $gdb_bin"
-echo "rng-none $rng_none"
-echo "Linux keyring $secret_keyring"
-
-if test "$supported_cpu" = "no"; then
- echo
- echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
- echo
- echo "CPU host architecture $cpu support is not currently maintained."
- echo "The QEMU project intends to remove support for this host CPU in"
- echo "a future release if nobody volunteers to maintain it and to"
- echo "provide a build host for our continuous integration setup."
- echo "configure has succeeded and you can continue to build, but"
- echo "if you care about QEMU on this platform you should contact"
- echo "us upstream at qemu-devel@nongnu.org."
-fi
-
-if test "$supported_os" = "no"; then
- echo
- echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
- echo
- echo "Host OS $targetos support is not currently maintained."
- echo "The QEMU project intends to remove support for this host OS in"
- echo "a future release if nobody volunteers to maintain it and to"
- echo "provide a build host for our continuous integration setup."
- echo "configure has succeeded and you can continue to build, but"
- echo "if you care about QEMU on this platform you should contact"
- echo "us upstream at qemu-devel@nongnu.org."
-fi
config_host_mak="config-host.mak"
@@ -7073,17 +6695,12 @@ echo "qemu_helperdir=$libexecdir" >> $config_host_mak
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
-echo "libs_cpu=$libs_cpu" >> $config_host_mak
-echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
echo "GIT=$git" >> $config_host_mak
echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
echo "GIT_UPDATE=$git_update" >> $config_host_mak
echo "ARCH=$ARCH" >> $config_host_mak
-echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
-echo "GLIB_LDFLAGS=$glib_ldflags" >> $config_host_mak
-
if test "$default_devices" = "yes" ; then
echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak
else
@@ -7153,14 +6770,18 @@ fi
if test "$want_tools" = "yes" ; then
echo "CONFIG_TOOLS=y" >> $config_host_mak
fi
+if test "$guest_agent" = "yes" ; then
+ echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
+fi
if test "$slirp" != "no"; then
echo "CONFIG_SLIRP=y" >> $config_host_mak
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
echo "SLIRP_CFLAGS=$slirp_cflags" >> $config_host_mak
echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak
fi
+subdirs=
if [ "$slirp" = "git" -o "$slirp" = "internal" ]; then
- echo "config-host.h: slirp/all" >> $config_host_mak
+ subdirs="$subdirs slirp"
fi
if test "$vde" = "yes" ; then
echo "CONFIG_VDE=y" >> $config_host_mak
@@ -7177,41 +6798,37 @@ if test "$gprof" = "yes" ; then
fi
if test "$cap_ng" = "yes" ; then
echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak
+ echo "LIBCAP_NG_LIBS=$cap_libs" >> $config_host_mak
fi
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
for drv in $audio_drv_list; do
def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
- case "$drv" in
- alsa | oss | pa | sdl)
- echo "$def=m" >> $config_host_mak ;;
- *)
- echo "$def=y" >> $config_host_mak ;;
- esac
+ echo "$def=y" >> $config_host_mak
done
+if test "$alsa" = "yes" ; then
+ echo "CONFIG_ALSA=y" >> $config_host_mak
+fi
echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
+echo "ALSA_CFLAGS=$alsa_cflags" >> $config_host_mak
+if test "$libpulse" = "yes" ; then
+ echo "CONFIG_LIBPULSE=y" >> $config_host_mak
+fi
echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
+echo "PULSE_CFLAGS=$pulse_cflags" >> $config_host_mak
echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
echo "OSS_LIBS=$oss_libs" >> $config_host_mak
+if test "$libjack" = "yes" ; then
+ echo "CONFIG_LIBJACK=y" >> $config_host_mak
+fi
echo "JACK_LIBS=$jack_libs" >> $config_host_mak
if test "$audio_win_int" = "yes" ; then
echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
-if test "$vnc" = "yes" ; then
- echo "CONFIG_VNC=y" >> $config_host_mak
-fi
-if test "$vnc_sasl" = "yes" ; then
- echo "CONFIG_VNC_SASL=y" >> $config_host_mak
-fi
-if test "$vnc_jpeg" = "yes" ; then
- echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
-fi
-if test "$vnc_png" = "yes" ; then
- echo "CONFIG_VNC_PNG=y" >> $config_host_mak
-fi
if test "$xkbcommon" = "yes" ; then
+ echo "CONFIG_XKBCOMMON=y" >> $config_host_mak
echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
fi
@@ -7219,7 +6836,6 @@ if test "$xfs" = "yes" ; then
echo "CONFIG_XFS=y" >> $config_host_mak
fi
qemu_version=$(head $source_path/VERSION)
-echo "VERSION=$qemu_version" >>$config_host_mak
echo "PKGVERSION=$pkgversion" >>$config_host_mak
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
@@ -7240,14 +6856,6 @@ if test "$have_x11" = "yes" && test "$need_x11" = "yes"; then
echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
echo "X11_LIBS=$x11_libs" >> $config_host_mak
fi
-if test "$sdl" = "yes" ; then
- echo "CONFIG_SDL=m" >> $config_host_mak
- echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
- echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
- if test "$sdl_image" = "yes" ; then
- echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak
- fi
-fi
if test "$cocoa" = "yes" ; then
echo "CONFIG_COCOA=y" >> $config_host_mak
fi
@@ -7257,7 +6865,7 @@ if test "$iconv" = "yes" ; then
echo "ICONV_LIBS=$iconv_lib" >> $config_host_mak
fi
if test "$curses" = "yes" ; then
- echo "CONFIG_CURSES=m" >> $config_host_mak
+ echo "CONFIG_CURSES=y" >> $config_host_mak
echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
fi
@@ -7352,7 +6960,7 @@ if test "$bswap_h" = "yes" ; then
echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
fi
if test "$curl" = "yes" ; then
- echo "CONFIG_CURL=m" >> $config_host_mak
+ echo "CONFIG_CURL=y" >> $config_host_mak
echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
echo "CURL_LIBS=$curl_libs" >> $config_host_mak
fi
@@ -7361,7 +6969,7 @@ if test "$brlapi" = "yes" ; then
echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
fi
if test "$gtk" = "yes" ; then
- echo "CONFIG_GTK=m" >> $config_host_mak
+ echo "CONFIG_GTK=y" >> $config_host_mak
echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
if test "$gtk_gl" = "yes" ; then
@@ -7377,6 +6985,8 @@ fi
echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
if test "$gnutls" = "yes" ; then
echo "CONFIG_GNUTLS=y" >> $config_host_mak
+ echo "GNUTLS_CFLAGS=$gnutls_cflags" >> $config_host_mak
+ echo "GNUTLS_LIBS=$gnutls_libs" >> $config_host_mak
fi
if test "$gcrypt" = "yes" ; then
echo "CONFIG_GCRYPT=y" >> $config_host_mak
@@ -7387,6 +6997,8 @@ fi
if test "$nettle" = "yes" ; then
echo "CONFIG_NETTLE=y" >> $config_host_mak
echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
+ echo "NETTLE_CFLAGS=$nettle_cflags" >> $config_host_mak
+ echo "NETTLE_LIBS=$nettle_libs" >> $config_host_mak
fi
if test "$qemu_private_xts" = "yes" ; then
echo "CONFIG_QEMU_PRIVATE_XTS=y" >> $config_host_mak
@@ -7436,6 +7048,8 @@ fi
if test "$xen" = "yes" ; then
echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
+ echo "XEN_CFLAGS=$xen_cflags" >> $config_host_mak
+ echo "XEN_LIBS=$xen_libs" >> $config_host_mak
fi
if test "$linux_aio" = "yes" ; then
echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
@@ -7447,6 +7061,7 @@ if test "$linux_io_uring" = "yes" ; then
fi
if test "$attr" = "yes" ; then
echo "CONFIG_ATTR=y" >> $config_host_mak
+ echo "LIBATTR_LIBS=$libattr_libs" >> $config_host_mak
fi
if test "$libattr" = "yes" ; then
echo "CONFIG_LIBATTR=y" >> $config_host_mak
@@ -7504,6 +7119,8 @@ if test "$preadv" = "yes" ; then
fi
if test "$fdt" != "no" ; then
echo "CONFIG_FDT=y" >> $config_host_mak
+ echo "FDT_CFLAGS=$fdt_cflags" >> $config_host_mak
+ echo "FDT_LIBS=$fdt_ldflags $fdt_libs" >> $config_host_mak
fi
if test "$membarrier" = "yes" ; then
echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
@@ -7532,9 +7149,15 @@ fi
if test "$posix_memalign" = "yes" ; then
echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
fi
-
+if test "$zlib" != "no" ; then
+ echo "CONFIG_ZLIB=y" >> $config_host_mak
+ echo "ZLIB_CFLAGS=$zlib_cflags" >> $config_host_mak
+ echo "ZLIB_LIBS=$zlib_libs" >> $config_host_mak
+fi
if test "$spice" = "yes" ; then
echo "CONFIG_SPICE=y" >> $config_host_mak
+ echo "SPICE_CFLAGS=$spice_cflags" >> $config_host_mak
+ echo "SPICE_LIBS=$spice_libs" >> $config_host_mak
fi
if test "$smartcard" = "yes" ; then
@@ -7584,10 +7207,12 @@ fi
if test "$lzo" = "yes" ; then
echo "CONFIG_LZO=y" >> $config_host_mak
+ echo "LZO_LIBS=$lzo_libs" >> $config_host_mak
fi
if test "$snappy" = "yes" ; then
echo "CONFIG_SNAPPY=y" >> $config_host_mak
+ echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
fi
if test "$bzip2" = "yes" ; then
@@ -7602,16 +7227,18 @@ fi
if test "$zstd" = "yes" ; then
echo "CONFIG_ZSTD=y" >> $config_host_mak
+ echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak
+ echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
fi
if test "$libiscsi" = "yes" ; then
- echo "CONFIG_LIBISCSI=m" >> $config_host_mak
+ echo "CONFIG_LIBISCSI=y" >> $config_host_mak
echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
fi
if test "$libnfs" = "yes" ; then
- echo "CONFIG_LIBNFS=m" >> $config_host_mak
+ echo "CONFIG_LIBNFS=y" >> $config_host_mak
echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
fi
@@ -7633,8 +7260,7 @@ if test "$qom_cast_debug" = "yes" ; then
echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
fi
if test "$rbd" = "yes" ; then
- echo "CONFIG_RBD=m" >> $config_host_mak
- echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
+ echo "CONFIG_RBD=y" >> $config_host_mak
echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
fi
@@ -7706,7 +7332,7 @@ if test "$getauxval" = "yes" ; then
fi
if test "$glusterfs" = "yes" ; then
- echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
+ echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
fi
@@ -7736,7 +7362,7 @@ if test "$glusterfs_iocb_has_stat" = "yes" ; then
fi
if test "$libssh" = "yes" ; then
- echo "CONFIG_LIBSSH=m" >> $config_host_mak
+ echo "CONFIG_LIBSSH=y" >> $config_host_mak
echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak
fi
@@ -7763,6 +7389,8 @@ if have_backend "log"; then
fi
if have_backend "ust"; then
echo "CONFIG_TRACE_UST=y" >> $config_host_mak
+ echo "LTTNG_UST_LIBS=$lttng_ust_libs" >> $config_host_mak
+ echo "URCU_BP_LIBS=$urcu_bp_libs" >> $config_host_mak
fi
if have_backend "dtrace"; then
echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
@@ -7832,6 +7460,8 @@ if test "$ivshmem" = "yes" ; then
fi
if test "$capstone" != "no" ; then
echo "CONFIG_CAPSTONE=y" >> $config_host_mak
+ echo "CAPSTONE_CFLAGS=$capstone_cflags" >> $config_host_mak
+ echo "CAPSTONE_LIBS=$capstone_libs" >> $config_host_mak
fi
if test "$debug_mutex" = "yes" ; then
echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
@@ -7852,6 +7482,8 @@ fi
if test "$libpmem" = "yes" ; then
echo "CONFIG_LIBPMEM=y" >> $config_host_mak
+ echo "LIBPMEM_LIBS=$libpmem_libs" >> $config_host_mak
+ echo "LIBPMEM_CFLAGS=$libpmem_cflags" >> $config_host_mak
fi
if test "$libdaxctl" = "yes" ; then
@@ -7892,14 +7524,7 @@ if test "$have_mlockall" = "yes" ; then
echo "HAVE_MLOCKALL=y" >> $config_host_mak
fi
if test "$fuzzing" = "yes" ; then
- if test "$have_fuzzer" = "yes"; then
- FUZZ_LDFLAGS=" -fsanitize=fuzzer"
- FUZZ_CFLAGS=" -fsanitize=fuzzer"
- CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link"
- else
- error_exit "Your compiler doesn't support -fsanitize=fuzzer"
- exit 1
- fi
+ QEMU_CFLAGS="$QEMU_CFLAGS -fsanitize=fuzzer-no-link"
fi
if test "$plugins" = "yes" ; then
@@ -7935,23 +7560,21 @@ if test "$secret_keyring" = "yes" ; then
fi
if test "$tcg_interpreter" = "yes"; then
- QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
+ QEMU_INCLUDES="-iquote ${source_path}/tcg/tci $QEMU_INCLUDES"
elif test "$ARCH" = "sparc64" ; then
- QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
+ QEMU_INCLUDES="-iquote ${source_path}/tcg/sparc $QEMU_INCLUDES"
elif test "$ARCH" = "s390x" ; then
- QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
+ QEMU_INCLUDES="-iquote ${source_path}/tcg/s390 $QEMU_INCLUDES"
elif test "$ARCH" = "x86_64" || test "$ARCH" = "x32" ; then
- QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
+ QEMU_INCLUDES="-iquote ${source_path}/tcg/i386 $QEMU_INCLUDES"
elif test "$ARCH" = "ppc64" ; then
- QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
+ QEMU_INCLUDES="-iquote ${source_path}/tcg/ppc $QEMU_INCLUDES"
elif test "$ARCH" = "riscv32" || test "$ARCH" = "riscv64" ; then
- QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/riscv $QEMU_INCLUDES"
+ QEMU_INCLUDES="-I${source_path}/tcg/riscv $QEMU_INCLUDES"
else
- QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
+ QEMU_INCLUDES="-iquote ${source_path}/tcg/${ARCH} $QEMU_INCLUDES"
fi
-echo "HELPERS=$helpers" >> $config_host_mak
-echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
@@ -7961,15 +7584,12 @@ echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
echo "PYTHON=$python" >> $config_host_mak
echo "SPHINX_BUILD=$sphinx_build" >> $config_host_mak
-echo "SPHINX_WERROR=$sphinx_werror" >> $config_host_mak
echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
-echo "EFI_AARCH64=$efi_aarch64" >> $config_host_mak
-echo "PYTHON_YAML=$python_yaml" >> $config_host_mak
+echo "MESON=$meson" >> $config_host_mak
echo "CC=$cc" >> $config_host_mak
if $iasl -h > /dev/null 2>&1; then
- echo "IASL=$iasl" >> $config_host_mak
+ echo "CONFIG_IASL=$iasl" >> $config_host_mak
fi
-echo "HOST_CC=$host_cc" >> $config_host_mak
echo "CXX=$cxx" >> $config_host_mak
echo "OBJCC=$objcc" >> $config_host_mak
echo "AR=$ar" >> $config_host_mak
@@ -7984,16 +7604,15 @@ 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 "CXXFLAGS=$CXXFLAGS" >> $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
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
+echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
+echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
if test "$sparse" = "yes" ; then
- echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
- echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
- echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
- echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
- echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
+ echo "SPARSE_CFLAGS = -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
fi
echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
@@ -8003,15 +7622,14 @@ echo "LIBS+=$LIBS" >> $config_host_mak
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
echo "EXESUF=$EXESUF" >> $config_host_mak
-echo "DSOSUF=$DSOSUF" >> $config_host_mak
+echo "HOST_DSOSUF=$HOST_DSOSUF" >> $config_host_mak
echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
-echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
+echo "LIBS_QGA=$libs_qga" >> $config_host_mak
echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
echo "POD2MAN=$POD2MAN" >> $config_host_mak
if test "$gcov" = "yes" ; then
echo "CONFIG_GCOV=y" >> $config_host_mak
- echo "GCOV=$gcov_tool" >> $config_host_mak
fi
if test "$libudev" != "no"; then
@@ -8020,8 +7638,6 @@ if test "$libudev" != "no"; then
fi
if test "$fuzzing" != "no"; then
echo "CONFIG_FUZZ=y" >> $config_host_mak
- echo "FUZZ_CFLAGS=$FUZZ_CFLAGS" >> $config_host_mak
- echo "FUZZ_LDFLAGS=$FUZZ_LDFLAGS" >> $config_host_mak
fi
if test "$edk2_blobs" = "yes" ; then
@@ -8111,18 +7727,22 @@ gdb_xml_files=""
TARGET_ARCH="$target_name"
TARGET_BASE_ARCH=""
TARGET_ABI_DIR=""
+TARGET_SYSTBL_ABI=""
+TARGET_SYSTBL=""
case "$target_name" in
i386)
mttcg="yes"
gdb_xml_files="i386-32bit.xml"
TARGET_SYSTBL_ABI=i386
+ TARGET_SYSTBL=syscall_32.tbl
;;
x86_64)
TARGET_BASE_ARCH=i386
TARGET_SYSTBL_ABI=common,64
+ TARGET_SYSTBL=syscall_64.tbl
mttcg="yes"
- gdb_xml_files="i386-64bit.xml"
+ gdb_xml_files="i386-64bit.xml"
;;
alpha)
mttcg="yes"
@@ -8170,6 +7790,7 @@ case "$target_name" in
TARGET_ARCH=mips
echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
TARGET_SYSTBL_ABI=o32
+ TARGET_SYSTBL=syscall_o32.tbl
;;
mipsn32|mipsn32el)
mttcg="yes"
@@ -8178,6 +7799,7 @@ case "$target_name" in
echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
echo "TARGET_ABI32=y" >> $config_target_mak
TARGET_SYSTBL_ABI=n32
+ TARGET_SYSTBL=syscall_n32.tbl
;;
mips64|mips64el)
mttcg="no"
@@ -8185,6 +7807,7 @@ case "$target_name" in
TARGET_BASE_ARCH=mips
echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
TARGET_SYSTBL_ABI=n64
+ TARGET_SYSTBL=syscall_n64.tbl
;;
moxie)
;;
@@ -8283,8 +7906,9 @@ esac
if [ "$TARGET_BASE_ARCH" = "" ]; then
TARGET_BASE_ARCH=$TARGET_ARCH
fi
-
-symlink "$source_path/Makefile.target" "$target_dir/Makefile"
+if [ "$TARGET_SYSTBL_ABI" != "" ] && [ "$TARGET_SYSTBL" = "" ]; then
+ TARGET_SYSTBL=syscall.tbl
+fi
upper() {
echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
@@ -8303,22 +7927,17 @@ if [ "$HOST_VARIANT_DIR" != "" ]; then
fi
if [ "$TARGET_SYSTBL_ABI" != "" ]; then
echo "TARGET_SYSTBL_ABI=$TARGET_SYSTBL_ABI" >> $config_target_mak
+ echo "TARGET_SYSTBL=$TARGET_SYSTBL" >> $config_target_mak
fi
if supported_xen_target $target; then
echo "CONFIG_XEN=y" >> $config_target_mak
- echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak
if test "$xen_pci_passthrough" = yes; then
echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
fi
-else
- echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak
fi
if supported_kvm_target $target; then
echo "CONFIG_KVM=y" >> $config_target_mak
- echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak
-else
- echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak
fi
if supported_hax_target $target; then
echo "CONFIG_HAX=y" >> $config_target_mak
@@ -8344,6 +7963,9 @@ fi
if test "$target_user_only" = "yes" ; then
echo "CONFIG_USER_ONLY=y" >> $config_target_mak
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
+ symlink "../qemu-$target_name" "$target_dir/qemu-$target_name"
+else
+ symlink "../qemu-system-$target_name" "$target_dir/qemu-system-$target_name"
fi
if test "$target_linux_user" = "yes" ; then
echo "CONFIG_LINUX_USER=y" >> $config_target_mak
@@ -8351,7 +7973,7 @@ fi
list=""
if test ! -z "$gdb_xml_files" ; then
for x in $gdb_xml_files; do
- list="$list $source_path/gdb-xml/$x"
+ list="$list gdb-xml/$x"
done
echo "TARGET_XML_FILES=$list" >> $config_target_mak
fi
@@ -8366,9 +7988,6 @@ fi
# generate QEMU_CFLAGS/QEMU_LDFLAGS for targets
-cflags=""
-ldflags=""
-
disas_config() {
echo "CONFIG_${1}_DIS=y" >> $config_target_mak
echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
@@ -8453,59 +8072,25 @@ if test "$tcg_interpreter" = "yes" ; then
disas_config "TCI"
fi
-case "$ARCH" in
-alpha)
- # Ensure there's only a single GP
- cflags="-msmall-data $cflags"
-;;
-esac
-
-if test "$gprof" = "yes" ; then
- if test "$target_linux_user" = "yes" ; then
- cflags="-p $cflags"
- ldflags="-p $ldflags"
- fi
- if test "$target_softmmu" = "yes" ; then
- ldflags="-p $ldflags"
- echo "GPROF_CFLAGS=-p" >> $config_target_mak
- fi
-fi
-
-# Newer kernels on s390 check for an S390_PGSTE program header and
-# enable the pgste page table extensions in that case. This makes
-# the vm.allocate_pgste sysctl unnecessary. We enable this program
-# header if
-# - we build on s390x
-# - we build the system emulation for s390x (qemu-system-s390x)
-# - KVM is enabled
-# - the linker supports --s390-pgste
-if test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \
- test "$ARCH" = "s390x" && test "$kvm" = "yes"; then
- if ld_has --s390-pgste ; then
- ldflags="-Wl,--s390-pgste $ldflags"
- fi
-fi
-
-echo "QEMU_LDFLAGS+=$ldflags" >> $config_target_mak
-echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
-
done # for target in $targets
echo "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak
echo "PIXMAN_LIBS=$pixman_libs" >> $config_host_mak
if [ "$fdt" = "git" ]; then
- echo "config-host.h: dtc/all" >> $config_host_mak
+ subdirs="$subdirs dtc"
fi
if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
- echo "config-host.h: capstone/all" >> $config_host_mak
+ subdirs="$subdirs capstone"
fi
+echo "SUBDIRS=$subdirs" >> $config_host_mak
if test -n "$LIBCAPSTONE"; then
echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
fi
if test "$numa" = "yes"; then
echo "CONFIG_NUMA=y" >> $config_host_mak
+ echo "NUMA_LIBS=$numa_libs" >> $config_host_mak
fi
if test "$ccache_cpp2" = "yes"; then
@@ -8532,9 +8117,8 @@ DIRS="$DIRS docs docs/interop fsdev scsi"
DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
DIRS="$DIRS roms/seabios"
LINKS="Makefile"
-LINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile"
-LINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile"
-LINKS="$LINKS tests/plugin/Makefile"
+LINKS="$LINKS tests/tcg/lm32/Makefile"
+LINKS="$LINKS tests/tcg/Makefile.target"
LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
LINKS="$LINKS pc-bios/s390-ccw/Makefile"
LINKS="$LINKS roms/seabios/Makefile"
@@ -8592,6 +8176,89 @@ echo "# Automatically generated by configure - do not modify" > "$iotests_common
echo >> "$iotests_common_env"
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 "# Automatically generated by configure - do not modify" > $cross
+echo "[properties]" >> $cross
+test -z "$cxx" && echo "link_language = 'c'" >> $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 "strip = $(meson_quote $strip)" >> $cross
+echo "windres = $(meson_quote $windres)" >> $cross
+if test -n "$cross_prefix"; then
+ cross_arg="--cross-file config-meson.cross"
+ # Hack: Meson expects an absolute path for the *build* machine
+ # for the prefix, so add a slash in front of a Windows path that
+ # includes a drive letter.
+ #
+ # See https://github.com/mesonbuild/meson/issues/7577.
+ echo "[host_machine]" >> $cross
+ if test "$mingw32" = "yes" ; then
+ echo "system = 'windows'" >> $cross
+ case $prefix in
+ ?:*) pre_prefix=/ ;;
+ esac
+ fi
+ case "$ARCH" in
+ i386|x86_64)
+ echo "cpu_family = 'x86'" >> $cross
+ ;;
+ ppc64le)
+ echo "cpu_family = 'ppc64'" >> $cross
+ ;;
+ *)
+ echo "cpu_family = '$ARCH'" >> $cross
+ ;;
+ esac
+ echo "cpu = '$cpu'" >> $cross
+ if test "$bigendian" = "yes" ; then
+ echo "endian = 'big'" >> $cross
+ else
+ echo "endian = 'little'" >> $cross
+ fi
+else
+ cross_arg="--native-file config-meson.cross"
+fi
+mv $cross config-meson.cross
+
+rm -rf meson-private meson-info meson-logs
+NINJA=$PWD/ninjatool $meson setup \
+ --prefix "${pre_prefix}$prefix" \
+ --libdir "${pre_prefix}$libdir" \
+ --libexecdir "${pre_prefix}$libexecdir" \
+ --bindir "${pre_prefix}$bindir" \
+ --includedir "${pre_prefix}$includedir" \
+ --datadir "${pre_prefix}$datadir" \
+ --mandir "${pre_prefix}$mandir" \
+ --sysconfdir "${pre_prefix}$sysconfdir" \
+ --localstatedir "${pre_prefix}$local_statedir" \
+ -Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \
+ -Ddebug=$(if test "$debug_info" = yes; then echo true; else echo false; fi) \
+ -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
+ -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \
+ -Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
+ -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
+ -Dsdl=$sdl -Dsdl_image=$sdl_image \
+ -Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
+ -Dgettext=$gettext \
+ $cross_arg \
+ "$PWD" "$source_path"
+
+if test "$?" -ne 0 ; then
+ error_exit "meson setup failed"
+fi
+touch ninjatool.stamp
+fi
+
# Save the configure command line for later reuse.
cat <<EOD >config.status
#!/bin/sh
@@ -8640,7 +8307,9 @@ preserve_env STRIP
preserve_env WINDRES
printf "exec" >>config.status
-printf " '%s'" "$0" "$@" >>config.status
+for i in "$0" "$@"; do
+ test "$i" = --skip-meson || printf " '%s'" "$i" >>config.status
+done
echo ' "$@"' >>config.status
chmod +x config.status