glusterfs_xlator_opt="no"
glusterfs_discard="no"
glusterfs_zerofill="no"
-archipelago="no"
gtk=""
gtkabi=""
gtk_gl="no"
tcmalloc="no"
jemalloc="no"
replication="yes"
+vxhs=""
+
+supported_cpu="no"
+supported_os="no"
+bogus_os="no"
# parse CC options first
for opt do
# Normalise host CPU name and set ARCH.
# Note that this case should only have supported host CPUs, not guests.
case "$cpu" in
- ia64|ppc|ppc64|s390|s390x|sparc64|x32)
+ ppc|ppc64|s390|s390x|sparc64|x32)
+ cpu="$cpu"
+ supported_cpu="yes"
+ ;;
+ ia64)
cpu="$cpu"
;;
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
HOST_VARIANT_DIR=""
case $targetos in
-CYGWIN*)
- mingw32="yes"
- QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
- audio_possible_drivers="sdl"
- audio_drv_list="sdl"
-;;
MINGW32*)
mingw32="yes"
hax="yes"
else
audio_drv_list=""
fi
+ supported_os="yes"
;;
GNU/kFreeBSD)
bsd="yes"
libs_qga="-lutil $libs_qga"
netmap="" # enable netmap autodetect
HOST_VARIANT_DIR="freebsd"
+ supported_os="yes"
;;
DragonFly)
bsd="yes"
# 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"
QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
LIBS="-lposix_error_mapper -lnetwork $LIBS"
;;
-*)
+Linux)
audio_drv_list="oss"
audio_possible_drivers="oss alsa sdl pa"
linux="yes"
vhost_scsi="yes"
vhost_vsock="yes"
QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
+ supported_os="yes"
+;;
+*)
+ # This is a fatal error, but don't report it yet, because we
+ # might be going to just print the --help text, or it might
+ # be the result of a missing compiler.
+ bogus_os="yes"
;;
esac
sysconfdir="\${prefix}"
local_statedir=
confsuffix=""
- libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
+ libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -liphlpapi -lnetapi32 $libs_qga"
fi
werror=""
;;
--enable-glusterfs) glusterfs="yes"
;;
- --disable-archipelago) archipelago="no"
- ;;
- --enable-archipelago) archipelago="yes"
- ;;
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
;;
;;
--enable-replication) replication="yes"
;;
+ --disable-vxhs) vxhs="no"
+ ;;
+ --enable-vxhs) vxhs="yes"
+ ;;
*)
echo "ERROR: unknown option $opt"
echo "Try '$0 --help' for more information"
esac
done
-if ! has $python; then
- error_exit "Python not found. Use --python=/path/to/python"
-fi
-
-# Note that if the Python conditional here evaluates True we will exit
-# with status 1 which is a shell 'false' value.
-if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
- error_exit "Cannot use '$python', Python 2.6 or later is required." \
- "Note that Python 3 or later is not yet supported." \
- "Use --python=/path/to/python to specify a supported Python."
-fi
-
-# Suppress writing compiled files
-python="$python -B"
-
case "$cpu" in
ppc)
CPU_CFLAGS="-m32"
default_target_list="${default_target_list} $(basename "$config" .mak)"
done
+# Enumerate public trace backends for --help output
+trace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/'))
+
if test x"$show_help" = x"yes" ; then
cat << EOF
set block driver read-only whitelist
(affects only QEMU, not qemu-img)
--enable-trace-backends=B Set trace backend
- Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
+ Available backends: $trace_backend_list
--with-trace-file=NAME Full PATH,NAME of file to store traces
Default:trace-<pid>
--disable-slirp disable SLIRP userspace network connectivity
--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)
--tls-priority default TLS protocol/cipher priority string
+ --enable-gprof QEMU profiling with gprof
+ --enable-profiler profiler support
+ --enable-xen-pv-domain-build
+ xen pv domain builder
+ --enable-debug-stack-usage
+ track the maximum stack usage of stacks created by qemu_alloc_stack
Optional features, enabled with --enable-FEATURE and
disabled with --disable-FEATURE, default is enabled if available:
seccomp seccomp support
coroutine-pool coroutine freelist (better performance)
glusterfs GlusterFS backend
- archipelago Archipelago backend
tpm TPM support
libssh2 ssh block device support
numa libnuma support
tcmalloc tcmalloc support
jemalloc jemalloc support
replication replication support
+ vhost-vsock virtio sockets device support
+ opengl opengl support
+ virglrenderer virgl rendering support
+ xfsctl xfsctl support
+ qom-cast-debug cast debugging support
+ tools build qemu-io, qemu-nbd and qemu-image tools
+ vxhs Veritas HyperScale vDisk backend support
NOTE: The object files are built at the place where configure is launched
EOF
exit 0
fi
+if ! has $python; then
+ error_exit "Python not found. Use --python=/path/to/python"
+fi
+
+# Note that if the Python conditional here evaluates True we will exit
+# with status 1 which is a shell 'false' value.
+if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
+ error_exit "Cannot use '$python', Python 2.6 or later is required." \
+ "Note that Python 3 or later is not yet supported." \
+ "Use --python=/path/to/python to specify a supported Python."
+fi
+
+# Suppress writing compiled files
+python="$python -B"
+
# Now we have handled --enable-tcg-interpreter and know we're not just
# printing the help message, bail out if the host CPU isn't supported.
if test "$ARCH" = "unknown"; then
error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
fi
+if test "$bogus_os" = "yes"; then
+ # Now that we know that we're not printing the help and that
+ # the compiler works (so the results of the check_defines we used
+ # to identify the OS are reliable), if we didn't recognize the
+ # host OS we should stop now.
+ error_exit "Unrecognized host OS $targetos"
+fi
+
# Check that the C++ compiler exists and works with the C compiler
if has $cxx; then
cat > $TMPC <<EOF
# xen probe
if test "$xen" != "no" ; then
- xen_libs="-lxenstore -lxenctrl -lxenguest"
- xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
+ # Check whether Xen library path is specified via --extra-ldflags to avoid
+ # overriding this setting with pkg-config output. If not, try pkg-config
+ # to obtain all needed flags.
+
+ if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
+ $pkg_config --exists xencontrol ; then
+ xen_ctrl_version="$(printf '%d%02d%02d' \
+ $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
+ xen=yes
+ xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
+ xen_pc="$xen_pc xenevtchn xendevicemodel"
+ QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
+ libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
+ LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
+ else
- # First we test whether Xen headers and libraries are available.
- # If no, we are done and there is no Xen support.
- # If yes, more tests are run to detect the Xen version.
+ xen_libs="-lxenstore -lxenctrl -lxenguest"
+ xen_stable_libs="-lxencall -lxenforeignmemory -lxengnttab -lxenevtchn"
- # Xen (any)
- cat > $TMPC <<EOF
+ # First we test whether Xen headers and libraries are available.
+ # If no, we are done and there is no Xen support.
+ # If yes, more tests are run to detect the Xen version.
+
+ # Xen (any)
+ cat > $TMPC <<EOF
#include <xenctrl.h>
int main(void) {
return 0;
}
EOF
- if ! compile_prog "" "$xen_libs" ; then
- # Xen not found
- if test "$xen" = "yes" ; then
- feature_not_found "xen" "Install xen devel"
- fi
- xen=no
+ if ! compile_prog "" "$xen_libs" ; then
+ # Xen not found
+ if test "$xen" = "yes" ; then
+ feature_not_found "xen" "Install xen devel"
+ fi
+ xen=no
+
+ # Xen unstable
+ elif
+ cat > $TMPC <<EOF &&
+#undef XC_WANT_COMPAT_DEVICEMODEL_API
+#define __XEN_TOOLS__
+#include <xendevicemodel.h>
+int main(void) {
+ xendevicemodel_handle *xd;
- # Xen unstable
- elif
- cat > $TMPC <<EOF &&
+ xd = xendevicemodel_open(0, 0);
+ xendevicemodel_close(xd);
+
+ return 0;
+}
+EOF
+ compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
+ then
+ xen_stable_libs="-lxendevicemodel $xen_stable_libs"
+ xen_ctrl_version=40900
+ xen=yes
+ elif
+ cat > $TMPC <<EOF &&
/*
* If we have stable libs the we don't want the libxc compat
* layers, regardless of what CFLAGS we may have been given.
return 0;
}
EOF
- compile_prog "" "$xen_libs $xen_stable_libs"
- then
- xen_ctrl_version=480
- xen=yes
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs $xen_stable_libs"
+ then
+ xen_ctrl_version=40800
+ xen=yes
+ elif
+ cat > $TMPC <<EOF &&
/*
* If we have stable libs the we don't want the libxc compat
* layers, regardless of what CFLAGS we may have been given.
return 0;
}
EOF
- compile_prog "" "$xen_libs $xen_stable_libs"
- then
- xen_ctrl_version=471
- xen=yes
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs $xen_stable_libs"
+ then
+ xen_ctrl_version=40701
+ xen=yes
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <stdint.h>
int main(void) {
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=470
- xen=yes
-
- # Xen 4.6
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40700
+ xen=yes
+
+ # Xen 4.6
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <xenstore.h>
#include <stdint.h>
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=460
- xen=yes
-
- # Xen 4.5
- elif
- cat > $TMPC <<EOF &&
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40600
+ xen=yes
+
+ # Xen 4.5
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <xenstore.h>
#include <stdint.h>
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=450
- xen=yes
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40500
+ xen=yes
- elif
- cat > $TMPC <<EOF &&
+ elif
+ cat > $TMPC <<EOF &&
#include <xenctrl.h>
#include <xenstore.h>
#include <stdint.h>
return 0;
}
EOF
- compile_prog "" "$xen_libs"
- then
- xen_ctrl_version=420
- xen=yes
+ compile_prog "" "$xen_libs"
+ then
+ xen_ctrl_version=40200
+ xen=yes
- else
- if test "$xen" = "yes" ; then
- feature_not_found "xen (unsupported version)" \
- "Install a supported xen (xen 4.2 or newer)"
+ else
+ if test "$xen" = "yes" ; then
+ feature_not_found "xen (unsupported version)" \
+ "Install a supported xen (xen 4.2 or newer)"
+ fi
+ xen=no
fi
- xen=no
- fi
- if test "$xen" = yes; then
- if test $xen_ctrl_version -ge 471 ; then
- libs_softmmu="$xen_stable_libs $libs_softmmu"
+ if test "$xen" = yes; then
+ if test $xen_ctrl_version -ge 40701 ; then
+ libs_softmmu="$xen_stable_libs $libs_softmmu"
+ fi
+ libs_softmmu="$xen_libs $libs_softmmu"
fi
- libs_softmmu="$xen_libs $libs_softmmu"
fi
fi
audio_pt_int="yes"
;;
+ sdl)
+ if test "$sdl" = "no"; then
+ error_exit "sdl not found or disabled, can not use sdl audio driver"
+ fi
+ ;;
+
coreaudio)
libs_softmmu="-framework CoreAudio $libs_softmmu"
;;
libs_softmmu="$oss_lib $libs_softmmu"
;;
- sdl|wav)
- # XXX: Probes for CoreAudio, DirectSound, SDL(?)
+ wav)
+ # XXX: Probes for CoreAudio, DirectSound
;;
*)
##########################################
# glib support probe
-glib_req_ver=2.22
+if test "$mingw32" = yes; then
+ glib_req_ver=2.30
+else
+ glib_req_ver=2.22
+fi
glib_modules=gthread-2.0
if test "$modules" = yes; then
glib_modules="$glib_modules gmodule-2.0"
fi
+# This workaround is required due to a bug in pkg-config file for glib as it
+# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
+
+if test "$static" = yes -a "$mingw32" = yes; then
+ QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
+fi
+
for i in $glib_modules; do
if $pkg_config --atleast-version=$glib_req_ver $i; then
glib_cflags=$($pkg_config --cflags $i)
if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
gtk_gl="yes"
fi
+ QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
else
if test "$opengl" = "yes" ; then
feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
fi
fi
-##########################################
-# archipelago probe
-if test "$archipelago" != "no" ; then
- cat > $TMPC <<EOF
-#include <stdio.h>
-#include <xseg/xseg.h>
-#include <xseg/protocol.h>
-int main(void) {
- xseg_initialize();
- return 0;
-}
-EOF
- archipelago_libs=-lxseg
- if compile_prog "" "$archipelago_libs"; then
- archipelago="yes"
- libs_tools="$archipelago_libs $libs_tools"
- libs_softmmu="$archipelago_libs $libs_softmmu"
-
- echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
- echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
- echo "license and therefore prevent redistribution."
- echo
- echo "To disable Archipelago, use --disable-archipelago"
- else
- if test "$archipelago" = "yes" ; then
- feature_not_found "Archipelago backend support" "Install libxseg devel"
- fi
- archipelago="no"
- fi
-fi
-
##########################################
# glusterfs probe
feature_not_found "modules" "Cannot find how to build relocatable objects"
fi
+##########################################
+# check for sysmacros.h
+
+have_sysmacros=no
+cat > $TMPC << EOF
+#include <sys/sysmacros.h>
+int main(void) {
+ return makedev(0, 0);
+}
+EOF
+if compile_prog "" "" ; then
+ have_sysmacros=yes
+fi
+
+##########################################
+# Veritas HyperScale block driver VxHS
+# Check if libvxhs is installed
+
+if test "$vxhs" != "no" ; then
+ cat > $TMPC <<EOF
+#include <stdint.h>
+#include <qnio/qnio_api.h>
+
+void *vxhs_callback;
+
+int main(void) {
+ iio_init(QNIO_VERSION, vxhs_callback);
+ return 0;
+}
+EOF
+ vxhs_libs="-lvxhs -lssl"
+ if compile_prog "" "$vxhs_libs" ; then
+ vxhs=yes
+ else
+ if test "$vxhs" = "yes" ; then
+ feature_not_found "vxhs block device" "Install libvxhs See github"
+ fi
+ vxhs=no
+ fi
+fi
+
+##########################################
+# check for _Static_assert()
+
+have_static_assert=no
+cat > $TMPC << EOF
+_Static_assert(1, "success");
+int main(void) {
+ return 0;
+}
+EOF
+if compile_prog "" "" ; then
+ have_static_assert=yes
+fi
+
##########################################
# End of CC checks
# After here, no more $cc or $ld runs
echo "coroutine pool $coroutine_pool"
echo "debug stack usage $debug_stack_usage"
echo "GlusterFS support $glusterfs"
-echo "Archipelago support $archipelago"
echo "gcov $gcov_tool"
echo "gcov enabled $gcov"
echo "TPM support $tpm"
echo "jemalloc support $jemalloc"
echo "avx2 optimization $avx2_opt"
echo "replication support $replication"
+echo "VxHS block device $vxhs"
if test "$sdl_too_old" = "yes"; then
echo "-> Your SDL version is too old - please upgrade to have SDL support"
fi
+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"
+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"
+fi
+
config_host_mak="config-host.mak"
echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
if test "$opengl" = "yes" ; then
echo "CONFIG_OPENGL=y" >> $config_host_mak
- echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
if test "$opengl_dmabuf" = "yes" ; then
echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
fi
-if test "$archipelago" = "yes" ; then
- echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
- echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
-fi
-
if test "$libssh2" = "yes" ; then
echo "CONFIG_LIBSSH2=m" >> $config_host_mak
echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
fi
+if test "$have_sysmacros" = "yes" ; then
+ echo "CONFIG_SYSMACROS=y" >> $config_host_mak
+fi
+
+if test "$have_static_assert" = "yes" ; then
+ echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
+fi
+
# Hold two types of flag:
# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
# a thread we have a handle to
echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
fi
+if test "$vxhs" = "yes" ; then
+ echo "CONFIG_VXHS=y" >> $config_host_mak
+ echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
+fi
+
if test "$tcg_interpreter" = "yes"; then
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
elif test "$ARCH" = "sparc64" ; then
echo "# Automatically generated by configure - do not modify" > $config_target_mak
bflt="no"
+mttcg="no"
interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
gdb_xml_files=""
TARGET_BASE_ARCH=i386
;;
alpha)
+ mttcg="yes"
;;
arm|armeb)
TARGET_ARCH=arm
bflt="yes"
+ mttcg="yes"
gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
;;
aarch64)
TARGET_BASE_ARCH=arm
bflt="yes"
+ mttcg="yes"
gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
;;
cris)
fi
if test "$target_softmmu" = "yes" ; then
echo "CONFIG_SOFTMMU=y" >> $config_target_mak
+ if test "$mttcg" = "yes" ; then
+ echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
+ fi
fi
if test "$target_user_only" = "yes" ; then
echo "CONFIG_USER_ONLY=y" >> $config_target_mak