2003-03-07 00:23:54 +01:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
2003-03-23 21:17:16 +01:00
|
|
|
# qemu configure script (c) 2003 Fabrice Bellard
|
2003-03-07 00:23:54 +01:00
|
|
|
#
|
|
|
|
# set temporary file name
|
|
|
|
if test ! -z "$TMPDIR" ; then
|
|
|
|
TMPDIR1="${TMPDIR}"
|
|
|
|
elif test ! -z "$TEMPDIR" ; then
|
|
|
|
TMPDIR1="${TEMPDIR}"
|
|
|
|
else
|
|
|
|
TMPDIR1="/tmp"
|
|
|
|
fi
|
|
|
|
|
2003-03-23 21:17:16 +01:00
|
|
|
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
|
|
|
|
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
|
2009-10-14 23:57:14 +02:00
|
|
|
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
|
2003-03-07 00:23:54 +01:00
|
|
|
|
2010-09-25 21:52:30 +02:00
|
|
|
# NB: do not call "exit" in the trap handler; this is buggy with some shells;
|
|
|
|
# see <1285349658-3122-1-git-send-email-loic.minier@linaro.org>
|
|
|
|
trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
|
2010-04-23 13:44:10 +02:00
|
|
|
rm -f config.log
|
2008-11-29 21:09:56 +01:00
|
|
|
|
2011-11-23 18:26:44 +01:00
|
|
|
# Print a helpful header at the top of config.log
|
|
|
|
echo "# QEMU configure log $(date)" >> config.log
|
2012-03-07 13:16:29 +01:00
|
|
|
printf "# Configured with:" >> config.log
|
|
|
|
printf " '%s'" "$0" "$@" >> config.log
|
|
|
|
echo >> config.log
|
2011-11-23 18:26:44 +01:00
|
|
|
echo "#" >> config.log
|
|
|
|
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit() {
|
|
|
|
echo
|
|
|
|
echo "ERROR: $1"
|
|
|
|
while test -n "$2"; do
|
|
|
|
echo " $2"
|
|
|
|
shift
|
|
|
|
done
|
|
|
|
echo
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2012-07-18 16:10:28 +02:00
|
|
|
do_cc() {
|
|
|
|
# Run the compiler, capturing its output to the log.
|
|
|
|
echo $cc "$@" >> config.log
|
|
|
|
$cc "$@" >> config.log 2>&1 || return $?
|
|
|
|
# Test passed. If this is an --enable-werror build, rerun
|
|
|
|
# the test with -Werror and bail out if it fails. This
|
|
|
|
# makes warning-generating-errors in configure test code
|
|
|
|
# obvious to developers.
|
|
|
|
if test "$werror" != "yes"; then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
# Don't bother rerunning the compile if we were already using -Werror
|
|
|
|
case "$*" in
|
|
|
|
*-Werror*)
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
echo $cc -Werror "$@" >> config.log
|
|
|
|
$cc -Werror "$@" >> config.log 2>&1 && return $?
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "configure test passed without -Werror but failed with -Werror." \
|
|
|
|
"This is probably a bug in the configure script. The failing command" \
|
|
|
|
"will be at the bottom of config.log." \
|
|
|
|
"You can run configure with --disable-werror to bypass this check."
|
2012-07-18 16:10:28 +02:00
|
|
|
}
|
|
|
|
|
2009-08-03 14:46:03 +02:00
|
|
|
compile_object() {
|
2012-07-18 16:10:28 +02:00
|
|
|
do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC
|
2009-08-03 14:46:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
compile_prog() {
|
|
|
|
local_cflags="$1"
|
|
|
|
local_ldflags="$2"
|
2012-07-18 16:10:28 +02:00
|
|
|
do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
|
2009-08-03 14:46:03 +02:00
|
|
|
}
|
|
|
|
|
2010-12-23 11:43:58 +01:00
|
|
|
# symbolically link $1 to $2. Portable version of "ln -sf".
|
|
|
|
symlink() {
|
2012-03-19 13:20:47 +01:00
|
|
|
rm -rf "$2"
|
2012-06-06 10:57:00 +02:00
|
|
|
mkdir -p "$(dirname "$2")"
|
2012-03-19 13:20:47 +01:00
|
|
|
ln -s "$1" "$2"
|
2010-12-23 11:43:58 +01:00
|
|
|
}
|
|
|
|
|
2010-01-28 22:26:51 +01:00
|
|
|
# check whether a command is available to this shell (may be either an
|
|
|
|
# executable or a builtin)
|
|
|
|
has() {
|
|
|
|
type "$1" >/dev/null 2>&1
|
|
|
|
}
|
|
|
|
|
|
|
|
# search for an executable in PATH
|
|
|
|
path_of() {
|
|
|
|
local_command="$1"
|
|
|
|
local_ifs="$IFS"
|
|
|
|
local_dir=""
|
|
|
|
|
|
|
|
# pathname has a dir component?
|
|
|
|
if [ "${local_command#*/}" != "$local_command" ]; then
|
|
|
|
if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
|
|
|
|
echo "$local_command"
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ -z "$local_command" ]; then
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
IFS=:
|
|
|
|
for local_dir in $PATH; do
|
|
|
|
if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
|
|
|
|
echo "$local_dir/$local_command"
|
|
|
|
IFS="${local_ifs:-$(printf ' \t\n')}"
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
# not found
|
|
|
|
IFS="${local_ifs:-$(printf ' \t\n')}"
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2003-03-07 00:23:54 +01:00
|
|
|
# default parameters
|
2010-12-23 11:44:00 +01:00
|
|
|
source_path=`dirname "$0"`
|
2009-08-03 14:45:55 +02:00
|
|
|
cpu=""
|
2003-09-30 22:54:24 +02:00
|
|
|
interp_prefix="/usr/gnemul/qemu-%M"
|
2003-06-09 21:53:12 +02:00
|
|
|
static="no"
|
2003-03-07 00:23:54 +01:00
|
|
|
cross_prefix=""
|
2008-06-25 23:04:05 +02:00
|
|
|
audio_drv_list=""
|
2013-05-29 13:35:40 +02:00
|
|
|
block_drv_rw_whitelist=""
|
|
|
|
block_drv_ro_whitelist=""
|
2012-12-07 16:39:13 +01:00
|
|
|
host_cc="cc"
|
2009-08-03 14:46:26 +02:00
|
|
|
libs_softmmu=""
|
2009-08-03 14:47:06 +02:00
|
|
|
libs_tools=""
|
2009-08-03 14:46:59 +02:00
|
|
|
audio_pt_int=""
|
2009-10-09 23:13:41 +02:00
|
|
|
audio_win_int=""
|
2010-10-21 10:18:40 +02:00
|
|
|
cc_i386=i386-pc-linux-gnu-gcc
|
2011-08-11 22:38:12 +02:00
|
|
|
libs_qga=""
|
2012-02-08 13:54:13 +01:00
|
|
|
debug_info="yes"
|
2008-12-29 18:14:15 +01:00
|
|
|
|
2012-09-26 22:04:38 +02:00
|
|
|
# Don't accept a target_list environment variable.
|
|
|
|
unset target_list
|
2010-12-23 11:43:50 +01:00
|
|
|
|
|
|
|
# Default value for a variable defining feature "foo".
|
|
|
|
# * foo="no" feature will only be used if --enable-foo arg is given
|
|
|
|
# * foo="" feature will be searched for, and if found, will be used
|
|
|
|
# unless --disable-foo is given
|
|
|
|
# * foo="yes" this value will only be set by --enable-foo flag.
|
|
|
|
# feature will searched for,
|
|
|
|
# if not found, configure exits with error
|
|
|
|
#
|
|
|
|
# Always add --enable-foo and --disable-foo command line args.
|
|
|
|
# Distributions want to ensure that several features are compiled in, and it
|
|
|
|
# is impossible without a --enable-foo that exits if a feature is not found.
|
|
|
|
|
|
|
|
bluez=""
|
|
|
|
brlapi=""
|
|
|
|
curl=""
|
|
|
|
curses=""
|
|
|
|
docs=""
|
|
|
|
fdt=""
|
2012-09-25 16:04:58 +02:00
|
|
|
pixman=""
|
2010-12-23 11:43:50 +01:00
|
|
|
sdl=""
|
2012-02-24 09:30:42 +01:00
|
|
|
virtfs=""
|
2011-03-16 13:33:36 +01:00
|
|
|
vnc="yes"
|
2010-12-23 11:43:50 +01:00
|
|
|
sparse="no"
|
|
|
|
uuid=""
|
|
|
|
vde=""
|
|
|
|
vnc_tls=""
|
|
|
|
vnc_sasl=""
|
|
|
|
vnc_jpeg=""
|
|
|
|
vnc_png=""
|
2013-01-21 11:04:44 +01:00
|
|
|
vnc_ws=""
|
2010-12-23 11:43:50 +01:00
|
|
|
xen=""
|
2011-02-25 17:20:34 +01:00
|
|
|
xen_ctrl_version=""
|
2012-06-21 17:32:59 +02:00
|
|
|
xen_pci_passthrough=""
|
2010-12-23 11:43:50 +01:00
|
|
|
linux_aio=""
|
2012-01-26 15:42:26 +01:00
|
|
|
cap_ng=""
|
2010-12-23 11:43:50 +01:00
|
|
|
attr=""
|
2011-11-09 13:44:52 +01:00
|
|
|
libattr=""
|
2010-12-23 11:43:50 +01:00
|
|
|
xfs=""
|
|
|
|
|
2011-07-27 05:11:26 +02:00
|
|
|
vhost_net="no"
|
vhost-scsi: new device supporting the tcm_vhost Linux kernel module
The WWPN specified in configfs is passed to "-device vhost-scsi-pci".
The tgpt field of the SET_ENDPOINT ioctl is obsolete now, so it is not
available from the QEMU command-line. Instead, I hardcode it to zero.
Changes in Patch-v2:
- Add vhost_scsi_get_features() in order to determine feature bits
supports by host kernel (mst + nab)
- Re-enable usage of DEFINE_VIRTIO_COMMON_FEATURES, and allow
EVENT_IDX to be disabled by host in vhost_scsi_get_features()
- Drop unused hotplug bit in DEFINE_VHOST_SCSI_PROPERTIES
Changes in Patch-v1:
- Set event_idx=off by default (nab, thanks asias)
- Disable hotplug feature bit for v3.9 tcm_vhost kernel code, need to
re-enable in v3.10 (nab)
- Update to latest qemu.git/master HEAD
Changes in WIP-V3:
- Drop ioeventfd vhost_scsi_properties (asias, thanks stefanha)
- Add CONFIG_VHOST_SCSI (asias, thanks stefanha)
- Add hotplug feature bit
Changes in WIP-V2:
- Add backend guest masking support (nab)
- Bump ABI_VERSION to 1 (nab)
- Set up set_guest_notifiers (asias)
- Set up vs->dev.vq_index (asias)
- Drop vs->vs.vdev.{set,clear}_vhost_endpoint (asias)
- Drop VIRTIO_CONFIG_S_DRIVER check in vhost_scsi_set_status (asias)
Howto:
Use the latest seabios, at least commit b44a7be17b
git clone git://git.seabios.org/seabios.git
make
cp out/bios.bin /usr/share/qemu/bios.bin
qemu -device vhost-scsi-pci,wwpn=naa.6001405bd4e8476d,event_idx=off
...
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Asias He <asias@redhat.com>
[ Rebase on top of VirtIOSCSICommon patch, fix bugs in feature
negotiation and irqfd masking - Paolo ]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2013-03-29 02:08:16 +01:00
|
|
|
vhost_scsi="no"
|
2011-07-27 05:11:26 +02:00
|
|
|
kvm="no"
|
2013-07-22 16:01:54 +02:00
|
|
|
rdma=""
|
2010-12-23 11:43:50 +01:00
|
|
|
gprof="no"
|
|
|
|
debug_tcg="no"
|
|
|
|
debug="no"
|
|
|
|
strip_opt="yes"
|
2011-10-19 07:07:18 +02:00
|
|
|
tcg_interpreter="no"
|
2010-12-23 11:43:50 +01:00
|
|
|
bigendian="no"
|
|
|
|
mingw32="no"
|
2012-05-01 20:45:39 +02:00
|
|
|
gcov="no"
|
|
|
|
gcov_tool="gcov"
|
2010-12-23 11:43:50 +01:00
|
|
|
EXESUF=""
|
|
|
|
prefix="/usr/local"
|
|
|
|
mandir="\${prefix}/share/man"
|
2012-04-18 21:55:49 +02:00
|
|
|
datadir="\${prefix}/share"
|
2012-04-18 21:55:38 +02:00
|
|
|
qemu_docdir="\${prefix}/share/doc/qemu"
|
2010-12-23 11:43:50 +01:00
|
|
|
bindir="\${prefix}/bin"
|
2011-05-15 11:08:59 +02:00
|
|
|
libdir="\${prefix}/lib"
|
2012-06-06 23:11:00 +02:00
|
|
|
libexecdir="\${prefix}/libexec"
|
2011-06-27 11:58:20 +02:00
|
|
|
includedir="\${prefix}/include"
|
2010-12-23 11:43:50 +01:00
|
|
|
sysconfdir="\${prefix}/etc"
|
2012-10-03 23:35:57 +02:00
|
|
|
local_statedir="\${prefix}/var"
|
2010-12-23 11:43:50 +01:00
|
|
|
confsuffix="/qemu"
|
|
|
|
slirp="yes"
|
|
|
|
fmod_lib=""
|
|
|
|
fmod_inc=""
|
|
|
|
oss_lib=""
|
|
|
|
bsd="no"
|
|
|
|
linux="no"
|
|
|
|
solaris="no"
|
|
|
|
profiler="no"
|
|
|
|
cocoa="no"
|
|
|
|
softmmu="yes"
|
|
|
|
linux_user="no"
|
|
|
|
bsd_user="no"
|
2012-10-09 05:16:49 +02:00
|
|
|
guest_base="yes"
|
2010-12-23 11:43:50 +01:00
|
|
|
uname_release=""
|
|
|
|
mixemu="no"
|
|
|
|
aix="no"
|
|
|
|
blobs="yes"
|
|
|
|
pkgversion=""
|
2011-11-15 19:12:17 +01:00
|
|
|
pie=""
|
2010-12-23 11:43:50 +01:00
|
|
|
zero_malloc=""
|
2013-05-10 14:16:40 +02:00
|
|
|
qom_cast_debug="yes"
|
2010-12-23 11:43:50 +01:00
|
|
|
trace_backend="nop"
|
|
|
|
trace_file="trace"
|
|
|
|
spice=""
|
|
|
|
rbd=""
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
smartcard_nss=""
|
2012-11-30 16:02:11 +01:00
|
|
|
libusb=""
|
2011-07-19 11:04:10 +02:00
|
|
|
usb_redir=""
|
2013-03-06 20:23:32 +01:00
|
|
|
glx=""
|
2011-07-26 11:30:40 +02:00
|
|
|
zlib="yes"
|
2013-07-31 12:22:07 +02:00
|
|
|
guest_agent=""
|
2013-08-07 17:40:03 +02:00
|
|
|
guest_agent_with_vss="no"
|
|
|
|
vss_win32_sdk=""
|
|
|
|
win_sdk="no"
|
2012-09-10 13:26:29 +02:00
|
|
|
want_tools="yes"
|
2011-10-25 10:24:24 +02:00
|
|
|
libiscsi=""
|
2012-02-28 12:25:50 +01:00
|
|
|
coroutine=""
|
2013-09-11 16:42:35 +02:00
|
|
|
coroutine_pool=""
|
2012-08-14 23:44:05 +02:00
|
|
|
seccomp=""
|
2012-09-24 11:12:45 +02:00
|
|
|
glusterfs=""
|
2013-07-16 18:17:42 +02:00
|
|
|
glusterfs_discard="no"
|
2012-11-14 15:04:15 +01:00
|
|
|
virtio_blk_data_plane=""
|
2013-02-20 14:43:20 +01:00
|
|
|
gtk=""
|
2013-02-25 16:20:44 +01:00
|
|
|
gtkabi="2.0"
|
2013-02-27 18:47:52 +01:00
|
|
|
tpm="no"
|
2013-04-09 16:30:53 +02:00
|
|
|
libssh2=""
|
2010-12-23 11:43:50 +01:00
|
|
|
|
2008-12-29 18:14:15 +01:00
|
|
|
# parse CC options first
|
|
|
|
for opt do
|
|
|
|
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
|
|
|
case "$opt" in
|
|
|
|
--cross-prefix=*) cross_prefix="$optarg"
|
|
|
|
;;
|
2010-12-23 11:43:48 +01:00
|
|
|
--cc=*) CC="$optarg"
|
2008-12-29 18:14:15 +01:00
|
|
|
;;
|
2013-08-07 17:39:36 +02:00
|
|
|
--cxx=*) CXX="$optarg"
|
|
|
|
;;
|
2010-12-23 11:44:00 +01:00
|
|
|
--source-path=*) source_path="$optarg"
|
|
|
|
;;
|
2009-08-03 14:45:55 +02:00
|
|
|
--cpu=*) cpu="$optarg"
|
|
|
|
;;
|
2009-08-03 14:46:21 +02:00
|
|
|
--extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
|
2013-01-04 10:15:53 +01:00
|
|
|
EXTRA_CFLAGS="$optarg"
|
2009-08-03 14:46:02 +02:00
|
|
|
;;
|
|
|
|
--extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
|
2013-01-04 10:15:53 +01:00
|
|
|
EXTRA_LDFLAGS="$optarg"
|
2009-08-03 14:46:02 +02:00
|
|
|
;;
|
2012-02-08 13:54:13 +01:00
|
|
|
--enable-debug-info) debug_info="yes"
|
|
|
|
;;
|
|
|
|
--disable-debug-info) debug_info="no"
|
|
|
|
;;
|
2008-12-29 18:14:15 +01:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
# OS specific
|
|
|
|
# Using uname is really, really broken. Once we have the right set of checks
|
2012-02-26 18:46:12 +01:00
|
|
|
# we can eliminate its usage altogether.
|
2008-12-29 18:14:15 +01:00
|
|
|
|
2012-12-07 16:39:13 +01:00
|
|
|
# Preferred compiler:
|
|
|
|
# ${CC} (if set)
|
|
|
|
# ${cross_prefix}gcc (if cross-prefix specified)
|
|
|
|
# system compiler
|
|
|
|
if test -z "${CC}${cross_prefix}"; then
|
|
|
|
cc="$host_cc"
|
|
|
|
else
|
|
|
|
cc="${CC-${cross_prefix}gcc}"
|
|
|
|
fi
|
|
|
|
|
2013-08-07 17:39:36 +02:00
|
|
|
if test -z "${CXX}${cross_prefix}"; then
|
|
|
|
cxx="c++"
|
|
|
|
else
|
|
|
|
cxx="${CXX-${cross_prefix}g++}"
|
|
|
|
fi
|
|
|
|
|
2011-08-05 00:10:08 +02:00
|
|
|
ar="${AR-${cross_prefix}ar}"
|
2013-01-05 11:10:27 +01:00
|
|
|
as="${AS-${cross_prefix}as}"
|
|
|
|
cpp="${CPP-$cc -E}"
|
2011-08-05 00:10:08 +02:00
|
|
|
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
|
|
|
|
ld="${LD-${cross_prefix}ld}"
|
2011-08-14 02:30:14 +02:00
|
|
|
libtool="${LIBTOOL-${cross_prefix}libtool}"
|
2011-08-05 00:10:08 +02:00
|
|
|
strip="${STRIP-${cross_prefix}strip}"
|
|
|
|
windres="${WINDRES-${cross_prefix}windres}"
|
2012-01-31 20:03:45 +01:00
|
|
|
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
|
|
|
|
query_pkg_config() {
|
|
|
|
"${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
|
|
|
|
}
|
|
|
|
pkg_config=query_pkg_config
|
2011-08-05 00:10:08 +02:00
|
|
|
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
|
2008-12-29 18:14:15 +01:00
|
|
|
|
2009-11-11 12:50:09 +01:00
|
|
|
# default flags for all hosts
|
|
|
|
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
|
2011-05-17 23:08:43 +02:00
|
|
|
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
|
2013-02-22 21:08:51 +01:00
|
|
|
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
|
2009-11-11 12:50:09 +01:00
|
|
|
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
|
2012-10-24 13:12:00 +02:00
|
|
|
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
|
2012-02-08 13:54:13 +01:00
|
|
|
if test "$debug_info" = "yes"; then
|
|
|
|
CFLAGS="-g $CFLAGS"
|
|
|
|
LDFLAGS="-g $LDFLAGS"
|
|
|
|
fi
|
2009-11-11 12:50:09 +01:00
|
|
|
|
2010-12-23 11:44:00 +01:00
|
|
|
# make source path absolute
|
|
|
|
source_path=`cd "$source_path"; pwd`
|
|
|
|
|
2008-12-29 18:14:15 +01:00
|
|
|
check_define() {
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#if !defined($1)
|
2011-11-23 18:26:43 +01:00
|
|
|
#error $1 not defined
|
2008-12-29 18:14:15 +01:00
|
|
|
#endif
|
|
|
|
int main(void) { return 0; }
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
compile_object
|
2008-12-29 18:14:15 +01:00
|
|
|
}
|
|
|
|
|
2012-08-14 16:35:34 +02:00
|
|
|
if check_define __linux__ ; then
|
|
|
|
targetos="Linux"
|
|
|
|
elif check_define _WIN32 ; then
|
|
|
|
targetos='MINGW32'
|
|
|
|
elif check_define __OpenBSD__ ; then
|
|
|
|
targetos='OpenBSD'
|
|
|
|
elif check_define __sun__ ; then
|
|
|
|
targetos='SunOS'
|
|
|
|
elif check_define __HAIKU__ ; then
|
|
|
|
targetos='Haiku'
|
|
|
|
else
|
|
|
|
targetos=`uname -s`
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Some host OSes need non-standard checks for which CPU to use.
|
|
|
|
# Note that these checks are broken for cross-compilation: if you're
|
|
|
|
# cross-compiling to one of these OSes then you'll need to specify
|
|
|
|
# the correct CPU with the --cpu option.
|
|
|
|
case $targetos in
|
|
|
|
Darwin)
|
|
|
|
# on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
|
|
|
|
# run 64-bit userspace code.
|
|
|
|
# If the user didn't specify a CPU explicitly and the kernel says this is
|
|
|
|
# 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
|
|
|
|
if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
|
|
|
|
cpu="x86_64"
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
SunOS)
|
|
|
|
# `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
|
|
|
|
if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
|
|
|
|
cpu="x86_64"
|
|
|
|
fi
|
|
|
|
esac
|
|
|
|
|
2009-08-03 14:45:55 +02:00
|
|
|
if test ! -z "$cpu" ; then
|
|
|
|
# command line argument
|
|
|
|
:
|
|
|
|
elif check_define __i386__ ; then
|
2008-12-29 18:14:15 +01:00
|
|
|
cpu="i386"
|
|
|
|
elif check_define __x86_64__ ; then
|
2013-08-20 21:20:05 +02:00
|
|
|
if check_define __ILP32__ ; then
|
|
|
|
cpu="x32"
|
|
|
|
else
|
|
|
|
cpu="x86_64"
|
|
|
|
fi
|
2008-12-31 17:55:26 +01:00
|
|
|
elif check_define __sparc__ ; then
|
|
|
|
if check_define __arch64__ ; then
|
|
|
|
cpu="sparc64"
|
|
|
|
else
|
|
|
|
cpu="sparc"
|
|
|
|
fi
|
2009-01-14 19:39:52 +01:00
|
|
|
elif check_define _ARCH_PPC ; then
|
|
|
|
if check_define _ARCH_PPC64 ; then
|
|
|
|
cpu="ppc64"
|
|
|
|
else
|
|
|
|
cpu="ppc"
|
|
|
|
fi
|
2009-10-17 14:17:47 +02:00
|
|
|
elif check_define __mips__ ; then
|
|
|
|
cpu="mips"
|
tcg: initial ia64 support
A few words about design choices:
* On IA64, instructions should be grouped by bundle, and dependencies
between instructions declared. A first version of this code tried to
schedule instructions automatically, but was very complex and too
invasive for the current common TCG code (ops not ending at
instruction boundaries, code retranslation breaking already generated
code, etc.) It was also not very efficient, as dependencies between
TCG ops is not available.
Instead the option taken by the current implementation does not try
to fill the bundle by scheduling instructions, but by providing ops
not available as an ia64 instruction, and by offering 22-bit constant
loading for most of the instructions. With both options the bundle are
filled at approximately the same level.
* Up to 128 registers can be affected to a function on IA64, but TCG
limits this number to 64, which is actually more than enough. The
register affectation is the following:
- r0: used to map a constant argument with value 0
- r1: global pointer
- r2, r3: internal use
- r4 to r6: not used to avoid saving them
- r7: env structure
- r8 to r11: free for TCG (call clobbered)
- r12: stack pointer
- r13: thread pointer
- r14 to r31: free for TCG (call clobbered)
- r32: reserved (return address)
- r33: reserved (PFS)
- r33 to r63: free for TCG
* The IA64 architecture has only 64-bit registers and no 32-bit
instructions (the only exception being cmp4). Therefore 64-bit
registers and instructions are used for 32-bit ops. The adopted
strategy is the same as the ABI, that is the higher 32 bits are
undefined. Most ops (and, or, add, shl, etc.) can directly use
the 64-bit registers, while some others have to sign-extend (sar,
div, etc.) or zero-extend (shr, divu, etc.) the register first.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
2010-03-29 02:12:51 +02:00
|
|
|
elif check_define __ia64__ ; then
|
|
|
|
cpu="ia64"
|
2010-06-13 12:28:21 +02:00
|
|
|
elif check_define __s390__ ; then
|
|
|
|
if check_define __s390x__ ; then
|
|
|
|
cpu="s390x"
|
|
|
|
else
|
|
|
|
cpu="s390"
|
|
|
|
fi
|
2011-11-30 10:57:48 +01:00
|
|
|
elif check_define __arm__ ; then
|
|
|
|
cpu="arm"
|
2013-06-12 17:20:23 +02:00
|
|
|
elif check_define __aarch64__ ; then
|
|
|
|
cpu="aarch64"
|
2011-09-08 03:24:56 +02:00
|
|
|
elif check_define __hppa__ ; then
|
|
|
|
cpu="hppa"
|
2008-12-29 18:14:15 +01:00
|
|
|
else
|
2009-01-14 19:39:52 +01:00
|
|
|
cpu=`uname -m`
|
2008-12-29 18:14:15 +01:00
|
|
|
fi
|
|
|
|
|
2011-12-24 14:07:25 +01:00
|
|
|
ARCH=
|
|
|
|
# Normalise host CPU name and set ARCH.
|
|
|
|
# Note that this case should only have supported host CPUs, not guests.
|
2003-03-07 00:23:54 +01:00
|
|
|
case "$cpu" in
|
2013-08-20 21:20:05 +02:00
|
|
|
ia64|ppc|ppc64|s390|s390x|sparc64|x32)
|
2009-08-03 14:46:12 +02:00
|
|
|
cpu="$cpu"
|
|
|
|
;;
|
2003-03-07 00:23:54 +01:00
|
|
|
i386|i486|i586|i686|i86pc|BePC)
|
2003-08-10 23:36:04 +02:00
|
|
|
cpu="i386"
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2008-04-12 00:04:22 +02:00
|
|
|
x86_64|amd64)
|
|
|
|
cpu="x86_64"
|
|
|
|
;;
|
2011-11-30 10:57:48 +01:00
|
|
|
armv*b|armv*l|arm)
|
|
|
|
cpu="arm"
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2013-06-12 17:20:23 +02:00
|
|
|
aarch64)
|
|
|
|
cpu="aarch64"
|
|
|
|
;;
|
2011-09-08 03:24:56 +02:00
|
|
|
hppa|parisc|parisc64)
|
2008-04-12 22:14:54 +02:00
|
|
|
cpu="hppa"
|
|
|
|
;;
|
2009-10-17 14:17:47 +02:00
|
|
|
mips*)
|
|
|
|
cpu="mips"
|
|
|
|
;;
|
2007-04-16 20:27:06 +02:00
|
|
|
sparc|sun4[cdmuv])
|
2003-05-13 20:59:59 +02:00
|
|
|
cpu="sparc"
|
|
|
|
;;
|
2003-03-07 00:23:54 +01:00
|
|
|
*)
|
2011-12-24 14:07:25 +01:00
|
|
|
# This will result in either an error or falling back to TCI later
|
|
|
|
ARCH=unknown
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
|
|
|
esac
|
2011-12-24 14:07:25 +01:00
|
|
|
if test -z "$ARCH"; then
|
|
|
|
ARCH="$cpu"
|
|
|
|
fi
|
2009-08-12 18:20:24 +02:00
|
|
|
|
2003-03-07 00:23:54 +01:00
|
|
|
# OS specific
|
2009-08-03 14:46:13 +02:00
|
|
|
|
2003-03-07 00:23:54 +01:00
|
|
|
case $targetos in
|
2005-04-23 20:30:28 +02:00
|
|
|
CYGWIN*)
|
2009-08-03 14:46:13 +02:00
|
|
|
mingw32="yes"
|
2009-08-03 14:46:21 +02:00
|
|
|
QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
|
2009-10-09 23:13:41 +02:00
|
|
|
audio_possible_drivers="winwave sdl"
|
|
|
|
audio_drv_list="winwave"
|
2005-04-23 20:30:28 +02:00
|
|
|
;;
|
2004-04-01 01:37:16 +02:00
|
|
|
MINGW32*)
|
2009-08-03 14:46:13 +02:00
|
|
|
mingw32="yes"
|
2009-10-09 23:13:41 +02:00
|
|
|
audio_possible_drivers="winwave dsound sdl fmod"
|
|
|
|
audio_drv_list="winwave"
|
2004-04-01 01:37:16 +02:00
|
|
|
;;
|
2007-06-23 18:03:36 +02:00
|
|
|
GNU/kFreeBSD)
|
2009-11-29 18:00:41 +01:00
|
|
|
bsd="yes"
|
2009-08-03 14:46:13 +02:00
|
|
|
audio_drv_list="oss"
|
|
|
|
audio_possible_drivers="oss sdl esd pa"
|
2007-06-23 18:03:36 +02:00
|
|
|
;;
|
2004-05-12 21:32:15 +02:00
|
|
|
FreeBSD)
|
2009-08-03 14:46:13 +02:00
|
|
|
bsd="yes"
|
2010-12-23 11:43:49 +01:00
|
|
|
make="${MAKE-gmake}"
|
2009-08-03 14:46:13 +02:00
|
|
|
audio_drv_list="oss"
|
|
|
|
audio_possible_drivers="oss sdl esd pa"
|
2010-03-25 22:32:16 +01:00
|
|
|
# needed for kinfo_getvmmap(3) in libutil.h
|
|
|
|
LIBS="-lutil $LIBS"
|
2004-05-12 21:32:15 +02:00
|
|
|
;;
|
2009-03-07 21:06:23 +01:00
|
|
|
DragonFly)
|
2009-08-03 14:46:13 +02:00
|
|
|
bsd="yes"
|
2010-12-23 11:43:49 +01:00
|
|
|
make="${MAKE-gmake}"
|
2009-08-03 14:46:13 +02:00
|
|
|
audio_drv_list="oss"
|
|
|
|
audio_possible_drivers="oss sdl esd pa"
|
2009-03-07 21:06:23 +01:00
|
|
|
;;
|
2004-05-12 21:32:15 +02:00
|
|
|
NetBSD)
|
2009-08-03 14:46:13 +02:00
|
|
|
bsd="yes"
|
2010-12-23 11:43:49 +01:00
|
|
|
make="${MAKE-gmake}"
|
2009-08-03 14:46:13 +02:00
|
|
|
audio_drv_list="oss"
|
|
|
|
audio_possible_drivers="oss sdl esd"
|
|
|
|
oss_lib="-lossaudio"
|
2004-05-12 21:32:15 +02:00
|
|
|
;;
|
|
|
|
OpenBSD)
|
2009-08-03 14:46:13 +02:00
|
|
|
bsd="yes"
|
2010-12-23 11:43:49 +01:00
|
|
|
make="${MAKE-gmake}"
|
2013-05-25 01:01:07 +02:00
|
|
|
audio_drv_list="sdl"
|
|
|
|
audio_possible_drivers="sdl esd"
|
2004-05-12 21:32:15 +02:00
|
|
|
;;
|
2004-07-05 23:25:26 +02:00
|
|
|
Darwin)
|
2009-08-03 14:46:13 +02:00
|
|
|
bsd="yes"
|
|
|
|
darwin="yes"
|
|
|
|
if [ "$cpu" = "x86_64" ] ; then
|
2009-08-03 14:46:21 +02:00
|
|
|
QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
|
2009-08-03 14:46:01 +02:00
|
|
|
LDFLAGS="-arch x86_64 $LDFLAGS"
|
2009-08-03 14:46:13 +02:00
|
|
|
else
|
2009-08-03 14:46:21 +02:00
|
|
|
QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
|
2009-08-03 14:46:13 +02:00
|
|
|
fi
|
|
|
|
cocoa="yes"
|
|
|
|
audio_drv_list="coreaudio"
|
|
|
|
audio_possible_drivers="coreaudio sdl fmod"
|
|
|
|
LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
|
2009-08-03 14:47:09 +02:00
|
|
|
libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
|
2012-08-11 23:34:39 +02:00
|
|
|
# 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"
|
2004-07-05 23:25:26 +02:00
|
|
|
;;
|
2006-04-26 00:36:06 +02:00
|
|
|
SunOS)
|
2009-08-03 14:46:13 +02:00
|
|
|
solaris="yes"
|
2010-12-23 11:43:49 +01:00
|
|
|
make="${MAKE-gmake}"
|
|
|
|
install="${INSTALL-ginstall}"
|
2009-10-02 21:38:25 +02:00
|
|
|
ld="gld"
|
2011-09-02 22:53:28 +02:00
|
|
|
smbd="${SMBD-/usr/sfw/sbin/smbd}"
|
2009-08-03 14:46:13 +02:00
|
|
|
needs_libsunmath="no"
|
|
|
|
solarisrev=`uname -r | cut -f2 -d.`
|
|
|
|
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
|
|
|
|
if test "$solarisrev" -le 9 ; then
|
|
|
|
if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
|
|
|
|
needs_libsunmath="yes"
|
2009-08-03 14:47:11 +02:00
|
|
|
QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
|
|
|
|
LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
|
|
|
|
LIBS="-lsunmath $LIBS"
|
2009-08-03 14:46:13 +02:00
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
|
|
|
|
"libsunmath from the Sun Studio compilers tools, due to a lack of" \
|
|
|
|
"C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
|
|
|
|
"Studio 11 can be downloaded from www.sun.com."
|
2009-08-03 14:46:13 +02:00
|
|
|
fi
|
2007-02-11 01:31:33 +01:00
|
|
|
fi
|
2009-08-03 14:46:13 +02:00
|
|
|
fi
|
|
|
|
if test -f /usr/include/sys/soundcard.h ; then
|
|
|
|
audio_drv_list="oss"
|
|
|
|
fi
|
|
|
|
audio_possible_drivers="oss sdl"
|
2009-09-12 14:36:04 +02:00
|
|
|
# needed for CMSG_ macros in sys/socket.h
|
|
|
|
QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
|
|
|
|
# needed for TIOCWIN* defines in termios.h
|
|
|
|
QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
|
2009-08-03 14:46:21 +02:00
|
|
|
QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
|
2012-04-30 18:00:55 +02:00
|
|
|
solarisnetlibs="-lsocket -lnsl -lresolv"
|
|
|
|
LIBS="$solarisnetlibs $LIBS"
|
|
|
|
libs_qga="$solarisnetlibs $libs_qga"
|
2007-02-11 01:31:33 +01:00
|
|
|
;;
|
2008-11-18 02:42:22 +01:00
|
|
|
AIX)
|
2009-08-03 14:46:13 +02:00
|
|
|
aix="yes"
|
2010-12-23 11:43:49 +01:00
|
|
|
make="${MAKE-gmake}"
|
2008-11-18 02:42:22 +01:00
|
|
|
;;
|
2010-09-20 00:50:43 +02:00
|
|
|
Haiku)
|
|
|
|
haiku="yes"
|
|
|
|
QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
|
|
|
|
LIBS="-lposix_error_mapper -lnetwork $LIBS"
|
|
|
|
;;
|
2005-10-30 19:58:22 +01:00
|
|
|
*)
|
2009-08-03 14:46:13 +02:00
|
|
|
audio_drv_list="oss"
|
|
|
|
audio_possible_drivers="oss alsa sdl esd pa"
|
|
|
|
linux="yes"
|
|
|
|
linux_user="yes"
|
2011-06-23 10:05:12 +02:00
|
|
|
kvm="yes"
|
|
|
|
vhost_net="yes"
|
vhost-scsi: new device supporting the tcm_vhost Linux kernel module
The WWPN specified in configfs is passed to "-device vhost-scsi-pci".
The tgpt field of the SET_ENDPOINT ioctl is obsolete now, so it is not
available from the QEMU command-line. Instead, I hardcode it to zero.
Changes in Patch-v2:
- Add vhost_scsi_get_features() in order to determine feature bits
supports by host kernel (mst + nab)
- Re-enable usage of DEFINE_VIRTIO_COMMON_FEATURES, and allow
EVENT_IDX to be disabled by host in vhost_scsi_get_features()
- Drop unused hotplug bit in DEFINE_VHOST_SCSI_PROPERTIES
Changes in Patch-v1:
- Set event_idx=off by default (nab, thanks asias)
- Disable hotplug feature bit for v3.9 tcm_vhost kernel code, need to
re-enable in v3.10 (nab)
- Update to latest qemu.git/master HEAD
Changes in WIP-V3:
- Drop ioeventfd vhost_scsi_properties (asias, thanks stefanha)
- Add CONFIG_VHOST_SCSI (asias, thanks stefanha)
- Add hotplug feature bit
Changes in WIP-V2:
- Add backend guest masking support (nab)
- Bump ABI_VERSION to 1 (nab)
- Set up set_guest_notifiers (asias)
- Set up vs->dev.vq_index (asias)
- Drop vs->vs.vdev.{set,clear}_vhost_endpoint (asias)
- Drop VIRTIO_CONFIG_S_DRIVER check in vhost_scsi_set_status (asias)
Howto:
Use the latest seabios, at least commit b44a7be17b
git clone git://git.seabios.org/seabios.git
make
cp out/bios.bin /usr/share/qemu/bios.bin
qemu -device vhost-scsi-pci,wwpn=naa.6001405bd4e8476d,event_idx=off
...
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Asias He <asias@redhat.com>
[ Rebase on top of VirtIOSCSICommon patch, fix bugs in feature
negotiation and irqfd masking - Paolo ]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2013-03-29 02:08:16 +01:00
|
|
|
vhost_scsi="yes"
|
2013-08-20 21:20:05 +02:00
|
|
|
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
|
2008-06-28 21:13:06 +02:00
|
|
|
audio_possible_drivers="$audio_possible_drivers fmod"
|
2009-08-03 14:46:13 +02:00
|
|
|
fi
|
2013-05-29 15:30:43 +02:00
|
|
|
QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
|
2004-11-10 00:09:44 +01:00
|
|
|
;;
|
2003-03-07 00:23:54 +01:00
|
|
|
esac
|
|
|
|
|
2004-05-12 21:32:15 +02:00
|
|
|
if [ "$bsd" = "yes" ] ; then
|
2006-04-16 15:28:56 +02:00
|
|
|
if [ "$darwin" != "yes" ] ; then
|
2012-04-26 11:57:39 +02:00
|
|
|
bsd_user="yes"
|
2004-07-05 23:25:26 +02:00
|
|
|
fi
|
2004-05-12 21:32:15 +02:00
|
|
|
fi
|
|
|
|
|
2010-12-23 11:43:49 +01:00
|
|
|
: ${make=${MAKE-make}}
|
|
|
|
: ${install=${INSTALL-install}}
|
2013-08-27 15:12:41 +02:00
|
|
|
: ${python=${PYTHON-python -B}}
|
2011-09-02 22:53:28 +02:00
|
|
|
: ${smbd=${SMBD-/usr/sbin/smbd}}
|
2010-12-23 11:43:49 +01:00
|
|
|
|
2012-08-11 23:34:40 +02:00
|
|
|
# Default objcc to clang if available, otherwise use CC
|
|
|
|
if has clang; then
|
|
|
|
objcc=clang
|
|
|
|
else
|
|
|
|
objcc="$cc"
|
|
|
|
fi
|
|
|
|
|
2009-08-03 14:46:07 +02:00
|
|
|
if test "$mingw32" = "yes" ; then
|
|
|
|
EXESUF=".exe"
|
2009-08-03 14:46:21 +02:00
|
|
|
QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
|
2010-02-12 11:02:08 +01:00
|
|
|
# enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
|
|
|
|
QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
|
2012-03-10 11:14:32 +01:00
|
|
|
LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
int main(void) { return 0; }
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "-liberty" ; then
|
|
|
|
LIBS="-liberty $LIBS"
|
|
|
|
fi
|
2012-04-07 09:23:38 +02:00
|
|
|
prefix="c:/Program Files/QEMU"
|
2010-05-26 16:08:28 +02:00
|
|
|
mandir="\${prefix}"
|
2012-04-18 21:55:49 +02:00
|
|
|
datadir="\${prefix}"
|
2012-04-18 21:55:38 +02:00
|
|
|
qemu_docdir="\${prefix}"
|
2010-05-26 16:08:28 +02:00
|
|
|
bindir="\${prefix}"
|
|
|
|
sysconfdir="\${prefix}"
|
2013-05-18 06:31:50 +02:00
|
|
|
local_statedir=
|
2010-05-26 16:08:28 +02:00
|
|
|
confsuffix=""
|
2012-03-27 09:26:18 +02:00
|
|
|
libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
|
2009-08-03 14:46:07 +02:00
|
|
|
fi
|
|
|
|
|
2009-06-11 20:28:25 +02:00
|
|
|
werror=""
|
2007-11-11 21:17:03 +01:00
|
|
|
|
2003-03-07 00:23:54 +01:00
|
|
|
for opt do
|
2006-04-30 01:05:22 +02:00
|
|
|
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
2003-03-07 00:23:54 +01:00
|
|
|
case "$opt" in
|
2005-12-18 20:14:49 +01:00
|
|
|
--help|-h) show_help=yes
|
|
|
|
;;
|
2011-04-07 07:12:28 +02:00
|
|
|
--version|-V) exec cat $source_path/VERSION
|
|
|
|
;;
|
2006-04-16 15:28:56 +02:00
|
|
|
--prefix=*) prefix="$optarg"
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2006-04-16 15:28:56 +02:00
|
|
|
--interp-prefix=*) interp_prefix="$optarg"
|
2003-04-11 02:16:16 +02:00
|
|
|
;;
|
2010-12-23 11:44:00 +01:00
|
|
|
--source-path=*)
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2008-12-29 18:14:15 +01:00
|
|
|
--cross-prefix=*)
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2008-12-29 18:14:15 +01:00
|
|
|
--cc=*)
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2006-04-16 15:28:56 +02:00
|
|
|
--host-cc=*) host_cc="$optarg"
|
2005-07-23 16:27:54 +02:00
|
|
|
;;
|
2013-08-07 17:39:36 +02:00
|
|
|
--cxx=*)
|
|
|
|
;;
|
2012-08-11 23:34:40 +02:00
|
|
|
--objcc=*) objcc="$optarg"
|
|
|
|
;;
|
2006-04-16 15:28:56 +02:00
|
|
|
--make=*) make="$optarg"
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2006-04-17 15:57:12 +02:00
|
|
|
--install=*) install="$optarg"
|
|
|
|
;;
|
2011-07-22 23:08:09 +02:00
|
|
|
--python=*) python="$optarg"
|
|
|
|
;;
|
2012-05-01 20:45:39 +02:00
|
|
|
--gcov=*) gcov_tool="$optarg"
|
|
|
|
;;
|
2011-09-02 22:53:28 +02:00
|
|
|
--smbd=*) smbd="$optarg"
|
|
|
|
;;
|
2009-08-03 14:46:02 +02:00
|
|
|
--extra-cflags=*)
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2009-08-03 14:46:02 +02:00
|
|
|
--extra-ldflags=*)
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2012-02-08 13:54:13 +01:00
|
|
|
--enable-debug-info)
|
|
|
|
;;
|
|
|
|
--disable-debug-info)
|
|
|
|
;;
|
2009-08-03 14:45:55 +02:00
|
|
|
--cpu=*)
|
2003-03-07 00:23:54 +01:00
|
|
|
;;
|
2006-04-16 15:28:56 +02:00
|
|
|
--target-list=*) target_list="$optarg"
|
2003-06-15 22:25:43 +02:00
|
|
|
;;
|
2010-12-23 11:44:02 +01:00
|
|
|
--enable-trace-backend=*) trace_backend="$optarg"
|
2010-05-22 18:52:39 +02:00
|
|
|
;;
|
2010-12-23 11:44:02 +01:00
|
|
|
--with-trace-file=*) trace_file="$optarg"
|
2010-07-13 10:26:32 +02:00
|
|
|
;;
|
2003-03-07 00:23:54 +01:00
|
|
|
--enable-gprof) gprof="yes"
|
|
|
|
;;
|
2012-05-01 20:45:39 +02:00
|
|
|
--enable-gcov) gcov="yes"
|
|
|
|
;;
|
2010-01-31 12:23:45 +01:00
|
|
|
--static)
|
|
|
|
static="yes"
|
|
|
|
LDFLAGS="-static $LDFLAGS"
|
2012-01-31 20:03:45 +01:00
|
|
|
QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
|
2003-06-09 21:53:12 +02:00
|
|
|
;;
|
2010-05-26 16:08:26 +02:00
|
|
|
--mandir=*) mandir="$optarg"
|
|
|
|
;;
|
|
|
|
--bindir=*) bindir="$optarg"
|
|
|
|
;;
|
2011-05-15 11:08:59 +02:00
|
|
|
--libdir=*) libdir="$optarg"
|
|
|
|
;;
|
2012-06-06 23:11:00 +02:00
|
|
|
--libexecdir=*) libexecdir="$optarg"
|
|
|
|
;;
|
2011-06-27 11:58:20 +02:00
|
|
|
--includedir=*) includedir="$optarg"
|
|
|
|
;;
|
2012-04-18 21:55:49 +02:00
|
|
|
--datadir=*) datadir="$optarg"
|
2010-05-26 16:08:26 +02:00
|
|
|
;;
|
2012-04-18 21:55:50 +02:00
|
|
|
--with-confsuffix=*) confsuffix="$optarg"
|
|
|
|
;;
|
2012-04-18 21:55:38 +02:00
|
|
|
--docdir=*) qemu_docdir="$optarg"
|
2010-05-26 16:08:26 +02:00
|
|
|
;;
|
2010-03-08 14:09:48 +01:00
|
|
|
--sysconfdir=*) sysconfdir="$optarg"
|
2010-01-21 17:30:29 +01:00
|
|
|
;;
|
2012-10-03 23:35:57 +02:00
|
|
|
--localstatedir=*) local_statedir="$optarg"
|
|
|
|
;;
|
|
|
|
--sbindir=*|--sharedstatedir=*|\
|
2011-11-24 13:11:31 +01:00
|
|
|
--oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
|
|
|
|
--htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
|
|
|
|
# These switches are silently ignored, for compatibility with
|
|
|
|
# autoconf-generated configure scripts. This allows QEMU's
|
|
|
|
# configure to be used by RPM and similar macros that set
|
|
|
|
# lots of directory switches by default.
|
|
|
|
;;
|
2012-09-25 16:04:58 +02:00
|
|
|
--with-system-pixman) pixman="system"
|
|
|
|
;;
|
|
|
|
--without-system-pixman) pixman="internal"
|
|
|
|
;;
|
2012-12-04 16:58:08 +01:00
|
|
|
--without-pixman) pixman="none"
|
|
|
|
;;
|
2003-08-10 23:36:04 +02:00
|
|
|
--disable-sdl) sdl="no"
|
|
|
|
;;
|
2009-08-12 18:29:53 +02:00
|
|
|
--enable-sdl) sdl="yes"
|
|
|
|
;;
|
2013-05-10 14:16:40 +02:00
|
|
|
--disable-qom-cast-debug) qom_cast_debug="no"
|
|
|
|
;;
|
|
|
|
--enable-qom-cast-debug) qom_cast_debug="yes"
|
|
|
|
;;
|
2012-02-24 09:30:42 +01:00
|
|
|
--disable-virtfs) virtfs="no"
|
|
|
|
;;
|
|
|
|
--enable-virtfs) virtfs="yes"
|
|
|
|
;;
|
2011-03-16 13:33:36 +01:00
|
|
|
--disable-vnc) vnc="no"
|
|
|
|
;;
|
|
|
|
--enable-vnc) vnc="yes"
|
|
|
|
;;
|
2008-06-25 23:04:05 +02:00
|
|
|
--fmod-lib=*) fmod_lib="$optarg"
|
2005-10-30 19:58:22 +01:00
|
|
|
;;
|
2008-06-28 21:13:06 +02:00
|
|
|
--fmod-inc=*) fmod_inc="$optarg"
|
|
|
|
;;
|
2008-08-21 20:00:53 +02:00
|
|
|
--oss-lib=*) oss_lib="$optarg"
|
|
|
|
;;
|
2008-06-25 23:04:05 +02:00
|
|
|
--audio-drv-list=*) audio_drv_list="$optarg"
|
2004-11-14 20:57:29 +01:00
|
|
|
;;
|
2013-05-29 13:35:40 +02:00
|
|
|
--block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
|
|
|
|
;;
|
|
|
|
--block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
|
2009-10-27 18:41:44 +01:00
|
|
|
;;
|
2009-04-13 20:45:38 +02:00
|
|
|
--enable-debug-tcg) debug_tcg="yes"
|
|
|
|
;;
|
|
|
|
--disable-debug-tcg) debug_tcg="no"
|
|
|
|
;;
|
2009-06-04 12:39:04 +02:00
|
|
|
--enable-debug)
|
|
|
|
# Enable debugging options that aren't excessively noisy
|
|
|
|
debug_tcg="yes"
|
|
|
|
debug="yes"
|
|
|
|
strip_opt="no"
|
|
|
|
;;
|
2008-10-07 21:16:17 +02:00
|
|
|
--enable-sparse) sparse="yes"
|
|
|
|
;;
|
|
|
|
--disable-sparse) sparse="no"
|
|
|
|
;;
|
2009-04-05 19:41:02 +02:00
|
|
|
--disable-strip) strip_opt="no"
|
|
|
|
;;
|
2007-08-25 03:37:51 +02:00
|
|
|
--disable-vnc-tls) vnc_tls="no"
|
|
|
|
;;
|
2009-08-12 18:20:28 +02:00
|
|
|
--enable-vnc-tls) vnc_tls="yes"
|
|
|
|
;;
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
--disable-vnc-sasl) vnc_sasl="no"
|
|
|
|
;;
|
2009-08-12 18:20:29 +02:00
|
|
|
--enable-vnc-sasl) vnc_sasl="yes"
|
|
|
|
;;
|
2010-07-07 20:57:49 +02:00
|
|
|
--disable-vnc-jpeg) vnc_jpeg="no"
|
|
|
|
;;
|
|
|
|
--enable-vnc-jpeg) vnc_jpeg="yes"
|
|
|
|
;;
|
2010-07-07 20:57:56 +02:00
|
|
|
--disable-vnc-png) vnc_png="no"
|
|
|
|
;;
|
|
|
|
--enable-vnc-png) vnc_png="yes"
|
|
|
|
;;
|
2013-01-21 11:04:44 +01:00
|
|
|
--disable-vnc-ws) vnc_ws="no"
|
|
|
|
;;
|
|
|
|
--enable-vnc-ws) vnc_ws="yes"
|
|
|
|
;;
|
2004-06-04 13:13:20 +02:00
|
|
|
--disable-slirp) slirp="no"
|
2005-10-30 19:58:22 +01:00
|
|
|
;;
|
2009-10-01 20:10:37 +02:00
|
|
|
--disable-uuid) uuid="no"
|
|
|
|
;;
|
|
|
|
--enable-uuid) uuid="yes"
|
|
|
|
;;
|
2008-07-23 20:14:33 +02:00
|
|
|
--disable-vde) vde="no"
|
2008-07-19 11:56:24 +02:00
|
|
|
;;
|
2009-08-12 18:20:27 +02:00
|
|
|
--enable-vde) vde="yes"
|
|
|
|
;;
|
2009-04-22 17:19:10 +02:00
|
|
|
--disable-xen) xen="no"
|
|
|
|
;;
|
2009-08-12 18:29:55 +02:00
|
|
|
--enable-xen) xen="yes"
|
|
|
|
;;
|
2012-06-21 17:32:59 +02:00
|
|
|
--disable-xen-pci-passthrough) xen_pci_passthrough="no"
|
|
|
|
;;
|
|
|
|
--enable-xen-pci-passthrough) xen_pci_passthrough="yes"
|
|
|
|
;;
|
2008-04-08 08:01:02 +02:00
|
|
|
--disable-brlapi) brlapi="no"
|
|
|
|
;;
|
2009-08-12 18:20:26 +02:00
|
|
|
--enable-brlapi) brlapi="yes"
|
|
|
|
;;
|
2008-09-29 01:49:55 +02:00
|
|
|
--disable-bluez) bluez="no"
|
|
|
|
;;
|
2009-08-12 18:29:50 +02:00
|
|
|
--enable-bluez) bluez="yes"
|
|
|
|
;;
|
2008-11-05 17:04:33 +01:00
|
|
|
--disable-kvm) kvm="no"
|
|
|
|
;;
|
2009-08-12 18:29:56 +02:00
|
|
|
--enable-kvm) kvm="yes"
|
|
|
|
;;
|
2011-10-19 07:07:18 +02:00
|
|
|
--disable-tcg-interpreter) tcg_interpreter="no"
|
|
|
|
;;
|
|
|
|
--enable-tcg-interpreter) tcg_interpreter="yes"
|
|
|
|
;;
|
2012-01-26 15:42:26 +01:00
|
|
|
--disable-cap-ng) cap_ng="no"
|
|
|
|
;;
|
|
|
|
--enable-cap-ng) cap_ng="yes"
|
|
|
|
;;
|
2010-03-24 10:26:51 +01:00
|
|
|
--disable-spice) spice="no"
|
|
|
|
;;
|
|
|
|
--enable-spice) spice="yes"
|
|
|
|
;;
|
2011-10-25 10:24:24 +02:00
|
|
|
--disable-libiscsi) libiscsi="no"
|
|
|
|
;;
|
|
|
|
--enable-libiscsi) libiscsi="yes"
|
|
|
|
;;
|
2006-02-08 23:39:17 +01:00
|
|
|
--enable-profiler) profiler="yes"
|
|
|
|
;;
|
2011-11-10 19:40:07 +01:00
|
|
|
--disable-cocoa) cocoa="no"
|
|
|
|
;;
|
2008-06-28 21:13:06 +02:00
|
|
|
--enable-cocoa)
|
|
|
|
cocoa="yes" ;
|
|
|
|
sdl="no" ;
|
|
|
|
audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
|
2005-10-30 19:58:22 +01:00
|
|
|
;;
|
2006-03-19 17:31:11 +01:00
|
|
|
--disable-system) softmmu="no"
|
2006-03-19 15:54:16 +01:00
|
|
|
;;
|
2006-03-19 17:31:11 +01:00
|
|
|
--enable-system) softmmu="yes"
|
2006-03-19 15:54:16 +01:00
|
|
|
;;
|
2009-07-30 12:14:59 +02:00
|
|
|
--disable-user)
|
|
|
|
linux_user="no" ;
|
|
|
|
bsd_user="no" ;
|
|
|
|
;;
|
|
|
|
--enable-user) ;;
|
2007-01-18 21:06:33 +01:00
|
|
|
--disable-linux-user) linux_user="no"
|
2006-03-19 15:54:16 +01:00
|
|
|
;;
|
2007-01-18 21:06:33 +01:00
|
|
|
--enable-linux-user) linux_user="yes"
|
|
|
|
;;
|
2008-10-26 21:33:16 +01:00
|
|
|
--disable-bsd-user) bsd_user="no"
|
|
|
|
;;
|
|
|
|
--enable-bsd-user) bsd_user="yes"
|
|
|
|
;;
|
2009-07-17 13:48:08 +02:00
|
|
|
--enable-guest-base) guest_base="yes"
|
|
|
|
;;
|
|
|
|
--disable-guest-base) guest_base="no"
|
|
|
|
;;
|
2011-11-15 19:12:17 +01:00
|
|
|
--enable-pie) pie="yes"
|
2009-09-12 01:17:55 +02:00
|
|
|
;;
|
2011-11-15 19:12:17 +01:00
|
|
|
--disable-pie) pie="no"
|
2009-09-12 01:17:55 +02:00
|
|
|
;;
|
2006-05-14 13:30:38 +02:00
|
|
|
--enable-uname-release=*) uname_release="$optarg"
|
|
|
|
;;
|
2007-11-11 21:17:03 +01:00
|
|
|
--enable-werror) werror="yes"
|
|
|
|
;;
|
|
|
|
--disable-werror) werror="no"
|
|
|
|
;;
|
2008-02-10 17:33:14 +01:00
|
|
|
--disable-curses) curses="no"
|
|
|
|
;;
|
2009-08-12 18:20:30 +02:00
|
|
|
--enable-curses) curses="yes"
|
|
|
|
;;
|
2009-05-11 17:41:42 +02:00
|
|
|
--disable-curl) curl="no"
|
|
|
|
;;
|
2009-08-12 18:29:47 +02:00
|
|
|
--enable-curl) curl="yes"
|
|
|
|
;;
|
2009-08-12 18:29:54 +02:00
|
|
|
--disable-fdt) fdt="no"
|
|
|
|
;;
|
|
|
|
--enable-fdt) fdt="yes"
|
|
|
|
;;
|
2008-06-23 20:33:30 +02:00
|
|
|
--enable-mixemu) mixemu="yes"
|
|
|
|
;;
|
2009-08-20 16:58:35 +02:00
|
|
|
--disable-linux-aio) linux_aio="no"
|
|
|
|
;;
|
|
|
|
--enable-linux-aio) linux_aio="yes"
|
|
|
|
;;
|
2010-06-14 22:34:41 +02:00
|
|
|
--disable-attr) attr="no"
|
|
|
|
;;
|
|
|
|
--enable-attr) attr="yes"
|
|
|
|
;;
|
2008-11-27 16:45:16 +01:00
|
|
|
--disable-blobs) blobs="no"
|
|
|
|
;;
|
2009-04-08 01:17:49 +02:00
|
|
|
--with-pkgversion=*) pkgversion=" ($optarg)"
|
|
|
|
;;
|
2012-02-28 12:25:50 +01:00
|
|
|
--with-coroutine=*) coroutine="$optarg"
|
|
|
|
;;
|
2013-09-11 16:42:35 +02:00
|
|
|
--disable-coroutine-pool) coroutine_pool="no"
|
|
|
|
;;
|
|
|
|
--enable-coroutine-pool) coroutine_pool="yes"
|
|
|
|
;;
|
2009-08-12 18:29:52 +02:00
|
|
|
--disable-docs) docs="no"
|
2009-05-14 15:25:04 +02:00
|
|
|
;;
|
2009-08-12 18:29:52 +02:00
|
|
|
--enable-docs) docs="yes"
|
2009-08-12 18:29:51 +02:00
|
|
|
;;
|
2010-03-17 12:08:17 +01:00
|
|
|
--disable-vhost-net) vhost_net="no"
|
|
|
|
;;
|
|
|
|
--enable-vhost-net) vhost_net="yes"
|
|
|
|
;;
|
vhost-scsi: new device supporting the tcm_vhost Linux kernel module
The WWPN specified in configfs is passed to "-device vhost-scsi-pci".
The tgpt field of the SET_ENDPOINT ioctl is obsolete now, so it is not
available from the QEMU command-line. Instead, I hardcode it to zero.
Changes in Patch-v2:
- Add vhost_scsi_get_features() in order to determine feature bits
supports by host kernel (mst + nab)
- Re-enable usage of DEFINE_VIRTIO_COMMON_FEATURES, and allow
EVENT_IDX to be disabled by host in vhost_scsi_get_features()
- Drop unused hotplug bit in DEFINE_VHOST_SCSI_PROPERTIES
Changes in Patch-v1:
- Set event_idx=off by default (nab, thanks asias)
- Disable hotplug feature bit for v3.9 tcm_vhost kernel code, need to
re-enable in v3.10 (nab)
- Update to latest qemu.git/master HEAD
Changes in WIP-V3:
- Drop ioeventfd vhost_scsi_properties (asias, thanks stefanha)
- Add CONFIG_VHOST_SCSI (asias, thanks stefanha)
- Add hotplug feature bit
Changes in WIP-V2:
- Add backend guest masking support (nab)
- Bump ABI_VERSION to 1 (nab)
- Set up set_guest_notifiers (asias)
- Set up vs->dev.vq_index (asias)
- Drop vs->vs.vdev.{set,clear}_vhost_endpoint (asias)
- Drop VIRTIO_CONFIG_S_DRIVER check in vhost_scsi_set_status (asias)
Howto:
Use the latest seabios, at least commit b44a7be17b
git clone git://git.seabios.org/seabios.git
make
cp out/bios.bin /usr/share/qemu/bios.bin
qemu -device vhost-scsi-pci,wwpn=naa.6001405bd4e8476d,event_idx=off
...
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Asias He <asias@redhat.com>
[ Rebase on top of VirtIOSCSICommon patch, fix bugs in feature
negotiation and irqfd masking - Paolo ]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2013-03-29 02:08:16 +01:00
|
|
|
--disable-vhost-scsi) vhost_scsi="no"
|
|
|
|
;;
|
|
|
|
--enable-vhost-scsi) vhost_scsi="yes"
|
|
|
|
;;
|
2013-03-06 20:23:32 +01:00
|
|
|
--disable-glx) glx="no"
|
2011-03-07 23:32:39 +01:00
|
|
|
;;
|
2013-03-06 20:23:32 +01:00
|
|
|
--enable-glx) glx="yes"
|
2011-03-07 23:32:39 +01:00
|
|
|
;;
|
2010-12-06 20:53:01 +01:00
|
|
|
--disable-rbd) rbd="no"
|
|
|
|
;;
|
|
|
|
--enable-rbd) rbd="yes"
|
|
|
|
;;
|
2012-01-24 18:42:40 +01:00
|
|
|
--disable-xfsctl) xfs="no"
|
|
|
|
;;
|
|
|
|
--enable-xfsctl) xfs="yes"
|
|
|
|
;;
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
--disable-smartcard-nss) smartcard_nss="no"
|
|
|
|
;;
|
|
|
|
--enable-smartcard-nss) smartcard_nss="yes"
|
|
|
|
;;
|
2012-11-30 16:02:11 +01:00
|
|
|
--disable-libusb) libusb="no"
|
|
|
|
;;
|
|
|
|
--enable-libusb) libusb="yes"
|
|
|
|
;;
|
2011-07-19 11:04:10 +02:00
|
|
|
--disable-usb-redir) usb_redir="no"
|
|
|
|
;;
|
|
|
|
--enable-usb-redir) usb_redir="yes"
|
|
|
|
;;
|
2011-07-26 11:30:40 +02:00
|
|
|
--disable-zlib-test) zlib="no"
|
|
|
|
;;
|
2011-08-01 21:52:57 +02:00
|
|
|
--enable-guest-agent) guest_agent="yes"
|
|
|
|
;;
|
|
|
|
--disable-guest-agent) guest_agent="no"
|
|
|
|
;;
|
2013-08-07 17:40:03 +02:00
|
|
|
--with-vss-sdk) vss_win32_sdk=""
|
|
|
|
;;
|
|
|
|
--with-vss-sdk=*) vss_win32_sdk="$optarg"
|
|
|
|
;;
|
|
|
|
--without-vss-sdk) vss_win32_sdk="no"
|
|
|
|
;;
|
|
|
|
--with-win-sdk) win_sdk=""
|
|
|
|
;;
|
|
|
|
--with-win-sdk=*) win_sdk="$optarg"
|
|
|
|
;;
|
|
|
|
--without-win-sdk) win_sdk="no"
|
|
|
|
;;
|
2012-09-10 13:26:29 +02:00
|
|
|
--enable-tools) want_tools="yes"
|
|
|
|
;;
|
|
|
|
--disable-tools) want_tools="no"
|
|
|
|
;;
|
2012-08-14 23:44:05 +02:00
|
|
|
--enable-seccomp) seccomp="yes"
|
|
|
|
;;
|
|
|
|
--disable-seccomp) seccomp="no"
|
|
|
|
;;
|
2012-09-24 11:12:45 +02:00
|
|
|
--disable-glusterfs) glusterfs="no"
|
|
|
|
;;
|
|
|
|
--enable-glusterfs) glusterfs="yes"
|
|
|
|
;;
|
2012-11-14 15:04:15 +01:00
|
|
|
--disable-virtio-blk-data-plane) virtio_blk_data_plane="no"
|
|
|
|
;;
|
|
|
|
--enable-virtio-blk-data-plane) virtio_blk_data_plane="yes"
|
|
|
|
;;
|
2013-02-20 14:43:20 +01:00
|
|
|
--disable-gtk) gtk="no"
|
|
|
|
;;
|
|
|
|
--enable-gtk) gtk="yes"
|
|
|
|
;;
|
2013-07-22 16:01:54 +02:00
|
|
|
--enable-rdma) rdma="yes"
|
|
|
|
;;
|
|
|
|
--disable-rdma) rdma="no"
|
|
|
|
;;
|
2013-02-25 16:20:44 +01:00
|
|
|
--with-gtkabi=*) gtkabi="$optarg"
|
|
|
|
;;
|
2013-02-27 18:47:52 +01:00
|
|
|
--enable-tpm) tpm="yes"
|
|
|
|
;;
|
2013-04-09 16:30:53 +02:00
|
|
|
--disable-libssh2) libssh2="no"
|
|
|
|
;;
|
|
|
|
--enable-libssh2) libssh2="yes"
|
|
|
|
;;
|
2007-11-17 11:24:32 +01:00
|
|
|
*) echo "ERROR: unknown option $opt"; show_help="yes"
|
|
|
|
;;
|
2003-03-07 00:23:54 +01:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2008-01-31 12:32:10 +01:00
|
|
|
case "$cpu" in
|
2013-08-29 00:48:21 +02:00
|
|
|
ppc)
|
|
|
|
CPU_CFLAGS="-m32"
|
|
|
|
LDFLAGS="-m32 $LDFLAGS"
|
|
|
|
;;
|
|
|
|
ppc64)
|
|
|
|
CPU_CFLAGS="-m64"
|
|
|
|
LDFLAGS="-m64 $LDFLAGS"
|
|
|
|
;;
|
2012-09-21 19:34:21 +02:00
|
|
|
sparc)
|
2009-08-03 14:46:11 +02:00
|
|
|
LDFLAGS="-m32 $LDFLAGS"
|
2013-04-18 06:46:14 +02:00
|
|
|
CPU_CFLAGS="-m32 -mcpu=ultrasparc"
|
2007-04-16 20:27:06 +02:00
|
|
|
;;
|
2009-08-03 14:46:11 +02:00
|
|
|
sparc64)
|
|
|
|
LDFLAGS="-m64 $LDFLAGS"
|
2013-04-18 06:46:14 +02:00
|
|
|
CPU_CFLAGS="-m64 -mcpu=ultrasparc"
|
2007-04-16 20:27:06 +02:00
|
|
|
;;
|
2007-11-18 22:22:10 +01:00
|
|
|
s390)
|
2013-04-18 06:46:14 +02:00
|
|
|
CPU_CFLAGS="-m31 -march=z990"
|
2010-06-04 21:14:09 +02:00
|
|
|
LDFLAGS="-m31 $LDFLAGS"
|
|
|
|
;;
|
|
|
|
s390x)
|
2013-04-18 06:46:14 +02:00
|
|
|
CPU_CFLAGS="-m64 -march=z990"
|
2010-06-04 21:14:09 +02:00
|
|
|
LDFLAGS="-m64 $LDFLAGS"
|
2007-11-18 22:22:10 +01:00
|
|
|
;;
|
2008-01-31 12:32:10 +01:00
|
|
|
i386)
|
2013-04-18 06:46:14 +02:00
|
|
|
CPU_CFLAGS="-m32"
|
2009-08-03 14:46:01 +02:00
|
|
|
LDFLAGS="-m32 $LDFLAGS"
|
2010-10-21 10:18:40 +02:00
|
|
|
cc_i386='$(CC) -m32'
|
2008-01-31 12:32:10 +01:00
|
|
|
;;
|
|
|
|
x86_64)
|
2013-04-18 06:46:14 +02:00
|
|
|
CPU_CFLAGS="-m64"
|
2009-08-03 14:46:01 +02:00
|
|
|
LDFLAGS="-m64 $LDFLAGS"
|
2010-10-21 10:18:40 +02:00
|
|
|
cc_i386='$(CC) -m32'
|
2011-04-12 10:27:03 +02:00
|
|
|
;;
|
2013-08-20 21:20:05 +02:00
|
|
|
x32)
|
|
|
|
CPU_CFLAGS="-mx32"
|
|
|
|
LDFLAGS="-mx32 $LDFLAGS"
|
|
|
|
cc_i386='$(CC) -m32'
|
|
|
|
;;
|
2012-10-09 05:16:49 +02:00
|
|
|
# No special flags required for other host CPUs
|
2007-04-16 20:27:06 +02:00
|
|
|
esac
|
|
|
|
|
2013-04-18 06:46:14 +02:00
|
|
|
QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
|
|
|
|
EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
|
|
|
|
|
2011-05-03 15:50:13 +02:00
|
|
|
default_target_list=""
|
|
|
|
|
2013-05-20 17:16:15 +02:00
|
|
|
mak_wilds=""
|
|
|
|
|
|
|
|
if [ "$softmmu" = "yes" ]; then
|
|
|
|
mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
|
2011-05-03 15:50:13 +02:00
|
|
|
fi
|
2013-05-20 17:16:15 +02:00
|
|
|
if [ "$linux_user" = "yes" ]; then
|
|
|
|
mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
|
2011-05-03 15:50:13 +02:00
|
|
|
fi
|
2013-05-20 17:16:15 +02:00
|
|
|
if [ "$bsd_user" = "yes" ]; then
|
|
|
|
mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
|
2011-05-03 15:50:13 +02:00
|
|
|
fi
|
|
|
|
|
2013-05-20 17:16:15 +02:00
|
|
|
for config in $mak_wilds; do
|
|
|
|
default_target_list="${default_target_list} $(basename "$config" .mak)"
|
|
|
|
done
|
|
|
|
|
2006-04-08 16:26:41 +02:00
|
|
|
if test x"$show_help" = x"yes" ; then
|
|
|
|
cat << EOF
|
|
|
|
|
|
|
|
Usage: configure [options]
|
|
|
|
Options: [defaults in brackets after descriptions]
|
|
|
|
|
|
|
|
EOF
|
|
|
|
echo "Standard options:"
|
|
|
|
echo " --help print this message"
|
|
|
|
echo " --prefix=PREFIX install in PREFIX [$prefix]"
|
|
|
|
echo " --interp-prefix=PREFIX where to find shared libraries, etc."
|
|
|
|
echo " use %M for cpu name [$interp_prefix]"
|
2011-05-03 15:50:13 +02:00
|
|
|
echo " --target-list=LIST set target list (default: build everything)"
|
|
|
|
echo "Available targets: $default_target_list" | \
|
|
|
|
fold -s -w 53 | sed -e 's/^/ /'
|
2006-04-08 16:26:41 +02:00
|
|
|
echo ""
|
|
|
|
echo "Advanced options (experts only):"
|
|
|
|
echo " --source-path=PATH path of source code [$source_path]"
|
|
|
|
echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
|
|
|
|
echo " --cc=CC use C compiler CC [$cc]"
|
2010-05-26 16:08:18 +02:00
|
|
|
echo " --host-cc=CC use C compiler CC [$host_cc] for code run at"
|
|
|
|
echo " build time"
|
2013-08-07 17:39:36 +02:00
|
|
|
echo " --cxx=CXX use C++ compiler CXX [$cxx]"
|
2012-08-11 23:34:40 +02:00
|
|
|
echo " --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]"
|
2009-08-03 14:46:21 +02:00
|
|
|
echo " --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS"
|
2009-06-30 21:29:03 +02:00
|
|
|
echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS"
|
2006-04-08 16:26:41 +02:00
|
|
|
echo " --make=MAKE use specified make [$make]"
|
2006-04-17 15:57:12 +02:00
|
|
|
echo " --install=INSTALL use specified install [$install]"
|
2011-07-22 23:08:09 +02:00
|
|
|
echo " --python=PYTHON use specified python [$python]"
|
2011-09-02 22:53:28 +02:00
|
|
|
echo " --smbd=SMBD use specified smbd [$smbd]"
|
2006-04-08 16:26:41 +02:00
|
|
|
echo " --static enable static build [$static]"
|
2010-05-26 16:08:26 +02:00
|
|
|
echo " --mandir=PATH install man pages in PATH"
|
2012-04-18 21:55:50 +02:00
|
|
|
echo " --datadir=PATH install firmware in PATH$confsuffix"
|
|
|
|
echo " --docdir=PATH install documentation in PATH$confsuffix"
|
2010-05-26 16:08:26 +02:00
|
|
|
echo " --bindir=PATH install binaries in PATH"
|
2013-03-17 21:43:26 +01:00
|
|
|
echo " --libdir=PATH install libraries in PATH"
|
2012-04-18 21:55:50 +02:00
|
|
|
echo " --sysconfdir=PATH install config in PATH$confsuffix"
|
2013-05-18 06:31:50 +02:00
|
|
|
echo " --localstatedir=PATH install local state in PATH (set at runtime on win32)"
|
2012-05-11 21:14:47 +02:00
|
|
|
echo " --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and sysconfdir [$confsuffix]"
|
2009-04-13 20:45:38 +02:00
|
|
|
echo " --enable-debug-tcg enable TCG debugging"
|
|
|
|
echo " --disable-debug-tcg disable TCG debugging (default)"
|
2013-03-24 08:05:27 +01:00
|
|
|
echo " --enable-debug-info enable debugging information (default)"
|
|
|
|
echo " --disable-debug-info disable debugging information"
|
2009-06-06 16:51:30 +02:00
|
|
|
echo " --enable-debug enable common debug build options"
|
2008-10-07 23:22:41 +02:00
|
|
|
echo " --enable-sparse enable sparse checker"
|
|
|
|
echo " --disable-sparse disable sparse checker (default)"
|
2009-04-05 19:41:02 +02:00
|
|
|
echo " --disable-strip disable stripping binaries"
|
2007-11-11 21:17:03 +01:00
|
|
|
echo " --disable-werror disable compilation abort on warning"
|
2007-10-31 02:03:28 +01:00
|
|
|
echo " --disable-sdl disable SDL"
|
2009-08-12 18:29:53 +02:00
|
|
|
echo " --enable-sdl enable SDL"
|
2013-02-25 03:27:48 +01:00
|
|
|
echo " --disable-gtk disable gtk UI"
|
|
|
|
echo " --enable-gtk enable gtk UI"
|
2012-02-24 09:30:42 +01:00
|
|
|
echo " --disable-virtfs disable VirtFS"
|
|
|
|
echo " --enable-virtfs enable VirtFS"
|
2011-03-16 13:33:36 +01:00
|
|
|
echo " --disable-vnc disable VNC"
|
|
|
|
echo " --enable-vnc enable VNC"
|
2011-11-10 19:40:07 +01:00
|
|
|
echo " --disable-cocoa disable Cocoa (Mac OS X only)"
|
|
|
|
echo " --enable-cocoa enable Cocoa (default on Mac OS X)"
|
2008-06-28 21:13:06 +02:00
|
|
|
echo " --audio-drv-list=LIST set audio drivers list:"
|
|
|
|
echo " Available drivers: $audio_possible_drivers"
|
2013-05-29 13:35:40 +02:00
|
|
|
echo " --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L"
|
|
|
|
echo " --block-drv-rw-whitelist=L"
|
|
|
|
echo " set block driver read-write whitelist"
|
|
|
|
echo " (affects only QEMU, not qemu-img)"
|
|
|
|
echo " --block-drv-ro-whitelist=L"
|
|
|
|
echo " set block driver read-only whitelist"
|
2009-10-27 18:41:44 +01:00
|
|
|
echo " (affects only QEMU, not qemu-img)"
|
2008-06-23 20:33:30 +02:00
|
|
|
echo " --enable-mixemu enable mixer emulation"
|
2009-04-22 17:19:10 +02:00
|
|
|
echo " --disable-xen disable xen backend driver support"
|
2009-08-12 18:29:55 +02:00
|
|
|
echo " --enable-xen enable xen backend driver support"
|
2012-06-21 17:32:59 +02:00
|
|
|
echo " --disable-xen-pci-passthrough"
|
|
|
|
echo " --enable-xen-pci-passthrough"
|
2008-04-08 08:01:02 +02:00
|
|
|
echo " --disable-brlapi disable BrlAPI"
|
2009-08-12 18:20:26 +02:00
|
|
|
echo " --enable-brlapi enable BrlAPI"
|
2007-08-25 03:37:51 +02:00
|
|
|
echo " --disable-vnc-tls disable TLS encryption for VNC server"
|
2009-08-12 18:20:28 +02:00
|
|
|
echo " --enable-vnc-tls enable TLS encryption for VNC server"
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
echo " --disable-vnc-sasl disable SASL encryption for VNC server"
|
2009-08-12 18:20:29 +02:00
|
|
|
echo " --enable-vnc-sasl enable SASL encryption for VNC server"
|
2010-07-07 20:57:49 +02:00
|
|
|
echo " --disable-vnc-jpeg disable JPEG lossy compression for VNC server"
|
|
|
|
echo " --enable-vnc-jpeg enable JPEG lossy compression for VNC server"
|
2010-07-07 20:58:06 +02:00
|
|
|
echo " --disable-vnc-png disable PNG compression for VNC server (default)"
|
2010-07-07 20:57:56 +02:00
|
|
|
echo " --enable-vnc-png enable PNG compression for VNC server"
|
2013-01-21 11:04:44 +01:00
|
|
|
echo " --disable-vnc-ws disable Websockets support for VNC server"
|
|
|
|
echo " --enable-vnc-ws enable Websockets support for VNC server"
|
2008-03-23 01:47:42 +01:00
|
|
|
echo " --disable-curses disable curses output"
|
2009-08-12 18:20:30 +02:00
|
|
|
echo " --enable-curses enable curses output"
|
2009-05-11 17:41:42 +02:00
|
|
|
echo " --disable-curl disable curl connectivity"
|
2009-08-12 18:29:47 +02:00
|
|
|
echo " --enable-curl enable curl connectivity"
|
2009-08-12 18:29:54 +02:00
|
|
|
echo " --disable-fdt disable fdt device tree"
|
|
|
|
echo " --enable-fdt enable fdt device tree"
|
2008-09-29 01:49:55 +02:00
|
|
|
echo " --disable-bluez disable bluez stack connectivity"
|
2009-08-12 18:29:50 +02:00
|
|
|
echo " --enable-bluez enable bluez stack connectivity"
|
2011-05-23 11:13:47 +02:00
|
|
|
echo " --disable-slirp disable SLIRP userspace network connectivity"
|
2008-11-05 17:04:33 +01:00
|
|
|
echo " --disable-kvm disable KVM acceleration support"
|
2009-08-12 18:29:56 +02:00
|
|
|
echo " --enable-kvm enable KVM acceleration support"
|
2013-07-22 16:01:54 +02:00
|
|
|
echo " --disable-rdma disable RDMA-based migration support"
|
|
|
|
echo " --enable-rdma enable RDMA-based migration support"
|
2011-10-19 07:07:18 +02:00
|
|
|
echo " --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
|
2006-04-08 16:26:41 +02:00
|
|
|
echo " --enable-system enable all system emulation targets"
|
|
|
|
echo " --disable-system disable all system emulation targets"
|
2009-07-30 12:14:59 +02:00
|
|
|
echo " --enable-user enable supported user emulation targets"
|
|
|
|
echo " --disable-user disable all user emulation targets"
|
2007-01-18 21:06:33 +01:00
|
|
|
echo " --enable-linux-user enable all linux usermode emulation targets"
|
|
|
|
echo " --disable-linux-user disable all linux usermode emulation targets"
|
2008-10-26 21:33:16 +01:00
|
|
|
echo " --enable-bsd-user enable all BSD usermode emulation targets"
|
|
|
|
echo " --disable-bsd-user disable all BSD usermode emulation targets"
|
2009-07-17 13:48:08 +02:00
|
|
|
echo " --enable-guest-base enable GUEST_BASE support for usermode"
|
|
|
|
echo " emulation targets"
|
|
|
|
echo " --disable-guest-base disable GUEST_BASE support"
|
2011-11-15 19:12:17 +01:00
|
|
|
echo " --enable-pie build Position Independent Executables"
|
|
|
|
echo " --disable-pie do not build Position Independent Executables"
|
2006-04-08 16:26:41 +02:00
|
|
|
echo " --fmod-lib path to FMOD library"
|
|
|
|
echo " --fmod-inc path to FMOD includes"
|
2008-08-21 20:00:53 +02:00
|
|
|
echo " --oss-lib path to OSS library"
|
2006-05-14 13:30:38 +02:00
|
|
|
echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
|
2011-11-07 10:42:05 +01:00
|
|
|
echo " --cpu=CPU Build for host CPU [$cpu]"
|
2009-10-01 20:10:37 +02:00
|
|
|
echo " --disable-uuid disable uuid support"
|
|
|
|
echo " --enable-uuid enable uuid support"
|
2008-07-23 20:14:33 +02:00
|
|
|
echo " --disable-vde disable support for vde network"
|
2009-08-12 18:20:27 +02:00
|
|
|
echo " --enable-vde enable support for vde network"
|
2009-08-20 16:58:35 +02:00
|
|
|
echo " --disable-linux-aio disable Linux AIO support"
|
|
|
|
echo " --enable-linux-aio enable Linux AIO support"
|
2012-01-26 15:42:26 +01:00
|
|
|
echo " --disable-cap-ng disable libcap-ng support"
|
|
|
|
echo " --enable-cap-ng enable libcap-ng support"
|
2010-06-14 22:34:41 +02:00
|
|
|
echo " --disable-attr disables attr and xattr support"
|
|
|
|
echo " --enable-attr enable attr and xattr support"
|
2008-11-27 16:45:16 +01:00
|
|
|
echo " --disable-blobs disable installing provided firmware blobs"
|
2010-02-06 09:48:23 +01:00
|
|
|
echo " --enable-docs enable documentation build"
|
|
|
|
echo " --disable-docs disable documentation build"
|
2010-03-17 12:08:17 +01:00
|
|
|
echo " --disable-vhost-net disable vhost-net acceleration support"
|
|
|
|
echo " --enable-vhost-net enable vhost-net acceleration support"
|
2011-01-27 10:24:41 +01:00
|
|
|
echo " --enable-trace-backend=B Set trace backend"
|
2012-04-03 20:47:39 +02:00
|
|
|
echo " Available backends:" $($python "$source_path"/scripts/tracetool.py --list-backends)
|
2010-12-23 11:44:02 +01:00
|
|
|
echo " --with-trace-file=NAME Full PATH,NAME of file to store traces"
|
2010-07-13 10:26:32 +02:00
|
|
|
echo " Default:trace-<pid>"
|
2010-03-24 10:26:51 +01:00
|
|
|
echo " --disable-spice disable spice"
|
|
|
|
echo " --enable-spice enable spice"
|
2010-12-06 20:53:01 +01:00
|
|
|
echo " --enable-rbd enable building the rados block device (rbd)"
|
2011-10-25 10:24:24 +02:00
|
|
|
echo " --disable-libiscsi disable iscsi support"
|
|
|
|
echo " --enable-libiscsi enable iscsi support"
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
echo " --disable-smartcard-nss disable smartcard nss support"
|
|
|
|
echo " --enable-smartcard-nss enable smartcard nss support"
|
2012-11-30 16:02:11 +01:00
|
|
|
echo " --disable-libusb disable libusb (for usb passthrough)"
|
|
|
|
echo " --enable-libusb enable libusb (for usb passthrough)"
|
2011-07-19 11:04:10 +02:00
|
|
|
echo " --disable-usb-redir disable usb network redirection support"
|
|
|
|
echo " --enable-usb-redir enable usb network redirection support"
|
2011-08-01 21:52:57 +02:00
|
|
|
echo " --disable-guest-agent disable building of the QEMU Guest Agent"
|
|
|
|
echo " --enable-guest-agent enable building of the QEMU Guest Agent"
|
2013-08-07 17:40:03 +02:00
|
|
|
echo " --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent"
|
|
|
|
echo " --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)"
|
2012-08-14 23:44:05 +02:00
|
|
|
echo " --disable-seccomp disable seccomp support"
|
|
|
|
echo " --enable-seccomp enables seccomp support"
|
2012-02-28 12:25:50 +01:00
|
|
|
echo " --with-coroutine=BACKEND coroutine backend. Supported options:"
|
2012-02-28 12:25:51 +01:00
|
|
|
echo " gthread, ucontext, sigaltstack, windows"
|
2013-09-11 16:42:35 +02:00
|
|
|
echo " --disable-coroutine-pool disable coroutine freelist (worse performance)"
|
|
|
|
echo " --enable-coroutine-pool enable coroutine freelist (better performance)"
|
2012-09-24 11:12:45 +02:00
|
|
|
echo " --enable-glusterfs enable GlusterFS backend"
|
|
|
|
echo " --disable-glusterfs disable GlusterFS backend"
|
2012-05-01 20:45:39 +02:00
|
|
|
echo " --enable-gcov enable test coverage analysis with gcov"
|
|
|
|
echo " --gcov=GCOV use specified gcov [$gcov_tool]"
|
2013-02-27 18:47:52 +01:00
|
|
|
echo " --enable-tpm enable TPM support"
|
2013-04-09 16:30:53 +02:00
|
|
|
echo " --disable-libssh2 disable ssh block device support"
|
|
|
|
echo " --enable-libssh2 enable ssh block device support"
|
2006-04-08 16:26:41 +02:00
|
|
|
echo ""
|
2006-12-23 01:33:26 +01:00
|
|
|
echo "NOTE: The object files are built at the place where configure is launched"
|
2006-04-08 16:26:41 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2011-12-24 14:07:25 +01:00
|
|
|
# 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
|
|
|
|
if test "$tcg_interpreter" = "yes" ; then
|
|
|
|
echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
|
|
|
|
ARCH=tci
|
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
|
2011-12-24 14:07:25 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2010-12-23 11:43:52 +01:00
|
|
|
# check that the C compiler works.
|
|
|
|
cat > $TMPC <<EOF
|
2011-12-17 09:27:29 +01:00
|
|
|
int main(void) { return 0; }
|
2010-12-23 11:43:52 +01:00
|
|
|
EOF
|
|
|
|
|
|
|
|
if compile_object ; then
|
|
|
|
: C compiler works ok
|
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "\"$cc\" either does not exist or does not work"
|
2010-12-23 11:43:52 +01:00
|
|
|
fi
|
|
|
|
|
2012-07-09 14:38:08 +02:00
|
|
|
# Consult white-list to determine whether to enable werror
|
|
|
|
# by default. Only enable by default for git builds
|
|
|
|
z_version=`cut -f3 -d. $source_path/VERSION`
|
|
|
|
|
|
|
|
if test -z "$werror" ; then
|
2013-01-27 16:16:19 +01:00
|
|
|
if test -d "$source_path/.git" -a \
|
2012-07-09 14:38:08 +02:00
|
|
|
"$linux" = "yes" ; then
|
|
|
|
werror="yes"
|
|
|
|
else
|
|
|
|
werror="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2010-12-23 11:43:52 +01:00
|
|
|
gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
|
|
|
|
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
|
|
|
|
gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
|
2013-02-25 23:31:12 +01:00
|
|
|
gcc_flags="-Wendif-labels $gcc_flags"
|
2012-10-14 22:00:39 +02:00
|
|
|
gcc_flags="-Wno-initializer-overrides $gcc_flags"
|
2013-08-05 21:16:40 +02:00
|
|
|
gcc_flags="-Wno-string-plus-int $gcc_flags"
|
2012-07-18 16:10:18 +02:00
|
|
|
# Note that we do not add -Werror to gcc_flags here, because that would
|
|
|
|
# enable it for all configure tests. If a configure test failed due
|
|
|
|
# to -Werror this would just silently disable some features,
|
|
|
|
# so it's too error prone.
|
2010-12-23 11:43:52 +01:00
|
|
|
cat > $TMPC << EOF
|
|
|
|
int main(void) { return 0; }
|
|
|
|
EOF
|
|
|
|
for flag in $gcc_flags; do
|
2012-10-27 23:19:07 +02:00
|
|
|
# Use the positive sense of the flag when testing for -Wno-wombat
|
|
|
|
# support (gcc will happily accept the -Wno- form of unknown
|
|
|
|
# warning options).
|
|
|
|
optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')"
|
|
|
|
if compile_prog "-Werror $optflag" "" ; then
|
2010-12-23 11:43:52 +01:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $flag"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2013-02-25 23:31:12 +01:00
|
|
|
if compile_prog "-Werror -fstack-protector-all" "" ; then
|
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS -fstack-protector-all"
|
|
|
|
LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,-fstack-protector-all"
|
|
|
|
fi
|
|
|
|
|
2012-11-28 09:40:23 +01:00
|
|
|
# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
|
|
|
|
# large functions that use global variables. The bug is in all releases of
|
|
|
|
# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
|
|
|
|
# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
|
|
|
|
int main(void) { return 0; }
|
|
|
|
#else
|
|
|
|
#error No bug in this compiler.
|
|
|
|
#endif
|
|
|
|
EOF
|
|
|
|
if compile_prog "-Werror -fno-gcse" "" ; then
|
|
|
|
TRANSLATE_OPT_CFLAGS=-fno-gcse
|
|
|
|
fi
|
|
|
|
|
2011-11-15 19:12:17 +01:00
|
|
|
if test "$static" = "yes" ; then
|
|
|
|
if test "$pie" = "yes" ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "static and pie are mutually incompatible"
|
2011-11-15 19:12:17 +01:00
|
|
|
else
|
|
|
|
pie="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$pie" = ""; then
|
|
|
|
case "$cpu-$targetos" in
|
2013-08-20 21:20:05 +02:00
|
|
|
i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
|
2011-11-15 19:12:17 +01:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
pie="no"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$pie" != "no" ; then
|
|
|
|
cat > $TMPC << EOF
|
2011-11-23 10:24:25 +01:00
|
|
|
|
|
|
|
#ifdef __linux__
|
|
|
|
# define THREAD __thread
|
|
|
|
#else
|
|
|
|
# define THREAD
|
|
|
|
#endif
|
|
|
|
|
|
|
|
static THREAD int tls_var;
|
|
|
|
|
|
|
|
int main(void) { return tls_var; }
|
|
|
|
|
2011-11-15 19:12:17 +01:00
|
|
|
EOF
|
|
|
|
if compile_prog "-fPIE -DPIE" "-pie"; then
|
|
|
|
QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
|
|
|
|
LDFLAGS="-pie $LDFLAGS"
|
|
|
|
pie="yes"
|
|
|
|
if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
|
|
|
|
LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
if test "$pie" = "yes"; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "PIE not available due to missing toolchain support"
|
2011-11-15 19:12:17 +01:00
|
|
|
else
|
|
|
|
echo "Disabling PIE due to missing toolchain support"
|
|
|
|
pie="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-04-17 16:26:47 +02:00
|
|
|
##########################################
|
|
|
|
# __sync_fetch_and_and requires at least -march=i486. Many toolchains
|
|
|
|
# use i686 as default anyway, but for those that don't, an explicit
|
|
|
|
# specification is necessary
|
|
|
|
|
|
|
|
if test "$cpu" = "i386"; then
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
static int sfaa(int *ptr)
|
|
|
|
{
|
|
|
|
return __sync_fetch_and_and(ptr, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
int val = 42;
|
2013-05-11 21:46:58 +02:00
|
|
|
val = __sync_val_compare_and_swap(&val, 0, 1);
|
2013-04-17 16:26:47 +02:00
|
|
|
sfaa(&val);
|
|
|
|
return val;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if ! compile_prog "" "" ; then
|
|
|
|
QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
#########################################
|
2006-04-26 00:36:06 +02:00
|
|
|
# Solaris specific configure tool chain decisions
|
2013-04-17 16:26:47 +02:00
|
|
|
|
2006-04-26 00:36:06 +02:00
|
|
|
if test "$solaris" = "yes" ; then
|
2010-01-20 11:35:54 +01:00
|
|
|
if has $install; then
|
|
|
|
:
|
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
|
|
|
|
"install fileutils from www.blastwave.org using pkg-get -i fileutils" \
|
|
|
|
"to get ginstall which is used by default (which lives in /opt/csw/bin)"
|
2006-04-26 00:36:06 +02:00
|
|
|
fi
|
2010-01-20 11:35:54 +01:00
|
|
|
if test "`path_of $install`" = "/usr/sbin/install" ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
|
|
|
|
"try ginstall from the GNU fileutils available from www.blastwave.org" \
|
|
|
|
"using pkg-get -i fileutils, or use --install=/usr/ucb/install"
|
2006-04-26 00:36:06 +02:00
|
|
|
fi
|
2010-01-20 11:35:54 +01:00
|
|
|
if has ar; then
|
|
|
|
:
|
|
|
|
else
|
2006-04-26 00:36:06 +02:00
|
|
|
if test -f /usr/ccs/bin/ar ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "No path includes ar" \
|
|
|
|
"Add /usr/ccs/bin to your path and rerun configure"
|
2006-04-26 00:36:06 +02:00
|
|
|
fi
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "No path includes ar"
|
2006-04-26 00:36:06 +02:00
|
|
|
fi
|
2007-09-16 23:08:06 +02:00
|
|
|
fi
|
2006-04-26 00:36:06 +02:00
|
|
|
|
2011-12-31 12:14:47 +01:00
|
|
|
if ! has $python; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Python not found. Use --python=/path/to/python"
|
2011-07-22 23:08:09 +02:00
|
|
|
fi
|
|
|
|
|
2012-04-12 20:09:52 +02:00
|
|
|
# Note that if the Python conditional here evaluates True we will exit
|
|
|
|
# with status 1 which is a shell 'false' value.
|
2013-08-27 15:12:41 +02:00
|
|
|
if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Cannot use '$python', Python 2.4 or later is required." \
|
|
|
|
"Note that Python 3 or later is not yet supported." \
|
|
|
|
"Use --python=/path/to/python to specify a supported Python."
|
2012-04-12 20:09:52 +02:00
|
|
|
fi
|
|
|
|
|
2012-09-26 22:04:38 +02:00
|
|
|
if test -z "${target_list+xxx}" ; then
|
2012-09-14 15:17:03 +02:00
|
|
|
target_list="$default_target_list"
|
|
|
|
else
|
|
|
|
target_list=`echo "$target_list" | sed -e 's/,/ /g'`
|
|
|
|
fi
|
2013-05-20 17:16:16 +02:00
|
|
|
|
|
|
|
# Check that we recognised the target name; this allows a more
|
|
|
|
# friendly error message than if we let it fall through.
|
|
|
|
for target in $target_list; do
|
|
|
|
case " $default_target_list " in
|
|
|
|
*" $target "*)
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
error_exit "Unknown target name '$target'"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2010-05-26 16:08:17 +02:00
|
|
|
# see if system emulation was really requested
|
|
|
|
case " $target_list " in
|
|
|
|
*"-softmmu "*) softmmu=yes
|
|
|
|
;;
|
|
|
|
*) softmmu=no
|
|
|
|
;;
|
|
|
|
esac
|
2005-01-11 00:18:50 +01:00
|
|
|
|
2009-08-12 18:20:25 +02:00
|
|
|
feature_not_found() {
|
|
|
|
feature=$1
|
|
|
|
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "User requested feature $feature" \
|
|
|
|
"configure was not able to find it"
|
2009-08-12 18:20:25 +02:00
|
|
|
}
|
|
|
|
|
2003-03-07 00:23:54 +01:00
|
|
|
if test -z "$cross_prefix" ; then
|
|
|
|
|
|
|
|
# ---
|
|
|
|
# big/little endian test
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <inttypes.h>
|
2012-10-15 07:45:40 +02:00
|
|
|
int main(void) {
|
2005-10-30 19:58:22 +01:00
|
|
|
volatile uint32_t i=0x01234567;
|
|
|
|
return (*((uint8_t*)(&i))) == 0x67;
|
2003-03-07 00:23:54 +01:00
|
|
|
}
|
|
|
|
EOF
|
|
|
|
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2003-03-07 00:23:54 +01:00
|
|
|
$TMPE && bigendian="yes"
|
|
|
|
else
|
|
|
|
echo big/little test failed
|
|
|
|
fi
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
# if cross compiling, cannot launch a program, so make a static guess
|
2009-08-03 14:46:12 +02:00
|
|
|
case "$cpu" in
|
2011-11-30 10:57:48 +01:00
|
|
|
arm)
|
|
|
|
# ARM can be either way; ask the compiler which one we are
|
|
|
|
if check_define __ARMEB__; then
|
|
|
|
bigendian=yes
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
|
2009-08-03 14:46:12 +02:00
|
|
|
bigendian=yes
|
|
|
|
;;
|
|
|
|
esac
|
2003-03-07 00:23:54 +01:00
|
|
|
|
|
|
|
fi
|
|
|
|
|
2012-12-16 11:29:45 +01:00
|
|
|
##########################################
|
|
|
|
# pkg-config probe
|
|
|
|
|
|
|
|
if ! has "$pkg_config_exe"; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "pkg-config binary '$pkg_config_exe' not found"
|
2012-12-16 11:29:45 +01:00
|
|
|
fi
|
|
|
|
|
2009-08-12 18:29:49 +02:00
|
|
|
##########################################
|
|
|
|
# NPTL probe
|
|
|
|
|
2013-07-16 19:45:00 +02:00
|
|
|
if test "$linux_user" = "yes"; then
|
2009-08-12 18:29:49 +02:00
|
|
|
cat > $TMPC <<EOF
|
2008-05-29 16:34:11 +02:00
|
|
|
#include <sched.h>
|
2008-06-02 17:45:44 +02:00
|
|
|
#include <linux/futex.h>
|
2011-12-17 09:27:30 +01:00
|
|
|
int main(void) {
|
2008-05-29 16:34:11 +02:00
|
|
|
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
|
|
|
|
#error bork
|
|
|
|
#endif
|
2011-12-17 09:27:30 +01:00
|
|
|
return 0;
|
2008-05-29 16:34:11 +02:00
|
|
|
}
|
|
|
|
EOF
|
2013-07-16 19:45:00 +02:00
|
|
|
if ! compile_object ; then
|
|
|
|
feature_not_found "nptl"
|
2009-08-12 18:29:49 +02:00
|
|
|
fi
|
2008-05-29 16:34:11 +02:00
|
|
|
fi
|
|
|
|
|
2008-10-11 11:56:04 +02:00
|
|
|
##########################################
|
|
|
|
# zlib check
|
|
|
|
|
2011-07-26 11:30:40 +02:00
|
|
|
if test "$zlib" != "no" ; then
|
|
|
|
cat > $TMPC << EOF
|
2008-10-11 11:56:04 +02:00
|
|
|
#include <zlib.h>
|
|
|
|
int main(void) { zlibVersion(); return 0; }
|
|
|
|
EOF
|
2011-07-26 11:30:40 +02:00
|
|
|
if compile_prog "" "-lz" ; then
|
|
|
|
:
|
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "zlib check failed" \
|
|
|
|
"Make sure to have the zlib libs and headers installed."
|
2011-07-26 11:30:40 +02:00
|
|
|
fi
|
2008-10-11 11:56:04 +02:00
|
|
|
fi
|
2013-04-17 16:26:44 +02:00
|
|
|
libs_softmmu="$libs_softmmu -lz"
|
2008-10-11 11:56:04 +02:00
|
|
|
|
2012-08-14 23:44:05 +02:00
|
|
|
##########################################
|
|
|
|
# libseccomp check
|
|
|
|
|
|
|
|
if test "$seccomp" != "no" ; then
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=2.1.0 libseccomp; then
|
2013-01-19 15:58:09 +01:00
|
|
|
libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
|
2013-04-28 16:27:26 +02:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
|
2012-08-14 23:44:05 +02:00
|
|
|
seccomp="yes"
|
|
|
|
else
|
|
|
|
if test "$seccomp" = "yes"; then
|
|
|
|
feature_not_found "libseccomp"
|
|
|
|
fi
|
2012-09-06 22:40:30 +02:00
|
|
|
seccomp="no"
|
2012-08-14 23:44:05 +02:00
|
|
|
fi
|
|
|
|
fi
|
2009-04-22 17:19:10 +02:00
|
|
|
##########################################
|
|
|
|
# xen probe
|
|
|
|
|
2009-08-12 18:29:55 +02:00
|
|
|
if test "$xen" != "no" ; then
|
2009-07-27 16:13:16 +02:00
|
|
|
xen_libs="-lxenstore -lxenctrl -lxenguest"
|
2011-02-25 17:20:34 +01:00
|
|
|
|
2011-12-17 09:27:39 +01:00
|
|
|
# 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)
|
2009-07-27 16:13:16 +02:00
|
|
|
cat > $TMPC <<EOF
|
2009-04-22 17:19:10 +02:00
|
|
|
#include <xenctrl.h>
|
2011-12-17 09:27:39 +01:00
|
|
|
int main(void) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if ! compile_prog "" "$xen_libs" ; then
|
|
|
|
# Xen not found
|
|
|
|
if test "$xen" = "yes" ; then
|
|
|
|
feature_not_found "xen"
|
|
|
|
fi
|
|
|
|
xen=no
|
|
|
|
|
|
|
|
# Xen unstable
|
2012-08-02 19:30:26 +02:00
|
|
|
elif
|
|
|
|
cat > $TMPC <<EOF &&
|
2011-12-17 09:27:39 +01:00
|
|
|
#include <xenctrl.h>
|
2012-06-21 13:44:35 +02:00
|
|
|
#include <xenstore.h>
|
2011-02-25 17:20:34 +01:00
|
|
|
#include <stdint.h>
|
|
|
|
#include <xen/hvm/hvm_info_table.h>
|
|
|
|
#if !defined(HVM_MAX_VCPUS)
|
|
|
|
# error HVM_MAX_VCPUS not defined
|
|
|
|
#endif
|
2012-04-17 19:04:18 +02:00
|
|
|
int main(void) {
|
|
|
|
xc_interface *xc;
|
|
|
|
xs_daemon_open();
|
|
|
|
xc = xc_interface_open(0, 0, 0);
|
|
|
|
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
|
|
|
xc_gnttab_open(NULL, 0);
|
|
|
|
xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
|
|
|
|
xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
compile_prog "" "$xen_libs"
|
2012-08-02 19:30:26 +02:00
|
|
|
then
|
2012-04-17 19:04:18 +02:00
|
|
|
xen_ctrl_version=420
|
|
|
|
xen=yes
|
|
|
|
|
2012-08-02 19:30:26 +02:00
|
|
|
elif
|
|
|
|
cat > $TMPC <<EOF &&
|
2012-04-17 19:04:18 +02:00
|
|
|
#include <xenctrl.h>
|
|
|
|
#include <xs.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <xen/hvm/hvm_info_table.h>
|
|
|
|
#if !defined(HVM_MAX_VCPUS)
|
|
|
|
# error HVM_MAX_VCPUS not defined
|
|
|
|
#endif
|
2011-02-25 17:20:34 +01:00
|
|
|
int main(void) {
|
|
|
|
xs_daemon_open();
|
2012-08-02 19:30:27 +02:00
|
|
|
xc_interface_open(0, 0, 0);
|
2011-02-25 17:20:34 +01:00
|
|
|
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
|
|
|
xc_gnttab_open(NULL, 0);
|
2011-05-24 15:34:20 +02:00
|
|
|
xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
|
2011-02-25 17:20:34 +01:00
|
|
|
return 0;
|
|
|
|
}
|
2009-04-22 17:19:10 +02:00
|
|
|
EOF
|
2011-12-17 09:27:39 +01:00
|
|
|
compile_prog "" "$xen_libs"
|
2012-08-02 19:30:26 +02:00
|
|
|
then
|
2011-02-25 17:20:34 +01:00
|
|
|
xen_ctrl_version=410
|
2009-08-12 18:29:55 +02:00
|
|
|
xen=yes
|
2011-02-25 17:20:34 +01:00
|
|
|
|
|
|
|
# Xen 4.0.0
|
2012-08-02 19:30:26 +02:00
|
|
|
elif
|
|
|
|
cat > $TMPC <<EOF &&
|
2011-02-25 17:20:34 +01:00
|
|
|
#include <xenctrl.h>
|
|
|
|
#include <xs.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <xen/hvm/hvm_info_table.h>
|
|
|
|
#if !defined(HVM_MAX_VCPUS)
|
|
|
|
# error HVM_MAX_VCPUS not defined
|
|
|
|
#endif
|
|
|
|
int main(void) {
|
2011-05-24 15:34:20 +02:00
|
|
|
struct xen_add_to_physmap xatp = {
|
|
|
|
.domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
|
|
|
|
};
|
2011-02-25 17:20:34 +01:00
|
|
|
xs_daemon_open();
|
|
|
|
xc_interface_open();
|
|
|
|
xc_gnttab_open();
|
|
|
|
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
2011-05-24 15:34:20 +02:00
|
|
|
xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
|
2011-02-25 17:20:34 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
compile_prog "" "$xen_libs"
|
2012-08-02 19:30:26 +02:00
|
|
|
then
|
2011-02-25 17:20:34 +01:00
|
|
|
xen_ctrl_version=400
|
|
|
|
xen=yes
|
|
|
|
|
2011-05-24 15:34:20 +02:00
|
|
|
# Xen 3.4.0
|
2012-08-02 19:30:26 +02:00
|
|
|
elif
|
|
|
|
cat > $TMPC <<EOF &&
|
2011-05-24 15:34:20 +02:00
|
|
|
#include <xenctrl.h>
|
|
|
|
#include <xs.h>
|
|
|
|
int main(void) {
|
|
|
|
struct xen_add_to_physmap xatp = {
|
|
|
|
.domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
|
|
|
|
};
|
|
|
|
xs_daemon_open();
|
|
|
|
xc_interface_open();
|
|
|
|
xc_gnttab_open();
|
|
|
|
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
|
|
|
xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
compile_prog "" "$xen_libs"
|
2012-08-02 19:30:26 +02:00
|
|
|
then
|
2011-05-24 15:34:20 +02:00
|
|
|
xen_ctrl_version=340
|
|
|
|
xen=yes
|
|
|
|
|
|
|
|
# Xen 3.3.0
|
2012-08-02 19:30:26 +02:00
|
|
|
elif
|
|
|
|
cat > $TMPC <<EOF &&
|
2011-02-25 17:20:34 +01:00
|
|
|
#include <xenctrl.h>
|
|
|
|
#include <xs.h>
|
|
|
|
int main(void) {
|
|
|
|
xs_daemon_open();
|
|
|
|
xc_interface_open();
|
|
|
|
xc_gnttab_open();
|
|
|
|
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
compile_prog "" "$xen_libs"
|
2012-08-02 19:30:26 +02:00
|
|
|
then
|
2011-02-25 17:20:34 +01:00
|
|
|
xen_ctrl_version=330
|
|
|
|
xen=yes
|
|
|
|
|
2011-12-17 09:27:39 +01:00
|
|
|
# Xen version unsupported
|
2009-07-27 16:13:16 +02:00
|
|
|
else
|
2009-08-12 18:29:55 +02:00
|
|
|
if test "$xen" = "yes" ; then
|
2011-12-17 09:27:39 +01:00
|
|
|
feature_not_found "xen (unsupported version)"
|
2009-08-12 18:29:55 +02:00
|
|
|
fi
|
|
|
|
xen=no
|
2009-07-27 16:13:16 +02:00
|
|
|
fi
|
2011-02-25 17:20:34 +01:00
|
|
|
|
|
|
|
if test "$xen" = yes; then
|
|
|
|
libs_softmmu="$xen_libs $libs_softmmu"
|
|
|
|
fi
|
2009-04-22 17:19:10 +02:00
|
|
|
fi
|
|
|
|
|
2012-06-21 17:32:59 +02:00
|
|
|
if test "$xen_pci_passthrough" != "no"; then
|
|
|
|
if test "$xen" = "yes" && test "$linux" = "yes" &&
|
|
|
|
test "$xen_ctrl_version" -ge 340; then
|
|
|
|
xen_pci_passthrough=yes
|
|
|
|
else
|
|
|
|
if test "$xen_pci_passthrough" = "yes"; then
|
|
|
|
if test "$xen_ctrl_version" -lt 340; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "User requested feature Xen PCI Passthrough" \
|
|
|
|
"This feature does not work with Xen 3.3"
|
2012-06-21 17:32:59 +02:00
|
|
|
fi
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "User requested feature Xen PCI Passthrough" \
|
|
|
|
" but this feature requires /sys from Linux"
|
2012-06-21 17:32:59 +02:00
|
|
|
fi
|
|
|
|
xen_pci_passthrough=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2011-05-15 10:51:28 +02:00
|
|
|
##########################################
|
|
|
|
# libtool probe
|
|
|
|
|
2011-08-14 02:30:14 +02:00
|
|
|
if ! has $libtool; then
|
2011-05-15 10:51:28 +02:00
|
|
|
libtool=
|
|
|
|
fi
|
|
|
|
|
2013-05-04 22:57:51 +02:00
|
|
|
# MacOSX ships with a libtool which isn't the GNU one; weed this
|
|
|
|
# out by checking whether libtool supports the --version switch
|
|
|
|
if test -n "$libtool"; then
|
|
|
|
if ! "$libtool" --version >/dev/null 2>&1; then
|
|
|
|
libtool=
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2009-08-12 18:29:57 +02:00
|
|
|
##########################################
|
|
|
|
# Sparse probe
|
|
|
|
if test "$sparse" != "no" ; then
|
2010-01-28 22:26:51 +01:00
|
|
|
if has cgcc; then
|
2009-08-12 18:29:57 +02:00
|
|
|
sparse=yes
|
|
|
|
else
|
|
|
|
if test "$sparse" = "yes" ; then
|
|
|
|
feature_not_found "sparse"
|
|
|
|
fi
|
|
|
|
sparse=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-02-20 14:43:20 +01:00
|
|
|
##########################################
|
|
|
|
# GTK probe
|
|
|
|
|
|
|
|
if test "$gtk" != "no"; then
|
2013-02-25 16:20:44 +01:00
|
|
|
gtkpackage="gtk+-$gtkabi"
|
|
|
|
if test "$gtkabi" = "3.0" ; then
|
|
|
|
gtkversion="3.0.0"
|
|
|
|
vtepackage="vte-2.90"
|
|
|
|
vteversion="0.32.0"
|
|
|
|
else
|
|
|
|
gtkversion="2.18.0"
|
|
|
|
vtepackage="vte"
|
|
|
|
vteversion="0.24.0"
|
|
|
|
fi
|
2013-07-18 17:42:01 +02:00
|
|
|
if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then
|
|
|
|
if test "$gtk" = "yes" ; then
|
|
|
|
feature_not_found "gtk"
|
|
|
|
fi
|
|
|
|
gtk="no"
|
|
|
|
elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then
|
|
|
|
if test "$gtk" = "yes" ; then
|
|
|
|
error_exit "libvte not found (required for gtk support)"
|
|
|
|
fi
|
|
|
|
gtk="no"
|
|
|
|
else
|
2013-08-27 21:09:12 +02:00
|
|
|
gtk_cflags=`$pkg_config --cflags $gtkpackage`
|
|
|
|
gtk_libs=`$pkg_config --libs $gtkpackage`
|
|
|
|
vte_cflags=`$pkg_config --cflags $vtepackage`
|
|
|
|
vte_libs=`$pkg_config --libs $vtepackage`
|
2013-02-20 14:43:20 +01:00
|
|
|
libs_softmmu="$gtk_libs $vte_libs $libs_softmmu"
|
|
|
|
gtk="yes"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2004-04-02 22:55:59 +02:00
|
|
|
##########################################
|
|
|
|
# SDL probe
|
|
|
|
|
2010-12-23 11:43:57 +01:00
|
|
|
# Look for sdl configuration program (pkg-config or sdl-config). Try
|
|
|
|
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
|
|
|
|
if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
|
|
|
|
sdl_config=sdl-config
|
|
|
|
fi
|
|
|
|
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config sdl --exists; then
|
2010-12-23 11:43:55 +01:00
|
|
|
sdlconfig="$pkg_config sdl"
|
2010-01-13 09:52:55 +01:00
|
|
|
_sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
|
2010-12-23 11:43:57 +01:00
|
|
|
elif has ${sdl_config}; then
|
|
|
|
sdlconfig="$sdl_config"
|
2010-01-13 09:52:55 +01:00
|
|
|
_sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
|
2010-01-28 22:15:18 +01:00
|
|
|
else
|
|
|
|
if test "$sdl" = "yes" ; then
|
|
|
|
feature_not_found "sdl"
|
|
|
|
fi
|
|
|
|
sdl=no
|
2010-01-13 09:52:55 +01:00
|
|
|
fi
|
2011-04-08 21:15:50 +02:00
|
|
|
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
|
2010-12-23 11:43:57 +01:00
|
|
|
echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
|
|
|
|
fi
|
2004-04-02 22:55:59 +02:00
|
|
|
|
2010-01-13 09:52:55 +01:00
|
|
|
sdl_too_old=no
|
2009-08-12 18:29:53 +02:00
|
|
|
if test "$sdl" != "no" ; then
|
2009-07-27 16:13:15 +02:00
|
|
|
cat > $TMPC << EOF
|
2004-04-02 22:55:59 +02:00
|
|
|
#include <SDL.h>
|
|
|
|
#undef main /* We don't want SDL to override our main() */
|
|
|
|
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
|
|
|
|
EOF
|
2010-01-13 09:52:55 +01:00
|
|
|
sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
|
2010-02-08 06:56:44 +01:00
|
|
|
if test "$static" = "yes" ; then
|
|
|
|
sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
|
|
|
|
else
|
|
|
|
sdl_libs=`$sdlconfig --libs 2> /dev/null`
|
|
|
|
fi
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "$sdl_cflags" "$sdl_libs" ; then
|
2009-07-27 16:13:15 +02:00
|
|
|
if test "$_sdlversion" -lt 121 ; then
|
|
|
|
sdl_too_old=yes
|
|
|
|
else
|
|
|
|
if test "$cocoa" = "no" ; then
|
|
|
|
sdl=yes
|
|
|
|
fi
|
|
|
|
fi
|
2008-08-21 21:25:45 +02:00
|
|
|
|
2010-01-13 09:52:54 +01:00
|
|
|
# static link with sdl ? (note: sdl.pc's --static --libs is broken)
|
2009-07-27 16:13:15 +02:00
|
|
|
if test "$sdl" = "yes" -a "$static" = "yes" ; then
|
2010-01-13 09:52:54 +01:00
|
|
|
if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
|
2010-03-01 22:10:46 +01:00
|
|
|
sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
|
|
|
|
sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
|
2009-07-27 16:13:15 +02:00
|
|
|
fi
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "$sdl_cflags" "$sdl_libs" ; then
|
2009-07-27 16:13:15 +02:00
|
|
|
:
|
|
|
|
else
|
|
|
|
sdl=no
|
|
|
|
fi
|
|
|
|
fi # static link
|
2009-08-12 18:29:53 +02:00
|
|
|
else # sdl not found
|
|
|
|
if test "$sdl" = "yes" ; then
|
|
|
|
feature_not_found "sdl"
|
|
|
|
fi
|
|
|
|
sdl=no
|
2009-07-27 16:13:15 +02:00
|
|
|
fi # sdl compile test
|
2009-07-27 16:13:09 +02:00
|
|
|
fi
|
2004-04-02 22:55:59 +02:00
|
|
|
|
2009-03-03 18:37:21 +01:00
|
|
|
if test "$sdl" = "yes" ; then
|
2009-07-27 16:13:15 +02:00
|
|
|
cat > $TMPC <<EOF
|
2009-03-03 18:37:21 +01:00
|
|
|
#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
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "$sdl_cflags" "$sdl_libs" ; then
|
2009-07-27 16:13:15 +02:00
|
|
|
sdl_libs="$sdl_libs -lX11"
|
|
|
|
fi
|
2009-08-03 14:46:27 +02:00
|
|
|
libs_softmmu="$sdl_libs $libs_softmmu"
|
2009-03-03 18:37:21 +01:00
|
|
|
fi
|
|
|
|
|
2013-07-22 16:01:54 +02:00
|
|
|
##########################################
|
|
|
|
# RDMA needs OpenFabrics libraries
|
|
|
|
if test "$rdma" != "no" ; then
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <rdma/rdma_cma.h>
|
|
|
|
int main(void) { return 0; }
|
|
|
|
EOF
|
|
|
|
rdma_libs="-lrdmacm -libverbs"
|
|
|
|
if compile_prog "" "$rdma_libs" ; then
|
|
|
|
rdma="yes"
|
|
|
|
libs_softmmu="$libs_softmmu $rdma_libs"
|
|
|
|
else
|
|
|
|
if test "$rdma" = "yes" ; then
|
|
|
|
error_exit \
|
|
|
|
" OpenFabrics librdmacm/libibverbs not present." \
|
|
|
|
" Your options:" \
|
|
|
|
" (1) Fast: Install infiniband packages from your distro." \
|
|
|
|
" (2) Cleanest: Install libraries from www.openfabrics.org" \
|
|
|
|
" (3) Also: Install softiwarp if you don't have RDMA hardware"
|
|
|
|
fi
|
|
|
|
rdma="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2007-08-25 03:37:51 +02:00
|
|
|
##########################################
|
2013-01-21 11:04:44 +01:00
|
|
|
# VNC TLS/WS detection
|
|
|
|
if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
|
2009-08-12 18:20:28 +02:00
|
|
|
cat > $TMPC <<EOF
|
2008-08-06 18:55:50 +02:00
|
|
|
#include <gnutls/gnutls.h>
|
|
|
|
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
|
|
|
|
EOF
|
2010-12-23 11:43:55 +01:00
|
|
|
vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
|
|
|
|
vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
|
2009-08-12 18:20:28 +02:00
|
|
|
if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
|
2013-01-21 11:04:44 +01:00
|
|
|
if test "$vnc_tls" != "no" ; then
|
|
|
|
vnc_tls=yes
|
|
|
|
fi
|
|
|
|
if test "$vnc_ws" != "no" ; then
|
|
|
|
vnc_ws=yes
|
|
|
|
fi
|
2009-08-12 18:20:28 +02:00
|
|
|
libs_softmmu="$vnc_tls_libs $libs_softmmu"
|
2012-12-20 12:29:19 +01:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
|
2009-08-12 18:20:28 +02:00
|
|
|
else
|
|
|
|
if test "$vnc_tls" = "yes" ; then
|
|
|
|
feature_not_found "vnc-tls"
|
2008-08-06 18:55:50 +02:00
|
|
|
fi
|
2013-01-21 11:04:44 +01:00
|
|
|
if test "$vnc_ws" = "yes" ; then
|
|
|
|
feature_not_found "vnc-ws"
|
|
|
|
fi
|
2009-08-12 18:20:28 +02:00
|
|
|
vnc_tls=no
|
2013-01-21 11:04:44 +01:00
|
|
|
vnc_ws=no
|
2009-08-12 18:20:28 +02:00
|
|
|
fi
|
2007-08-25 03:37:51 +02:00
|
|
|
fi
|
|
|
|
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
##########################################
|
|
|
|
# VNC SASL detection
|
2011-03-16 13:33:36 +01:00
|
|
|
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
|
2009-08-12 18:20:29 +02:00
|
|
|
cat > $TMPC <<EOF
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
#include <sasl/sasl.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
|
|
|
|
EOF
|
2009-08-12 18:20:29 +02:00
|
|
|
# Assuming Cyrus-SASL installed in /usr prefix
|
|
|
|
vnc_sasl_cflags=""
|
|
|
|
vnc_sasl_libs="-lsasl2"
|
|
|
|
if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
|
|
|
|
vnc_sasl=yes
|
|
|
|
libs_softmmu="$vnc_sasl_libs $libs_softmmu"
|
2012-12-20 12:29:19 +01:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
|
2009-08-12 18:20:29 +02:00
|
|
|
else
|
|
|
|
if test "$vnc_sasl" = "yes" ; then
|
|
|
|
feature_not_found "vnc-sasl"
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
fi
|
2009-08-12 18:20:29 +02:00
|
|
|
vnc_sasl=no
|
|
|
|
fi
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
fi
|
|
|
|
|
2010-07-07 20:57:49 +02:00
|
|
|
##########################################
|
|
|
|
# VNC JPEG detection
|
2011-03-16 13:33:36 +01:00
|
|
|
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
|
2010-07-07 20:57:49 +02:00
|
|
|
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"
|
2012-12-20 12:29:19 +01:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
|
2010-07-07 20:57:49 +02:00
|
|
|
else
|
|
|
|
if test "$vnc_jpeg" = "yes" ; then
|
|
|
|
feature_not_found "vnc-jpeg"
|
|
|
|
fi
|
|
|
|
vnc_jpeg=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2010-07-07 20:57:56 +02:00
|
|
|
##########################################
|
|
|
|
# VNC PNG detection
|
2011-03-16 13:33:36 +01:00
|
|
|
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
|
2010-07-07 20:57:56 +02:00
|
|
|
cat > $TMPC <<EOF
|
|
|
|
//#include <stdio.h>
|
|
|
|
#include <png.h>
|
2010-10-05 21:28:17 +02:00
|
|
|
#include <stddef.h>
|
2010-07-07 20:57:56 +02:00
|
|
|
int main(void) {
|
|
|
|
png_structp png_ptr;
|
|
|
|
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
2012-07-18 16:10:24 +02:00
|
|
|
return png_ptr != 0;
|
2010-07-07 20:57:56 +02:00
|
|
|
}
|
|
|
|
EOF
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config libpng --exists; then
|
2013-08-27 21:09:12 +02:00
|
|
|
vnc_png_cflags=`$pkg_config libpng --cflags`
|
|
|
|
vnc_png_libs=`$pkg_config libpng --libs`
|
2011-07-30 07:45:55 +02:00
|
|
|
else
|
2010-07-07 20:57:56 +02:00
|
|
|
vnc_png_cflags=""
|
|
|
|
vnc_png_libs="-lpng"
|
2011-07-30 07:45:55 +02:00
|
|
|
fi
|
2010-07-07 20:57:56 +02:00
|
|
|
if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
|
|
|
|
vnc_png=yes
|
|
|
|
libs_softmmu="$vnc_png_libs $libs_softmmu"
|
2011-07-30 07:45:55 +02:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
|
2010-07-07 20:57:56 +02:00
|
|
|
else
|
|
|
|
if test "$vnc_png" = "yes" ; then
|
|
|
|
feature_not_found "vnc-png"
|
|
|
|
fi
|
|
|
|
vnc_png=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
Support ACLs for controlling VNC access ("Daniel P. Berrange")
This patch introduces a generic internal API for access control lists
to be used by network servers in QEMU. It adds support for checking
these ACL in the VNC server, in two places. The first ACL is for the
SASL authentication mechanism, checking the SASL username. This ACL
is called 'vnc.username'. The second is for the TLS authentication
mechanism, when x509 client certificates are turned on, checking against
the Distinguished Name of the client. This ACL is called 'vnc.x509dname'
The internal API provides for an ACL with the following characteristics
- A unique name, eg vnc.username, and vnc.x509dname.
- A default policy, allow or deny
- An ordered series of match rules, with allow or deny policy
If none of the match rules apply, then the default policy is
used.
There is a monitor API to manipulate the ACLs, which I'll describe via
examples
(qemu) acl show vnc.username
policy: allow
(qemu) acl policy vnc.username denya
acl: policy set to 'deny'
(qemu) acl allow vnc.username fred
acl: added rule at position 1
(qemu) acl allow vnc.username bob
acl: added rule at position 2
(qemu) acl allow vnc.username joe 1
acl: added rule at position 1
(qemu) acl show vnc.username
policy: deny
0: allow fred
1: allow joe
2: allow bob
(qemu) acl show vnc.x509dname
policy: allow
(qemu) acl policy vnc.x509dname deny
acl: policy set to 'deny'
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=London,CN=*
acl: added rule at position 1
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=Boston,CN=bob
acl: added rule at position 2
(qemu) acl show vnc.x509dname
policy: deny
0: allow C=GB,O=ACME,L=London,CN=*
1: allow C=GB,O=ACME,L=Boston,CN=bob
By default the VNC server will not use any ACLs, allowing access to
the server if the user successfully authenticates. To enable use of
ACLs to restrict user access, the ',acl' flag should be given when
starting QEMU. The initial ACL activated will be a 'deny all' policy
and should be customized using monitor commands.
eg enable SASL auth and ACLs
qemu .... -vnc localhost:1,sasl,acl
The next patch will provide a way to load a pre-defined ACL when
starting up
Makefile | 6 +
b/acl.c | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b/acl.h | 74 ++++++++++++++++++++++
configure | 18 +++++
monitor.c | 95 ++++++++++++++++++++++++++++
qemu-doc.texi | 49 ++++++++++++++
vnc-auth-sasl.c | 16 +++-
vnc-auth-sasl.h | 7 ++
vnc-tls.c | 19 +++++
vnc-tls.h | 3
vnc.c | 21 ++++++
vnc.h | 3
12 files changed, 491 insertions(+), 5 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6726 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:37 +01:00
|
|
|
##########################################
|
|
|
|
# fnmatch() probe, used for ACL routines
|
|
|
|
fnmatch="no"
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <fnmatch.h>
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
fnmatch("foo", "foo", 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
Support ACLs for controlling VNC access ("Daniel P. Berrange")
This patch introduces a generic internal API for access control lists
to be used by network servers in QEMU. It adds support for checking
these ACL in the VNC server, in two places. The first ACL is for the
SASL authentication mechanism, checking the SASL username. This ACL
is called 'vnc.username'. The second is for the TLS authentication
mechanism, when x509 client certificates are turned on, checking against
the Distinguished Name of the client. This ACL is called 'vnc.x509dname'
The internal API provides for an ACL with the following characteristics
- A unique name, eg vnc.username, and vnc.x509dname.
- A default policy, allow or deny
- An ordered series of match rules, with allow or deny policy
If none of the match rules apply, then the default policy is
used.
There is a monitor API to manipulate the ACLs, which I'll describe via
examples
(qemu) acl show vnc.username
policy: allow
(qemu) acl policy vnc.username denya
acl: policy set to 'deny'
(qemu) acl allow vnc.username fred
acl: added rule at position 1
(qemu) acl allow vnc.username bob
acl: added rule at position 2
(qemu) acl allow vnc.username joe 1
acl: added rule at position 1
(qemu) acl show vnc.username
policy: deny
0: allow fred
1: allow joe
2: allow bob
(qemu) acl show vnc.x509dname
policy: allow
(qemu) acl policy vnc.x509dname deny
acl: policy set to 'deny'
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=London,CN=*
acl: added rule at position 1
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=Boston,CN=bob
acl: added rule at position 2
(qemu) acl show vnc.x509dname
policy: deny
0: allow C=GB,O=ACME,L=London,CN=*
1: allow C=GB,O=ACME,L=Boston,CN=bob
By default the VNC server will not use any ACLs, allowing access to
the server if the user successfully authenticates. To enable use of
ACLs to restrict user access, the ',acl' flag should be given when
starting QEMU. The initial ACL activated will be a 'deny all' policy
and should be customized using monitor commands.
eg enable SASL auth and ACLs
qemu .... -vnc localhost:1,sasl,acl
The next patch will provide a way to load a pre-defined ACL when
starting up
Makefile | 6 +
b/acl.c | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b/acl.h | 74 ++++++++++++++++++++++
configure | 18 +++++
monitor.c | 95 ++++++++++++++++++++++++++++
qemu-doc.texi | 49 ++++++++++++++
vnc-auth-sasl.c | 16 +++-
vnc-auth-sasl.h | 7 ++
vnc-tls.c | 19 +++++
vnc-tls.h | 3
vnc.c | 21 ++++++
vnc.h | 3
12 files changed, 491 insertions(+), 5 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6726 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:37 +01:00
|
|
|
fnmatch="yes"
|
|
|
|
fi
|
|
|
|
|
2009-10-01 20:10:37 +02:00
|
|
|
##########################################
|
|
|
|
# uuid_generate() probe, used for vdi block driver
|
2013-05-14 22:36:39 +02:00
|
|
|
# Note that on some systems (notably MacOSX) no extra library
|
|
|
|
# need be linked to get the uuid functions.
|
2009-10-01 20:10:37 +02:00
|
|
|
if test "$uuid" != "no" ; then
|
|
|
|
uuid_libs="-luuid"
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <uuid/uuid.h>
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
uuid_t my_uuid;
|
|
|
|
uuid_generate(my_uuid);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2013-05-14 22:36:39 +02:00
|
|
|
if compile_prog "" "" ; then
|
|
|
|
uuid="yes"
|
|
|
|
elif compile_prog "" "$uuid_libs" ; then
|
2009-10-01 20:10:37 +02:00
|
|
|
uuid="yes"
|
|
|
|
libs_softmmu="$uuid_libs $libs_softmmu"
|
|
|
|
libs_tools="$uuid_libs $libs_tools"
|
|
|
|
else
|
|
|
|
if test "$uuid" = "yes" ; then
|
|
|
|
feature_not_found "uuid"
|
|
|
|
fi
|
|
|
|
uuid=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2010-12-17 11:41:15 +01:00
|
|
|
##########################################
|
|
|
|
# xfsctl() probe, used for raw-posix
|
|
|
|
if test "$xfs" != "no" ; then
|
|
|
|
cat > $TMPC << EOF
|
2011-12-17 09:27:36 +01:00
|
|
|
#include <stddef.h> /* NULL */
|
2010-12-17 11:41:15 +01:00
|
|
|
#include <xfs/xfs.h>
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
xfsctl(NULL, 0, 0, NULL);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
xfs="yes"
|
|
|
|
else
|
|
|
|
if test "$xfs" = "yes" ; then
|
|
|
|
feature_not_found "xfs"
|
|
|
|
fi
|
|
|
|
xfs=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2008-07-19 11:56:24 +02:00
|
|
|
##########################################
|
|
|
|
# vde libraries probe
|
2009-08-12 18:20:27 +02:00
|
|
|
if test "$vde" != "no" ; then
|
2009-07-27 16:13:19 +02:00
|
|
|
vde_libs="-lvdeplug"
|
2008-07-19 11:56:24 +02:00
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <libvdeplug.h>
|
2008-09-07 18:42:53 +02:00
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
struct vde_open_args a = {0, 0, 0};
|
2012-07-18 16:10:25 +02:00
|
|
|
char s[] = "";
|
|
|
|
vde_open(s, s, &a);
|
2008-09-07 18:42:53 +02:00
|
|
|
return 0;
|
|
|
|
}
|
2008-07-19 11:56:24 +02:00
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "$vde_libs" ; then
|
2009-07-27 16:13:19 +02:00
|
|
|
vde=yes
|
2009-08-03 14:47:07 +02:00
|
|
|
libs_softmmu="$vde_libs $libs_softmmu"
|
|
|
|
libs_tools="$vde_libs $libs_tools"
|
2009-08-12 18:20:27 +02:00
|
|
|
else
|
|
|
|
if test "$vde" = "yes" ; then
|
|
|
|
feature_not_found "vde"
|
|
|
|
fi
|
|
|
|
vde=no
|
2009-07-27 16:13:19 +02:00
|
|
|
fi
|
2008-07-19 11:56:24 +02:00
|
|
|
fi
|
|
|
|
|
2012-01-26 15:42:26 +01:00
|
|
|
##########################################
|
|
|
|
# libcap-ng library probe
|
|
|
|
if test "$cap_ng" != "no" ; then
|
|
|
|
cap_libs="-lcap-ng"
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <cap-ng.h>
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
capng_capability_to_name(CAPNG_EFFECTIVE);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
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"
|
|
|
|
fi
|
|
|
|
cap_ng=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2007-01-05 22:25:54 +01:00
|
|
|
##########################################
|
2008-06-28 21:13:06 +02:00
|
|
|
# Sound support libraries probe
|
2007-01-05 22:25:54 +01:00
|
|
|
|
2008-06-28 21:13:06 +02:00
|
|
|
audio_drv_probe()
|
|
|
|
{
|
|
|
|
drv=$1
|
|
|
|
hdr=$2
|
|
|
|
lib=$3
|
|
|
|
exp=$4
|
|
|
|
cfl=$5
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <$hdr>
|
|
|
|
int main(void) { $exp }
|
2007-01-05 22:25:54 +01:00
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "$cfl" "$lib" ; then
|
2008-06-28 21:13:06 +02:00
|
|
|
:
|
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "$drv check failed" \
|
|
|
|
"Make sure to have the $drv libs and headers installed."
|
2008-06-28 21:13:06 +02:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2008-07-29 14:58:44 +02:00
|
|
|
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
|
2008-06-28 21:13:06 +02:00
|
|
|
for drv in $audio_drv_list; do
|
|
|
|
case $drv in
|
|
|
|
alsa)
|
|
|
|
audio_drv_probe $drv alsa/asoundlib.h -lasound \
|
2012-07-18 16:10:19 +02:00
|
|
|
"return snd_pcm_close((snd_pcm_t *)0);"
|
2009-08-03 14:46:30 +02:00
|
|
|
libs_softmmu="-lasound $libs_softmmu"
|
2008-06-28 21:13:06 +02:00
|
|
|
;;
|
|
|
|
|
|
|
|
fmod)
|
|
|
|
if test -z $fmod_lib || test -z $fmod_inc; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "You must specify path to FMOD library and headers" \
|
|
|
|
"Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
|
2008-06-28 21:13:06 +02:00
|
|
|
fi
|
|
|
|
audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
|
2009-08-03 14:46:30 +02:00
|
|
|
libs_softmmu="$fmod_lib $libs_softmmu"
|
2008-06-28 21:13:06 +02:00
|
|
|
;;
|
|
|
|
|
|
|
|
esd)
|
|
|
|
audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
|
2009-08-03 14:46:30 +02:00
|
|
|
libs_softmmu="-lesd $libs_softmmu"
|
2009-08-03 14:46:59 +02:00
|
|
|
audio_pt_int="yes"
|
2008-06-28 21:13:06 +02:00
|
|
|
;;
|
2008-07-02 23:03:08 +02:00
|
|
|
|
|
|
|
pa)
|
2012-04-17 14:32:42 +02:00
|
|
|
audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
|
|
|
|
"pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
|
|
|
|
libs_softmmu="-lpulse $libs_softmmu"
|
2009-08-03 14:46:59 +02:00
|
|
|
audio_pt_int="yes"
|
2008-07-02 23:03:08 +02:00
|
|
|
;;
|
|
|
|
|
2009-08-03 14:46:29 +02:00
|
|
|
coreaudio)
|
|
|
|
libs_softmmu="-framework CoreAudio $libs_softmmu"
|
|
|
|
;;
|
|
|
|
|
2009-08-03 14:46:30 +02:00
|
|
|
dsound)
|
|
|
|
libs_softmmu="-lole32 -ldxguid $libs_softmmu"
|
2009-10-09 23:13:41 +02:00
|
|
|
audio_win_int="yes"
|
2009-08-03 14:46:30 +02:00
|
|
|
;;
|
|
|
|
|
|
|
|
oss)
|
|
|
|
libs_softmmu="$oss_lib $libs_softmmu"
|
|
|
|
;;
|
|
|
|
|
|
|
|
sdl|wav)
|
2008-08-21 20:00:53 +02:00
|
|
|
# XXX: Probes for CoreAudio, DirectSound, SDL(?)
|
|
|
|
;;
|
|
|
|
|
2009-10-09 23:13:41 +02:00
|
|
|
winwave)
|
|
|
|
libs_softmmu="-lwinmm $libs_softmmu"
|
|
|
|
audio_win_int="yes"
|
|
|
|
;;
|
|
|
|
|
2008-07-19 18:15:16 +02:00
|
|
|
*)
|
2008-07-19 18:57:30 +02:00
|
|
|
echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Unknown driver '$drv' selected" \
|
|
|
|
"Possible drivers are: $audio_possible_drivers"
|
2008-07-19 18:15:16 +02:00
|
|
|
}
|
|
|
|
;;
|
2008-06-28 21:13:06 +02:00
|
|
|
esac
|
|
|
|
done
|
2007-01-05 22:25:54 +01:00
|
|
|
|
2008-04-08 08:01:02 +02:00
|
|
|
##########################################
|
|
|
|
# BrlAPI probe
|
|
|
|
|
2009-08-12 18:20:26 +02:00
|
|
|
if test "$brlapi" != "no" ; then
|
2009-07-27 16:13:18 +02:00
|
|
|
brlapi_libs="-lbrlapi"
|
|
|
|
cat > $TMPC << EOF
|
2008-04-08 08:01:02 +02:00
|
|
|
#include <brlapi.h>
|
2010-10-05 21:28:17 +02:00
|
|
|
#include <stddef.h>
|
2008-04-08 08:01:02 +02:00
|
|
|
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "$brlapi_libs" ; then
|
2009-07-27 16:13:18 +02:00
|
|
|
brlapi=yes
|
2009-08-03 14:46:39 +02:00
|
|
|
libs_softmmu="$brlapi_libs $libs_softmmu"
|
2009-08-12 18:20:26 +02:00
|
|
|
else
|
|
|
|
if test "$brlapi" = "yes" ; then
|
|
|
|
feature_not_found "brlapi"
|
|
|
|
fi
|
|
|
|
brlapi=no
|
2009-07-27 16:13:18 +02:00
|
|
|
fi
|
|
|
|
fi
|
2008-04-08 08:01:02 +02:00
|
|
|
|
2008-02-10 17:33:14 +01:00
|
|
|
##########################################
|
|
|
|
# curses probe
|
2013-05-25 11:17:21 +02:00
|
|
|
if test "$curses" != "no" ; then
|
|
|
|
if test "$mingw32" = "yes" ; then
|
2011-02-27 20:23:30 +01:00
|
|
|
curses_list="-lpdcurses"
|
2013-05-25 11:17:21 +02:00
|
|
|
else
|
2013-05-24 22:07:00 +02:00
|
|
|
curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
|
2013-05-25 11:17:21 +02:00
|
|
|
fi
|
2009-08-12 18:20:30 +02:00
|
|
|
curses_found=no
|
2008-02-10 17:33:14 +01:00
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <curses.h>
|
2011-12-17 17:46:02 +01:00
|
|
|
int main(void) {
|
|
|
|
const char *s = curses_version();
|
|
|
|
resize_term(0, 0);
|
|
|
|
return s != 0;
|
|
|
|
}
|
2008-02-10 17:33:14 +01:00
|
|
|
EOF
|
2013-01-15 13:17:24 +01:00
|
|
|
IFS=:
|
2009-08-12 18:20:23 +02:00
|
|
|
for curses_lib in $curses_list; do
|
2013-01-15 13:17:24 +01:00
|
|
|
unset IFS
|
2009-08-12 18:20:23 +02:00
|
|
|
if compile_prog "" "$curses_lib" ; then
|
2009-08-12 18:20:30 +02:00
|
|
|
curses_found=yes
|
2009-08-12 18:20:23 +02:00
|
|
|
libs_softmmu="$curses_lib $libs_softmmu"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
2013-01-15 13:17:24 +01:00
|
|
|
unset IFS
|
2009-08-12 18:20:30 +02:00
|
|
|
if test "$curses_found" = "yes" ; then
|
|
|
|
curses=yes
|
|
|
|
else
|
|
|
|
if test "$curses" = "yes" ; then
|
|
|
|
feature_not_found "curses"
|
|
|
|
fi
|
|
|
|
curses=no
|
|
|
|
fi
|
2009-08-12 18:20:23 +02:00
|
|
|
fi
|
2008-02-10 17:33:14 +01:00
|
|
|
|
2009-05-11 17:41:42 +02:00
|
|
|
##########################################
|
|
|
|
# curl probe
|
2009-08-12 18:29:47 +02:00
|
|
|
if test "$curl" != "no" ; then
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config libcurl --exists; then
|
2013-05-25 11:17:21 +02:00
|
|
|
curlconfig="$pkg_config libcurl"
|
|
|
|
else
|
|
|
|
curlconfig=curl-config
|
|
|
|
fi
|
2009-05-11 17:41:42 +02:00
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <curl/curl.h>
|
2011-06-09 23:54:29 +02:00
|
|
|
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
|
2009-05-11 17:41:42 +02:00
|
|
|
EOF
|
2010-01-13 09:52:56 +01:00
|
|
|
curl_cflags=`$curlconfig --cflags 2>/dev/null`
|
|
|
|
curl_libs=`$curlconfig --libs 2>/dev/null`
|
2009-08-03 14:46:05 +02:00
|
|
|
if compile_prog "$curl_cflags" "$curl_libs" ; then
|
2009-05-11 17:41:42 +02:00
|
|
|
curl=yes
|
2009-08-03 14:47:08 +02:00
|
|
|
libs_tools="$curl_libs $libs_tools"
|
|
|
|
libs_softmmu="$curl_libs $libs_softmmu"
|
2009-08-12 18:29:47 +02:00
|
|
|
else
|
|
|
|
if test "$curl" = "yes" ; then
|
|
|
|
feature_not_found "curl"
|
|
|
|
fi
|
|
|
|
curl=no
|
2009-05-11 17:41:42 +02:00
|
|
|
fi
|
|
|
|
fi # test "$curl"
|
|
|
|
|
2008-09-29 01:49:55 +02:00
|
|
|
##########################################
|
|
|
|
# bluez support probe
|
2009-08-12 18:29:50 +02:00
|
|
|
if test "$bluez" != "no" ; then
|
2008-09-30 04:27:44 +02:00
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <bluetooth/bluetooth.h>
|
|
|
|
int main(void) { return bt_error(0); }
|
|
|
|
EOF
|
2010-12-23 11:43:55 +01:00
|
|
|
bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
|
|
|
|
bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "$bluez_cflags" "$bluez_libs" ; then
|
2009-08-12 18:29:50 +02:00
|
|
|
bluez=yes
|
2009-08-03 14:46:37 +02:00
|
|
|
libs_softmmu="$bluez_libs $libs_softmmu"
|
2008-09-30 04:27:44 +02:00
|
|
|
else
|
2009-08-12 18:29:50 +02:00
|
|
|
if test "$bluez" = "yes" ; then
|
|
|
|
feature_not_found "bluez"
|
|
|
|
fi
|
2008-09-30 04:27:44 +02:00
|
|
|
bluez="no"
|
|
|
|
fi
|
2008-09-29 01:49:55 +02:00
|
|
|
fi
|
|
|
|
|
2011-07-19 21:50:29 +02:00
|
|
|
##########################################
|
|
|
|
# glib support probe
|
2012-04-05 13:01:54 +02:00
|
|
|
|
|
|
|
if test "$mingw32" = yes; then
|
|
|
|
# g_poll is required in order to integrate with the glib main loop.
|
|
|
|
glib_req_ver=2.20
|
|
|
|
else
|
|
|
|
glib_req_ver=2.12
|
|
|
|
fi
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=$glib_req_ver gthread-2.0; then
|
2013-08-27 21:09:12 +02:00
|
|
|
glib_cflags=`$pkg_config --cflags gthread-2.0`
|
|
|
|
glib_libs=`$pkg_config --libs gthread-2.0`
|
2011-08-21 05:18:37 +02:00
|
|
|
LIBS="$glib_libs $LIBS"
|
2011-08-11 22:38:12 +02:00
|
|
|
libs_qga="$glib_libs $libs_qga"
|
2011-08-08 09:34:05 +02:00
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "glib-$glib_req_ver required to compile QEMU"
|
2011-07-19 21:50:29 +02:00
|
|
|
fi
|
|
|
|
|
2012-09-25 16:04:58 +02:00
|
|
|
##########################################
|
|
|
|
# pixman support probe
|
|
|
|
|
|
|
|
if test "$pixman" = ""; then
|
2012-12-04 16:58:08 +01:00
|
|
|
if test "$want_tools" = "no" -a "$softmmu" = "no"; then
|
|
|
|
pixman="none"
|
|
|
|
elif $pkg_config pixman-1 > /dev/null 2>&1; then
|
2012-09-25 16:04:58 +02:00
|
|
|
pixman="system"
|
|
|
|
else
|
|
|
|
pixman="internal"
|
|
|
|
fi
|
|
|
|
fi
|
2012-12-04 16:58:08 +01:00
|
|
|
if test "$pixman" = "none"; then
|
|
|
|
if test "$want_tools" != "no" -o "$softmmu" != "no"; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "pixman disabled but system emulation or tools build" \
|
|
|
|
"enabled. You can turn off pixman only if you also" \
|
|
|
|
"disable all system emulation targets and the tools" \
|
|
|
|
"build with '--disable-tools --disable-system'."
|
2012-12-04 16:58:08 +01:00
|
|
|
fi
|
|
|
|
pixman_cflags=
|
|
|
|
pixman_libs=
|
|
|
|
elif test "$pixman" = "system"; then
|
2013-08-27 21:09:12 +02:00
|
|
|
pixman_cflags=`$pkg_config --cflags pixman-1`
|
|
|
|
pixman_libs=`$pkg_config --libs pixman-1`
|
2012-09-25 16:04:58 +02:00
|
|
|
else
|
|
|
|
if test ! -d ${source_path}/pixman/pixman; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "pixman not present. Your options:" \
|
|
|
|
" (1) Preferred: Install the pixman devel package (any recent" \
|
|
|
|
" distro should have packages as Xorg needs pixman too)." \
|
|
|
|
" (2) Fetch the pixman submodule, using:" \
|
|
|
|
" git submodule update --init pixman"
|
2012-09-25 16:04:58 +02:00
|
|
|
fi
|
2012-11-07 11:06:23 +01:00
|
|
|
mkdir -p pixman/pixman
|
|
|
|
pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
|
|
|
|
pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
|
2012-09-25 16:04:58 +02:00
|
|
|
fi
|
|
|
|
|
2011-12-14 09:28:42 +01:00
|
|
|
##########################################
|
|
|
|
# libcap probe
|
|
|
|
|
|
|
|
if test "$cap" != "no" ; then
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <sys/capability.h>
|
2012-07-18 16:10:20 +02:00
|
|
|
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
|
2011-12-14 09:28:42 +01:00
|
|
|
EOF
|
|
|
|
if compile_prog "" "-lcap" ; then
|
|
|
|
cap=yes
|
|
|
|
else
|
|
|
|
cap=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2008-08-15 20:20:52 +02:00
|
|
|
##########################################
|
2009-04-24 20:03:15 +02:00
|
|
|
# pthread probe
|
2011-08-08 02:02:11 +02:00
|
|
|
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
|
2008-12-12 17:41:40 +01:00
|
|
|
|
2009-08-10 23:39:39 +02:00
|
|
|
pthread=no
|
2009-04-24 20:03:15 +02:00
|
|
|
cat > $TMPC << EOF
|
2008-12-12 17:41:40 +01:00
|
|
|
#include <pthread.h>
|
2011-12-17 09:27:32 +01:00
|
|
|
static void *f(void *p) { return NULL; }
|
|
|
|
int main(void) {
|
|
|
|
pthread_t thread;
|
|
|
|
pthread_create(&thread, 0, f, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
2008-08-15 20:20:52 +02:00
|
|
|
EOF
|
2010-09-20 00:50:44 +02:00
|
|
|
if compile_prog "" "" ; then
|
|
|
|
pthread=yes
|
|
|
|
else
|
|
|
|
for pthread_lib in $PTHREADLIBS_LIST; do
|
|
|
|
if compile_prog "" "$pthread_lib" ; then
|
|
|
|
pthread=yes
|
2012-04-20 16:36:12 +02:00
|
|
|
found=no
|
|
|
|
for lib_entry in $LIBS; do
|
|
|
|
if test "$lib_entry" = "$pthread_lib"; then
|
|
|
|
found=yes
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test "$found" = "no"; then
|
|
|
|
LIBS="$pthread_lib $LIBS"
|
|
|
|
fi
|
2010-09-20 00:50:44 +02:00
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
2008-08-15 20:20:52 +02:00
|
|
|
|
2009-08-26 00:21:56 +02:00
|
|
|
if test "$mingw32" != yes -a "$pthread" = no; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "pthread check failed" \
|
|
|
|
"Make sure to have the pthread libs and headers installed."
|
2009-04-24 20:03:15 +02:00
|
|
|
fi
|
|
|
|
|
2010-12-06 20:53:01 +01:00
|
|
|
##########################################
|
|
|
|
# rbd probe
|
|
|
|
if test "$rbd" != "no" ; then
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <stdio.h>
|
2011-05-27 01:07:31 +02:00
|
|
|
#include <rbd/librbd.h>
|
2010-12-06 20:53:01 +01:00
|
|
|
int main(void) {
|
2011-05-27 01:07:31 +02:00
|
|
|
rados_t cluster;
|
|
|
|
rados_create(&cluster, NULL);
|
2010-12-06 20:53:01 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2011-05-27 01:07:31 +02:00
|
|
|
rbd_libs="-lrbd -lrados"
|
|
|
|
if compile_prog "" "$rbd_libs" ; then
|
|
|
|
rbd=yes
|
|
|
|
libs_tools="$rbd_libs $libs_tools"
|
|
|
|
libs_softmmu="$rbd_libs $libs_softmmu"
|
2010-12-06 20:53:01 +01:00
|
|
|
else
|
|
|
|
if test "$rbd" = "yes" ; then
|
|
|
|
feature_not_found "rados block device"
|
|
|
|
fi
|
|
|
|
rbd=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-04-09 16:30:53 +02:00
|
|
|
##########################################
|
|
|
|
# libssh2 probe
|
2013-04-19 10:16:39 +02:00
|
|
|
min_libssh2_version=1.2.8
|
2013-04-09 16:30:53 +02:00
|
|
|
if test "$libssh2" != "no" ; then
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
|
2013-04-09 16:30:53 +02:00
|
|
|
libssh2_cflags=`$pkg_config libssh2 --cflags`
|
|
|
|
libssh2_libs=`$pkg_config libssh2 --libs`
|
|
|
|
libssh2=yes
|
|
|
|
libs_tools="$libssh2_libs $libs_tools"
|
|
|
|
libs_softmmu="$libssh2_libs $libs_softmmu"
|
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $libssh2_cflags"
|
|
|
|
else
|
|
|
|
if test "$libssh2" = "yes" ; then
|
2013-04-19 10:16:39 +02:00
|
|
|
error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
|
2013-04-09 16:30:53 +02:00
|
|
|
fi
|
|
|
|
libssh2=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-04-09 16:30:54 +02:00
|
|
|
##########################################
|
|
|
|
# libssh2_sftp_fsync probe
|
|
|
|
|
|
|
|
if test "$libssh2" = "yes"; then
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <libssh2.h>
|
|
|
|
#include <libssh2_sftp.h>
|
|
|
|
int main(void) {
|
|
|
|
LIBSSH2_SESSION *session;
|
|
|
|
LIBSSH2_SFTP *sftp;
|
|
|
|
LIBSSH2_SFTP_HANDLE *sftp_handle;
|
|
|
|
session = libssh2_session_init ();
|
|
|
|
sftp = libssh2_sftp_init (session);
|
|
|
|
sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
|
|
|
|
libssh2_sftp_fsync (sftp_handle);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
# libssh2_cflags/libssh2_libs defined in previous test.
|
|
|
|
if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
|
|
|
|
QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2009-08-20 16:58:35 +02:00
|
|
|
##########################################
|
|
|
|
# linux-aio probe
|
|
|
|
|
|
|
|
if test "$linux_aio" != "no" ; then
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <libaio.h>
|
|
|
|
#include <sys/eventfd.h>
|
2010-10-05 21:28:17 +02:00
|
|
|
#include <stddef.h>
|
2009-08-20 16:58:35 +02:00
|
|
|
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "-laio" ; then
|
|
|
|
linux_aio=yes
|
2010-05-05 17:32:59 +02:00
|
|
|
libs_softmmu="$libs_softmmu -laio"
|
|
|
|
libs_tools="$libs_tools -laio"
|
2009-08-20 16:58:35 +02:00
|
|
|
else
|
|
|
|
if test "$linux_aio" = "yes" ; then
|
|
|
|
feature_not_found "linux AIO"
|
|
|
|
fi
|
2009-08-31 18:18:12 +02:00
|
|
|
linux_aio=no
|
2009-08-20 16:58:35 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-03-18 16:37:50 +01:00
|
|
|
##########################################
|
|
|
|
# TPM passthrough is only on x86 Linux
|
|
|
|
|
|
|
|
if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
|
|
|
|
tpm_passthrough=$tpm
|
|
|
|
else
|
|
|
|
tpm_passthrough=no
|
|
|
|
fi
|
|
|
|
|
2012-11-14 15:04:15 +01:00
|
|
|
##########################################
|
|
|
|
# adjust virtio-blk-data-plane based on linux-aio
|
|
|
|
|
|
|
|
if test "$virtio_blk_data_plane" = "yes" -a \
|
|
|
|
"$linux_aio" != "yes" ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "virtio-blk-data-plane requires Linux AIO, please try --enable-linux-aio"
|
2012-11-14 15:04:15 +01:00
|
|
|
elif test -z "$virtio_blk_data_plane" ; then
|
|
|
|
virtio_blk_data_plane=$linux_aio
|
|
|
|
fi
|
|
|
|
|
2010-06-14 22:34:41 +02:00
|
|
|
##########################################
|
|
|
|
# attr probe
|
|
|
|
|
|
|
|
if test "$attr" != "no" ; then
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <sys/types.h>
|
2011-11-10 21:26:59 +01:00
|
|
|
#ifdef CONFIG_LIBATTR
|
|
|
|
#include <attr/xattr.h>
|
|
|
|
#else
|
2011-11-09 13:44:52 +01:00
|
|
|
#include <sys/xattr.h>
|
2011-11-10 21:26:59 +01:00
|
|
|
#endif
|
2010-06-14 22:34:41 +02:00
|
|
|
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
|
|
|
|
EOF
|
2011-11-09 13:44:52 +01:00
|
|
|
if compile_prog "" "" ; then
|
|
|
|
attr=yes
|
|
|
|
# Older distros have <attr/xattr.h>, and need -lattr:
|
2011-11-10 21:26:59 +01:00
|
|
|
elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
|
2010-06-14 22:34:41 +02:00
|
|
|
attr=yes
|
|
|
|
LIBS="-lattr $LIBS"
|
2011-11-09 13:44:52 +01:00
|
|
|
libattr=yes
|
2010-06-14 22:34:41 +02:00
|
|
|
else
|
|
|
|
if test "$attr" = "yes" ; then
|
|
|
|
feature_not_found "ATTR"
|
|
|
|
fi
|
|
|
|
attr=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2008-12-05 21:05:26 +01:00
|
|
|
##########################################
|
|
|
|
# iovec probe
|
|
|
|
cat > $TMPC <<EOF
|
2009-01-14 19:03:53 +01:00
|
|
|
#include <sys/types.h>
|
2008-12-05 21:05:26 +01:00
|
|
|
#include <sys/uio.h>
|
2009-01-14 19:03:53 +01:00
|
|
|
#include <unistd.h>
|
2011-12-17 09:27:33 +01:00
|
|
|
int main(void) { return sizeof(struct iovec); }
|
2008-12-05 21:05:26 +01:00
|
|
|
EOF
|
|
|
|
iovec=no
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2008-12-05 21:05:26 +01:00
|
|
|
iovec=yes
|
|
|
|
fi
|
|
|
|
|
2009-04-07 20:43:28 +02:00
|
|
|
##########################################
|
|
|
|
# preadv probe
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/uio.h>
|
|
|
|
#include <unistd.h>
|
2012-08-09 22:21:25 +02:00
|
|
|
int main(void) { return preadv(0, 0, 0, 0); }
|
2009-04-07 20:43:28 +02:00
|
|
|
EOF
|
|
|
|
preadv=no
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-04-07 20:43:28 +02:00
|
|
|
preadv=yes
|
|
|
|
fi
|
|
|
|
|
2008-12-16 11:43:48 +01:00
|
|
|
##########################################
|
|
|
|
# fdt probe
|
2013-05-24 17:26:54 +02:00
|
|
|
# fdt support is mandatory for at least some target architectures,
|
|
|
|
# so insist on it if we're building those system emulators.
|
|
|
|
fdt_required=no
|
|
|
|
for target in $target_list; do
|
|
|
|
case $target in
|
2013-09-03 21:12:22 +02:00
|
|
|
aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
|
2013-05-24 17:26:54 +02:00
|
|
|
fdt_required=yes
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
|
|
if test "$fdt_required" = "yes"; then
|
|
|
|
if test "$fdt" = "no"; then
|
|
|
|
error_exit "fdt disabled but some requested targets require it." \
|
|
|
|
"You can turn off fdt only if you also disable all the system emulation" \
|
|
|
|
"targets which need it (by specifying a cut down --target-list)."
|
|
|
|
fi
|
|
|
|
fdt=yes
|
|
|
|
fi
|
|
|
|
|
2009-08-12 18:29:54 +02:00
|
|
|
if test "$fdt" != "no" ; then
|
2009-07-27 16:13:20 +02:00
|
|
|
fdt_libs="-lfdt"
|
2013-05-27 06:20:57 +02:00
|
|
|
# explicitly check for libfdt_env.h as it is missing in some stable installs
|
2009-07-27 16:13:20 +02:00
|
|
|
cat > $TMPC << EOF
|
2013-05-27 06:20:57 +02:00
|
|
|
#include <libfdt_env.h>
|
2008-12-16 11:43:48 +01:00
|
|
|
int main(void) { return 0; }
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "$fdt_libs" ; then
|
2013-04-18 06:47:31 +02:00
|
|
|
# system DTC is good - use it
|
2008-12-16 11:43:48 +01:00
|
|
|
fdt=yes
|
2013-04-18 06:47:31 +02:00
|
|
|
elif test -d ${source_path}/dtc/libfdt ; then
|
|
|
|
# have submodule DTC - use it
|
|
|
|
fdt=yes
|
|
|
|
dtc_internal="yes"
|
|
|
|
mkdir -p dtc
|
|
|
|
if [ "$source_path" != `pwd` ] ; then
|
|
|
|
symlink "$source_path/dtc/Makefile" "dtc/Makefile"
|
|
|
|
symlink "$source_path/dtc/scripts" "dtc/scripts"
|
2009-08-12 18:29:54 +02:00
|
|
|
fi
|
2013-04-18 06:47:31 +02:00
|
|
|
fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
|
|
|
|
fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
|
|
|
|
elif test "$fdt" = "yes" ; then
|
|
|
|
# have neither and want - prompt for system/submodule install
|
2013-06-18 01:09:06 +02:00
|
|
|
error_exit "DTC not present. Your options:" \
|
2013-04-18 06:47:31 +02:00
|
|
|
" (1) Preferred: Install the DTC devel package" \
|
|
|
|
" (2) Fetch the DTC submodule, using:" \
|
|
|
|
" git submodule update --init dtc"
|
|
|
|
else
|
|
|
|
# don't have and don't want
|
2011-04-26 00:24:07 +02:00
|
|
|
fdt_libs=
|
2009-08-12 18:29:54 +02:00
|
|
|
fdt=no
|
2008-12-16 11:43:48 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-04-18 06:47:31 +02:00
|
|
|
libs_softmmu="$libs_softmmu $fdt_libs"
|
|
|
|
|
2011-03-07 23:32:39 +01:00
|
|
|
##########################################
|
2013-03-06 20:23:32 +01:00
|
|
|
# GLX probe, used by milkymist-tmu2
|
|
|
|
if test "$glx" != "no" ; then
|
|
|
|
glx_libs="-lGL -lX11"
|
2011-03-07 23:32:39 +01:00
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <X11/Xlib.h>
|
|
|
|
#include <GL/gl.h>
|
|
|
|
#include <GL/glx.h>
|
2013-03-06 20:16:58 +01:00
|
|
|
int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
|
2011-03-07 23:32:39 +01:00
|
|
|
EOF
|
2013-03-06 20:16:58 +01:00
|
|
|
if compile_prog "" "-lGL -lX11" ; then
|
2013-03-06 20:23:32 +01:00
|
|
|
glx=yes
|
2011-03-07 23:32:39 +01:00
|
|
|
else
|
2013-03-06 20:23:32 +01:00
|
|
|
if test "$glx" = "yes" ; then
|
|
|
|
feature_not_found "glx"
|
2011-03-07 23:32:39 +01:00
|
|
|
fi
|
2013-03-06 20:23:32 +01:00
|
|
|
glx_libs=
|
|
|
|
glx=no
|
2011-03-07 23:32:39 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-09-24 11:12:45 +02:00
|
|
|
##########################################
|
|
|
|
# glusterfs probe
|
|
|
|
if test "$glusterfs" != "no" ; then
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=3 glusterfs-api; then
|
2013-07-16 18:17:41 +02:00
|
|
|
glusterfs="yes"
|
2013-08-27 21:09:12 +02:00
|
|
|
glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
|
|
|
|
glusterfs_libs=`$pkg_config --libs glusterfs-api`
|
2013-07-16 18:17:41 +02:00
|
|
|
CFLAGS="$CFLAGS $glusterfs_cflags"
|
2012-09-24 11:12:45 +02:00
|
|
|
libs_tools="$glusterfs_libs $libs_tools"
|
|
|
|
libs_softmmu="$glusterfs_libs $libs_softmmu"
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=5 glusterfs-api; then
|
2013-07-16 18:17:42 +02:00
|
|
|
glusterfs_discard="yes"
|
|
|
|
fi
|
2012-09-24 11:12:45 +02:00
|
|
|
else
|
|
|
|
if test "$glusterfs" = "yes" ; then
|
|
|
|
feature_not_found "GlusterFS backend support"
|
|
|
|
fi
|
2013-07-16 18:17:41 +02:00
|
|
|
glusterfs="no"
|
2012-09-24 11:12:45 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2009-04-15 21:48:17 +02:00
|
|
|
# Check for inotify functions when we are building linux-user
|
2009-04-15 18:12:13 +02:00
|
|
|
# emulator. This is done because older glibc versions don't
|
|
|
|
# have syscall stubs for these implemented. In that case we
|
|
|
|
# don't provide them even if kernel supports them.
|
|
|
|
#
|
|
|
|
inotify=no
|
2009-06-29 16:26:11 +02:00
|
|
|
cat > $TMPC << EOF
|
2009-04-15 18:12:13 +02:00
|
|
|
#include <sys/inotify.h>
|
|
|
|
|
|
|
|
int
|
|
|
|
main(void)
|
|
|
|
{
|
|
|
|
/* try to start inotify */
|
2009-04-17 15:50:32 +02:00
|
|
|
return inotify_init();
|
2009-04-15 18:12:13 +02:00
|
|
|
}
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-06-29 16:26:11 +02:00
|
|
|
inotify=yes
|
2009-04-15 18:12:13 +02:00
|
|
|
fi
|
|
|
|
|
2010-03-26 16:25:11 +01:00
|
|
|
inotify1=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/inotify.h>
|
|
|
|
|
|
|
|
int
|
|
|
|
main(void)
|
|
|
|
{
|
|
|
|
/* try to start inotify */
|
|
|
|
return inotify_init1(0);
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
inotify1=yes
|
|
|
|
fi
|
|
|
|
|
2009-04-21 14:01:51 +02:00
|
|
|
# check if utimensat and futimens are supported
|
|
|
|
utimens=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#define _ATFILE_SOURCE
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <fcntl.h>
|
2012-07-18 16:10:26 +02:00
|
|
|
#include <sys/stat.h>
|
2009-04-21 14:01:51 +02:00
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
utimensat(AT_FDCWD, "foo", NULL, 0);
|
|
|
|
futimens(0, NULL);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-04-21 14:01:51 +02:00
|
|
|
utimens=yes
|
|
|
|
fi
|
|
|
|
|
2009-05-05 11:10:04 +02:00
|
|
|
# check if pipe2 is there
|
|
|
|
pipe2=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
int pipefd[2];
|
2012-08-20 20:45:08 +02:00
|
|
|
return pipe2(pipefd, O_CLOEXEC);
|
2009-05-05 11:10:04 +02:00
|
|
|
}
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-05-05 11:10:04 +02:00
|
|
|
pipe2=yes
|
|
|
|
fi
|
|
|
|
|
2009-12-02 12:24:42 +01:00
|
|
|
# check if accept4 is there
|
|
|
|
accept4=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
accept4(0, NULL, NULL, SOCK_CLOEXEC);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
accept4=yes
|
|
|
|
fi
|
|
|
|
|
2009-05-16 15:02:41 +02:00
|
|
|
# check if tee/splice is there. vmsplice was added same time.
|
|
|
|
splice=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <limits.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
2011-12-17 09:27:35 +01:00
|
|
|
int len, fd = 0;
|
2009-05-16 15:02:41 +02:00
|
|
|
len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
|
|
|
|
splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-05-16 15:02:41 +02:00
|
|
|
splice=yes
|
|
|
|
fi
|
|
|
|
|
2010-10-11 20:31:15 +02:00
|
|
|
##########################################
|
|
|
|
# signalfd probe
|
|
|
|
signalfd="no"
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <sys/syscall.h>
|
|
|
|
#include <signal.h>
|
|
|
|
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
|
|
|
|
EOF
|
|
|
|
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
signalfd=yes
|
|
|
|
fi
|
|
|
|
|
2009-08-12 14:08:24 +02:00
|
|
|
# check if eventfd is supported
|
|
|
|
eventfd=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/eventfd.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
2011-12-17 09:27:37 +01:00
|
|
|
return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
|
2009-08-12 14:08:24 +02:00
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
eventfd=yes
|
|
|
|
fi
|
|
|
|
|
2009-09-17 19:22:14 +02:00
|
|
|
# check for fallocate
|
|
|
|
fallocate=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <fcntl.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
fallocate(0, 0, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2012-04-04 18:03:15 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-09-17 19:22:14 +02:00
|
|
|
fallocate=yes
|
|
|
|
fi
|
|
|
|
|
2013-01-14 16:26:52 +01:00
|
|
|
# check for fallocate hole punching
|
|
|
|
fallocate_punch_hole=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <linux/falloc.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
fallocate_punch_hole=yes
|
|
|
|
fi
|
|
|
|
|
2011-01-06 12:05:10 +01:00
|
|
|
# check for sync_file_range
|
|
|
|
sync_file_range=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <fcntl.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
sync_file_range(0, 0, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2012-04-04 18:03:15 +02:00
|
|
|
if compile_prog "" "" ; then
|
2011-01-06 12:05:10 +01:00
|
|
|
sync_file_range=yes
|
|
|
|
fi
|
|
|
|
|
2011-01-10 14:11:24 +01:00
|
|
|
# check for linux/fiemap.h and FS_IOC_FIEMAP
|
|
|
|
fiemap=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/ioctl.h>
|
|
|
|
#include <linux/fs.h>
|
|
|
|
#include <linux/fiemap.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
ioctl(0, FS_IOC_FIEMAP, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2012-04-04 18:03:15 +02:00
|
|
|
if compile_prog "" "" ; then
|
2011-01-10 14:11:24 +01:00
|
|
|
fiemap=yes
|
|
|
|
fi
|
|
|
|
|
2009-09-17 19:22:14 +02:00
|
|
|
# check for dup3
|
|
|
|
dup3=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
dup3(0, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2009-11-03 10:54:44 +01:00
|
|
|
if compile_prog "" "" ; then
|
2009-09-17 19:22:14 +02:00
|
|
|
dup3=yes
|
|
|
|
fi
|
|
|
|
|
2013-08-21 17:02:43 +02:00
|
|
|
# check for ppoll support
|
|
|
|
ppoll=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <poll.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
|
|
|
|
ppoll(&pfd, 1, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
ppoll=yes
|
|
|
|
fi
|
|
|
|
|
2013-08-21 17:02:44 +02:00
|
|
|
# check for prctl(PR_SET_TIMERSLACK , ... ) support
|
|
|
|
prctl_pr_set_timerslack=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/prctl.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
prctl_pr_set_timerslack=yes
|
|
|
|
fi
|
|
|
|
|
2011-02-15 19:35:05 +01:00
|
|
|
# check for epoll support
|
|
|
|
epoll=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/epoll.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
epoll_create(0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2012-04-04 18:03:15 +02:00
|
|
|
if compile_prog "" "" ; then
|
2011-02-15 19:35:05 +01:00
|
|
|
epoll=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
# epoll_create1 and epoll_pwait are later additions
|
|
|
|
# so we must check separately for their presence
|
|
|
|
epoll_create1=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/epoll.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
2011-04-26 17:56:40 +02:00
|
|
|
/* Note that we use epoll_create1 as a value, not as
|
|
|
|
* a function being called. This is necessary so that on
|
|
|
|
* old SPARC glibc versions where the function was present in
|
|
|
|
* the library but not declared in the header file we will
|
|
|
|
* fail the configure check. (Otherwise we will get a compiler
|
|
|
|
* warning but not an error, and will proceed to fail the
|
|
|
|
* qemu compile where we compile with -Werror.)
|
|
|
|
*/
|
2012-08-09 22:21:25 +02:00
|
|
|
return (int)(uintptr_t)&epoll_create1;
|
2011-02-15 19:35:05 +01:00
|
|
|
}
|
|
|
|
EOF
|
2012-04-04 18:03:15 +02:00
|
|
|
if compile_prog "" "" ; then
|
2011-02-15 19:35:05 +01:00
|
|
|
epoll_create1=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
epoll_pwait=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/epoll.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
epoll_pwait(0, 0, 0, 0, 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
2012-04-04 18:03:15 +02:00
|
|
|
if compile_prog "" "" ; then
|
2011-02-15 19:35:05 +01:00
|
|
|
epoll_pwait=yes
|
|
|
|
fi
|
|
|
|
|
2013-02-08 08:31:55 +01:00
|
|
|
# check for sendfile support
|
|
|
|
sendfile=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/sendfile.h>
|
|
|
|
|
|
|
|
int main(void)
|
|
|
|
{
|
|
|
|
return sendfile(0, 0, 0, 0);
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
sendfile=yes
|
|
|
|
fi
|
|
|
|
|
2006-04-23 19:57:59 +02:00
|
|
|
# Check if tools are available to build documentation.
|
2009-08-12 18:29:52 +02:00
|
|
|
if test "$docs" != "no" ; then
|
2010-03-04 22:21:02 +01:00
|
|
|
if has makeinfo && has pod2man; then
|
2009-08-12 18:29:52 +02:00
|
|
|
docs=yes
|
2009-08-12 18:29:51 +02:00
|
|
|
else
|
2009-08-12 18:29:52 +02:00
|
|
|
if test "$docs" = "yes" ; then
|
|
|
|
feature_not_found "docs"
|
2009-08-12 18:29:51 +02:00
|
|
|
fi
|
2009-08-12 18:29:52 +02:00
|
|
|
docs=no
|
2009-08-12 18:29:51 +02:00
|
|
|
fi
|
2006-04-23 19:57:59 +02:00
|
|
|
fi
|
|
|
|
|
2009-10-11 12:44:07 +02:00
|
|
|
# Search for bswap_32 function
|
2009-08-03 14:45:58 +02:00
|
|
|
byteswap_h=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <byteswap.h>
|
|
|
|
int main(void) { return bswap_32(0); }
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-08-03 14:45:58 +02:00
|
|
|
byteswap_h=yes
|
|
|
|
fi
|
|
|
|
|
2013-01-05 12:17:38 +01:00
|
|
|
# Search for bswap32 function
|
2009-08-03 14:45:58 +02:00
|
|
|
bswap_h=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/endian.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <machine/bswap.h>
|
|
|
|
int main(void) { return bswap32(0); }
|
|
|
|
EOF
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-08-03 14:45:58 +02:00
|
|
|
bswap_h=yes
|
|
|
|
fi
|
|
|
|
|
2011-10-25 10:24:24 +02:00
|
|
|
##########################################
|
|
|
|
# Do we have libiscsi
|
2012-04-24 08:29:04 +02:00
|
|
|
# We check for iscsi_unmap_sync() to make sure we have a
|
|
|
|
# recent enough version of libiscsi.
|
2011-10-25 10:24:24 +02:00
|
|
|
if test "$libiscsi" != "no" ; then
|
|
|
|
cat > $TMPC << EOF
|
2012-04-24 08:29:04 +02:00
|
|
|
#include <stdio.h>
|
2011-10-25 10:24:24 +02:00
|
|
|
#include <iscsi/iscsi.h>
|
2012-04-24 08:29:04 +02:00
|
|
|
int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; }
|
2011-10-25 10:24:24 +02:00
|
|
|
EOF
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=1.7.0 libiscsi; then
|
2013-02-22 18:14:28 +01:00
|
|
|
libiscsi="yes"
|
2013-08-27 21:09:12 +02:00
|
|
|
libiscsi_cflags=$($pkg_config --cflags libiscsi)
|
|
|
|
libiscsi_libs=$($pkg_config --libs libiscsi)
|
2013-02-22 18:14:28 +01:00
|
|
|
CFLAGS="$CFLAGS $libiscsi_cflags"
|
|
|
|
LIBS="$LIBS $libiscsi_libs"
|
|
|
|
elif compile_prog "" "-liscsi" ; then
|
2011-10-25 10:24:24 +02:00
|
|
|
libiscsi="yes"
|
|
|
|
LIBS="$LIBS -liscsi"
|
|
|
|
else
|
|
|
|
if test "$libiscsi" = "yes" ; then
|
|
|
|
feature_not_found "libiscsi"
|
|
|
|
fi
|
|
|
|
libiscsi="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
2012-09-12 11:06:51 +02:00
|
|
|
##########################################
|
|
|
|
# Do we need libm
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <math.h>
|
|
|
|
int main(void) { return isnan(sin(0.0)); }
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
:
|
|
|
|
elif compile_prog "" "-lm" ; then
|
|
|
|
LIBS="-lm $LIBS"
|
|
|
|
libs_qga="-lm $libs_qga"
|
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "libm check failed"
|
2012-09-12 11:06:51 +02:00
|
|
|
fi
|
|
|
|
|
2008-12-12 21:02:52 +01:00
|
|
|
##########################################
|
|
|
|
# Do we need librt
|
2012-09-12 11:06:51 +02:00
|
|
|
# uClibc provides 2 versions of clock_gettime(), one with realtime
|
|
|
|
# support and one without. This means that the clock_gettime() don't
|
|
|
|
# need -lrt. We still need it for timer_create() so we check for this
|
|
|
|
# function in addition.
|
2008-12-12 21:02:52 +01:00
|
|
|
cat > $TMPC <<EOF
|
|
|
|
#include <signal.h>
|
|
|
|
#include <time.h>
|
2012-09-12 11:06:51 +02:00
|
|
|
int main(void) {
|
|
|
|
timer_create(CLOCK_REALTIME, NULL, NULL);
|
|
|
|
return clock_gettime(CLOCK_REALTIME, NULL);
|
|
|
|
}
|
2008-12-12 21:02:52 +01:00
|
|
|
EOF
|
|
|
|
|
2009-08-03 14:46:03 +02:00
|
|
|
if compile_prog "" "" ; then
|
2009-08-03 14:46:17 +02:00
|
|
|
:
|
2012-09-12 11:06:51 +02:00
|
|
|
# we need pthread for static linking. use previous pthread test result
|
|
|
|
elif compile_prog "" "-lrt $pthread_lib" ; then
|
2009-08-03 14:46:17 +02:00
|
|
|
LIBS="-lrt $LIBS"
|
2012-09-12 11:06:51 +02:00
|
|
|
libs_qga="-lrt $libs_qga"
|
2008-12-12 21:02:52 +01:00
|
|
|
fi
|
|
|
|
|
2009-09-12 14:33:07 +02:00
|
|
|
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
|
2010-09-20 00:50:43 +02:00
|
|
|
"$aix" != "yes" -a "$haiku" != "yes" ; then
|
2009-08-03 14:46:32 +02:00
|
|
|
libs_softmmu="-lutil $libs_softmmu"
|
|
|
|
fi
|
|
|
|
|
2009-09-12 11:58:46 +02:00
|
|
|
##########################################
|
2010-03-24 10:26:51 +01:00
|
|
|
# spice probe
|
|
|
|
if test "$spice" != "no" ; then
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <spice.h>
|
|
|
|
int main(void) { spice_server_new(); return 0; }
|
|
|
|
EOF
|
2011-01-24 13:20:29 +01:00
|
|
|
spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
|
|
|
|
spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=0.12.0 spice-server && \
|
|
|
|
$pkg_config --atleast-version=0.12.3 spice-protocol && \
|
2010-03-24 10:26:51 +01:00
|
|
|
compile_prog "$spice_cflags" "$spice_libs" ; then
|
|
|
|
spice="yes"
|
|
|
|
libs_softmmu="$libs_softmmu $spice_libs"
|
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
|
2012-08-22 10:16:26 +02:00
|
|
|
spice_protocol_version=$($pkg_config --modversion spice-protocol)
|
|
|
|
spice_server_version=$($pkg_config --modversion spice-server)
|
2010-03-24 10:26:51 +01:00
|
|
|
else
|
|
|
|
if test "$spice" = "yes" ; then
|
|
|
|
feature_not_found "spice"
|
|
|
|
fi
|
|
|
|
spice="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
# check for libcacard for smartcard support
|
2012-12-20 20:39:36 +01:00
|
|
|
smartcard_cflags=""
|
|
|
|
# TODO - what's the minimal nss version we support?
|
|
|
|
if test "$smartcard_nss" != "no"; then
|
|
|
|
cat > $TMPC << EOF
|
2012-01-31 20:03:58 +01:00
|
|
|
#include <pk11pub.h>
|
|
|
|
int main(void) { PK11_FreeSlot(0); return 0; }
|
|
|
|
EOF
|
2012-12-20 20:39:36 +01:00
|
|
|
smartcard_includes="-I\$(SRC_PATH)/libcacard"
|
|
|
|
libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
|
|
|
|
libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
|
|
|
|
test_cflags="$libcacard_cflags"
|
|
|
|
# The header files in nss < 3.13.3 have a bug which causes them to
|
|
|
|
# emit a warning. If we're going to compile QEMU with -Werror, then
|
|
|
|
# test that the headers don't have this bug. Otherwise we would pass
|
|
|
|
# the configure test but fail to compile QEMU later.
|
|
|
|
if test "$werror" = "yes"; then
|
|
|
|
test_cflags="-Werror $test_cflags"
|
|
|
|
fi
|
2012-12-20 20:40:35 +01:00
|
|
|
if test -n "$libtool" &&
|
2013-08-27 21:09:13 +02:00
|
|
|
$pkg_config --atleast-version=3.12.8 nss && \
|
2012-12-20 20:39:36 +01:00
|
|
|
compile_prog "$test_cflags" "$libcacard_libs"; then
|
|
|
|
smartcard_nss="yes"
|
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
|
|
|
|
QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
|
|
|
|
libs_softmmu="$libcacard_libs $libs_softmmu"
|
|
|
|
else
|
|
|
|
if test "$smartcard_nss" = "yes"; then
|
|
|
|
feature_not_found "nss"
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
fi
|
2012-12-20 20:39:36 +01:00
|
|
|
smartcard_nss="no"
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-11-30 16:02:11 +01:00
|
|
|
# check for libusb
|
|
|
|
if test "$libusb" != "no" ; then
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
|
2012-11-30 16:02:11 +01:00
|
|
|
libusb="yes"
|
2013-08-27 21:09:12 +02:00
|
|
|
libusb_cflags=$($pkg_config --cflags libusb-1.0)
|
|
|
|
libusb_libs=$($pkg_config --libs libusb-1.0)
|
2012-11-30 16:02:11 +01:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
|
|
|
|
libs_softmmu="$libs_softmmu $libusb_libs"
|
|
|
|
else
|
|
|
|
if test "$libusb" = "yes"; then
|
|
|
|
feature_not_found "libusb"
|
|
|
|
fi
|
|
|
|
libusb="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2011-07-19 11:04:10 +02:00
|
|
|
# check for usbredirparser for usb network redirection support
|
|
|
|
if test "$usb_redir" != "no" ; then
|
2013-08-27 21:09:13 +02:00
|
|
|
if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
|
2011-07-19 11:04:10 +02:00
|
|
|
usb_redir="yes"
|
2013-08-27 21:09:12 +02:00
|
|
|
usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
|
|
|
|
usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
|
2011-07-19 11:04:10 +02:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
|
2012-09-11 20:57:58 +02:00
|
|
|
libs_softmmu="$libs_softmmu $usb_redir_libs"
|
2011-07-19 11:04:10 +02:00
|
|
|
else
|
|
|
|
if test "$usb_redir" = "yes"; then
|
|
|
|
feature_not_found "usb-redir"
|
|
|
|
fi
|
|
|
|
usb_redir="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2013-08-07 17:40:03 +02:00
|
|
|
##########################################
|
|
|
|
# check if we have VSS SDK headers for win
|
|
|
|
|
|
|
|
if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
|
|
|
|
case "$vss_win32_sdk" in
|
|
|
|
"") vss_win32_include="-I$source_path" ;;
|
|
|
|
*\ *) # The SDK is installed in "Program Files" by default, but we cannot
|
|
|
|
# handle path with spaces. So we symlink the headers into ".sdk/vss".
|
|
|
|
vss_win32_include="-I$source_path/.sdk/vss"
|
|
|
|
symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
|
|
|
|
;;
|
|
|
|
*) vss_win32_include="-I$vss_win32_sdk"
|
|
|
|
esac
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#define __MIDL_user_allocate_free_DEFINED__
|
|
|
|
#include <inc/win2003/vss.h>
|
|
|
|
int main(void) { return VSS_CTX_BACKUP; }
|
|
|
|
EOF
|
|
|
|
if compile_prog "$vss_win32_include" "" ; then
|
|
|
|
guest_agent_with_vss="yes"
|
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
|
|
|
|
libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
|
|
|
|
else
|
|
|
|
if test "$vss_win32_sdk" != "" ; then
|
|
|
|
echo "ERROR: Please download and install Microsoft VSS SDK:"
|
|
|
|
echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
|
|
|
|
echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
|
|
|
|
echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
|
|
|
|
echo "ERROR: The headers are extracted in the directory \`inc'."
|
|
|
|
feature_not_found "VSS support"
|
|
|
|
fi
|
|
|
|
guest_agent_with_vss="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
##########################################
|
|
|
|
# lookup Windows platform SDK (if not specified)
|
|
|
|
# The SDK is needed only to build .tlb (type library) file of guest agent
|
|
|
|
# VSS provider from the source. It is usually unnecessary because the
|
|
|
|
# pre-compiled .tlb file is included.
|
|
|
|
|
|
|
|
if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
|
|
|
|
if test -z "$win_sdk"; then
|
|
|
|
programfiles="$PROGRAMFILES"
|
|
|
|
test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
|
|
|
|
if test -n "$programfiles"; then
|
|
|
|
win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
|
|
|
|
else
|
|
|
|
feature_not_found "Windows SDK"
|
|
|
|
fi
|
|
|
|
elif test "$win_sdk" = "no"; then
|
|
|
|
win_sdk=""
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2010-03-24 10:26:51 +01:00
|
|
|
##########################################
|
|
|
|
|
2009-09-20 08:56:26 +02:00
|
|
|
##########################################
|
|
|
|
# check if we have fdatasync
|
|
|
|
|
|
|
|
fdatasync=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <unistd.h>
|
2011-05-30 00:22:48 +02:00
|
|
|
int main(void) {
|
|
|
|
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
|
|
|
|
return fdatasync(0);
|
|
|
|
#else
|
2012-04-06 21:33:20 +02:00
|
|
|
#error Not supported
|
2011-05-30 00:22:48 +02:00
|
|
|
#endif
|
|
|
|
}
|
2009-09-20 08:56:26 +02:00
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
fdatasync=yes
|
|
|
|
fi
|
|
|
|
|
2010-09-25 13:26:05 +02:00
|
|
|
##########################################
|
|
|
|
# check if we have madvise
|
|
|
|
|
|
|
|
madvise=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/mman.h>
|
2010-10-05 21:28:17 +02:00
|
|
|
#include <stddef.h>
|
2010-09-25 13:26:05 +02:00
|
|
|
int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
madvise=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
##########################################
|
|
|
|
# check if we have posix_madvise
|
|
|
|
|
|
|
|
posix_madvise=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/mman.h>
|
2010-10-05 21:28:17 +02:00
|
|
|
#include <stddef.h>
|
2010-09-25 13:26:05 +02:00
|
|
|
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
posix_madvise=yes
|
|
|
|
fi
|
|
|
|
|
2012-10-22 23:33:00 +02:00
|
|
|
##########################################
|
|
|
|
# check if we have usable SIGEV_THREAD_ID
|
|
|
|
|
|
|
|
sigev_thread_id=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <signal.h>
|
|
|
|
int main(void) {
|
|
|
|
struct sigevent ev;
|
|
|
|
ev.sigev_notify = SIGEV_THREAD_ID;
|
|
|
|
ev._sigev_un._tid = 0;
|
|
|
|
asm volatile("" : : "g"(&ev));
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
sigev_thread_id=yes
|
|
|
|
fi
|
|
|
|
|
2010-05-22 18:52:39 +02:00
|
|
|
##########################################
|
|
|
|
# check if trace backend exists
|
|
|
|
|
2012-04-03 20:47:39 +02:00
|
|
|
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend > /dev/null 2> /dev/null
|
2010-05-22 18:52:39 +02:00
|
|
|
if test "$?" -ne 0 ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "invalid trace backend" \
|
|
|
|
"Please choose a supported trace backend."
|
2010-05-22 18:52:39 +02:00
|
|
|
fi
|
|
|
|
|
2010-05-22 22:11:33 +02:00
|
|
|
##########################################
|
|
|
|
# For 'ust' backend, test if ust headers are present
|
|
|
|
if test "$trace_backend" = "ust"; then
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <ust/tracepoint.h>
|
|
|
|
#include <ust/marker.h>
|
|
|
|
int main(void) { return 0; }
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
2012-04-02 14:49:44 +02:00
|
|
|
LIBS="-lust -lurcu-bp $LIBS"
|
2012-04-02 14:49:49 +02:00
|
|
|
libs_qga="-lust -lurcu-bp $libs_qga"
|
2010-05-22 22:11:33 +02:00
|
|
|
else
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Trace backend 'ust' missing libust header files"
|
2010-05-22 22:11:33 +02:00
|
|
|
fi
|
|
|
|
fi
|
2010-11-12 14:20:24 +01:00
|
|
|
|
|
|
|
##########################################
|
|
|
|
# For 'dtrace' backend, test if 'dtrace' command is present
|
|
|
|
if test "$trace_backend" = "dtrace"; then
|
|
|
|
if ! has 'dtrace' ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "dtrace command is not found in PATH $PATH"
|
2010-11-12 14:20:24 +01:00
|
|
|
fi
|
2010-11-12 14:20:25 +01:00
|
|
|
trace_backend_stap="no"
|
|
|
|
if has 'stap' ; then
|
|
|
|
trace_backend_stap="yes"
|
|
|
|
fi
|
2010-11-12 14:20:24 +01:00
|
|
|
fi
|
|
|
|
|
2011-07-11 14:57:43 +02:00
|
|
|
##########################################
|
2012-02-28 12:25:50 +01:00
|
|
|
# check and set a backend for coroutine
|
2011-06-09 19:41:06 +02:00
|
|
|
|
2013-04-08 13:11:27 +02:00
|
|
|
# We prefer ucontext, but it's not always possible. The fallback
|
|
|
|
# is sigcontext. gthread is not selectable except explicitly, because
|
|
|
|
# it is not functional enough to run QEMU proper. (It is occasionally
|
|
|
|
# useful for debugging purposes.) On Windows the only valid backend
|
|
|
|
# is the Windows-specific one.
|
|
|
|
|
|
|
|
ucontext_works=no
|
|
|
|
if test "$darwin" != "yes"; then
|
|
|
|
cat > $TMPC << EOF
|
2011-06-09 19:41:06 +02:00
|
|
|
#include <ucontext.h>
|
2012-02-23 17:20:05 +01:00
|
|
|
#ifdef __stub_makecontext
|
|
|
|
#error Ignoring glibc stub makecontext which will always fail
|
|
|
|
#endif
|
2011-12-17 09:27:29 +01:00
|
|
|
int main(void) { makecontext(0, 0, 0); return 0; }
|
2011-06-09 19:41:06 +02:00
|
|
|
EOF
|
2013-04-08 13:11:27 +02:00
|
|
|
if compile_prog "" "" ; then
|
|
|
|
ucontext_works=yes
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$coroutine" = ""; then
|
|
|
|
if test "$mingw32" = "yes"; then
|
|
|
|
coroutine=win32
|
|
|
|
elif test "$ucontext_works" = "yes"; then
|
|
|
|
coroutine=ucontext
|
|
|
|
else
|
|
|
|
coroutine=sigaltstack
|
2011-06-09 19:41:06 +02:00
|
|
|
fi
|
2012-02-28 12:25:50 +01:00
|
|
|
else
|
2013-04-08 13:11:27 +02:00
|
|
|
case $coroutine in
|
|
|
|
windows)
|
|
|
|
if test "$mingw32" != "yes"; then
|
|
|
|
error_exit "'windows' coroutine backend only valid for Windows"
|
|
|
|
fi
|
|
|
|
# Unfortunately the user visible backend name doesn't match the
|
|
|
|
# coroutine-*.c filename for this case, so we have to adjust it here.
|
|
|
|
coroutine=win32
|
|
|
|
;;
|
|
|
|
ucontext)
|
|
|
|
if test "$ucontext_works" != "yes"; then
|
|
|
|
feature_not_found "ucontext"
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
gthread|sigaltstack)
|
|
|
|
if test "$mingw32" = "yes"; then
|
|
|
|
error_exit "only the 'windows' coroutine backend is valid for Windows"
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
error_exit "unknown coroutine backend $coroutine"
|
|
|
|
;;
|
|
|
|
esac
|
2011-06-09 19:41:06 +02:00
|
|
|
fi
|
|
|
|
|
2013-09-11 16:42:35 +02:00
|
|
|
if test "$coroutine_pool" = ""; then
|
|
|
|
if test "$coroutine" = "gthread"; then
|
|
|
|
coroutine_pool=no
|
|
|
|
else
|
|
|
|
coroutine_pool=yes
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
|
|
|
|
error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
|
|
|
|
fi
|
|
|
|
|
2011-10-12 15:41:24 +02:00
|
|
|
##########################################
|
|
|
|
# check if we have open_by_handle_at
|
|
|
|
|
2012-06-18 22:11:06 +02:00
|
|
|
open_by_handle_at=no
|
2011-10-12 15:41:24 +02:00
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <fcntl.h>
|
2012-06-06 21:35:57 +02:00
|
|
|
#if !defined(AT_EMPTY_PATH)
|
|
|
|
# error missing definition
|
|
|
|
#else
|
2011-12-17 09:27:29 +01:00
|
|
|
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
|
2012-06-06 21:35:57 +02:00
|
|
|
#endif
|
2011-10-12 15:41:24 +02:00
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
open_by_handle_at=yes
|
|
|
|
fi
|
|
|
|
|
2011-10-12 15:41:25 +02:00
|
|
|
########################################
|
|
|
|
# check if we have linux/magic.h
|
|
|
|
|
|
|
|
linux_magic_h=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <linux/magic.h>
|
|
|
|
int main(void) {
|
2011-12-17 09:27:29 +01:00
|
|
|
return 0;
|
2011-10-12 15:41:25 +02:00
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
linux_magic_h=yes
|
|
|
|
fi
|
|
|
|
|
2012-07-30 17:13:07 +02:00
|
|
|
########################################
|
2013-02-22 21:08:51 +01:00
|
|
|
# check whether we can disable warning option with a pragma (this is needed
|
|
|
|
# to silence warnings in the headers of some versions of external libraries).
|
|
|
|
# This test has to be compiled with -Werror as otherwise an unknown pragma is
|
|
|
|
# only a warning.
|
|
|
|
#
|
|
|
|
# If we can't selectively disable warning in the code, disable -Werror so that
|
|
|
|
# the build doesn't fail anyway.
|
|
|
|
|
2012-07-30 17:13:07 +02:00
|
|
|
pragma_disable_unused_but_set=no
|
|
|
|
cat > $TMPC << EOF
|
2013-04-16 13:51:06 +02:00
|
|
|
#pragma GCC diagnostic push
|
2012-07-30 17:13:07 +02:00
|
|
|
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
|
2013-02-22 21:08:51 +01:00
|
|
|
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
|
2013-04-16 13:51:06 +02:00
|
|
|
#pragma GCC diagnostic pop
|
2013-02-22 21:08:51 +01:00
|
|
|
|
2012-07-30 17:13:07 +02:00
|
|
|
int main(void) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "-Werror" "" ; then
|
2013-01-09 10:17:07 +01:00
|
|
|
pragma_diagnostic_available=yes
|
2013-02-22 21:08:51 +01:00
|
|
|
else
|
|
|
|
werror=no
|
2012-07-30 17:13:07 +02:00
|
|
|
fi
|
|
|
|
|
2012-06-29 13:40:27 +02:00
|
|
|
########################################
|
2012-08-10 15:11:45 +02:00
|
|
|
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
|
2012-06-29 13:40:27 +02:00
|
|
|
|
|
|
|
valgrind_h=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <valgrind/valgrind.h>
|
2012-08-10 15:11:45 +02:00
|
|
|
#include <valgrind/memcheck.h>
|
2012-06-29 13:40:27 +02:00
|
|
|
int main(void) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
valgrind_h=yes
|
|
|
|
fi
|
|
|
|
|
2012-05-23 20:48:04 +02:00
|
|
|
########################################
|
|
|
|
# check if environ is declared
|
|
|
|
|
|
|
|
has_environ=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <unistd.h>
|
|
|
|
int main(void) {
|
2012-08-09 22:21:25 +02:00
|
|
|
environ = 0;
|
2012-05-23 20:48:04 +02:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
has_environ=yes
|
|
|
|
fi
|
|
|
|
|
2012-12-28 23:17:02 +01:00
|
|
|
########################################
|
|
|
|
# check if cpuid.h is usable.
|
|
|
|
|
|
|
|
cpuid_h=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <cpuid.h>
|
|
|
|
int main(void) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
cpuid_h=yes
|
|
|
|
fi
|
|
|
|
|
2013-02-16 21:46:59 +01:00
|
|
|
########################################
|
|
|
|
# check if __[u]int128_t is usable.
|
|
|
|
|
|
|
|
int128=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
__int128_t a;
|
|
|
|
__uint128_t b;
|
|
|
|
int main (void) {
|
|
|
|
a = a + b;
|
|
|
|
b = a * b;
|
2013-06-21 15:01:31 +02:00
|
|
|
a = a * a;
|
2013-02-16 21:46:59 +01:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
int128=yes
|
|
|
|
fi
|
2012-12-28 23:17:02 +01:00
|
|
|
|
2013-02-18 18:11:15 +01:00
|
|
|
########################################
|
|
|
|
# check if getauxval is available.
|
|
|
|
|
|
|
|
getauxval=no
|
|
|
|
cat > $TMPC << EOF
|
|
|
|
#include <sys/auxv.h>
|
|
|
|
int main(void) {
|
|
|
|
return getauxval(AT_HWCAP) == 0;
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
if compile_prog "" "" ; then
|
|
|
|
getauxval=yes
|
|
|
|
fi
|
|
|
|
|
2010-05-22 22:11:33 +02:00
|
|
|
##########################################
|
2009-08-03 14:45:59 +02:00
|
|
|
# End of CC checks
|
|
|
|
# After here, no more $cc or $ld runs
|
|
|
|
|
2012-05-01 20:45:39 +02:00
|
|
|
if test "$gcov" = "yes" ; then
|
|
|
|
CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
|
|
|
|
LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
|
|
|
|
elif test "$debug" = "no" ; then
|
2013-09-05 12:54:49 +02:00
|
|
|
CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
|
2009-08-03 14:45:59 +02:00
|
|
|
fi
|
2009-09-30 01:10:55 +02:00
|
|
|
|
2012-05-01 20:45:39 +02:00
|
|
|
|
2009-12-09 19:59:36 +01:00
|
|
|
# Disable zero malloc errors for official releases unless explicitly told to
|
|
|
|
# enable/disable
|
|
|
|
if test -z "$zero_malloc" ; then
|
|
|
|
if test "$z_version" = "50" ; then
|
|
|
|
zero_malloc="no"
|
|
|
|
else
|
|
|
|
zero_malloc="yes"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-07-18 16:10:18 +02:00
|
|
|
# Now we've finished running tests it's OK to add -Werror to the compiler flags
|
|
|
|
if test "$werror" = "yes"; then
|
|
|
|
QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
|
|
|
|
fi
|
|
|
|
|
2009-08-03 14:45:59 +02:00
|
|
|
if test "$solaris" = "no" ; then
|
|
|
|
if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
|
2009-08-03 14:46:00 +02:00
|
|
|
LDFLAGS="-Wl,--warn-common $LDFLAGS"
|
2009-08-03 14:45:59 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-03-29 10:55:18 +02:00
|
|
|
# test if pod2man has --utf8 option
|
|
|
|
if pod2man --help | grep -q utf8; then
|
|
|
|
POD2MAN="pod2man --utf8"
|
|
|
|
else
|
|
|
|
POD2MAN="pod2man"
|
|
|
|
fi
|
|
|
|
|
2010-09-19 10:36:34 +02:00
|
|
|
# Use ASLR, no-SEH and DEP if available
|
|
|
|
if test "$mingw32" = "yes" ; then
|
|
|
|
for flag in --dynamicbase --no-seh --nxcompat; do
|
|
|
|
if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
|
|
|
|
LDFLAGS="-Wl,$flag $LDFLAGS"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
2012-04-18 21:55:39 +02:00
|
|
|
qemu_confdir=$sysconfdir$confsuffix
|
2012-04-18 21:55:49 +02:00
|
|
|
qemu_datadir=$datadir$confsuffix
|
2013-02-20 14:43:24 +01:00
|
|
|
qemu_localedir="$datadir/locale"
|
2010-05-26 16:08:20 +02:00
|
|
|
|
2012-09-10 13:26:29 +02:00
|
|
|
tools=""
|
|
|
|
if test "$want_tools" = "yes" ; then
|
2010-05-26 16:08:29 +02:00
|
|
|
tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
|
2012-09-10 13:26:29 +02:00
|
|
|
if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
|
|
|
|
tools="qemu-nbd\$(EXESUF) $tools"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test "$softmmu" = yes ; then
|
2012-02-24 09:30:42 +01:00
|
|
|
if test "$virtfs" != no ; then
|
2012-05-01 01:12:02 +02:00
|
|
|
if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
|
|
|
|
virtfs=yes
|
|
|
|
tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
|
|
|
|
else
|
|
|
|
if test "$virtfs" = yes; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
|
2012-02-24 09:30:42 +01:00
|
|
|
fi
|
2012-05-01 01:12:03 +02:00
|
|
|
virtfs=no
|
2012-05-01 01:12:02 +02:00
|
|
|
fi
|
2011-12-14 09:28:42 +01:00
|
|
|
fi
|
2013-07-31 12:22:07 +02:00
|
|
|
fi
|
|
|
|
if [ "$guest_agent" != "no" ]; then
|
qemu-ga: Add Windows VSS provider and requester as DLL
Adds VSS provider and requester as a qga-vss.dll, which is loaded by
Windows VSS service as well as by qemu-ga.
"provider.cpp" implements a basic stub of a software VSS provider.
Currently, this module only relays a frozen event from VSS service to the
agent, and thaw event from the agent to VSS service, to block VSS process
to keep the system frozen while snapshots are taken at the host.
To register the provider to the guest system as COM+ application, the type
library (.tlb) for qga-vss.dll is required. To build it from COM IDL (.idl),
VisualC++, MIDL and stdole2.tlb in Windows SDK are required. This patch also
adds pre-compiled .tlb file in the repository in order to enable
cross-compile qemu-ga.exe for Windows with VSS support.
"requester.cpp" provides the VSS requester to kick the VSS snapshot process.
Qemu-ga.exe works without the DLL, although fsfreeze features are disabled.
These functions are only supported in Windows 2003 or later. In older
systems, fsfreeze features are disabled.
In several versions of Windows which don't support attribute
VSS_VOLSNAP_ATTR_NO_AUTORECOVERY, DoSnapshotSet fails with error
VSS_E_OBJECT_NOT_FOUND. In this patch, we just ignore this error.
To solve this fundamentally, we need a framework to handle mount writable
snapshot on guests, which is required by VSS auto-recovery feature
(cleanup phase after a snapshot is taken).
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2013-08-07 17:40:18 +02:00
|
|
|
if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
|
2011-07-20 22:19:37 +02:00
|
|
|
tools="qemu-ga\$(EXESUF) $tools"
|
qemu-ga: Add Windows VSS provider and requester as DLL
Adds VSS provider and requester as a qga-vss.dll, which is loaded by
Windows VSS service as well as by qemu-ga.
"provider.cpp" implements a basic stub of a software VSS provider.
Currently, this module only relays a frozen event from VSS service to the
agent, and thaw event from the agent to VSS service, to block VSS process
to keep the system frozen while snapshots are taken at the host.
To register the provider to the guest system as COM+ application, the type
library (.tlb) for qga-vss.dll is required. To build it from COM IDL (.idl),
VisualC++, MIDL and stdole2.tlb in Windows SDK are required. This patch also
adds pre-compiled .tlb file in the repository in order to enable
cross-compile qemu-ga.exe for Windows with VSS support.
"requester.cpp" provides the VSS requester to kick the VSS snapshot process.
Qemu-ga.exe works without the DLL, although fsfreeze features are disabled.
These functions are only supported in Windows 2003 or later. In older
systems, fsfreeze features are disabled.
In several versions of Windows which don't support attribute
VSS_VOLSNAP_ATTR_NO_AUTORECOVERY, DoSnapshotSet fails with error
VSS_E_OBJECT_NOT_FOUND. In this patch, we just ignore this error.
To solve this fundamentally, we need a framework to handle mount writable
snapshot on guests, which is required by VSS auto-recovery feature
(cleanup phase after a snapshot is taken).
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2013-08-07 17:40:18 +02:00
|
|
|
if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
|
|
|
|
tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
|
|
|
|
fi
|
2013-07-31 12:22:07 +02:00
|
|
|
guest_agent=yes
|
|
|
|
elif [ "$guest_agent" != yes ]; then
|
|
|
|
guest_agent=no
|
|
|
|
else
|
|
|
|
error_exit "Guest agent is not supported on this platform"
|
2010-05-26 16:08:29 +02:00
|
|
|
fi
|
2012-05-29 11:40:24 +02:00
|
|
|
fi
|
2010-05-26 16:08:29 +02:00
|
|
|
|
|
|
|
# Mac OS X ships with a broken assembler
|
|
|
|
roms=
|
|
|
|
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
|
|
|
|
"$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
|
|
|
|
"$softmmu" = yes ; then
|
|
|
|
roms="optionrom"
|
|
|
|
fi
|
2011-05-01 18:23:56 +02:00
|
|
|
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
|
2011-04-01 06:15:23 +02:00
|
|
|
roms="$roms spapr-rtas"
|
|
|
|
fi
|
2010-05-26 16:08:29 +02:00
|
|
|
|
2013-04-23 03:23:03 +02:00
|
|
|
if test "$cpu" = "s390x" ; then
|
|
|
|
roms="$roms s390-ccw"
|
|
|
|
fi
|
|
|
|
|
2013-06-22 04:10:16 +02:00
|
|
|
# Probe for the need for relocating the user-only binary.
|
|
|
|
if test "$pie" = "no" ; then
|
|
|
|
textseg_addr=
|
|
|
|
case "$cpu" in
|
2013-08-20 21:20:05 +02:00
|
|
|
arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64 | x32)
|
2013-06-22 04:10:16 +02:00
|
|
|
textseg_addr=0x60000000
|
|
|
|
;;
|
|
|
|
mips)
|
|
|
|
textseg_addr=0x400000
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
if [ -n "$textseg_addr" ]; then
|
|
|
|
cat > $TMPC <<EOF
|
|
|
|
int main(void) { return 0; }
|
|
|
|
EOF
|
|
|
|
textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
|
|
|
|
if ! compile_prog "" "$textseg_ldflags"; then
|
|
|
|
# In case ld does not support -Ttext-segment, edit the default linker
|
|
|
|
# script via sed to set the .text start addr. This is needed on FreeBSD
|
|
|
|
# at least.
|
|
|
|
$ld --verbose | sed \
|
|
|
|
-e '1,/==================================================/d' \
|
|
|
|
-e '/==================================================/,$d' \
|
|
|
|
-e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
|
|
|
|
-e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
|
|
|
|
textseg_ldflags="-Wl,-T../config-host.ld"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2012-11-07 11:06:23 +01:00
|
|
|
# add pixman flags after all config tests are done
|
2013-04-18 06:47:31 +02:00
|
|
|
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags $fdt_cflags"
|
2012-11-07 11:06:23 +01:00
|
|
|
libs_softmmu="$libs_softmmu $pixman_libs"
|
|
|
|
|
2003-06-09 21:53:12 +02:00
|
|
|
echo "Install prefix $prefix"
|
2012-04-18 21:55:37 +02:00
|
|
|
echo "BIOS directory `eval echo $qemu_datadir`"
|
2010-05-26 16:08:23 +02:00
|
|
|
echo "binary directory `eval echo $bindir`"
|
2011-05-15 11:08:59 +02:00
|
|
|
echo "library directory `eval echo $libdir`"
|
2012-06-06 23:11:00 +02:00
|
|
|
echo "libexec directory `eval echo $libexecdir`"
|
2011-06-27 11:58:20 +02:00
|
|
|
echo "include directory `eval echo $includedir`"
|
2010-06-10 00:14:02 +02:00
|
|
|
echo "config directory `eval echo $sysconfdir`"
|
2004-04-02 22:55:59 +02:00
|
|
|
if test "$mingw32" = "no" ; then
|
2013-05-18 06:31:50 +02:00
|
|
|
echo "local state directory `eval echo $local_statedir`"
|
2010-05-26 16:08:23 +02:00
|
|
|
echo "Manual directory `eval echo $mandir`"
|
2003-06-09 21:53:12 +02:00
|
|
|
echo "ELF interp prefix $interp_prefix"
|
2013-05-18 06:31:50 +02:00
|
|
|
else
|
|
|
|
echo "local state directory queried at runtime"
|
2013-08-07 17:40:03 +02:00
|
|
|
echo "Windows SDK $win_sdk"
|
2004-04-02 22:55:59 +02:00
|
|
|
fi
|
2003-10-01 02:13:48 +02:00
|
|
|
echo "Source path $source_path"
|
2003-06-09 21:53:12 +02:00
|
|
|
echo "C compiler $cc"
|
2005-07-23 16:27:54 +02:00
|
|
|
echo "Host C compiler $host_cc"
|
2013-08-07 17:39:36 +02:00
|
|
|
echo "C++ compiler $cxx"
|
2012-08-11 23:34:40 +02:00
|
|
|
echo "Objective-C compiler $objcc"
|
2009-08-03 14:46:01 +02:00
|
|
|
echo "CFLAGS $CFLAGS"
|
2009-08-03 14:46:21 +02:00
|
|
|
echo "QEMU_CFLAGS $QEMU_CFLAGS"
|
2009-08-03 14:46:01 +02:00
|
|
|
echo "LDFLAGS $LDFLAGS"
|
2003-06-09 21:53:12 +02:00
|
|
|
echo "make $make"
|
2006-04-17 15:57:12 +02:00
|
|
|
echo "install $install"
|
2011-07-22 23:08:09 +02:00
|
|
|
echo "python $python"
|
2011-09-02 22:53:28 +02:00
|
|
|
if test "$slirp" = "yes" ; then
|
|
|
|
echo "smbd $smbd"
|
|
|
|
fi
|
2003-06-09 21:53:12 +02:00
|
|
|
echo "host CPU $cpu"
|
2003-06-15 22:25:43 +02:00
|
|
|
echo "host big endian $bigendian"
|
2003-08-10 23:36:04 +02:00
|
|
|
echo "target list $target_list"
|
2009-04-16 11:58:41 +02:00
|
|
|
echo "tcg debug enabled $debug_tcg"
|
2003-06-09 21:53:12 +02:00
|
|
|
echo "gprof enabled $gprof"
|
2008-10-07 21:16:17 +02:00
|
|
|
echo "sparse enabled $sparse"
|
2009-04-05 19:41:02 +02:00
|
|
|
echo "strip binaries $strip_opt"
|
2006-02-08 23:39:17 +01:00
|
|
|
echo "profiler $profiler"
|
2003-06-09 21:53:12 +02:00
|
|
|
echo "static build $static"
|
2007-11-11 21:17:03 +01:00
|
|
|
echo "-Werror enabled $werror"
|
2005-03-01 22:37:28 +01:00
|
|
|
if test "$darwin" = "yes" ; then
|
|
|
|
echo "Cocoa support $cocoa"
|
|
|
|
fi
|
2012-09-25 16:04:58 +02:00
|
|
|
echo "pixman $pixman"
|
2003-08-10 23:36:04 +02:00
|
|
|
echo "SDL support $sdl"
|
2013-02-20 14:43:20 +01:00
|
|
|
echo "GTK support $gtk"
|
2008-02-10 17:33:14 +01:00
|
|
|
echo "curses support $curses"
|
2009-05-11 17:41:42 +02:00
|
|
|
echo "curl support $curl"
|
2004-04-01 01:37:16 +02:00
|
|
|
echo "mingw32 support $mingw32"
|
2008-06-25 23:04:05 +02:00
|
|
|
echo "Audio drivers $audio_drv_list"
|
2013-05-29 13:35:40 +02:00
|
|
|
echo "Block whitelist (rw) $block_drv_rw_whitelist"
|
|
|
|
echo "Block whitelist (ro) $block_drv_ro_whitelist"
|
2008-06-23 20:33:30 +02:00
|
|
|
echo "Mixer emulation $mixemu"
|
2012-02-24 09:30:42 +01:00
|
|
|
echo "VirtFS support $virtfs"
|
2011-03-16 13:33:36 +01:00
|
|
|
echo "VNC support $vnc"
|
|
|
|
if test "$vnc" = "yes" ; then
|
|
|
|
echo "VNC TLS support $vnc_tls"
|
|
|
|
echo "VNC SASL support $vnc_sasl"
|
|
|
|
echo "VNC JPEG support $vnc_jpeg"
|
|
|
|
echo "VNC PNG support $vnc_png"
|
2013-01-21 11:04:44 +01:00
|
|
|
echo "VNC WS support $vnc_ws"
|
2011-03-16 13:33:36 +01:00
|
|
|
fi
|
2007-04-16 20:27:06 +02:00
|
|
|
if test -n "$sparc_cpu"; then
|
|
|
|
echo "Target Sparc Arch $sparc_cpu"
|
|
|
|
fi
|
2009-04-22 17:19:10 +02:00
|
|
|
echo "xen support $xen"
|
2008-04-08 08:01:02 +02:00
|
|
|
echo "brlapi support $brlapi"
|
2009-08-12 18:29:50 +02:00
|
|
|
echo "bluez support $bluez"
|
2009-08-12 18:29:52 +02:00
|
|
|
echo "Documentation $docs"
|
2006-05-14 13:30:38 +02:00
|
|
|
[ ! -z "$uname_release" ] && \
|
|
|
|
echo "uname -r $uname_release"
|
2009-07-17 13:48:08 +02:00
|
|
|
echo "GUEST_BASE $guest_base"
|
2011-11-15 19:12:17 +01:00
|
|
|
echo "PIE $pie"
|
2008-07-19 11:56:24 +02:00
|
|
|
echo "vde support $vde"
|
2009-08-20 16:58:35 +02:00
|
|
|
echo "Linux AIO support $linux_aio"
|
2010-06-14 22:34:41 +02:00
|
|
|
echo "ATTR/XATTR support $attr"
|
2008-11-27 16:45:16 +01:00
|
|
|
echo "Install blobs $blobs"
|
2009-08-12 18:29:56 +02:00
|
|
|
echo "KVM support $kvm"
|
2013-07-22 16:01:54 +02:00
|
|
|
echo "RDMA support $rdma"
|
2011-10-19 07:07:18 +02:00
|
|
|
echo "TCG interpreter $tcg_interpreter"
|
2008-12-16 11:43:48 +01:00
|
|
|
echo "fdt support $fdt"
|
2009-04-07 20:43:28 +02:00
|
|
|
echo "preadv support $preadv"
|
2009-09-20 08:56:26 +02:00
|
|
|
echo "fdatasync $fdatasync"
|
2010-09-25 13:26:05 +02:00
|
|
|
echo "madvise $madvise"
|
|
|
|
echo "posix_madvise $posix_madvise"
|
2012-10-22 23:33:00 +02:00
|
|
|
echo "sigev_thread_id $sigev_thread_id"
|
2009-10-01 20:10:37 +02:00
|
|
|
echo "uuid support $uuid"
|
2012-01-26 15:42:26 +01:00
|
|
|
echo "libcap-ng support $cap_ng"
|
2010-03-17 12:08:17 +01:00
|
|
|
echo "vhost-net support $vhost_net"
|
vhost-scsi: new device supporting the tcm_vhost Linux kernel module
The WWPN specified in configfs is passed to "-device vhost-scsi-pci".
The tgpt field of the SET_ENDPOINT ioctl is obsolete now, so it is not
available from the QEMU command-line. Instead, I hardcode it to zero.
Changes in Patch-v2:
- Add vhost_scsi_get_features() in order to determine feature bits
supports by host kernel (mst + nab)
- Re-enable usage of DEFINE_VIRTIO_COMMON_FEATURES, and allow
EVENT_IDX to be disabled by host in vhost_scsi_get_features()
- Drop unused hotplug bit in DEFINE_VHOST_SCSI_PROPERTIES
Changes in Patch-v1:
- Set event_idx=off by default (nab, thanks asias)
- Disable hotplug feature bit for v3.9 tcm_vhost kernel code, need to
re-enable in v3.10 (nab)
- Update to latest qemu.git/master HEAD
Changes in WIP-V3:
- Drop ioeventfd vhost_scsi_properties (asias, thanks stefanha)
- Add CONFIG_VHOST_SCSI (asias, thanks stefanha)
- Add hotplug feature bit
Changes in WIP-V2:
- Add backend guest masking support (nab)
- Bump ABI_VERSION to 1 (nab)
- Set up set_guest_notifiers (asias)
- Set up vs->dev.vq_index (asias)
- Drop vs->vs.vdev.{set,clear}_vhost_endpoint (asias)
- Drop VIRTIO_CONFIG_S_DRIVER check in vhost_scsi_set_status (asias)
Howto:
Use the latest seabios, at least commit b44a7be17b
git clone git://git.seabios.org/seabios.git
make
cp out/bios.bin /usr/share/qemu/bios.bin
qemu -device vhost-scsi-pci,wwpn=naa.6001405bd4e8476d,event_idx=off
...
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Asias He <asias@redhat.com>
[ Rebase on top of VirtIOSCSICommon patch, fix bugs in feature
negotiation and irqfd masking - Paolo ]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2013-03-29 02:08:16 +01:00
|
|
|
echo "vhost-scsi support $vhost_scsi"
|
2010-05-22 18:52:39 +02:00
|
|
|
echo "Trace backend $trace_backend"
|
2010-07-13 10:26:32 +02:00
|
|
|
echo "Trace output file $trace_file-<pid>"
|
2012-08-22 10:16:26 +02:00
|
|
|
echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
|
2010-12-06 20:53:01 +01:00
|
|
|
echo "rbd support $rbd"
|
2010-12-17 11:41:15 +01:00
|
|
|
echo "xfsctl support $xfs"
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
echo "nss used $smartcard_nss"
|
2012-11-30 16:02:11 +01:00
|
|
|
echo "libusb $libusb"
|
2011-07-19 11:04:10 +02:00
|
|
|
echo "usb net redir $usb_redir"
|
2013-03-06 20:23:32 +01:00
|
|
|
echo "GLX support $glx"
|
2011-10-25 10:24:24 +02:00
|
|
|
echo "libiscsi support $libiscsi"
|
2011-08-01 21:52:57 +02:00
|
|
|
echo "build guest agent $guest_agent"
|
2013-08-07 17:40:03 +02:00
|
|
|
echo "QGA VSS support $guest_agent_with_vss"
|
2012-08-14 23:44:05 +02:00
|
|
|
echo "seccomp support $seccomp"
|
2013-04-08 13:11:27 +02:00
|
|
|
echo "coroutine backend $coroutine"
|
2013-09-11 16:42:35 +02:00
|
|
|
echo "coroutine pool $coroutine_pool"
|
2012-09-24 11:12:45 +02:00
|
|
|
echo "GlusterFS support $glusterfs"
|
2012-11-14 15:04:15 +01:00
|
|
|
echo "virtio-blk-data-plane $virtio_blk_data_plane"
|
2012-05-01 20:45:39 +02:00
|
|
|
echo "gcov $gcov_tool"
|
|
|
|
echo "gcov enabled $gcov"
|
2013-02-27 18:47:52 +01:00
|
|
|
echo "TPM support $tpm"
|
2013-04-09 16:30:53 +02:00
|
|
|
echo "libssh2 support $libssh2"
|
2013-03-18 16:37:50 +01:00
|
|
|
echo "TPM passthrough $tpm_passthrough"
|
2013-05-10 14:16:40 +02:00
|
|
|
echo "QOM debugging $qom_cast_debug"
|
2004-04-01 01:37:16 +02:00
|
|
|
|
2011-07-29 22:40:45 +02:00
|
|
|
if test "$sdl_too_old" = "yes"; then
|
2005-03-01 23:30:41 +01:00
|
|
|
echo "-> Your SDL version is too old - please upgrade to have SDL support"
|
2004-04-22 02:02:08 +02:00
|
|
|
fi
|
2003-03-07 00:23:54 +01:00
|
|
|
|
2009-07-16 18:34:18 +02:00
|
|
|
config_host_mak="config-host.mak"
|
|
|
|
|
2013-01-01 18:33:44 +01:00
|
|
|
echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
|
|
|
|
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "# Automatically generated by configure - do not modify" > $config_host_mak
|
|
|
|
printf "# Configured with:" >> $config_host_mak
|
|
|
|
printf " '%s'" "$0" "$@" >> $config_host_mak
|
|
|
|
echo >> $config_host_mak
|
|
|
|
|
2010-10-21 10:18:35 +02:00
|
|
|
echo all: >> $config_host_mak
|
2010-05-26 16:08:24 +02:00
|
|
|
echo "prefix=$prefix" >> $config_host_mak
|
|
|
|
echo "bindir=$bindir" >> $config_host_mak
|
2011-05-15 11:08:59 +02:00
|
|
|
echo "libdir=$libdir" >> $config_host_mak
|
2012-06-06 23:11:00 +02:00
|
|
|
echo "libexecdir=$libexecdir" >> $config_host_mak
|
2011-06-27 11:58:20 +02:00
|
|
|
echo "includedir=$includedir" >> $config_host_mak
|
2010-05-26 16:08:24 +02:00
|
|
|
echo "mandir=$mandir" >> $config_host_mak
|
|
|
|
echo "sysconfdir=$sysconfdir" >> $config_host_mak
|
2012-04-18 21:55:42 +02:00
|
|
|
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
|
2012-04-18 21:55:46 +02:00
|
|
|
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
|
|
|
|
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
|
2013-05-18 06:31:50 +02:00
|
|
|
if test "$mingw32" = "no" ; then
|
|
|
|
echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
|
|
|
|
fi
|
2012-10-21 20:52:54 +02:00
|
|
|
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
|
2013-01-04 10:15:53 +01:00
|
|
|
echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
|
|
|
|
echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
|
2013-02-20 14:43:24 +01:00
|
|
|
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
|
2013-04-17 16:26:44 +02:00
|
|
|
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
|
2009-07-27 16:12:49 +02:00
|
|
|
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "ARCH=$ARCH" >> $config_host_mak
|
2013-04-17 16:26:43 +02:00
|
|
|
|
|
|
|
case "$cpu" in
|
2013-08-20 21:20:05 +02:00
|
|
|
arm|i386|x86_64|x32|ppc|aarch64)
|
2013-04-17 16:26:43 +02:00
|
|
|
# The TCG interpreter currently does not support ld/st optimization.
|
|
|
|
if test "$tcg_interpreter" = "no" ; then
|
|
|
|
echo "CONFIG_QEMU_LDST_OPTIMIZATION=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
2009-04-13 20:45:38 +02:00
|
|
|
if test "$debug_tcg" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
|
2009-04-13 20:45:38 +02:00
|
|
|
fi
|
2009-04-05 19:41:02 +02:00
|
|
|
if test "$strip_opt" = "yes" ; then
|
2010-08-05 02:21:34 +02:00
|
|
|
echo "STRIP=${strip}" >> $config_host_mak
|
2009-04-05 19:41:02 +02:00
|
|
|
fi
|
2003-03-07 00:23:54 +01:00
|
|
|
if test "$bigendian" = "yes" ; then
|
2009-07-27 16:13:06 +02:00
|
|
|
echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
|
2003-08-10 23:36:04 +02:00
|
|
|
fi
|
2004-04-01 01:37:16 +02:00
|
|
|
if test "$mingw32" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_WIN32=y" >> $config_host_mak
|
2010-09-26 18:07:57 +02:00
|
|
|
rc_version=`cat $source_path/VERSION`
|
|
|
|
version_major=${rc_version%%.*}
|
|
|
|
rc_version=${rc_version#*.}
|
|
|
|
version_minor=${rc_version%%.*}
|
|
|
|
rc_version=${rc_version#*.}
|
|
|
|
version_subminor=${rc_version%%.*}
|
|
|
|
version_micro=0
|
|
|
|
echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
|
|
|
|
echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
|
2013-08-07 17:40:03 +02:00
|
|
|
if test "$guest_agent_with_vss" = "yes" ; then
|
|
|
|
echo "CONFIG_QGA_VSS=y" >> $config_host_mak
|
|
|
|
echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
|
|
|
|
fi
|
2007-02-27 22:04:49 +01:00
|
|
|
else
|
2009-07-27 16:13:07 +02:00
|
|
|
echo "CONFIG_POSIX=y" >> $config_host_mak
|
2009-10-22 18:49:11 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$linux" = "yes" ; then
|
|
|
|
echo "CONFIG_LINUX=y" >> $config_host_mak
|
2004-04-01 01:37:16 +02:00
|
|
|
fi
|
2008-08-15 20:33:42 +02:00
|
|
|
|
2004-07-05 23:25:26 +02:00
|
|
|
if test "$darwin" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_DARWIN=y" >> $config_host_mak
|
2004-07-05 23:25:26 +02:00
|
|
|
fi
|
2008-11-18 02:42:22 +01:00
|
|
|
|
|
|
|
if test "$aix" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_AIX=y" >> $config_host_mak
|
2008-11-18 02:42:22 +01:00
|
|
|
fi
|
|
|
|
|
2006-04-26 00:36:06 +02:00
|
|
|
if test "$solaris" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_SOLARIS=y" >> $config_host_mak
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
|
2007-04-01 20:54:44 +02:00
|
|
|
if test "$needs_libsunmath" = "yes" ; then
|
2009-07-27 16:13:23 +02:00
|
|
|
echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
|
2007-04-01 20:54:44 +02:00
|
|
|
fi
|
2006-04-26 00:36:06 +02:00
|
|
|
fi
|
2010-09-20 00:50:43 +02:00
|
|
|
if test "$haiku" = "yes" ; then
|
|
|
|
echo "CONFIG_HAIKU=y" >> $config_host_mak
|
|
|
|
fi
|
2003-08-10 23:36:04 +02:00
|
|
|
if test "$static" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_STATIC=y" >> $config_host_mak
|
2003-03-07 00:23:54 +01:00
|
|
|
fi
|
2011-07-29 22:40:45 +02:00
|
|
|
if test "$profiler" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_PROFILER=y" >> $config_host_mak
|
2006-02-08 23:39:17 +01:00
|
|
|
fi
|
2004-04-22 01:27:19 +02:00
|
|
|
if test "$slirp" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_SLIRP=y" >> $config_host_mak
|
2011-09-02 22:53:28 +02:00
|
|
|
echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
|
2004-04-22 01:27:19 +02:00
|
|
|
fi
|
2008-07-19 11:56:24 +02:00
|
|
|
if test "$vde" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_VDE=y" >> $config_host_mak
|
2008-07-19 11:56:24 +02:00
|
|
|
fi
|
2012-01-26 15:42:26 +01:00
|
|
|
if test "$cap_ng" = "yes" ; then
|
|
|
|
echo "CONFIG_LIBCAP=y" >> $config_host_mak
|
|
|
|
fi
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
|
2008-06-25 23:04:05 +02:00
|
|
|
for drv in $audio_drv_list; do
|
2012-03-27 19:23:53 +02:00
|
|
|
def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "$def=y" >> $config_host_mak
|
2008-07-02 20:13:46 +02:00
|
|
|
if test "$drv" = "fmod"; then
|
2009-07-27 16:12:47 +02:00
|
|
|
echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
|
2008-06-25 23:04:05 +02:00
|
|
|
fi
|
|
|
|
done
|
2009-08-03 14:46:59 +02:00
|
|
|
if test "$audio_pt_int" = "yes" ; then
|
|
|
|
echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
|
|
|
|
fi
|
2009-10-09 23:13:41 +02:00
|
|
|
if test "$audio_win_int" = "yes" ; then
|
|
|
|
echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
|
|
|
|
fi
|
2013-05-29 13:35:40 +02:00
|
|
|
echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
|
|
|
|
echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
|
2008-06-23 20:33:30 +02:00
|
|
|
if test "$mixemu" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_MIXEMU=y" >> $config_host_mak
|
2008-06-23 20:33:30 +02:00
|
|
|
fi
|
2011-03-16 13:33:36 +01:00
|
|
|
if test "$vnc" = "yes" ; then
|
|
|
|
echo "CONFIG_VNC=y" >> $config_host_mak
|
|
|
|
fi
|
2007-08-25 03:37:51 +02:00
|
|
|
if test "$vnc_tls" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_VNC_TLS=y" >> $config_host_mak
|
2007-08-25 03:37:51 +02:00
|
|
|
fi
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
if test "$vnc_sasl" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_VNC_SASL=y" >> $config_host_mak
|
Add SASL authentication support ("Daniel P. Berrange")
This patch adds the new SASL authentication protocol to the VNC server.
It is enabled by setting the 'sasl' flag when launching VNC. SASL can
optionally provide encryption via its SSF layer, if a suitable mechanism
is configured (eg, GSSAPI/Kerberos, or Digest-MD5). If an SSF layer is
not available, then it should be combined with the x509 VNC authentication
protocol which provides encryption.
eg, if using GSSAPI
qemu -vnc localhost:1,sasl
eg if using TLS/x509 for encryption
qemu -vnc localhost:1,sasl,tls,x509
By default the Cyrus SASL library will look for its configuration in
the file /etc/sasl2/qemu.conf. For non-root users, this can be overridden
by setting the SASL_CONF_PATH environment variable, eg to make it look in
$HOME/.sasl2. NB unprivileged users may not have access to the full range
of SASL mechanisms, since some of them require some administrative privileges
to configure. The patch includes an example SASL configuration file which
illustrates config for GSSAPI and Digest-MD5, though it should be noted that
the latter is not really considered secure any more.
Most of the SASL authentication code is located in a separate source file,
vnc-auth-sasl.c. The main vnc.c file only contains minimal integration
glue, specifically parsing of command line flags / setup, and calls to
start the SASL auth process, to do encoding/decoding for data.
There are several possible stacks for reading & writing of data, depending
on the combo of VNC authentication methods in use
- Clear. read/write straight to socket
- TLS. read/write via GNUTLS helpers
- SASL. encode/decode via SASL SSF layer, then read/write to socket
- SASL+TLS. encode/decode via SASL SSF layer, then read/write via GNUTLS
Hence, the vnc_client_read & vnc_client_write methods have been refactored
a little.
vnc_client_read: main entry point for reading, calls either
- vnc_client_read_plain reading, with no intermediate decoding
- vnc_client_read_sasl reading, with SASL SSF decoding
These two methods, then call vnc_client_read_buf(). This decides
whether to write to the socket directly or write via GNUTLS.
The situation is the same for writing data. More extensive comments
have been added in the code / patch. The vnc_client_read_sasl and
vnc_client_write_sasl method implementations live in the separate
vnc-auth-sasl.c file.
The state required for the SASL auth mechanism is kept in a separate
VncStateSASL struct, defined in vnc-auth-sasl.h and included in the
main VncState.
The configure script probes for SASL and automatically enables it
if found, unless --disable-vnc-sasl was given to override it.
Makefile | 7
Makefile.target | 5
b/qemu.sasl | 34 ++
b/vnc-auth-sasl.c | 626 ++++++++++++++++++++++++++++++++++++++++++++++++++++
b/vnc-auth-sasl.h | 67 +++++
configure | 34 ++
qemu-doc.texi | 97 ++++++++
vnc-auth-vencrypt.c | 12
vnc.c | 249 ++++++++++++++++++--
vnc.h | 31 ++
10 files changed, 1129 insertions(+), 33 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6724 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:28 +01:00
|
|
|
fi
|
2011-03-16 13:33:36 +01:00
|
|
|
if test "$vnc_jpeg" = "yes" ; then
|
2010-07-07 20:57:49 +02:00
|
|
|
echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
|
|
|
|
fi
|
2011-03-16 13:33:36 +01:00
|
|
|
if test "$vnc_png" = "yes" ; then
|
2010-07-07 20:57:56 +02:00
|
|
|
echo "CONFIG_VNC_PNG=y" >> $config_host_mak
|
|
|
|
fi
|
2013-01-21 11:04:44 +01:00
|
|
|
if test "$vnc_ws" = "yes" ; then
|
|
|
|
echo "CONFIG_VNC_WS=y" >> $config_host_mak
|
|
|
|
echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
|
|
|
|
fi
|
Support ACLs for controlling VNC access ("Daniel P. Berrange")
This patch introduces a generic internal API for access control lists
to be used by network servers in QEMU. It adds support for checking
these ACL in the VNC server, in two places. The first ACL is for the
SASL authentication mechanism, checking the SASL username. This ACL
is called 'vnc.username'. The second is for the TLS authentication
mechanism, when x509 client certificates are turned on, checking against
the Distinguished Name of the client. This ACL is called 'vnc.x509dname'
The internal API provides for an ACL with the following characteristics
- A unique name, eg vnc.username, and vnc.x509dname.
- A default policy, allow or deny
- An ordered series of match rules, with allow or deny policy
If none of the match rules apply, then the default policy is
used.
There is a monitor API to manipulate the ACLs, which I'll describe via
examples
(qemu) acl show vnc.username
policy: allow
(qemu) acl policy vnc.username denya
acl: policy set to 'deny'
(qemu) acl allow vnc.username fred
acl: added rule at position 1
(qemu) acl allow vnc.username bob
acl: added rule at position 2
(qemu) acl allow vnc.username joe 1
acl: added rule at position 1
(qemu) acl show vnc.username
policy: deny
0: allow fred
1: allow joe
2: allow bob
(qemu) acl show vnc.x509dname
policy: allow
(qemu) acl policy vnc.x509dname deny
acl: policy set to 'deny'
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=London,CN=*
acl: added rule at position 1
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=Boston,CN=bob
acl: added rule at position 2
(qemu) acl show vnc.x509dname
policy: deny
0: allow C=GB,O=ACME,L=London,CN=*
1: allow C=GB,O=ACME,L=Boston,CN=bob
By default the VNC server will not use any ACLs, allowing access to
the server if the user successfully authenticates. To enable use of
ACLs to restrict user access, the ',acl' flag should be given when
starting QEMU. The initial ACL activated will be a 'deny all' policy
and should be customized using monitor commands.
eg enable SASL auth and ACLs
qemu .... -vnc localhost:1,sasl,acl
The next patch will provide a way to load a pre-defined ACL when
starting up
Makefile | 6 +
b/acl.c | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b/acl.h | 74 ++++++++++++++++++++++
configure | 18 +++++
monitor.c | 95 ++++++++++++++++++++++++++++
qemu-doc.texi | 49 ++++++++++++++
vnc-auth-sasl.c | 16 +++-
vnc-auth-sasl.h | 7 ++
vnc-tls.c | 19 +++++
vnc-tls.h | 3
vnc.c | 21 ++++++
vnc.h | 3
12 files changed, 491 insertions(+), 5 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6726 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:37 +01:00
|
|
|
if test "$fnmatch" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_FNMATCH=y" >> $config_host_mak
|
Support ACLs for controlling VNC access ("Daniel P. Berrange")
This patch introduces a generic internal API for access control lists
to be used by network servers in QEMU. It adds support for checking
these ACL in the VNC server, in two places. The first ACL is for the
SASL authentication mechanism, checking the SASL username. This ACL
is called 'vnc.username'. The second is for the TLS authentication
mechanism, when x509 client certificates are turned on, checking against
the Distinguished Name of the client. This ACL is called 'vnc.x509dname'
The internal API provides for an ACL with the following characteristics
- A unique name, eg vnc.username, and vnc.x509dname.
- A default policy, allow or deny
- An ordered series of match rules, with allow or deny policy
If none of the match rules apply, then the default policy is
used.
There is a monitor API to manipulate the ACLs, which I'll describe via
examples
(qemu) acl show vnc.username
policy: allow
(qemu) acl policy vnc.username denya
acl: policy set to 'deny'
(qemu) acl allow vnc.username fred
acl: added rule at position 1
(qemu) acl allow vnc.username bob
acl: added rule at position 2
(qemu) acl allow vnc.username joe 1
acl: added rule at position 1
(qemu) acl show vnc.username
policy: deny
0: allow fred
1: allow joe
2: allow bob
(qemu) acl show vnc.x509dname
policy: allow
(qemu) acl policy vnc.x509dname deny
acl: policy set to 'deny'
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=London,CN=*
acl: added rule at position 1
(qemu) acl allow vnc.x509dname C=GB,O=ACME,L=Boston,CN=bob
acl: added rule at position 2
(qemu) acl show vnc.x509dname
policy: deny
0: allow C=GB,O=ACME,L=London,CN=*
1: allow C=GB,O=ACME,L=Boston,CN=bob
By default the VNC server will not use any ACLs, allowing access to
the server if the user successfully authenticates. To enable use of
ACLs to restrict user access, the ',acl' flag should be given when
starting QEMU. The initial ACL activated will be a 'deny all' policy
and should be customized using monitor commands.
eg enable SASL auth and ACLs
qemu .... -vnc localhost:1,sasl,acl
The next patch will provide a way to load a pre-defined ACL when
starting up
Makefile | 6 +
b/acl.c | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
b/acl.h | 74 ++++++++++++++++++++++
configure | 18 +++++
monitor.c | 95 ++++++++++++++++++++++++++++
qemu-doc.texi | 49 ++++++++++++++
vnc-auth-sasl.c | 16 +++-
vnc-auth-sasl.h | 7 ++
vnc-tls.c | 19 +++++
vnc-tls.h | 3
vnc.c | 21 ++++++
vnc.h | 3
12 files changed, 491 insertions(+), 5 deletions(-)
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6726 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-06 21:27:37 +01:00
|
|
|
fi
|
2009-10-01 20:10:37 +02:00
|
|
|
if test "$uuid" = "yes" ; then
|
|
|
|
echo "CONFIG_UUID=y" >> $config_host_mak
|
|
|
|
fi
|
2010-12-17 11:41:15 +01:00
|
|
|
if test "$xfs" = "yes" ; then
|
|
|
|
echo "CONFIG_XFS=y" >> $config_host_mak
|
|
|
|
fi
|
2006-04-16 15:28:56 +02:00
|
|
|
qemu_version=`head $source_path/VERSION`
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "VERSION=$qemu_version" >>$config_host_mak
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "PKGVERSION=$pkgversion" >>$config_host_mak
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "SRC_PATH=$source_path" >> $config_host_mak
|
|
|
|
echo "TARGET_DIRS=$target_list" >> $config_host_mak
|
2009-08-12 18:29:52 +02:00
|
|
|
if [ "$docs" = "yes" ] ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "BUILD_DOCS=yes" >> $config_host_mak
|
2006-04-23 19:57:59 +02:00
|
|
|
fi
|
2009-07-27 16:13:14 +02:00
|
|
|
if test "$sdl" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_SDL=y" >> $config_host_mak
|
2009-07-27 16:13:14 +02:00
|
|
|
echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
|
2007-11-07 20:25:15 +01:00
|
|
|
fi
|
|
|
|
if test "$cocoa" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_COCOA=y" >> $config_host_mak
|
2008-02-10 17:33:14 +01:00
|
|
|
fi
|
|
|
|
if test "$curses" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_CURSES=y" >> $config_host_mak
|
2007-11-07 20:25:15 +01:00
|
|
|
fi
|
2009-04-21 14:01:51 +02:00
|
|
|
if test "$utimens" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
|
2009-04-21 14:01:51 +02:00
|
|
|
fi
|
2009-05-05 11:10:04 +02:00
|
|
|
if test "$pipe2" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_PIPE2=y" >> $config_host_mak
|
2009-05-05 11:10:04 +02:00
|
|
|
fi
|
2009-12-02 12:24:42 +01:00
|
|
|
if test "$accept4" = "yes" ; then
|
|
|
|
echo "CONFIG_ACCEPT4=y" >> $config_host_mak
|
|
|
|
fi
|
2009-05-16 15:02:41 +02:00
|
|
|
if test "$splice" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_SPLICE=y" >> $config_host_mak
|
2009-05-16 15:02:41 +02:00
|
|
|
fi
|
2009-08-12 14:08:24 +02:00
|
|
|
if test "$eventfd" = "yes" ; then
|
|
|
|
echo "CONFIG_EVENTFD=y" >> $config_host_mak
|
|
|
|
fi
|
2009-09-17 19:22:14 +02:00
|
|
|
if test "$fallocate" = "yes" ; then
|
|
|
|
echo "CONFIG_FALLOCATE=y" >> $config_host_mak
|
|
|
|
fi
|
2013-01-14 16:26:52 +01:00
|
|
|
if test "$fallocate_punch_hole" = "yes" ; then
|
|
|
|
echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
|
|
|
|
fi
|
2011-01-06 12:05:10 +01:00
|
|
|
if test "$sync_file_range" = "yes" ; then
|
|
|
|
echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
|
|
|
|
fi
|
2011-01-10 14:11:24 +01:00
|
|
|
if test "$fiemap" = "yes" ; then
|
|
|
|
echo "CONFIG_FIEMAP=y" >> $config_host_mak
|
|
|
|
fi
|
2009-09-17 19:22:14 +02:00
|
|
|
if test "$dup3" = "yes" ; then
|
|
|
|
echo "CONFIG_DUP3=y" >> $config_host_mak
|
|
|
|
fi
|
2013-08-21 17:02:43 +02:00
|
|
|
if test "$ppoll" = "yes" ; then
|
|
|
|
echo "CONFIG_PPOLL=y" >> $config_host_mak
|
|
|
|
fi
|
2013-08-21 17:02:44 +02:00
|
|
|
if test "$prctl_pr_set_timerslack" = "yes" ; then
|
|
|
|
echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
|
|
|
|
fi
|
2011-02-15 19:35:05 +01:00
|
|
|
if test "$epoll" = "yes" ; then
|
|
|
|
echo "CONFIG_EPOLL=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
if test "$epoll_create1" = "yes" ; then
|
|
|
|
echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
if test "$epoll_pwait" = "yes" ; then
|
|
|
|
echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
|
|
|
|
fi
|
2013-02-08 08:31:55 +01:00
|
|
|
if test "$sendfile" = "yes" ; then
|
|
|
|
echo "CONFIG_SENDFILE=y" >> $config_host_mak
|
|
|
|
fi
|
2009-04-15 18:12:13 +02:00
|
|
|
if test "$inotify" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_INOTIFY=y" >> $config_host_mak
|
2009-04-15 18:12:13 +02:00
|
|
|
fi
|
2010-03-26 16:25:11 +01:00
|
|
|
if test "$inotify1" = "yes" ; then
|
|
|
|
echo "CONFIG_INOTIFY1=y" >> $config_host_mak
|
|
|
|
fi
|
2009-08-03 14:45:58 +02:00
|
|
|
if test "$byteswap_h" = "yes" ; then
|
|
|
|
echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
if test "$bswap_h" = "yes" ; then
|
|
|
|
echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
|
|
|
|
fi
|
2009-05-11 17:41:42 +02:00
|
|
|
if test "$curl" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_CURL=y" >> $config_host_mak
|
2009-08-03 14:46:05 +02:00
|
|
|
echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
|
2009-05-11 17:41:42 +02:00
|
|
|
fi
|
2008-04-08 08:01:02 +02:00
|
|
|
if test "$brlapi" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_BRLAPI=y" >> $config_host_mak
|
2008-04-08 08:01:02 +02:00
|
|
|
fi
|
2008-09-29 01:49:55 +02:00
|
|
|
if test "$bluez" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "CONFIG_BLUEZ=y" >> $config_host_mak
|
2009-07-27 16:12:46 +02:00
|
|
|
echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
|
2008-09-29 01:49:55 +02:00
|
|
|
fi
|
2011-07-19 21:50:29 +02:00
|
|
|
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
|
2013-02-20 14:43:20 +01:00
|
|
|
if test "$gtk" = "yes" ; then
|
|
|
|
echo "CONFIG_GTK=y" >> $config_host_mak
|
|
|
|
echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
|
|
|
|
echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
|
|
|
|
fi
|
2009-04-22 17:19:10 +02:00
|
|
|
if test "$xen" = "yes" ; then
|
2011-06-21 22:59:07 +02:00
|
|
|
echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
|
2011-02-25 17:20:34 +01:00
|
|
|
echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
|
2009-04-22 17:19:10 +02:00
|
|
|
fi
|
2009-08-20 16:58:35 +02:00
|
|
|
if test "$linux_aio" = "yes" ; then
|
|
|
|
echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
|
|
|
|
fi
|
2010-06-14 22:34:41 +02:00
|
|
|
if test "$attr" = "yes" ; then
|
|
|
|
echo "CONFIG_ATTR=y" >> $config_host_mak
|
|
|
|
fi
|
2011-11-09 13:44:52 +01:00
|
|
|
if test "$libattr" = "yes" ; then
|
|
|
|
echo "CONFIG_LIBATTR=y" >> $config_host_mak
|
|
|
|
fi
|
2012-02-24 09:30:42 +01:00
|
|
|
if test "$virtfs" = "yes" ; then
|
|
|
|
echo "CONFIG_VIRTFS=y" >> $config_host_mak
|
2010-06-14 22:34:41 +02:00
|
|
|
fi
|
vhost-scsi: new device supporting the tcm_vhost Linux kernel module
The WWPN specified in configfs is passed to "-device vhost-scsi-pci".
The tgpt field of the SET_ENDPOINT ioctl is obsolete now, so it is not
available from the QEMU command-line. Instead, I hardcode it to zero.
Changes in Patch-v2:
- Add vhost_scsi_get_features() in order to determine feature bits
supports by host kernel (mst + nab)
- Re-enable usage of DEFINE_VIRTIO_COMMON_FEATURES, and allow
EVENT_IDX to be disabled by host in vhost_scsi_get_features()
- Drop unused hotplug bit in DEFINE_VHOST_SCSI_PROPERTIES
Changes in Patch-v1:
- Set event_idx=off by default (nab, thanks asias)
- Disable hotplug feature bit for v3.9 tcm_vhost kernel code, need to
re-enable in v3.10 (nab)
- Update to latest qemu.git/master HEAD
Changes in WIP-V3:
- Drop ioeventfd vhost_scsi_properties (asias, thanks stefanha)
- Add CONFIG_VHOST_SCSI (asias, thanks stefanha)
- Add hotplug feature bit
Changes in WIP-V2:
- Add backend guest masking support (nab)
- Bump ABI_VERSION to 1 (nab)
- Set up set_guest_notifiers (asias)
- Set up vs->dev.vq_index (asias)
- Drop vs->vs.vdev.{set,clear}_vhost_endpoint (asias)
- Drop VIRTIO_CONFIG_S_DRIVER check in vhost_scsi_set_status (asias)
Howto:
Use the latest seabios, at least commit b44a7be17b
git clone git://git.seabios.org/seabios.git
make
cp out/bios.bin /usr/share/qemu/bios.bin
qemu -device vhost-scsi-pci,wwpn=naa.6001405bd4e8476d,event_idx=off
...
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Asias He <asias@redhat.com>
[ Rebase on top of VirtIOSCSICommon patch, fix bugs in feature
negotiation and irqfd masking - Paolo ]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2013-03-29 02:08:16 +01:00
|
|
|
if test "$vhost_scsi" = "yes" ; then
|
|
|
|
echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
|
|
|
|
fi
|
2008-11-27 16:45:16 +01:00
|
|
|
if test "$blobs" = "yes" ; then
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "INSTALL_BLOBS=yes" >> $config_host_mak
|
2008-11-27 16:45:16 +01:00
|
|
|
fi
|
2008-12-05 21:05:26 +01:00
|
|
|
if test "$iovec" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_IOVEC=y" >> $config_host_mak
|
2008-12-05 21:05:26 +01:00
|
|
|
fi
|
2009-04-07 20:43:28 +02:00
|
|
|
if test "$preadv" = "yes" ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_PREADV=y" >> $config_host_mak
|
2009-04-07 20:43:28 +02:00
|
|
|
fi
|
2008-12-16 11:43:48 +01:00
|
|
|
if test "$fdt" = "yes" ; then
|
2009-07-27 16:12:52 +02:00
|
|
|
echo "CONFIG_FDT=y" >> $config_host_mak
|
2008-12-16 11:43:48 +01:00
|
|
|
fi
|
2010-10-11 20:31:15 +02:00
|
|
|
if test "$signalfd" = "yes" ; then
|
|
|
|
echo "CONFIG_SIGNALFD=y" >> $config_host_mak
|
|
|
|
fi
|
2011-10-19 07:07:18 +02:00
|
|
|
if test "$tcg_interpreter" = "yes" ; then
|
|
|
|
echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
|
|
|
|
fi
|
2009-09-20 08:56:26 +02:00
|
|
|
if test "$fdatasync" = "yes" ; then
|
|
|
|
echo "CONFIG_FDATASYNC=y" >> $config_host_mak
|
|
|
|
fi
|
2010-09-25 13:26:05 +02:00
|
|
|
if test "$madvise" = "yes" ; then
|
|
|
|
echo "CONFIG_MADVISE=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
if test "$posix_madvise" = "yes" ; then
|
|
|
|
echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
|
|
|
|
fi
|
2012-10-22 23:33:00 +02:00
|
|
|
if test "$sigev_thread_id" = "yes" ; then
|
|
|
|
echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
|
|
|
|
fi
|
2003-08-10 23:36:04 +02:00
|
|
|
|
2010-03-24 10:26:51 +01:00
|
|
|
if test "$spice" = "yes" ; then
|
|
|
|
echo "CONFIG_SPICE=y" >> $config_host_mak
|
|
|
|
fi
|
2010-10-17 11:40:07 +02:00
|
|
|
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
if test "$smartcard_nss" = "yes" ; then
|
|
|
|
echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
|
2012-02-09 20:05:29 +01:00
|
|
|
echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
|
|
|
|
echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
|
libcacard: initial commit
libcacard emulates a Common Access Card (CAC) which is a standard
for smartcards. It is used by the emulated ccid card introduced in
a following patch. Docs are available in docs/libcacard.txt
Signed-off-by: Alon Levy <alevy@redhat.com>
---
changes from v24->v25:
* Fix out of tree builds.
* Fix build with linux-user targets.
changes from v23->v24: (Jes Sorensen review 2)
* Makefile.target: use obj-$(CONFIG_*) +=
* remove unrequired includes, include qemu-common before qemu-thread
* required adding #define NO_NSPR_10_SUPPORT (harmless)
changes from v22->v23:
* configure fixes: (reported by Stefan Hajnoczi)
* test a = b, not a == b (second isn't portable)
* quote $source_path in case it contains spaces
- this doesn't really help since there are many other places
that need similar fixes, not introduced by this patch.
changes from v21->v22:
* fix configure to not link libcacard if nss not found
(reported by Stefan Hajnoczi)
* fix vscclient linkage with simpletrace backend
(reported by Stefan Hajnoczi)
* card_7816.c: add missing break in ERROR_DATA_NOT_FOUND
(reported by William van de Velde)
changes from v20->v21: (Jes Sorensen review)
* use qemu infrastructure: qemu-thread, qemu-common (qemu_malloc
and qemu_free), error_report
* assert instead of ASSERT
* cosmetic fixes
* use strpbrk and isspace
* add --disable-nss --enable-nss here, instead of in the final patch.
* split vscclient, passthru and docs to following patches.
changes from v19->v20:
* checkpatch.pl
changes from v15->v16:
Build:
* don't erase self with distclean
* fix make clean after make distclean
* Makefile: make vscclient link quiet
Behavioral:
* vcard_emul_nss: load coolkey in more situations
* vscclient:
* use hton,ntoh
* send init on connect, only start vevent thread on response
* read payload after header check, before type switch
* remove Reconnect
* update for vscard_common changes, empty Flush implementation
Style/Whitespace:
* fix wrong variable usage
* remove unused variable
* use only C style comments
* add copyright header
* fix tabulation
Signed-off-by: Alon Levy <alevy@redhat.com>
libcacard: fix out of tree builds
2010-11-28 15:36:38 +01:00
|
|
|
fi
|
|
|
|
|
2012-11-30 16:02:11 +01:00
|
|
|
if test "$libusb" = "yes" ; then
|
|
|
|
echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2011-07-19 11:04:10 +02:00
|
|
|
if test "$usb_redir" = "yes" ; then
|
|
|
|
echo "CONFIG_USB_REDIR=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2013-03-06 20:23:32 +01:00
|
|
|
if test "$glx" = "yes" ; then
|
|
|
|
echo "CONFIG_GLX=y" >> $config_host_mak
|
2013-04-17 16:26:45 +02:00
|
|
|
echo "GLX_LIBS=$glx_libs" >> $config_host_mak
|
2011-03-07 23:32:39 +01:00
|
|
|
fi
|
|
|
|
|
2011-10-25 10:24:24 +02:00
|
|
|
if test "$libiscsi" = "yes" ; then
|
|
|
|
echo "CONFIG_LIBISCSI=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2012-08-14 23:44:05 +02:00
|
|
|
if test "$seccomp" = "yes"; then
|
|
|
|
echo "CONFIG_SECCOMP=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2004-07-05 23:25:26 +02:00
|
|
|
# XXX: suppress that
|
2004-05-12 21:32:15 +02:00
|
|
|
if [ "$bsd" = "yes" ] ; then
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_BSD=y" >> $config_host_mak
|
2004-05-12 21:32:15 +02:00
|
|
|
fi
|
|
|
|
|
2009-07-27 16:13:25 +02:00
|
|
|
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
|
2006-05-14 13:30:38 +02:00
|
|
|
|
2009-12-09 19:59:36 +01:00
|
|
|
if test "$zero_malloc" = "yes" ; then
|
|
|
|
echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
|
|
|
|
fi
|
2013-05-10 14:16:40 +02:00
|
|
|
if test "$qom_cast_debug" = "yes" ; then
|
|
|
|
echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
|
|
|
|
fi
|
2010-12-06 20:53:01 +01:00
|
|
|
if test "$rbd" = "yes" ; then
|
|
|
|
echo "CONFIG_RBD=y" >> $config_host_mak
|
2011-06-09 19:41:06 +02:00
|
|
|
fi
|
|
|
|
|
2013-04-08 13:11:27 +02:00
|
|
|
echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
|
2013-09-11 16:42:35 +02:00
|
|
|
if test "$coroutine_pool" = "yes" ; then
|
|
|
|
echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
|
|
|
|
else
|
|
|
|
echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
|
|
|
|
fi
|
2009-12-09 19:59:36 +01:00
|
|
|
|
2011-10-12 15:41:24 +02:00
|
|
|
if test "$open_by_handle_at" = "yes" ; then
|
|
|
|
echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2011-10-12 15:41:25 +02:00
|
|
|
if test "$linux_magic_h" = "yes" ; then
|
|
|
|
echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
|
2012-05-23 20:48:04 +02:00
|
|
|
fi
|
|
|
|
|
2013-01-09 10:17:07 +01:00
|
|
|
if test "$pragma_diagnostic_available" = "yes" ; then
|
|
|
|
echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
|
2012-07-30 17:13:07 +02:00
|
|
|
fi
|
|
|
|
|
2012-06-29 13:40:27 +02:00
|
|
|
if test "$valgrind_h" = "yes" ; then
|
|
|
|
echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2012-05-23 20:48:04 +02:00
|
|
|
if test "$has_environ" = "yes" ; then
|
|
|
|
echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
|
2011-10-12 15:41:25 +02:00
|
|
|
fi
|
|
|
|
|
2012-12-28 23:17:02 +01:00
|
|
|
if test "$cpuid_h" = "yes" ; then
|
|
|
|
echo "CONFIG_CPUID_H=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2013-02-16 21:46:59 +01:00
|
|
|
if test "$int128" = "yes" ; then
|
|
|
|
echo "CONFIG_INT128=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2013-02-18 18:11:15 +01:00
|
|
|
if test "$getauxval" = "yes" ; then
|
|
|
|
echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2012-09-24 11:12:45 +02:00
|
|
|
if test "$glusterfs" = "yes" ; then
|
|
|
|
echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
|
2013-07-16 18:17:42 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$glusterfs_discard" = "yes" ; then
|
|
|
|
echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
|
2012-09-24 11:12:45 +02:00
|
|
|
fi
|
2011-10-12 15:41:25 +02:00
|
|
|
|
2013-04-09 16:30:53 +02:00
|
|
|
if test "$libssh2" = "yes" ; then
|
|
|
|
echo "CONFIG_LIBSSH2=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2012-11-14 15:04:15 +01:00
|
|
|
if test "$virtio_blk_data_plane" = "yes" ; then
|
2013-02-05 12:42:31 +01:00
|
|
|
echo 'CONFIG_VIRTIO_BLK_DATA_PLANE=$(CONFIG_VIRTIO)' >> $config_host_mak
|
2012-11-14 15:04:15 +01:00
|
|
|
fi
|
|
|
|
|
2008-11-22 22:03:55 +01:00
|
|
|
# USB host support
|
2013-09-10 11:02:59 +02:00
|
|
|
if test "$libusb" = "yes"; then
|
|
|
|
echo "HOST_USB=libusb legacy" >> $config_host_mak
|
|
|
|
else
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "HOST_USB=stub" >> $config_host_mak
|
2013-09-10 11:02:59 +02:00
|
|
|
fi
|
2008-11-22 22:03:55 +01:00
|
|
|
|
2013-03-18 16:37:50 +01:00
|
|
|
# TPM passthrough support?
|
|
|
|
if test "$tpm" = "yes"; then
|
|
|
|
echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
|
|
|
|
if test "$tpm_passthrough" = "yes"; then
|
|
|
|
echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2011-08-31 20:31:03 +02:00
|
|
|
# use default implementation for tracing backend-specific routines
|
|
|
|
trace_default=yes
|
2010-05-22 18:52:39 +02:00
|
|
|
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
|
2011-08-31 20:30:43 +02:00
|
|
|
if test "$trace_backend" = "nop"; then
|
|
|
|
echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
|
2010-06-24 13:34:53 +02:00
|
|
|
fi
|
2010-07-13 10:26:32 +02:00
|
|
|
if test "$trace_backend" = "simple"; then
|
2011-08-31 20:30:43 +02:00
|
|
|
echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
|
2011-08-31 20:31:03 +02:00
|
|
|
trace_default=no
|
2011-08-31 20:30:43 +02:00
|
|
|
# Set the appropriate trace file.
|
2011-06-02 19:58:06 +02:00
|
|
|
trace_file="\"$trace_file-\" FMT_pid"
|
2010-07-13 10:26:32 +02:00
|
|
|
fi
|
2011-08-31 20:30:43 +02:00
|
|
|
if test "$trace_backend" = "stderr"; then
|
|
|
|
echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
|
2011-08-31 20:31:51 +02:00
|
|
|
trace_default=no
|
2011-08-31 20:30:43 +02:00
|
|
|
fi
|
|
|
|
if test "$trace_backend" = "ust"; then
|
|
|
|
echo "CONFIG_TRACE_UST=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
if test "$trace_backend" = "dtrace"; then
|
|
|
|
echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
|
|
|
|
if test "$trace_backend_stap" = "yes" ; then
|
|
|
|
echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
|
|
|
|
fi
|
2010-11-12 14:20:25 +01:00
|
|
|
fi
|
2013-04-11 13:25:15 +02:00
|
|
|
if test "$trace_backend" = "ftrace"; then
|
|
|
|
if test "$linux" = "yes" ; then
|
|
|
|
echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
|
|
|
|
trace_default=no
|
|
|
|
else
|
|
|
|
feature_not_found "ftrace(trace backend)"
|
|
|
|
fi
|
|
|
|
fi
|
2010-07-13 10:26:32 +02:00
|
|
|
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
|
2011-08-31 20:31:03 +02:00
|
|
|
if test "$trace_default" = "yes"; then
|
|
|
|
echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
|
|
|
|
fi
|
2010-07-13 10:26:32 +02:00
|
|
|
|
2013-07-22 16:01:54 +02:00
|
|
|
if test "$rdma" = "yes" ; then
|
|
|
|
echo "CONFIG_RDMA=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2013-04-17 16:26:35 +02:00
|
|
|
if test "$tcg_interpreter" = "yes"; then
|
|
|
|
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
|
|
|
|
elif test "$ARCH" = "sparc64" ; then
|
|
|
|
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
|
|
|
|
elif test "$ARCH" = "s390x" ; then
|
|
|
|
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
|
2013-08-20 21:20:05 +02:00
|
|
|
elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
|
2013-04-17 16:26:35 +02:00
|
|
|
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
|
|
|
|
else
|
|
|
|
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
|
|
|
|
fi
|
|
|
|
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
|
|
|
|
|
2009-07-16 18:34:18 +02:00
|
|
|
echo "TOOLS=$tools" >> $config_host_mak
|
|
|
|
echo "ROMS=$roms" >> $config_host_mak
|
2009-07-27 16:12:49 +02:00
|
|
|
echo "MAKE=$make" >> $config_host_mak
|
|
|
|
echo "INSTALL=$install" >> $config_host_mak
|
2011-08-28 10:01:33 +02:00
|
|
|
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
|
|
|
|
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
|
2012-12-20 18:57:45 +01:00
|
|
|
if test -n "$libtool"; then
|
|
|
|
echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
|
|
|
|
echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
|
|
|
|
else
|
|
|
|
echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
|
|
|
|
echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
|
|
|
|
fi
|
2011-07-22 23:08:09 +02:00
|
|
|
echo "PYTHON=$python" >> $config_host_mak
|
2009-07-27 16:12:49 +02:00
|
|
|
echo "CC=$cc" >> $config_host_mak
|
2010-10-21 10:18:40 +02:00
|
|
|
echo "CC_I386=$cc_i386" >> $config_host_mak
|
2009-07-27 16:12:49 +02:00
|
|
|
echo "HOST_CC=$host_cc" >> $config_host_mak
|
2013-08-07 17:39:36 +02:00
|
|
|
echo "CXX=$cxx" >> $config_host_mak
|
2012-08-11 23:34:40 +02:00
|
|
|
echo "OBJCC=$objcc" >> $config_host_mak
|
2009-07-27 16:12:49 +02:00
|
|
|
echo "AR=$ar" >> $config_host_mak
|
2013-01-05 11:10:27 +01:00
|
|
|
echo "AS=$as" >> $config_host_mak
|
|
|
|
echo "CPP=$cpp" >> $config_host_mak
|
2009-07-27 16:12:49 +02:00
|
|
|
echo "OBJCOPY=$objcopy" >> $config_host_mak
|
|
|
|
echo "LD=$ld" >> $config_host_mak
|
2010-09-26 18:07:57 +02:00
|
|
|
echo "WINDRES=$windres" >> $config_host_mak
|
2011-05-15 10:51:28 +02:00
|
|
|
echo "LIBTOOL=$libtool" >> $config_host_mak
|
2009-08-03 14:46:02 +02:00
|
|
|
echo "CFLAGS=$CFLAGS" >> $config_host_mak
|
2009-08-03 14:46:21 +02:00
|
|
|
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
|
2010-12-23 11:43:53 +01:00
|
|
|
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
|
2010-12-23 11:43:51 +01:00
|
|
|
if test "$sparse" = "yes" ; then
|
|
|
|
echo "CC := REAL_CC=\"\$(CC)\" 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
|
|
|
|
fi
|
2012-11-07 11:09:52 +01:00
|
|
|
if test "$cross_prefix" != ""; then
|
|
|
|
echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
|
|
|
|
else
|
|
|
|
echo "AUTOCONF_HOST := " >> $config_host_mak
|
|
|
|
fi
|
2009-08-03 14:46:02 +02:00
|
|
|
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
|
2013-02-25 23:31:12 +01:00
|
|
|
echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
|
2009-08-03 14:46:26 +02:00
|
|
|
echo "LIBS+=$LIBS" >> $config_host_mak
|
2009-08-03 14:47:06 +02:00
|
|
|
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
|
2009-07-27 16:12:49 +02:00
|
|
|
echo "EXESUF=$EXESUF" >> $config_host_mak
|
2011-08-11 22:38:12 +02:00
|
|
|
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
|
2012-03-29 10:55:18 +02:00
|
|
|
echo "POD2MAN=$POD2MAN" >> $config_host_mak
|
2012-11-28 09:40:23 +01:00
|
|
|
echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
|
2012-05-01 20:45:39 +02:00
|
|
|
if test "$gcov" = "yes" ; then
|
|
|
|
echo "CONFIG_GCOV=y" >> $config_host_mak
|
|
|
|
echo "GCOV=$gcov_tool" >> $config_host_mak
|
|
|
|
fi
|
2009-07-27 16:12:49 +02:00
|
|
|
|
2011-11-30 12:59:04 +01:00
|
|
|
# use included Linux headers
|
|
|
|
if test "$linux" = "yes" ; then
|
2012-06-14 17:14:33 +02:00
|
|
|
mkdir -p linux-headers
|
2011-11-30 12:59:04 +01:00
|
|
|
case "$cpu" in
|
2013-08-20 21:20:05 +02:00
|
|
|
i386|x86_64|x32)
|
2012-08-03 14:51:25 +02:00
|
|
|
linux_arch=x86
|
2011-11-30 12:59:04 +01:00
|
|
|
;;
|
|
|
|
ppcemb|ppc|ppc64)
|
2012-08-03 14:51:25 +02:00
|
|
|
linux_arch=powerpc
|
2011-11-30 12:59:04 +01:00
|
|
|
;;
|
|
|
|
s390x)
|
2012-08-03 14:51:25 +02:00
|
|
|
linux_arch=s390
|
|
|
|
;;
|
2013-06-12 17:20:23 +02:00
|
|
|
aarch64)
|
|
|
|
linux_arch=arm64
|
|
|
|
;;
|
2012-08-03 14:51:25 +02:00
|
|
|
*)
|
|
|
|
# For most CPUs the kernel architecture name and QEMU CPU name match.
|
|
|
|
linux_arch="$cpu"
|
2011-11-30 12:59:04 +01:00
|
|
|
;;
|
|
|
|
esac
|
2012-08-03 14:51:25 +02:00
|
|
|
# For non-KVM architectures we will not have asm headers
|
|
|
|
if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
|
|
|
|
symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
|
|
|
|
fi
|
2011-11-30 12:59:04 +01:00
|
|
|
fi
|
|
|
|
|
2005-10-30 19:58:22 +01:00
|
|
|
for target in $target_list; do
|
2003-08-10 23:36:04 +02:00
|
|
|
target_dir="$target"
|
2009-10-07 02:41:00 +02:00
|
|
|
config_target_mak=$target_dir/config-target.mak
|
2013-06-14 16:19:07 +02:00
|
|
|
target_name=`echo $target | cut -d '-' -f 1`
|
2003-08-10 23:36:04 +02:00
|
|
|
target_bigendian="no"
|
2009-10-07 02:41:02 +02:00
|
|
|
|
2013-06-14 16:19:07 +02:00
|
|
|
case "$target_name" in
|
2013-03-18 20:49:25 +01:00
|
|
|
armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
|
2009-07-16 18:34:10 +02:00
|
|
|
target_bigendian=yes
|
|
|
|
;;
|
|
|
|
esac
|
2003-08-10 23:36:04 +02:00
|
|
|
target_softmmu="no"
|
2003-10-27 22:10:39 +01:00
|
|
|
target_user_only="no"
|
2007-01-18 21:06:33 +01:00
|
|
|
target_linux_user="no"
|
2008-10-26 21:33:16 +01:00
|
|
|
target_bsd_user="no"
|
2007-05-26 18:38:53 +02:00
|
|
|
case "$target" in
|
2013-06-14 16:19:07 +02:00
|
|
|
${target_name}-softmmu)
|
2007-05-26 18:38:53 +02:00
|
|
|
target_softmmu="yes"
|
|
|
|
;;
|
2013-06-14 16:19:07 +02:00
|
|
|
${target_name}-linux-user)
|
2009-11-17 21:52:56 +01:00
|
|
|
if test "$linux" != "yes" ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Target '$target' is only available on a Linux host"
|
2009-11-17 21:52:56 +01:00
|
|
|
fi
|
2007-05-26 18:38:53 +02:00
|
|
|
target_user_only="yes"
|
|
|
|
target_linux_user="yes"
|
|
|
|
;;
|
2013-06-14 16:19:07 +02:00
|
|
|
${target_name}-bsd-user)
|
2009-11-17 22:27:18 +01:00
|
|
|
if test "$bsd" != "yes" ; then
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Target '$target' is only available on a BSD host"
|
2009-11-17 21:52:56 +01:00
|
|
|
fi
|
2008-10-26 21:33:16 +01:00
|
|
|
target_user_only="yes"
|
|
|
|
target_bsd_user="yes"
|
|
|
|
;;
|
2007-05-26 18:38:53 +02:00
|
|
|
*)
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Target '$target' not recognised"
|
2007-05-26 18:38:53 +02:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
2007-01-18 21:06:33 +01:00
|
|
|
|
2003-08-10 23:36:04 +02:00
|
|
|
mkdir -p $target_dir
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "# Automatically generated by configure - do not modify" > $config_target_mak
|
2003-06-15 22:25:43 +02:00
|
|
|
|
2006-06-11 15:32:59 +02:00
|
|
|
bflt="no"
|
2013-06-14 16:19:07 +02:00
|
|
|
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
|
2008-10-11 19:55:29 +02:00
|
|
|
gdb_xml_files=""
|
2008-11-05 17:04:33 +01:00
|
|
|
|
2013-06-14 16:19:07 +02:00
|
|
|
TARGET_ARCH="$target_name"
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=""
|
2009-07-16 18:34:17 +02:00
|
|
|
TARGET_ABI_DIR=""
|
2009-07-16 18:34:14 +02:00
|
|
|
|
2013-06-14 16:19:07 +02:00
|
|
|
case "$target_name" in
|
2008-04-20 22:19:44 +02:00
|
|
|
i386)
|
|
|
|
;;
|
|
|
|
x86_64)
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=i386
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
alpha)
|
|
|
|
;;
|
|
|
|
arm|armeb)
|
2009-07-16 18:34:11 +02:00
|
|
|
TARGET_ARCH=arm
|
2008-04-20 22:19:44 +02:00
|
|
|
bflt="yes"
|
2008-10-11 19:55:29 +02:00
|
|
|
gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
2013-09-03 21:12:22 +02:00
|
|
|
aarch64)
|
|
|
|
TARGET_BASE_ARCH=arm
|
|
|
|
bflt="yes"
|
|
|
|
gdb_xml_files="aarch64-core.xml"
|
|
|
|
;;
|
2008-04-20 22:19:44 +02:00
|
|
|
cris)
|
|
|
|
;;
|
2011-02-17 23:45:17 +01:00
|
|
|
lm32)
|
|
|
|
;;
|
2008-04-20 22:19:44 +02:00
|
|
|
m68k)
|
|
|
|
bflt="yes"
|
2008-10-11 19:55:29 +02:00
|
|
|
gdb_xml_files="cf-core.xml cf-fp.xml"
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
2011-02-21 12:42:20 +01:00
|
|
|
microblaze|microblazeel)
|
|
|
|
TARGET_ARCH=microblaze
|
2009-05-20 21:17:31 +02:00
|
|
|
bflt="yes"
|
|
|
|
;;
|
2009-07-16 18:34:16 +02:00
|
|
|
mips|mipsel)
|
2009-07-16 18:34:11 +02:00
|
|
|
TARGET_ARCH=mips
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
mipsn32|mipsn32el)
|
2013-02-10 19:30:50 +01:00
|
|
|
TARGET_ARCH=mips64
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=mips
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
|
2013-02-10 19:30:50 +01:00
|
|
|
echo "TARGET_ABI32=y" >> $config_target_mak
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
mips64|mips64el)
|
2009-07-16 18:34:11 +02:00
|
|
|
TARGET_ARCH=mips64
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=mips
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
2013-03-18 20:49:25 +01:00
|
|
|
moxie)
|
|
|
|
;;
|
2012-07-20 09:50:39 +02:00
|
|
|
or32)
|
|
|
|
TARGET_ARCH=openrisc
|
|
|
|
TARGET_BASE_ARCH=openrisc
|
|
|
|
;;
|
2008-04-20 22:19:44 +02:00
|
|
|
ppc)
|
2009-01-24 16:07:34 +01:00
|
|
|
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
ppcemb)
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=ppc
|
2009-07-16 18:34:17 +02:00
|
|
|
TARGET_ABI_DIR=ppc
|
2009-01-24 16:07:34 +01:00
|
|
|
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
ppc64)
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=ppc
|
2009-07-16 18:34:17 +02:00
|
|
|
TARGET_ABI_DIR=ppc
|
2009-01-24 16:07:34 +01:00
|
|
|
gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
ppc64abi32)
|
2009-07-16 18:34:11 +02:00
|
|
|
TARGET_ARCH=ppc64
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=ppc
|
2009-07-16 18:34:17 +02:00
|
|
|
TARGET_ABI_DIR=ppc
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_ABI32=y" >> $config_target_mak
|
2009-01-24 16:07:34 +01:00
|
|
|
gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
sh4|sh4eb)
|
2009-07-16 18:34:11 +02:00
|
|
|
TARGET_ARCH=sh4
|
2008-04-20 22:19:44 +02:00
|
|
|
bflt="yes"
|
|
|
|
;;
|
|
|
|
sparc)
|
|
|
|
;;
|
|
|
|
sparc64)
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=sparc
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
sparc32plus)
|
2009-07-16 18:34:11 +02:00
|
|
|
TARGET_ARCH=sparc64
|
2009-07-16 18:34:15 +02:00
|
|
|
TARGET_BASE_ARCH=sparc
|
2009-07-16 18:34:17 +02:00
|
|
|
TARGET_ABI_DIR=sparc
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_ABI32=y" >> $config_target_mak
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
2009-12-05 12:44:22 +01:00
|
|
|
s390x)
|
|
|
|
;;
|
2011-04-12 10:27:03 +02:00
|
|
|
unicore32)
|
|
|
|
;;
|
2011-09-06 01:55:26 +02:00
|
|
|
xtensa|xtensaeb)
|
|
|
|
TARGET_ARCH=xtensa
|
|
|
|
;;
|
2008-04-20 22:19:44 +02:00
|
|
|
*)
|
2013-04-08 13:11:26 +02:00
|
|
|
error_exit "Unsupported target CPU"
|
2008-04-20 22:19:44 +02:00
|
|
|
;;
|
|
|
|
esac
|
2012-05-29 10:23:15 +02:00
|
|
|
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
|
|
|
|
if [ "$TARGET_BASE_ARCH" = "" ]; then
|
|
|
|
TARGET_BASE_ARCH=$TARGET_ARCH
|
|
|
|
fi
|
|
|
|
|
|
|
|
symlink "$source_path/Makefile.target" "$target_dir/Makefile"
|
|
|
|
|
2012-08-20 16:31:38 +02:00
|
|
|
upper() {
|
|
|
|
echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
|
|
|
|
}
|
|
|
|
|
|
|
|
target_arch_name="`upper $TARGET_ARCH`"
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_$target_arch_name=y" >> $config_target_mak
|
2013-06-14 16:19:07 +02:00
|
|
|
echo "TARGET_NAME=$target_name" >> $config_target_mak
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
|
2009-07-16 18:34:17 +02:00
|
|
|
if [ "$TARGET_ABI_DIR" = "" ]; then
|
|
|
|
TARGET_ABI_DIR=$TARGET_ARCH
|
|
|
|
fi
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
|
2013-06-14 16:19:07 +02:00
|
|
|
case "$target_name" in
|
2009-07-16 18:33:59 +02:00
|
|
|
i386|x86_64)
|
|
|
|
if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_XEN=y" >> $config_target_mak
|
2012-06-21 17:32:59 +02:00
|
|
|
if test "$xen_pci_passthrough" = yes; then
|
|
|
|
echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
|
|
|
|
fi
|
2009-07-16 18:33:59 +02:00
|
|
|
fi
|
2011-07-17 07:30:29 +02:00
|
|
|
;;
|
|
|
|
*)
|
2009-07-16 18:33:59 +02:00
|
|
|
esac
|
2013-06-14 16:19:07 +02:00
|
|
|
case "$target_name" in
|
2013-03-05 01:34:43 +01:00
|
|
|
arm|i386|x86_64|ppcemb|ppc|ppc64|s390x)
|
2009-07-16 18:34:00 +02:00
|
|
|
# Make sure the target and host cpus are compatible
|
|
|
|
if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
|
2013-06-14 16:19:07 +02:00
|
|
|
\( "$target_name" = "$cpu" -o \
|
|
|
|
\( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
|
|
|
|
\( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
|
|
|
|
\( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
|
|
|
|
\( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
|
|
|
|
\( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
|
|
|
|
\( "$target_name" = "i386" -a "$cpu" = "x86_64" \) \) ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_KVM=y" >> $config_target_mak
|
2011-07-29 22:40:45 +02:00
|
|
|
if test "$vhost_net" = "yes" ; then
|
2010-03-17 12:08:17 +01:00
|
|
|
echo "CONFIG_VHOST_NET=y" >> $config_target_mak
|
|
|
|
fi
|
2009-07-16 18:34:00 +02:00
|
|
|
fi
|
|
|
|
esac
|
2003-06-15 22:25:43 +02:00
|
|
|
if test "$target_bigendian" = "yes" ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
|
2003-06-15 22:25:43 +02:00
|
|
|
fi
|
2003-08-10 23:36:04 +02:00
|
|
|
if test "$target_softmmu" = "yes" ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_SOFTMMU=y" >> $config_target_mak
|
2003-06-09 21:53:12 +02:00
|
|
|
fi
|
2003-10-27 22:10:39 +01:00
|
|
|
if test "$target_user_only" = "yes" ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_USER_ONLY=y" >> $config_target_mak
|
2011-12-22 11:26:10 +01:00
|
|
|
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
|
2003-10-27 22:10:39 +01:00
|
|
|
fi
|
2007-01-18 21:06:33 +01:00
|
|
|
if test "$target_linux_user" = "yes" ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_LINUX_USER=y" >> $config_target_mak
|
2007-01-18 21:06:33 +01:00
|
|
|
fi
|
2008-10-11 19:55:29 +02:00
|
|
|
list=""
|
|
|
|
if test ! -z "$gdb_xml_files" ; then
|
|
|
|
for x in $gdb_xml_files; do
|
|
|
|
list="$list $source_path/gdb-xml/$x"
|
|
|
|
done
|
2009-10-07 02:41:04 +02:00
|
|
|
echo "TARGET_XML_FILES=$list" >> $config_target_mak
|
2008-10-11 19:55:29 +02:00
|
|
|
fi
|
2003-08-10 23:36:04 +02:00
|
|
|
|
2006-06-11 15:32:59 +02:00
|
|
|
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_HAS_BFLT=y" >> $config_target_mak
|
2006-06-11 15:32:59 +02:00
|
|
|
fi
|
2009-07-17 13:48:08 +02:00
|
|
|
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
|
2009-07-17 13:48:08 +02:00
|
|
|
fi
|
2008-10-26 21:33:16 +01:00
|
|
|
if test "$target_bsd_user" = "yes" ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_BSD_USER=y" >> $config_target_mak
|
2008-10-26 21:33:16 +01:00
|
|
|
fi
|
2005-03-01 22:37:28 +01:00
|
|
|
|
2009-08-03 14:46:45 +02:00
|
|
|
# generate QEMU_CFLAGS/LDFLAGS for targets
|
2009-07-22 22:37:39 +02:00
|
|
|
|
2009-08-03 14:46:45 +02:00
|
|
|
cflags=""
|
2009-07-22 22:37:39 +02:00
|
|
|
ldflags=""
|
2009-08-03 14:46:46 +02:00
|
|
|
|
2009-08-03 14:46:53 +02:00
|
|
|
for i in $ARCH $TARGET_BASE_ARCH ; do
|
|
|
|
case "$i" in
|
|
|
|
alpha)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
|
|
|
arm)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_ARM_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
|
|
|
cris)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
|
|
|
hppa)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
2013-08-20 21:20:05 +02:00
|
|
|
i386|x86_64|x32)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_I386_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
2010-03-29 02:12:51 +02:00
|
|
|
ia64*)
|
|
|
|
echo "CONFIG_IA64_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
|
2010-03-29 02:12:51 +02:00
|
|
|
;;
|
2012-03-31 19:54:20 +02:00
|
|
|
lm32)
|
|
|
|
echo "CONFIG_LM32_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
|
2012-03-31 19:54:20 +02:00
|
|
|
;;
|
2009-08-03 14:46:53 +02:00
|
|
|
m68k)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_M68K_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
2011-02-21 12:42:20 +01:00
|
|
|
microblaze*)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
|
|
|
mips*)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
2013-03-18 20:49:25 +01:00
|
|
|
moxie*)
|
|
|
|
echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
|
|
|
|
echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
|
|
|
|
;;
|
2012-07-20 09:50:39 +02:00
|
|
|
or32)
|
|
|
|
echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
|
2012-07-20 09:50:39 +02:00
|
|
|
;;
|
2009-08-03 14:46:53 +02:00
|
|
|
ppc*)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_PPC_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
2009-12-05 12:44:22 +01:00
|
|
|
s390*)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_S390_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
|
|
|
sh4)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_SH4_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
|
|
|
sparc*)
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
|
2009-08-03 14:46:53 +02:00
|
|
|
;;
|
2011-09-06 01:55:26 +02:00
|
|
|
xtensa*)
|
|
|
|
echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
|
2011-09-06 01:55:26 +02:00
|
|
|
;;
|
2009-08-03 14:46:53 +02:00
|
|
|
esac
|
|
|
|
done
|
2011-10-19 07:07:18 +02:00
|
|
|
if test "$tcg_interpreter" = "yes" ; then
|
|
|
|
echo "CONFIG_TCI_DIS=y" >> $config_target_mak
|
2012-10-24 11:12:21 +02:00
|
|
|
echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
|
2011-10-19 07:07:18 +02:00
|
|
|
fi
|
2009-08-03 14:46:53 +02:00
|
|
|
|
2009-08-03 14:46:47 +02:00
|
|
|
case "$ARCH" in
|
|
|
|
alpha)
|
|
|
|
# Ensure there's only a single GP
|
|
|
|
cflags="-msmall-data $cflags"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2009-08-03 14:46:50 +02:00
|
|
|
if test "$gprof" = "yes" ; then
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "TARGET_GPROF=yes" >> $config_target_mak
|
2009-08-03 14:46:50 +02:00
|
|
|
if test "$target_linux_user" = "yes" ; then
|
|
|
|
cflags="-p $cflags"
|
|
|
|
ldflags="-p $ldflags"
|
|
|
|
fi
|
|
|
|
if test "$target_softmmu" = "yes" ; then
|
|
|
|
ldflags="-p $ldflags"
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "GPROF_CFLAGS=-p" >> $config_target_mak
|
2009-08-03 14:46:50 +02:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2009-08-03 14:46:46 +02:00
|
|
|
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
|
2013-06-22 04:10:16 +02:00
|
|
|
ldflags="$ldflags $textseg_ldflags"
|
2009-07-22 22:37:39 +02:00
|
|
|
fi
|
|
|
|
|
2009-10-07 02:41:00 +02:00
|
|
|
echo "LDFLAGS+=$ldflags" >> $config_target_mak
|
|
|
|
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
|
2009-07-22 22:37:39 +02:00
|
|
|
|
2003-08-10 23:36:04 +02:00
|
|
|
done # for target in $targets
|
2003-03-07 00:23:54 +01:00
|
|
|
|
2012-11-12 12:18:38 +01:00
|
|
|
if [ "$pixman" = "internal" ]; then
|
|
|
|
echo "config-host.h: subdir-pixman" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2013-07-22 16:01:54 +02:00
|
|
|
if test "$rdma" = "yes" ; then
|
|
|
|
echo "CONFIG_RDMA=y" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2013-04-18 06:47:31 +02:00
|
|
|
if [ "$dtc_internal" = "yes" ]; then
|
|
|
|
echo "config-host.h: subdir-dtc" >> $config_host_mak
|
|
|
|
fi
|
|
|
|
|
2010-12-23 11:43:59 +01:00
|
|
|
# build tree in object directory in case the source is not in the current directory
|
2013-09-06 05:24:32 +02:00
|
|
|
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
|
2013-04-23 03:23:03 +02:00
|
|
|
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
|
2010-12-23 11:43:59 +01:00
|
|
|
DIRS="$DIRS roms/seabios roms/vgabios"
|
2012-06-04 09:15:43 +02:00
|
|
|
DIRS="$DIRS qapi-generated"
|
2012-01-10 20:10:42 +01:00
|
|
|
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
|
|
|
|
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
|
2013-07-06 20:41:37 +02:00
|
|
|
FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
|
2010-12-23 11:43:59 +01:00
|
|
|
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
|
2011-05-08 13:25:56 +02:00
|
|
|
FILES="$FILES pc-bios/spapr-rtas/Makefile"
|
2013-04-23 03:23:03 +02:00
|
|
|
FILES="$FILES pc-bios/s390-ccw/Makefile"
|
2010-12-23 11:43:59 +01:00
|
|
|
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
|
2013-02-22 21:05:01 +01:00
|
|
|
FILES="$FILES pc-bios/qemu-icon.bmp"
|
2011-06-24 20:58:37 +02:00
|
|
|
for bios_file in \
|
|
|
|
$source_path/pc-bios/*.bin \
|
2012-12-03 10:45:49 +01:00
|
|
|
$source_path/pc-bios/*.aml \
|
2011-06-24 20:58:37 +02:00
|
|
|
$source_path/pc-bios/*.rom \
|
|
|
|
$source_path/pc-bios/*.dtb \
|
2013-04-29 06:52:06 +02:00
|
|
|
$source_path/pc-bios/*.img \
|
2011-06-24 20:58:37 +02:00
|
|
|
$source_path/pc-bios/openbios-* \
|
|
|
|
$source_path/pc-bios/palcode-*
|
|
|
|
do
|
2010-12-23 11:43:59 +01:00
|
|
|
FILES="$FILES pc-bios/`basename $bios_file`"
|
|
|
|
done
|
|
|
|
mkdir -p $DIRS
|
|
|
|
for f in $FILES ; do
|
2012-03-19 13:20:47 +01:00
|
|
|
if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
|
2011-06-03 18:10:40 +02:00
|
|
|
symlink "$source_path/$f" "$f"
|
|
|
|
fi
|
2010-12-23 11:43:59 +01:00
|
|
|
done
|
2009-05-19 17:17:58 +02:00
|
|
|
|
2009-09-04 17:13:29 +02:00
|
|
|
# temporary config to build submodules
|
2009-11-02 22:50:27 +01:00
|
|
|
for rom in seabios vgabios ; do
|
2009-09-04 17:13:29 +02:00
|
|
|
config_mak=roms/$rom/config.mak
|
2010-03-01 22:20:29 +01:00
|
|
|
echo "# Automatically generated by configure - do not modify" > $config_mak
|
2009-09-04 17:13:29 +02:00
|
|
|
echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
|
2013-01-05 11:10:27 +01:00
|
|
|
echo "AS=$as" >> $config_mak
|
2009-09-04 17:13:29 +02:00
|
|
|
echo "CC=$cc" >> $config_mak
|
|
|
|
echo "BCC=bcc" >> $config_mak
|
2013-01-05 11:10:27 +01:00
|
|
|
echo "CPP=$cpp" >> $config_mak
|
2009-09-04 17:13:29 +02:00
|
|
|
echo "OBJCOPY=objcopy" >> $config_mak
|
|
|
|
echo "IASL=iasl" >> $config_mak
|
|
|
|
echo "LD=$ld" >> $config_mak
|
|
|
|
done
|
|
|
|
|
2010-05-31 19:43:31 +02:00
|
|
|
if test "$docs" = "yes" ; then
|
|
|
|
mkdir -p QMP
|
|
|
|
fi
|