mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-28 14:00:44 +00:00
76655d6dec
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
1871 lines
50 KiB
Bash
Executable File
1871 lines
50 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# qemu configure script (c) 2003 Fabrice Bellard
|
|
#
|
|
# set temporary file name
|
|
if test ! -z "$TMPDIR" ; then
|
|
TMPDIR1="${TMPDIR}"
|
|
elif test ! -z "$TEMPDIR" ; then
|
|
TMPDIR1="${TEMPDIR}"
|
|
else
|
|
TMPDIR1="/tmp"
|
|
fi
|
|
|
|
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
|
|
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
|
|
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
|
|
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
|
|
TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
|
|
TMPSDLLOG="${TMPDIR1}/qemu-conf-sdl-$$-${RANDOM}.log"
|
|
|
|
trap "rm -f $TMPC $TMPO $TMPE $TMPS $TMPI $TMPSDLLOG; exit" 0 2 3 15
|
|
|
|
# default parameters
|
|
prefix=""
|
|
interp_prefix="/usr/gnemul/qemu-%M"
|
|
static="no"
|
|
cross_prefix=""
|
|
cc="gcc"
|
|
audio_drv_list=""
|
|
audio_card_list="ac97 es1370 sb16"
|
|
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
|
|
host_cc="gcc"
|
|
ar="ar"
|
|
make="make"
|
|
install="install"
|
|
strip="strip"
|
|
|
|
# parse CC options first
|
|
for opt do
|
|
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
|
case "$opt" in
|
|
--cross-prefix=*) cross_prefix="$optarg"
|
|
;;
|
|
--cc=*) cc="$optarg"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# OS specific
|
|
# Using uname is really, really broken. Once we have the right set of checks
|
|
# we can eliminate it's usage altogether
|
|
|
|
cc="${cross_prefix}${cc}"
|
|
ar="${cross_prefix}${ar}"
|
|
strip="${cross_prefix}${strip}"
|
|
|
|
# check that the C compiler works.
|
|
cat > $TMPC <<EOF
|
|
int main(void) {}
|
|
EOF
|
|
|
|
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
|
|
: C compiler works ok
|
|
else
|
|
echo "ERROR: \"$cc\" either does not exist or does not work"
|
|
exit 1
|
|
fi
|
|
|
|
check_define() {
|
|
cat > $TMPC <<EOF
|
|
#if !defined($1)
|
|
#error Not defined
|
|
#endif
|
|
int main(void) { return 0; }
|
|
EOF
|
|
$cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
|
|
}
|
|
|
|
if check_define __i386__ ; then
|
|
cpu="i386"
|
|
elif check_define __x86_64__ ; then
|
|
cpu="x86_64"
|
|
elif check_define __sparc__ ; then
|
|
# We can't check for 64 bit (when gcc is biarch) or V8PLUSA
|
|
# They must be specified using --sparc_cpu
|
|
if check_define __arch64__ ; then
|
|
cpu="sparc64"
|
|
else
|
|
cpu="sparc"
|
|
fi
|
|
elif check_define _ARCH_PPC ; then
|
|
if check_define _ARCH_PPC64 ; then
|
|
cpu="ppc64"
|
|
else
|
|
cpu="ppc"
|
|
fi
|
|
else
|
|
cpu=`uname -m`
|
|
fi
|
|
|
|
target_list=""
|
|
case "$cpu" in
|
|
i386|i486|i586|i686|i86pc|BePC)
|
|
cpu="i386"
|
|
;;
|
|
x86_64|amd64)
|
|
cpu="x86_64"
|
|
;;
|
|
alpha)
|
|
cpu="alpha"
|
|
;;
|
|
armv*b)
|
|
cpu="armv4b"
|
|
;;
|
|
armv*l)
|
|
cpu="armv4l"
|
|
;;
|
|
cris)
|
|
cpu="cris"
|
|
;;
|
|
parisc|parisc64)
|
|
cpu="hppa"
|
|
;;
|
|
ia64)
|
|
cpu="ia64"
|
|
;;
|
|
m68k)
|
|
cpu="m68k"
|
|
;;
|
|
mips)
|
|
cpu="mips"
|
|
;;
|
|
mips64)
|
|
cpu="mips64"
|
|
;;
|
|
ppc)
|
|
cpu="ppc"
|
|
;;
|
|
ppc64)
|
|
cpu="ppc64"
|
|
;;
|
|
s390*)
|
|
cpu="s390"
|
|
;;
|
|
sparc|sun4[cdmuv])
|
|
cpu="sparc"
|
|
;;
|
|
sparc64)
|
|
cpu="sparc64"
|
|
;;
|
|
*)
|
|
cpu="unknown"
|
|
;;
|
|
esac
|
|
gprof="no"
|
|
sparse="no"
|
|
bigendian="no"
|
|
mingw32="no"
|
|
EXESUF=""
|
|
gdbstub="yes"
|
|
slirp="yes"
|
|
vde="yes"
|
|
fmod_lib=""
|
|
fmod_inc=""
|
|
oss_lib=""
|
|
vnc_tls="yes"
|
|
vnc_sasl="yes"
|
|
bsd="no"
|
|
linux="no"
|
|
solaris="no"
|
|
kqemu="no"
|
|
profiler="no"
|
|
cocoa="no"
|
|
check_gfx="yes"
|
|
softmmu="yes"
|
|
linux_user="no"
|
|
darwin_user="no"
|
|
bsd_user="no"
|
|
build_docs="no"
|
|
uname_release=""
|
|
curses="yes"
|
|
aio="yes"
|
|
nptl="yes"
|
|
mixemu="no"
|
|
bluez="yes"
|
|
kvm="yes"
|
|
kerneldir=""
|
|
aix="no"
|
|
blobs="yes"
|
|
fdt="yes"
|
|
sdl_x11="no"
|
|
|
|
# OS specific
|
|
if check_define __linux__ ; then
|
|
targetos="Linux"
|
|
elif check_define _WIN32 ; then
|
|
targetos='MINGW32'
|
|
else
|
|
targetos=`uname -s`
|
|
fi
|
|
case $targetos in
|
|
CYGWIN*)
|
|
mingw32="yes"
|
|
OS_CFLAGS="-mno-cygwin"
|
|
if [ "$cpu" = "i386" ] ; then
|
|
kqemu="yes"
|
|
fi
|
|
audio_possible_drivers="sdl"
|
|
;;
|
|
MINGW32*)
|
|
mingw32="yes"
|
|
if [ "$cpu" = "i386" ] ; then
|
|
kqemu="yes"
|
|
fi
|
|
audio_possible_drivers="dsound sdl fmod"
|
|
;;
|
|
GNU/kFreeBSD)
|
|
audio_drv_list="oss"
|
|
audio_possible_drivers="oss sdl esd pa"
|
|
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
|
|
kqemu="yes"
|
|
fi
|
|
;;
|
|
FreeBSD)
|
|
bsd="yes"
|
|
audio_drv_list="oss"
|
|
audio_possible_drivers="oss sdl esd pa"
|
|
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
|
|
kqemu="yes"
|
|
fi
|
|
;;
|
|
NetBSD)
|
|
bsd="yes"
|
|
audio_drv_list="oss"
|
|
audio_possible_drivers="oss sdl esd"
|
|
oss_lib="-lossaudio"
|
|
;;
|
|
OpenBSD)
|
|
bsd="yes"
|
|
openbsd="yes"
|
|
audio_drv_list="oss"
|
|
audio_possible_drivers="oss sdl esd"
|
|
oss_lib="-lossaudio"
|
|
;;
|
|
Darwin)
|
|
bsd="yes"
|
|
darwin="yes"
|
|
# on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can run 64-bit userspace code
|
|
if [ "$cpu" = "i386" ] ; then
|
|
is_x86_64=`sysctl -n hw.optional.x86_64`
|
|
[ "$is_x86_64" = "1" ] && cpu=x86_64
|
|
fi
|
|
if [ "$cpu" = "x86_64" ] ; then
|
|
OS_CFLAGS="-arch x86_64"
|
|
LDFLAGS="-arch x86_64"
|
|
else
|
|
OS_CFLAGS="-mdynamic-no-pic"
|
|
fi
|
|
darwin_user="yes"
|
|
cocoa="yes"
|
|
audio_drv_list="coreaudio"
|
|
audio_possible_drivers="coreaudio sdl fmod"
|
|
OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
|
|
;;
|
|
SunOS)
|
|
solaris="yes"
|
|
make="gmake"
|
|
install="ginstall"
|
|
needs_libsunmath="no"
|
|
solarisrev=`uname -r | cut -f2 -d.`
|
|
# have to select again, because `uname -m` returns i86pc
|
|
# even on an x86_64 box.
|
|
solariscpu=`isainfo -k`
|
|
if test "${solariscpu}" = "amd64" ; then
|
|
cpu="x86_64"
|
|
fi
|
|
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"
|
|
else
|
|
echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
|
|
echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
|
|
echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
|
|
echo "Studio 11 can be downloaded from www.sun.com."
|
|
exit 1
|
|
fi
|
|
fi
|
|
if test "$solarisrev" -ge 9 ; then
|
|
kqemu="yes"
|
|
fi
|
|
fi
|
|
if test -f /usr/include/sys/soundcard.h ; then
|
|
audio_drv_list="oss"
|
|
fi
|
|
audio_possible_drivers="oss sdl"
|
|
;;
|
|
AIX)
|
|
aix="yes"
|
|
make="gmake"
|
|
;;
|
|
*)
|
|
audio_drv_list="oss"
|
|
audio_possible_drivers="oss alsa sdl esd pa"
|
|
linux="yes"
|
|
linux_user="yes"
|
|
usb="linux"
|
|
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
|
|
kqemu="yes"
|
|
audio_possible_drivers="$audio_possible_drivers fmod"
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if [ "$bsd" = "yes" ] ; then
|
|
if [ "$darwin" != "yes" ] ; then
|
|
make="gmake"
|
|
usb="bsd"
|
|
fi
|
|
bsd_user="yes"
|
|
fi
|
|
|
|
# find source path
|
|
source_path=`dirname "$0"`
|
|
source_path_used="no"
|
|
workdir=`pwd`
|
|
if [ -z "$source_path" ]; then
|
|
source_path=$workdir
|
|
else
|
|
source_path=`cd "$source_path"; pwd`
|
|
fi
|
|
[ -f "$workdir/vl.c" ] || source_path_used="yes"
|
|
|
|
werror="no"
|
|
# generate compile errors on warnings for development builds
|
|
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
|
|
#werror="yes";
|
|
#fi
|
|
|
|
for opt do
|
|
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
|
|
case "$opt" in
|
|
--help|-h) show_help=yes
|
|
;;
|
|
--prefix=*) prefix="$optarg"
|
|
;;
|
|
--interp-prefix=*) interp_prefix="$optarg"
|
|
;;
|
|
--source-path=*) source_path="$optarg"
|
|
source_path_used="yes"
|
|
;;
|
|
--cross-prefix=*)
|
|
;;
|
|
--cc=*)
|
|
;;
|
|
--host-cc=*) host_cc="$optarg"
|
|
;;
|
|
--make=*) make="$optarg"
|
|
;;
|
|
--install=*) install="$optarg"
|
|
;;
|
|
--extra-cflags=*) CFLAGS="$optarg"
|
|
;;
|
|
--extra-ldflags=*) LDFLAGS="$optarg"
|
|
;;
|
|
--cpu=*) cpu="$optarg"
|
|
;;
|
|
--target-list=*) target_list="$optarg"
|
|
;;
|
|
--enable-gprof) gprof="yes"
|
|
;;
|
|
--static) static="yes"
|
|
;;
|
|
--disable-sdl) sdl="no"
|
|
;;
|
|
--fmod-lib=*) fmod_lib="$optarg"
|
|
;;
|
|
--fmod-inc=*) fmod_inc="$optarg"
|
|
;;
|
|
--oss-lib=*) oss_lib="$optarg"
|
|
;;
|
|
--audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
|
|
;;
|
|
--audio-drv-list=*) audio_drv_list="$optarg"
|
|
;;
|
|
--enable-sparse) sparse="yes"
|
|
;;
|
|
--disable-sparse) sparse="no"
|
|
;;
|
|
--disable-vnc-tls) vnc_tls="no"
|
|
;;
|
|
--disable-vnc-sasl) vnc_sasl="no"
|
|
;;
|
|
--disable-slirp) slirp="no"
|
|
;;
|
|
--disable-vde) vde="no"
|
|
;;
|
|
--disable-kqemu) kqemu="no"
|
|
;;
|
|
--disable-brlapi) brlapi="no"
|
|
;;
|
|
--disable-bluez) bluez="no"
|
|
;;
|
|
--disable-kvm) kvm="no"
|
|
;;
|
|
--enable-profiler) profiler="yes"
|
|
;;
|
|
--enable-cocoa)
|
|
cocoa="yes" ;
|
|
sdl="no" ;
|
|
audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
|
|
;;
|
|
--disable-gfx-check) check_gfx="no"
|
|
;;
|
|
--disable-system) softmmu="no"
|
|
;;
|
|
--enable-system) softmmu="yes"
|
|
;;
|
|
--disable-linux-user) linux_user="no"
|
|
;;
|
|
--enable-linux-user) linux_user="yes"
|
|
;;
|
|
--disable-darwin-user) darwin_user="no"
|
|
;;
|
|
--enable-darwin-user) darwin_user="yes"
|
|
;;
|
|
--disable-bsd-user) bsd_user="no"
|
|
;;
|
|
--enable-bsd-user) bsd_user="yes"
|
|
;;
|
|
--enable-uname-release=*) uname_release="$optarg"
|
|
;;
|
|
--sparc_cpu=*)
|
|
sparc_cpu="$optarg"
|
|
case $sparc_cpu in
|
|
v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
|
|
target_cpu="sparc"; cpu="sparc" ;;
|
|
v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
|
|
target_cpu="sparc"; cpu="sparc" ;;
|
|
v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
|
|
target_cpu="sparc64"; cpu="sparc64" ;;
|
|
*) echo "undefined SPARC architecture. Exiting";exit 1;;
|
|
esac
|
|
;;
|
|
--enable-werror) werror="yes"
|
|
;;
|
|
--disable-werror) werror="no"
|
|
;;
|
|
--disable-curses) curses="no"
|
|
;;
|
|
--disable-nptl) nptl="no"
|
|
;;
|
|
--enable-mixemu) mixemu="yes"
|
|
;;
|
|
--disable-aio) aio="no"
|
|
;;
|
|
--disable-blobs) blobs="no"
|
|
;;
|
|
--kerneldir=*) kerneldir="$optarg"
|
|
;;
|
|
*) echo "ERROR: unknown option $opt"; show_help="yes"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# default flags for all hosts
|
|
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
|
|
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
|
|
LDFLAGS="$LDFLAGS -g"
|
|
if test "$werror" = "yes" ; then
|
|
CFLAGS="$CFLAGS -Werror"
|
|
fi
|
|
|
|
if test "$solaris" = "no" ; then
|
|
if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
|
|
LDFLAGS="$LDFLAGS -Wl,--warn-common"
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
|
|
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
|
|
#
|
|
case "$cpu" in
|
|
sparc) if test -z "$sparc_cpu" ; then
|
|
ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
|
|
ARCH_LDFLAGS="-m32"
|
|
else
|
|
ARCH_CFLAGS="${SP_CFLAGS}"
|
|
ARCH_LDFLAGS="${SP_LDFLAGS}"
|
|
fi
|
|
;;
|
|
sparc64) if test -z "$sparc_cpu" ; then
|
|
ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
|
|
ARCH_LDFLAGS="-m64"
|
|
else
|
|
ARCH_CFLAGS="${SP_CFLAGS}"
|
|
ARCH_LDFLAGS="${SP_LDFLAGS}"
|
|
fi
|
|
;;
|
|
s390)
|
|
ARCH_CFLAGS="-march=z900"
|
|
;;
|
|
i386)
|
|
ARCH_CFLAGS="-m32"
|
|
ARCH_LDFLAGS="-m32"
|
|
;;
|
|
x86_64)
|
|
ARCH_CFLAGS="-m64"
|
|
ARCH_LDFLAGS="-m64"
|
|
;;
|
|
esac
|
|
|
|
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]"
|
|
echo " --target-list=LIST set target list [$target_list]"
|
|
echo ""
|
|
echo "kqemu kernel acceleration support:"
|
|
echo " --disable-kqemu disable kqemu support"
|
|
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]"
|
|
echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
|
|
echo " --make=MAKE use specified make [$make]"
|
|
echo " --install=INSTALL use specified install [$install]"
|
|
echo " --static enable static build [$static]"
|
|
echo " --enable-sparse enable sparse checker"
|
|
echo " --disable-sparse disable sparse checker (default)"
|
|
echo " --disable-werror disable compilation abort on warning"
|
|
echo " --disable-sdl disable SDL"
|
|
echo " --enable-cocoa enable COCOA (Mac OS X only)"
|
|
echo " --audio-drv-list=LIST set audio drivers list:"
|
|
echo " Available drivers: $audio_possible_drivers"
|
|
echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]"
|
|
echo " Available cards: $audio_possible_cards"
|
|
echo " --enable-mixemu enable mixer emulation"
|
|
echo " --disable-brlapi disable BrlAPI"
|
|
echo " --disable-vnc-tls disable TLS encryption for VNC server"
|
|
echo " --disable-vnc-sasl disable SASL encryption for VNC server"
|
|
echo " --disable-curses disable curses output"
|
|
echo " --disable-bluez disable bluez stack connectivity"
|
|
echo " --disable-kvm disable KVM acceleration support"
|
|
echo " --disable-nptl disable usermode NPTL support"
|
|
echo " --enable-system enable all system emulation targets"
|
|
echo " --disable-system disable all system emulation targets"
|
|
echo " --enable-linux-user enable all linux usermode emulation targets"
|
|
echo " --disable-linux-user disable all linux usermode emulation targets"
|
|
echo " --enable-darwin-user enable all darwin usermode emulation targets"
|
|
echo " --disable-darwin-user disable all darwin usermode emulation targets"
|
|
echo " --enable-bsd-user enable all BSD usermode emulation targets"
|
|
echo " --disable-bsd-user disable all BSD usermode emulation targets"
|
|
echo " --fmod-lib path to FMOD library"
|
|
echo " --fmod-inc path to FMOD includes"
|
|
echo " --oss-lib path to OSS library"
|
|
echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
|
|
echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
|
|
echo " --disable-vde disable support for vde network"
|
|
echo " --disable-aio disable AIO support"
|
|
echo " --disable-blobs disable installing provided firmware blobs"
|
|
echo " --kerneldir=PATH look for kernel includes in PATH"
|
|
echo ""
|
|
echo "NOTE: The object files are built at the place where configure is launched"
|
|
exit 1
|
|
fi
|
|
|
|
if test "$mingw32" = "yes" ; then
|
|
linux="no"
|
|
EXESUF=".exe"
|
|
oss="no"
|
|
linux_user="no"
|
|
bsd_user="no"
|
|
fi
|
|
|
|
if test ! -x "$(which cgcc 2>/dev/null)"; then
|
|
sparse="no"
|
|
fi
|
|
|
|
#
|
|
# Solaris specific configure tool chain decisions
|
|
#
|
|
if test "$solaris" = "yes" ; then
|
|
solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
|
|
if test -z "$solinst" ; then
|
|
echo "Solaris install program not found. Use --install=/usr/ucb/install or"
|
|
echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
|
|
echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
|
|
exit 1
|
|
fi
|
|
if test "$solinst" = "/usr/sbin/install" ; then
|
|
echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
|
|
echo "try ginstall from the GNU fileutils available from www.blastwave.org"
|
|
echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
|
|
exit 1
|
|
fi
|
|
sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
|
|
if test -z "$sol_ar" ; then
|
|
echo "Error: No path includes ar"
|
|
if test -f /usr/ccs/bin/ar ; then
|
|
echo "Add /usr/ccs/bin to your path and rerun configure"
|
|
fi
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
|
|
if test -z "$target_list" ; then
|
|
# these targets are portable
|
|
if [ "$softmmu" = "yes" ] ; then
|
|
target_list="\
|
|
i386-softmmu \
|
|
x86_64-softmmu \
|
|
arm-softmmu \
|
|
cris-softmmu \
|
|
m68k-softmmu \
|
|
mips-softmmu \
|
|
mipsel-softmmu \
|
|
mips64-softmmu \
|
|
mips64el-softmmu \
|
|
ppc-softmmu \
|
|
ppcemb-softmmu \
|
|
ppc64-softmmu \
|
|
sh4-softmmu \
|
|
sh4eb-softmmu \
|
|
sparc-softmmu \
|
|
"
|
|
fi
|
|
# the following are Linux specific
|
|
if [ "$linux_user" = "yes" ] ; then
|
|
target_list="${target_list}\
|
|
i386-linux-user \
|
|
x86_64-linux-user \
|
|
alpha-linux-user \
|
|
arm-linux-user \
|
|
armeb-linux-user \
|
|
cris-linux-user \
|
|
m68k-linux-user \
|
|
mips-linux-user \
|
|
mipsel-linux-user \
|
|
ppc-linux-user \
|
|
ppc64-linux-user \
|
|
ppc64abi32-linux-user \
|
|
sh4-linux-user \
|
|
sh4eb-linux-user \
|
|
sparc-linux-user \
|
|
sparc64-linux-user \
|
|
sparc32plus-linux-user \
|
|
"
|
|
fi
|
|
# the following are Darwin specific
|
|
if [ "$darwin_user" = "yes" ] ; then
|
|
target_list="$target_list i386-darwin-user ppc-darwin-user "
|
|
fi
|
|
# the following are BSD specific
|
|
if [ "$bsd_user" = "yes" ] ; then
|
|
target_list="${target_list}\
|
|
sparc64-bsd-user \
|
|
"
|
|
fi
|
|
else
|
|
target_list=`echo "$target_list" | sed -e 's/,/ /g'`
|
|
fi
|
|
if test -z "$target_list" ; then
|
|
echo "No targets enabled"
|
|
exit 1
|
|
fi
|
|
|
|
if test -z "$cross_prefix" ; then
|
|
|
|
# ---
|
|
# big/little endian test
|
|
cat > $TMPC << EOF
|
|
#include <inttypes.h>
|
|
int main(int argc, char ** argv){
|
|
volatile uint32_t i=0x01234567;
|
|
return (*((uint8_t*)(&i))) == 0x67;
|
|
}
|
|
EOF
|
|
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
|
|
$TMPE && bigendian="yes"
|
|
else
|
|
echo big/little test failed
|
|
fi
|
|
|
|
else
|
|
|
|
# if cross compiling, cannot launch a program, so make a static guess
|
|
if test "$cpu" = "armv4b" \
|
|
-o "$cpu" = "hppa" \
|
|
-o "$cpu" = "m68k" \
|
|
-o "$cpu" = "mips" \
|
|
-o "$cpu" = "mips64" \
|
|
-o "$cpu" = "ppc" \
|
|
-o "$cpu" = "ppc64" \
|
|
-o "$cpu" = "s390" \
|
|
-o "$cpu" = "sparc" \
|
|
-o "$cpu" = "sparc64"; then
|
|
bigendian="yes"
|
|
fi
|
|
|
|
fi
|
|
|
|
# host long bits test
|
|
hostlongbits="32"
|
|
if test "$cpu" = "x86_64" \
|
|
-o "$cpu" = "alpha" \
|
|
-o "$cpu" = "ia64" \
|
|
-o "$cpu" = "sparc64" \
|
|
-o "$cpu" = "ppc64"; then
|
|
hostlongbits="64"
|
|
fi
|
|
|
|
# check gcc options support
|
|
cat > $TMPC <<EOF
|
|
int main(void) {
|
|
}
|
|
EOF
|
|
|
|
# Check host NPTL support
|
|
cat > $TMPC <<EOF
|
|
#include <sched.h>
|
|
#include <linux/futex.h>
|
|
void foo()
|
|
{
|
|
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
|
|
#error bork
|
|
#endif
|
|
}
|
|
EOF
|
|
|
|
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
|
|
:
|
|
else
|
|
nptl="no"
|
|
fi
|
|
|
|
##########################################
|
|
# zlib check
|
|
|
|
cat > $TMPC << EOF
|
|
#include <zlib.h>
|
|
int main(void) { zlibVersion(); return 0; }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
|
|
:
|
|
else
|
|
echo
|
|
echo "Error: zlib check failed"
|
|
echo "Make sure to have the zlib libs and headers installed."
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
##########################################
|
|
# SDL probe
|
|
|
|
sdl_too_old=no
|
|
|
|
if test -z "$sdl" ; then
|
|
sdl_config="sdl-config"
|
|
sdl=no
|
|
sdl_static=no
|
|
|
|
cat > $TMPC << EOF
|
|
#include <SDL.h>
|
|
#undef main /* We don't want SDL to override our main() */
|
|
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > $TMPSDLLOG 2>&1 ; then
|
|
_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
|
|
if test "$_sdlversion" -lt 121 ; then
|
|
sdl_too_old=yes
|
|
else
|
|
if test "$cocoa" = "no" ; then
|
|
sdl=yes
|
|
fi
|
|
fi
|
|
|
|
# static link with sdl ?
|
|
if test "$sdl" = "yes" ; then
|
|
aa="no"
|
|
`$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
|
|
sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
|
|
if [ "$aa" = "yes" ] ; then
|
|
sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
|
|
fi
|
|
|
|
if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
|
|
sdl_static=yes
|
|
fi
|
|
fi # static link
|
|
fi # sdl compile test
|
|
else
|
|
# Make sure to disable cocoa if sdl was set
|
|
if test "$sdl" = "yes" ; then
|
|
cocoa="no"
|
|
audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
|
|
fi
|
|
fi # -z $sdl
|
|
|
|
if test "$sdl" = "yes" ; then
|
|
cat > $TMPC <<EOF
|
|
#include <SDL.h>
|
|
#if defined(SDL_VIDEO_DRIVER_X11)
|
|
#include <X11/XKBlib.h>
|
|
#else
|
|
#error No x11 support
|
|
#endif
|
|
int main(void) { return 0; }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > /dev/null 2>&1 ; then
|
|
sdl_x11="yes"
|
|
fi
|
|
fi
|
|
|
|
##########################################
|
|
# VNC TLS detection
|
|
if test "$vnc_tls" = "yes" ; then
|
|
cat > $TMPC <<EOF
|
|
#include <gnutls/gnutls.h>
|
|
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
|
|
EOF
|
|
vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
|
|
vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
|
|
$vnc_tls_libs > /dev/null 2> /dev/null ; then
|
|
:
|
|
else
|
|
vnc_tls="no"
|
|
fi
|
|
fi
|
|
|
|
##########################################
|
|
# VNC SASL detection
|
|
if test "$vnc_sasl" = "yes" ; then
|
|
cat > $TMPC <<EOF
|
|
#include <sasl/sasl.h>
|
|
#include <stdio.h>
|
|
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
|
|
EOF
|
|
# Assuming Cyrus-SASL installed in /usr prefix
|
|
vnc_sasl_cflags=""
|
|
vnc_sasl_libs="-lsasl2"
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_sasl_cflags $TMPC \
|
|
$vnc_sasl_libs 2> /dev/null ; then
|
|
:
|
|
else
|
|
vnc_sasl="no"
|
|
fi
|
|
fi
|
|
|
|
##########################################
|
|
# fnmatch() probe, used for ACL routines
|
|
fnmatch="no"
|
|
cat > $TMPC << EOF
|
|
#include <fnmatch.h>
|
|
int main(void)
|
|
{
|
|
fnmatch("foo", "foo", 0);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
|
|
fnmatch="yes"
|
|
fi
|
|
|
|
##########################################
|
|
# vde libraries probe
|
|
if test "$vde" = "yes" ; then
|
|
cat > $TMPC << EOF
|
|
#include <libvdeplug.h>
|
|
int main(void)
|
|
{
|
|
struct vde_open_args a = {0, 0, 0};
|
|
vde_open("", "", &a);
|
|
return 0;
|
|
}
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
|
|
:
|
|
else
|
|
vde="no"
|
|
fi
|
|
fi
|
|
|
|
##########################################
|
|
# Sound support libraries probe
|
|
|
|
audio_drv_probe()
|
|
{
|
|
drv=$1
|
|
hdr=$2
|
|
lib=$3
|
|
exp=$4
|
|
cfl=$5
|
|
cat > $TMPC << EOF
|
|
#include <$hdr>
|
|
int main(void) { $exp }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
|
|
:
|
|
else
|
|
echo
|
|
echo "Error: $drv check failed"
|
|
echo "Make sure to have the $drv libs and headers installed."
|
|
echo
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
|
|
for drv in $audio_drv_list; do
|
|
case $drv in
|
|
alsa)
|
|
audio_drv_probe $drv alsa/asoundlib.h -lasound \
|
|
"snd_pcm_t **handle; return snd_pcm_close(*handle);"
|
|
;;
|
|
|
|
fmod)
|
|
if test -z $fmod_lib || test -z $fmod_inc; then
|
|
echo
|
|
echo "Error: You must specify path to FMOD library and headers"
|
|
echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
|
|
echo
|
|
exit 1
|
|
fi
|
|
audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
|
|
;;
|
|
|
|
esd)
|
|
audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
|
|
;;
|
|
|
|
pa)
|
|
audio_drv_probe $drv pulse/simple.h -lpulse-simple \
|
|
"pa_simple *s = NULL; pa_simple_free(s); return 0;"
|
|
;;
|
|
|
|
oss|sdl|core|wav|dsound)
|
|
# XXX: Probes for CoreAudio, DirectSound, SDL(?)
|
|
;;
|
|
|
|
*)
|
|
echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
|
|
echo
|
|
echo "Error: Unknown driver '$drv' selected"
|
|
echo "Possible drivers are: $audio_possible_drivers"
|
|
echo
|
|
exit 1
|
|
}
|
|
;;
|
|
esac
|
|
done
|
|
|
|
##########################################
|
|
# BrlAPI probe
|
|
|
|
if test -z "$brlapi" ; then
|
|
brlapi=no
|
|
cat > $TMPC << EOF
|
|
#include <brlapi.h>
|
|
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
|
|
EOF
|
|
if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
|
|
brlapi=yes
|
|
fi # brlapi compile test
|
|
fi # -z $brlapi
|
|
|
|
##########################################
|
|
# curses probe
|
|
|
|
if test "$curses" = "yes" ; then
|
|
curses=no
|
|
cat > $TMPC << EOF
|
|
#include <curses.h>
|
|
int main(void) { return curses_version(); }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
|
|
curses=yes
|
|
fi
|
|
fi # test "$curses"
|
|
|
|
##########################################
|
|
# bluez support probe
|
|
if test "$bluez" = "yes" ; then
|
|
`pkg-config bluez` || bluez="no"
|
|
fi
|
|
if test "$bluez" = "yes" ; then
|
|
cat > $TMPC << EOF
|
|
#include <bluetooth/bluetooth.h>
|
|
int main(void) { return bt_error(0); }
|
|
EOF
|
|
bluez_cflags=`pkg-config --cflags bluez`
|
|
bluez_libs=`pkg-config --libs bluez`
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
|
|
$bluez_libs > /dev/null 2> /dev/null ; then
|
|
:
|
|
else
|
|
bluez="no"
|
|
fi
|
|
fi
|
|
|
|
##########################################
|
|
# kvm probe
|
|
if test "$kvm" = "yes" ; then
|
|
cat > $TMPC <<EOF
|
|
#include <linux/kvm.h>
|
|
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
|
|
#error Invalid KVM version
|
|
#endif
|
|
#if !defined(KVM_CAP_USER_MEMORY)
|
|
#error Missing KVM capability KVM_CAP_USER_MEMORY
|
|
#endif
|
|
#if !defined(KVM_CAP_SET_TSS_ADDR)
|
|
#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
|
|
#endif
|
|
#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
|
|
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
|
|
#endif
|
|
int main(void) { return 0; }
|
|
EOF
|
|
if test "$kerneldir" != "" ; then
|
|
kvm_cflags=-I"$kerneldir"/include
|
|
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
|
|
-a -d "$kerneldir/arch/x86/include" ; then
|
|
kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
|
|
elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
|
|
kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
|
|
elif test -d "$kerneldir/arch/$cpu/include" ; then
|
|
kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
|
|
fi
|
|
else
|
|
kvm_cflags=""
|
|
fi
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
|
|
> /dev/null 2>/dev/null ; then
|
|
:
|
|
else
|
|
kvm="no";
|
|
if [ -x "`which awk 2>/dev/null`" ] && \
|
|
[ -x "`which grep 2>/dev/null`" ]; then
|
|
kvmerr=`$cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \
|
|
| grep "error: " \
|
|
| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
|
|
if test "$kvmerr" != "" ; then
|
|
kvm="no - (${kvmerr})"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
##########################################
|
|
# AIO probe
|
|
AIOLIBS=""
|
|
|
|
if test "$aio" = "yes" ; then
|
|
aio=no
|
|
cat > $TMPC << EOF
|
|
#include <pthread.h>
|
|
int main(void) { pthread_mutex_t lock; return 0; }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
|
|
aio=yes
|
|
AIOLIBS="-lpthread"
|
|
fi
|
|
fi
|
|
|
|
##########################################
|
|
# iovec probe
|
|
cat > $TMPC <<EOF
|
|
#include <sys/types.h>
|
|
#include <sys/uio.h>
|
|
#include <unistd.h>
|
|
int main(void) { struct iovec iov; return 0; }
|
|
EOF
|
|
iovec=no
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
|
|
iovec=yes
|
|
fi
|
|
|
|
##########################################
|
|
# fdt probe
|
|
if test "$fdt" = "yes" ; then
|
|
fdt=no
|
|
cat > $TMPC << EOF
|
|
int main(void) { return 0; }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null ; then
|
|
fdt=yes
|
|
fi
|
|
fi
|
|
|
|
# Check if tools are available to build documentation.
|
|
if [ -x "`which texi2html 2>/dev/null`" ] && \
|
|
[ -x "`which pod2man 2>/dev/null`" ]; then
|
|
build_docs="yes"
|
|
fi
|
|
|
|
##########################################
|
|
# Do we need librt
|
|
cat > $TMPC <<EOF
|
|
#include <signal.h>
|
|
#include <time.h>
|
|
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
|
|
EOF
|
|
|
|
rt=no
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
|
|
:
|
|
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
|
|
rt=yes
|
|
fi
|
|
|
|
if test "$rt" = "yes" ; then
|
|
# Hack, we should have a general purpose LIBS for this sort of thing
|
|
AIOLIBS="$AIOLIBS -lrt"
|
|
fi
|
|
|
|
if test "$mingw32" = "yes" ; then
|
|
if test -z "$prefix" ; then
|
|
prefix="c:\\\\Program Files\\\\Qemu"
|
|
fi
|
|
mansuffix=""
|
|
datasuffix=""
|
|
docsuffix=""
|
|
binsuffix=""
|
|
else
|
|
if test -z "$prefix" ; then
|
|
prefix="/usr/local"
|
|
fi
|
|
mansuffix="/share/man"
|
|
datasuffix="/share/qemu"
|
|
docsuffix="/share/doc/qemu"
|
|
binsuffix="/bin"
|
|
fi
|
|
|
|
echo "Install prefix $prefix"
|
|
echo "BIOS directory $prefix$datasuffix"
|
|
echo "binary directory $prefix$binsuffix"
|
|
if test "$mingw32" = "no" ; then
|
|
echo "Manual directory $prefix$mansuffix"
|
|
echo "ELF interp prefix $interp_prefix"
|
|
fi
|
|
echo "Source path $source_path"
|
|
echo "C compiler $cc"
|
|
echo "Host C compiler $host_cc"
|
|
echo "ARCH_CFLAGS $ARCH_CFLAGS"
|
|
echo "make $make"
|
|
echo "install $install"
|
|
echo "host CPU $cpu"
|
|
echo "host big endian $bigendian"
|
|
echo "target list $target_list"
|
|
echo "gprof enabled $gprof"
|
|
echo "sparse enabled $sparse"
|
|
echo "profiler $profiler"
|
|
echo "static build $static"
|
|
echo "-Werror enabled $werror"
|
|
if test "$darwin" = "yes" ; then
|
|
echo "Cocoa support $cocoa"
|
|
fi
|
|
echo "SDL support $sdl"
|
|
if test "$sdl" != "no" ; then
|
|
echo "SDL static link $sdl_static"
|
|
fi
|
|
echo "curses support $curses"
|
|
echo "mingw32 support $mingw32"
|
|
echo "Audio drivers $audio_drv_list"
|
|
echo "Extra audio cards $audio_card_list"
|
|
echo "Mixer emulation $mixemu"
|
|
echo "VNC TLS support $vnc_tls"
|
|
if test "$vnc_tls" = "yes" ; then
|
|
echo " TLS CFLAGS $vnc_tls_cflags"
|
|
echo " TLS LIBS $vnc_tls_libs"
|
|
fi
|
|
echo "VNC SASL support $vnc_sasl"
|
|
if test "$vnc_sasl" = "yes" ; then
|
|
echo " SASL CFLAGS $vnc_sasl_cflags"
|
|
echo " SASL LIBS $vnc_sasl_libs"
|
|
fi
|
|
if test -n "$sparc_cpu"; then
|
|
echo "Target Sparc Arch $sparc_cpu"
|
|
fi
|
|
echo "kqemu support $kqemu"
|
|
echo "brlapi support $brlapi"
|
|
echo "Documentation $build_docs"
|
|
[ ! -z "$uname_release" ] && \
|
|
echo "uname -r $uname_release"
|
|
echo "NPTL support $nptl"
|
|
echo "vde support $vde"
|
|
echo "AIO support $aio"
|
|
echo "Install blobs $blobs"
|
|
echo "KVM support $kvm"
|
|
echo "fdt support $fdt"
|
|
|
|
if test $sdl_too_old = "yes"; then
|
|
echo "-> Your SDL version is too old - please upgrade to have SDL support"
|
|
fi
|
|
if [ -s $TMPSDLLOG ]; then
|
|
echo "The error log from compiling the libSDL test is: "
|
|
cat $TMPSDLLOG
|
|
fi
|
|
#if test "$sdl_static" = "no"; then
|
|
# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
|
|
#fi
|
|
config_mak="config-host.mak"
|
|
config_h="config-host.h"
|
|
|
|
#echo "Creating $config_mak and $config_h"
|
|
|
|
test -f $config_h && mv $config_h ${config_h}~
|
|
|
|
echo "# Automatically generated by configure - do not modify" > $config_mak
|
|
printf "# Configured with:" >> $config_mak
|
|
printf " '%s'" "$0" "$@" >> $config_mak
|
|
echo >> $config_mak
|
|
echo "/* Automatically generated by configure - do not modify */" > $config_h
|
|
|
|
echo "prefix=$prefix" >> $config_mak
|
|
echo "bindir=\${prefix}$binsuffix" >> $config_mak
|
|
echo "mandir=\${prefix}$mansuffix" >> $config_mak
|
|
echo "datadir=\${prefix}$datasuffix" >> $config_mak
|
|
echo "docdir=\${prefix}$docsuffix" >> $config_mak
|
|
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
|
|
echo "MAKE=$make" >> $config_mak
|
|
echo "INSTALL=$install" >> $config_mak
|
|
echo "CC=$cc" >> $config_mak
|
|
echo "HOST_CC=$host_cc" >> $config_mak
|
|
echo "AR=$ar" >> $config_mak
|
|
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
|
|
# XXX: only use CFLAGS and LDFLAGS ?
|
|
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
|
|
# compilation of dyngen tool (useful for win32 build on Linux host)
|
|
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
|
|
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
|
|
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
|
|
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
|
|
echo "CFLAGS=$CFLAGS" >> $config_mak
|
|
echo "LDFLAGS=$LDFLAGS" >> $config_mak
|
|
echo "EXESUF=$EXESUF" >> $config_mak
|
|
echo "AIOLIBS=$AIOLIBS" >> $config_mak
|
|
case "$cpu" in
|
|
i386)
|
|
echo "ARCH=i386" >> $config_mak
|
|
echo "#define HOST_I386 1" >> $config_h
|
|
;;
|
|
x86_64)
|
|
echo "ARCH=x86_64" >> $config_mak
|
|
echo "#define HOST_X86_64 1" >> $config_h
|
|
;;
|
|
alpha)
|
|
echo "ARCH=alpha" >> $config_mak
|
|
echo "#define HOST_ALPHA 1" >> $config_h
|
|
;;
|
|
armv4b)
|
|
echo "ARCH=arm" >> $config_mak
|
|
echo "#define HOST_ARM 1" >> $config_h
|
|
;;
|
|
armv4l)
|
|
echo "ARCH=arm" >> $config_mak
|
|
echo "#define HOST_ARM 1" >> $config_h
|
|
;;
|
|
cris)
|
|
echo "ARCH=cris" >> $config_mak
|
|
echo "#define HOST_CRIS 1" >> $config_h
|
|
;;
|
|
hppa)
|
|
echo "ARCH=hppa" >> $config_mak
|
|
echo "#define HOST_HPPA 1" >> $config_h
|
|
;;
|
|
ia64)
|
|
echo "ARCH=ia64" >> $config_mak
|
|
echo "#define HOST_IA64 1" >> $config_h
|
|
;;
|
|
m68k)
|
|
echo "ARCH=m68k" >> $config_mak
|
|
echo "#define HOST_M68K 1" >> $config_h
|
|
;;
|
|
mips)
|
|
echo "ARCH=mips" >> $config_mak
|
|
echo "#define HOST_MIPS 1" >> $config_h
|
|
;;
|
|
mips64)
|
|
echo "ARCH=mips64" >> $config_mak
|
|
echo "#define HOST_MIPS64 1" >> $config_h
|
|
;;
|
|
ppc)
|
|
echo "ARCH=ppc" >> $config_mak
|
|
echo "#define HOST_PPC 1" >> $config_h
|
|
;;
|
|
ppc64)
|
|
echo "ARCH=ppc64" >> $config_mak
|
|
echo "#define HOST_PPC64 1" >> $config_h
|
|
;;
|
|
s390)
|
|
echo "ARCH=s390" >> $config_mak
|
|
echo "#define HOST_S390 1" >> $config_h
|
|
;;
|
|
sparc)
|
|
echo "ARCH=sparc" >> $config_mak
|
|
echo "#define HOST_SPARC 1" >> $config_h
|
|
;;
|
|
sparc64)
|
|
echo "ARCH=sparc64" >> $config_mak
|
|
echo "#define HOST_SPARC64 1" >> $config_h
|
|
;;
|
|
*)
|
|
echo "Unsupported CPU = $cpu"
|
|
exit 1
|
|
;;
|
|
esac
|
|
if test "$sparse" = "yes" ; then
|
|
echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
|
|
echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
|
|
echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
|
|
fi
|
|
if test "$bigendian" = "yes" ; then
|
|
echo "WORDS_BIGENDIAN=yes" >> $config_mak
|
|
echo "#define WORDS_BIGENDIAN 1" >> $config_h
|
|
fi
|
|
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
|
|
if test "$mingw32" = "yes" ; then
|
|
echo "CONFIG_WIN32=yes" >> $config_mak
|
|
echo "#define CONFIG_WIN32 1" >> $config_h
|
|
else
|
|
cat > $TMPC << EOF
|
|
#include <byteswap.h>
|
|
int main(void) { return bswap_32(0); }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
|
|
echo "#define HAVE_BYTESWAP_H 1" >> $config_h
|
|
fi
|
|
cat > $TMPC << EOF
|
|
#include <sys/endian.h>
|
|
#include <sys/types.h>
|
|
#include <machine/bswap.h>
|
|
int main(void) { return bswap32(0); }
|
|
EOF
|
|
if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
|
|
echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
|
|
fi
|
|
fi
|
|
|
|
if [ "$openbsd" = "yes" ] ; then
|
|
echo "#define ENOTSUP 4096" >> $config_h
|
|
fi
|
|
|
|
if test "$darwin" = "yes" ; then
|
|
echo "CONFIG_DARWIN=yes" >> $config_mak
|
|
echo "#define CONFIG_DARWIN 1" >> $config_h
|
|
fi
|
|
|
|
if test "$aix" = "yes" ; then
|
|
echo "CONFIG_AIX=yes" >> $config_mak
|
|
echo "#define CONFIG_AIX 1" >> $config_h
|
|
fi
|
|
|
|
if test "$solaris" = "yes" ; then
|
|
echo "CONFIG_SOLARIS=yes" >> $config_mak
|
|
echo "#define HOST_SOLARIS $solarisrev" >> $config_h
|
|
if test "$needs_libsunmath" = "yes" ; then
|
|
echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
|
|
echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
|
|
fi
|
|
fi
|
|
if test -n "$sparc_cpu"; then
|
|
echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
|
|
echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
|
|
fi
|
|
if test "$gdbstub" = "yes" ; then
|
|
echo "CONFIG_GDBSTUB=yes" >> $config_mak
|
|
echo "#define CONFIG_GDBSTUB 1" >> $config_h
|
|
fi
|
|
if test "$gprof" = "yes" ; then
|
|
echo "TARGET_GPROF=yes" >> $config_mak
|
|
echo "#define HAVE_GPROF 1" >> $config_h
|
|
fi
|
|
if test "$static" = "yes" ; then
|
|
echo "CONFIG_STATIC=yes" >> $config_mak
|
|
echo "#define CONFIG_STATIC 1" >> $config_h
|
|
fi
|
|
if test $profiler = "yes" ; then
|
|
echo "#define CONFIG_PROFILER 1" >> $config_h
|
|
fi
|
|
if test "$slirp" = "yes" ; then
|
|
echo "CONFIG_SLIRP=yes" >> $config_mak
|
|
echo "#define CONFIG_SLIRP 1" >> $config_h
|
|
fi
|
|
if test "$vde" = "yes" ; then
|
|
echo "CONFIG_VDE=yes" >> $config_mak
|
|
echo "#define CONFIG_VDE 1" >> $config_h
|
|
echo "VDE_LIBS=-lvdeplug" >> $config_mak
|
|
fi
|
|
for card in $audio_card_list; do
|
|
def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
|
|
echo "$def=yes" >> $config_mak
|
|
echo "#define $def 1" >> $config_h
|
|
done
|
|
echo "#define AUDIO_DRIVERS \\" >> $config_h
|
|
for drv in $audio_drv_list; do
|
|
echo " &${drv}_audio_driver, \\" >>$config_h
|
|
def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
|
|
echo "$def=yes" >> $config_mak
|
|
if test "$drv" = "fmod"; then
|
|
echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
|
|
echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
|
|
elif test "$drv" = "oss"; then
|
|
echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
|
|
fi
|
|
done
|
|
echo "" >>$config_h
|
|
if test "$mixemu" = "yes" ; then
|
|
echo "CONFIG_MIXEMU=yes" >> $config_mak
|
|
echo "#define CONFIG_MIXEMU 1" >> $config_h
|
|
fi
|
|
if test "$vnc_tls" = "yes" ; then
|
|
echo "CONFIG_VNC_TLS=yes" >> $config_mak
|
|
echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
|
|
echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
|
|
echo "#define CONFIG_VNC_TLS 1" >> $config_h
|
|
fi
|
|
if test "$vnc_sasl" = "yes" ; then
|
|
echo "CONFIG_VNC_SASL=yes" >> $config_mak
|
|
echo "CONFIG_VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_mak
|
|
echo "CONFIG_VNC_SASL_LIBS=$vnc_sasl_libs" >> $config_mak
|
|
echo "#define CONFIG_VNC_SASL 1" >> $config_h
|
|
fi
|
|
if test "$fnmatch" = "yes" ; then
|
|
echo "#define HAVE_FNMATCH_H 1" >> $config_h
|
|
fi
|
|
qemu_version=`head $source_path/VERSION`
|
|
echo "VERSION=$qemu_version" >>$config_mak
|
|
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
|
|
|
|
echo "SRC_PATH=$source_path" >> $config_mak
|
|
if [ "$source_path_used" = "yes" ]; then
|
|
echo "VPATH=$source_path" >> $config_mak
|
|
fi
|
|
echo "TARGET_DIRS=$target_list" >> $config_mak
|
|
if [ "$build_docs" = "yes" ] ; then
|
|
echo "BUILD_DOCS=yes" >> $config_mak
|
|
fi
|
|
if test "$static" = "yes"; then
|
|
sdl1=$sdl_static
|
|
else
|
|
sdl1=$sdl
|
|
fi
|
|
if test "$sdl1" = "yes" ; then
|
|
echo "#define CONFIG_SDL 1" >> $config_h
|
|
echo "CONFIG_SDL=yes" >> $config_mak
|
|
if test "$target_softmmu" = "no" -o "$static" = "yes"; then
|
|
echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
|
|
elif test "$sdl_x11" = "yes" ; then
|
|
echo "SDL_LIBS=`$sdl_config --libs` -lX11" >> $config_mak
|
|
else
|
|
echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
|
|
fi
|
|
if [ "${aa}" = "yes" ] ; then
|
|
echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
|
|
else
|
|
echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
|
|
fi
|
|
fi
|
|
if test "$cocoa" = "yes" ; then
|
|
echo "#define CONFIG_COCOA 1" >> $config_h
|
|
echo "CONFIG_COCOA=yes" >> $config_mak
|
|
fi
|
|
if test "$curses" = "yes" ; then
|
|
echo "#define CONFIG_CURSES 1" >> $config_h
|
|
echo "CONFIG_CURSES=yes" >> $config_mak
|
|
echo "CURSES_LIBS=-lcurses" >> $config_mak
|
|
fi
|
|
if test "$brlapi" = "yes" ; then
|
|
echo "CONFIG_BRLAPI=yes" >> $config_mak
|
|
echo "#define CONFIG_BRLAPI 1" >> $config_h
|
|
echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
|
|
fi
|
|
if test "$bluez" = "yes" ; then
|
|
echo "CONFIG_BLUEZ=yes" >> $config_mak
|
|
echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
|
|
echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
|
|
echo "#define CONFIG_BLUEZ 1" >> $config_h
|
|
fi
|
|
if test "$aio" = "yes" ; then
|
|
echo "#define CONFIG_AIO 1" >> $config_h
|
|
echo "CONFIG_AIO=yes" >> $config_mak
|
|
fi
|
|
if test "$blobs" = "yes" ; then
|
|
echo "INSTALL_BLOBS=yes" >> $config_mak
|
|
fi
|
|
if test "$iovec" = "yes" ; then
|
|
echo "#define HAVE_IOVEC 1" >> $config_h
|
|
fi
|
|
if test "$fdt" = "yes" ; then
|
|
echo "#define HAVE_FDT 1" >> $config_h
|
|
echo "FDT_LIBS=-lfdt" >> $config_mak
|
|
fi
|
|
|
|
# XXX: suppress that
|
|
if [ "$bsd" = "yes" ] ; then
|
|
echo "#define O_LARGEFILE 0" >> $config_h
|
|
echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
|
|
echo "#define _BSD 1" >> $config_h
|
|
fi
|
|
|
|
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
|
|
|
|
# USB host support
|
|
case "$usb" in
|
|
linux)
|
|
echo "HOST_USB=linux" >> $config_mak
|
|
;;
|
|
bsd)
|
|
echo "HOST_USB=bsd" >> $config_mak
|
|
;;
|
|
*)
|
|
echo "HOST_USB=stub" >> $config_mak
|
|
;;
|
|
esac
|
|
|
|
tools=
|
|
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
|
|
tools="qemu-img\$(EXESUF) $tools"
|
|
if [ "$linux" = "yes" ] ; then
|
|
tools="qemu-nbd\$(EXESUF) $tools"
|
|
fi
|
|
fi
|
|
echo "TOOLS=$tools" >> $config_mak
|
|
|
|
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
|
|
|
|
for target in $target_list; do
|
|
target_dir="$target"
|
|
config_mak=$target_dir/config.mak
|
|
config_h=$target_dir/config.h
|
|
target_cpu=`echo $target | cut -d '-' -f 1`
|
|
target_bigendian="no"
|
|
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "mips" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
|
|
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
|
|
target_softmmu="no"
|
|
target_user_only="no"
|
|
target_linux_user="no"
|
|
target_darwin_user="no"
|
|
target_bsd_user="no"
|
|
case "$target" in
|
|
${target_cpu}-softmmu)
|
|
target_softmmu="yes"
|
|
;;
|
|
${target_cpu}-linux-user)
|
|
target_user_only="yes"
|
|
target_linux_user="yes"
|
|
;;
|
|
${target_cpu}-darwin-user)
|
|
target_user_only="yes"
|
|
target_darwin_user="yes"
|
|
;;
|
|
${target_cpu}-bsd-user)
|
|
target_user_only="yes"
|
|
target_bsd_user="yes"
|
|
;;
|
|
*)
|
|
echo "ERROR: Target '$target' not recognised"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
|
|
-a "$sdl" = "no" -a "$cocoa" = "no" ; then
|
|
echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
|
|
echo "To build QEMU without graphical output configure with --disable-gfx-check"
|
|
echo "Note that this will disable all output from the virtual graphics card"
|
|
echo "except through VNC or curses."
|
|
exit 1;
|
|
fi
|
|
|
|
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
|
|
|
|
test -f $config_h && mv $config_h ${config_h}~
|
|
|
|
mkdir -p $target_dir
|
|
mkdir -p $target_dir/fpu
|
|
mkdir -p $target_dir/tcg
|
|
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
|
|
mkdir -p $target_dir/nwfpe
|
|
fi
|
|
|
|
#
|
|
# don't use ln -sf as not all "ln -sf" over write the file/link
|
|
#
|
|
rm -f $target_dir/Makefile
|
|
ln -s $source_path/Makefile.target $target_dir/Makefile
|
|
|
|
|
|
echo "# Automatically generated by configure - do not modify" > $config_mak
|
|
echo "/* Automatically generated by configure - do not modify */" > $config_h
|
|
|
|
|
|
echo "include ../config-host.mak" >> $config_mak
|
|
echo "#include \"../config-host.h\"" >> $config_h
|
|
|
|
bflt="no"
|
|
elfload32="no"
|
|
target_nptl="no"
|
|
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
|
|
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
|
|
gdb_xml_files=""
|
|
|
|
# Make sure the target and host cpus are compatible
|
|
if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
|
|
\( "$target_cpu" = "ppcemb" -a "$cpu" = "ppc" \) -o \
|
|
\( "$target_cpu" = "x86_64" -a "$cpu" = "i386" \) -o \
|
|
\( "$target_cpu" = "i386" -a "$cpu" = "x86_64" \) \) ; then
|
|
kvm="no"
|
|
fi
|
|
# Disable KVM for linux-user
|
|
if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
|
|
kvm="no"
|
|
fi
|
|
|
|
case "$target_cpu" in
|
|
i386)
|
|
echo "TARGET_ARCH=i386" >> $config_mak
|
|
echo "#define TARGET_ARCH \"i386\"" >> $config_h
|
|
echo "#define TARGET_I386 1" >> $config_h
|
|
if test $kqemu = "yes" -a "$target_softmmu" = "yes"
|
|
then
|
|
echo "#define USE_KQEMU 1" >> $config_h
|
|
fi
|
|
if test "$kvm" = "yes" ; then
|
|
echo "CONFIG_KVM=yes" >> $config_mak
|
|
echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
|
|
echo "#define CONFIG_KVM 1" >> $config_h
|
|
fi
|
|
;;
|
|
x86_64)
|
|
echo "TARGET_ARCH=x86_64" >> $config_mak
|
|
echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
|
|
echo "#define TARGET_I386 1" >> $config_h
|
|
echo "#define TARGET_X86_64 1" >> $config_h
|
|
if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
|
|
then
|
|
echo "#define USE_KQEMU 1" >> $config_h
|
|
fi
|
|
if test "$kvm" = "yes" ; then
|
|
echo "CONFIG_KVM=yes" >> $config_mak
|
|
echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
|
|
echo "#define CONFIG_KVM 1" >> $config_h
|
|
fi
|
|
;;
|
|
alpha)
|
|
echo "TARGET_ARCH=alpha" >> $config_mak
|
|
echo "#define TARGET_ARCH \"alpha\"" >> $config_h
|
|
echo "#define TARGET_ALPHA 1" >> $config_h
|
|
;;
|
|
arm|armeb)
|
|
echo "TARGET_ARCH=arm" >> $config_mak
|
|
echo "#define TARGET_ARCH \"arm\"" >> $config_h
|
|
echo "#define TARGET_ARM 1" >> $config_h
|
|
bflt="yes"
|
|
target_nptl="yes"
|
|
gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
|
|
;;
|
|
cris)
|
|
echo "TARGET_ARCH=cris" >> $config_mak
|
|
echo "#define TARGET_ARCH \"cris\"" >> $config_h
|
|
echo "#define TARGET_CRIS 1" >> $config_h
|
|
target_nptl="yes"
|
|
;;
|
|
m68k)
|
|
echo "TARGET_ARCH=m68k" >> $config_mak
|
|
echo "#define TARGET_ARCH \"m68k\"" >> $config_h
|
|
echo "#define TARGET_M68K 1" >> $config_h
|
|
bflt="yes"
|
|
gdb_xml_files="cf-core.xml cf-fp.xml"
|
|
;;
|
|
mips|mipsel)
|
|
echo "TARGET_ARCH=mips" >> $config_mak
|
|
echo "#define TARGET_ARCH \"mips\"" >> $config_h
|
|
echo "#define TARGET_MIPS 1" >> $config_h
|
|
echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
|
|
;;
|
|
mipsn32|mipsn32el)
|
|
echo "TARGET_ARCH=mipsn32" >> $config_mak
|
|
echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
|
|
echo "#define TARGET_MIPS 1" >> $config_h
|
|
echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
|
|
;;
|
|
mips64|mips64el)
|
|
echo "TARGET_ARCH=mips64" >> $config_mak
|
|
echo "#define TARGET_ARCH \"mips64\"" >> $config_h
|
|
echo "#define TARGET_MIPS 1" >> $config_h
|
|
echo "#define TARGET_MIPS64 1" >> $config_h
|
|
echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
|
|
;;
|
|
ppc)
|
|
echo "TARGET_ARCH=ppc" >> $config_mak
|
|
echo "#define TARGET_ARCH \"ppc\"" >> $config_h
|
|
echo "#define TARGET_PPC 1" >> $config_h
|
|
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
|
;;
|
|
ppcemb)
|
|
echo "TARGET_ARCH=ppcemb" >> $config_mak
|
|
echo "TARGET_ABI_DIR=ppc" >> $config_mak
|
|
echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
|
|
echo "#define TARGET_PPC 1" >> $config_h
|
|
echo "#define TARGET_PPCEMB 1" >> $config_h
|
|
if test "$kvm" = "yes" ; then
|
|
echo "CONFIG_KVM=yes" >> $config_mak
|
|
echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
|
|
echo "#define CONFIG_KVM 1" >> $config_h
|
|
fi
|
|
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
|
;;
|
|
ppc64)
|
|
echo "TARGET_ARCH=ppc64" >> $config_mak
|
|
echo "TARGET_ABI_DIR=ppc" >> $config_mak
|
|
echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
|
|
echo "#define TARGET_PPC 1" >> $config_h
|
|
echo "#define TARGET_PPC64 1" >> $config_h
|
|
gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
|
;;
|
|
ppc64abi32)
|
|
echo "TARGET_ARCH=ppc64" >> $config_mak
|
|
echo "TARGET_ABI_DIR=ppc" >> $config_mak
|
|
echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
|
|
echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
|
|
echo "#define TARGET_PPC 1" >> $config_h
|
|
echo "#define TARGET_PPC64 1" >> $config_h
|
|
echo "#define TARGET_ABI32 1" >> $config_h
|
|
gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
|
;;
|
|
sh4|sh4eb)
|
|
echo "TARGET_ARCH=sh4" >> $config_mak
|
|
echo "#define TARGET_ARCH \"sh4\"" >> $config_h
|
|
echo "#define TARGET_SH4 1" >> $config_h
|
|
bflt="yes"
|
|
target_nptl="yes"
|
|
;;
|
|
sparc)
|
|
echo "TARGET_ARCH=sparc" >> $config_mak
|
|
echo "#define TARGET_ARCH \"sparc\"" >> $config_h
|
|
echo "#define TARGET_SPARC 1" >> $config_h
|
|
;;
|
|
sparc64)
|
|
echo "TARGET_ARCH=sparc64" >> $config_mak
|
|
echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
|
|
echo "#define TARGET_SPARC 1" >> $config_h
|
|
echo "#define TARGET_SPARC64 1" >> $config_h
|
|
elfload32="yes"
|
|
;;
|
|
sparc32plus)
|
|
echo "TARGET_ARCH=sparc64" >> $config_mak
|
|
echo "TARGET_ABI_DIR=sparc" >> $config_mak
|
|
echo "TARGET_ARCH2=sparc32plus" >> $config_mak
|
|
echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
|
|
echo "#define TARGET_SPARC 1" >> $config_h
|
|
echo "#define TARGET_SPARC64 1" >> $config_h
|
|
echo "#define TARGET_ABI32 1" >> $config_h
|
|
;;
|
|
*)
|
|
echo "Unsupported target CPU"
|
|
exit 1
|
|
;;
|
|
esac
|
|
if test "$target_bigendian" = "yes" ; then
|
|
echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
|
|
echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
|
|
fi
|
|
if test "$target_softmmu" = "yes" ; then
|
|
echo "CONFIG_SOFTMMU=yes" >> $config_mak
|
|
echo "#define CONFIG_SOFTMMU 1" >> $config_h
|
|
fi
|
|
if test "$target_user_only" = "yes" ; then
|
|
echo "CONFIG_USER_ONLY=yes" >> $config_mak
|
|
echo "#define CONFIG_USER_ONLY 1" >> $config_h
|
|
fi
|
|
if test "$target_linux_user" = "yes" ; then
|
|
echo "CONFIG_LINUX_USER=yes" >> $config_mak
|
|
echo "#define CONFIG_LINUX_USER 1" >> $config_h
|
|
fi
|
|
if test "$target_darwin_user" = "yes" ; then
|
|
echo "CONFIG_DARWIN_USER=yes" >> $config_mak
|
|
echo "#define CONFIG_DARWIN_USER 1" >> $config_h
|
|
fi
|
|
list=""
|
|
if test ! -z "$gdb_xml_files" ; then
|
|
for x in $gdb_xml_files; do
|
|
list="$list $source_path/gdb-xml/$x"
|
|
done
|
|
fi
|
|
echo "TARGET_XML_FILES=$list" >> $config_mak
|
|
|
|
if test "$target_cpu" = "arm" \
|
|
-o "$target_cpu" = "armeb" \
|
|
-o "$target_cpu" = "m68k" \
|
|
-o "$target_cpu" = "mips" \
|
|
-o "$target_cpu" = "mipsel" \
|
|
-o "$target_cpu" = "mipsn32" \
|
|
-o "$target_cpu" = "mipsn32el" \
|
|
-o "$target_cpu" = "mips64" \
|
|
-o "$target_cpu" = "mips64el" \
|
|
-o "$target_cpu" = "ppc" \
|
|
-o "$target_cpu" = "ppc64" \
|
|
-o "$target_cpu" = "ppc64abi32" \
|
|
-o "$target_cpu" = "ppcemb" \
|
|
-o "$target_cpu" = "sparc" \
|
|
-o "$target_cpu" = "sparc64" \
|
|
-o "$target_cpu" = "sparc32plus"; then
|
|
echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
|
|
echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
|
|
fi
|
|
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
|
|
echo "TARGET_HAS_BFLT=yes" >> $config_mak
|
|
echo "#define TARGET_HAS_BFLT 1" >> $config_h
|
|
fi
|
|
if test "$target_user_only" = "yes" \
|
|
-a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
|
|
echo "#define USE_NPTL 1" >> $config_h
|
|
fi
|
|
# 32 bit ELF loader in addition to native 64 bit loader?
|
|
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
|
|
echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
|
|
echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
|
|
fi
|
|
if test "$target_bsd_user" = "yes" ; then
|
|
echo "CONFIG_BSD_USER=yes" >> $config_mak
|
|
echo "#define CONFIG_BSD_USER 1" >> $config_h
|
|
fi
|
|
|
|
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
|
|
|
|
done # for target in $targets
|
|
|
|
# build tree in object directory if source path is different from current one
|
|
if test "$source_path_used" = "yes" ; then
|
|
DIRS="tests tests/cris slirp audio"
|
|
FILES="Makefile tests/Makefile"
|
|
FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
|
|
FILES="$FILES tests/test-mmap.c"
|
|
for dir in $DIRS ; do
|
|
mkdir -p $dir
|
|
done
|
|
# remove the link and recreate it, as not all "ln -sf" overwrite the link
|
|
for f in $FILES ; do
|
|
rm -f $f
|
|
ln -s $source_path/$f $f
|
|
done
|
|
fi
|