configure 111.6 KB
Newer Older
B
bellard 已提交
1 2
#!/bin/sh
#
B
bellard 已提交
3
# qemu configure script (c) 2003 Fabrice Bellard
B
bellard 已提交
4 5 6 7 8 9 10 11 12 13
#
# set temporary file name
if test ! -z "$TMPDIR" ; then
    TMPDIR1="${TMPDIR}"
elif test ! -z "$TEMPDIR" ; then
    TMPDIR1="${TEMPDIR}"
else
    TMPDIR1="/tmp"
fi

B
bellard 已提交
14 15
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
B
bellard 已提交
17

18 19 20
# 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
G
Gerd Hoffmann 已提交
21
rm -f config.log
22

23 24
# Print a helpful header at the top of config.log
echo "# QEMU configure log $(date)" >> config.log
25 26 27
printf "# Configured with:" >> config.log
printf " '%s'" "$0" "$@" >> config.log
echo >> config.log
28 29
echo "#" >> config.log

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
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 $?
    echo "ERROR: configure test passed without -Werror but failed with -Werror."
    echo "This is probably a bug in the configure script. The failing command"
    echo "will be at the bottom of config.log."
    echo "You can run configure with --disable-werror to bypass this check."
    exit 1
}

56
compile_object() {
57
  do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC
58 59 60 61 62
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
63
  do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
64 65
}

66 67
# symbolically link $1 to $2.  Portable version of "ln -sf".
symlink() {
68
  rm -rf "$2"
69
  mkdir -p "$(dirname "$2")"
70
  ln -s "$1" "$2"
71 72
}

73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
# 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
}

B
bellard 已提交
109
# default parameters
P
Paolo Bonzini 已提交
110
source_path=`dirname "$0"`
111
cpu=""
112
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
113
static="no"
B
bellard 已提交
114
cross_prefix=""
M
malc 已提交
115
audio_drv_list=""
116 117
audio_card_list="ac97 es1370 sb16 hda"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
118
block_drv_whitelist=""
119
host_cc="cc"
J
Juan Quintela 已提交
120
libs_softmmu=""
J
Juan Quintela 已提交
121
libs_tools=""
122
audio_pt_int=""
123
audio_win_int=""
P
Paolo Bonzini 已提交
124
cc_i386=i386-pc-linux-gnu-gcc
125
libs_qga=""
126
debug_info="yes"
127

128 129
# Don't accept a target_list environment variable.
unset target_list
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149

# 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=""
nptl=""
150
pixman=""
151
sdl=""
152
virtfs=""
J
Jes Sorensen 已提交
153
vnc="yes"
154 155 156 157 158 159 160
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
161
vnc_ws=""
162
xen=""
163
xen_ctrl_version=""
164
xen_pci_passthrough=""
165
linux_aio=""
166
cap_ng=""
167
attr=""
168
libattr=""
169 170
xfs=""

171 172
vhost_net="no"
kvm="no"
173 174 175 176
gprof="no"
debug_tcg="no"
debug="no"
strip_opt="yes"
177
tcg_interpreter="no"
178 179
bigendian="no"
mingw32="no"
B
Blue Swirl 已提交
180 181
gcov="no"
gcov_tool="gcov"
182 183 184
EXESUF=""
prefix="/usr/local"
mandir="\${prefix}/share/man"
185
datadir="\${prefix}/share"
186
qemu_docdir="\${prefix}/share/doc/qemu"
187
bindir="\${prefix}/bin"
A
Alon Levy 已提交
188
libdir="\${prefix}/lib"
189
libexecdir="\${prefix}/libexec"
190
includedir="\${prefix}/include"
191
sysconfdir="\${prefix}/etc"
L
Luiz Capitulino 已提交
192
local_statedir="\${prefix}/var"
193 194 195 196 197 198 199 200 201 202 203 204 205
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"
206
guest_base="yes"
207 208 209 210 211
uname_release=""
mixemu="no"
aix="no"
blobs="yes"
pkgversion=""
212
pie=""
213 214 215 216 217
zero_malloc=""
trace_backend="nop"
trace_file="trace"
spice=""
rbd=""
R
Robert Relyea 已提交
218
smartcard_nss=""
219
usb_redir=""
220
opengl=""
A
Alon Levy 已提交
221
zlib="yes"
222
guest_agent="yes"
223
want_tools="yes"
R
Ronnie Sahlberg 已提交
224
libiscsi=""
225
coroutine=""
226
seccomp=""
227
glusterfs=""
228
virtio_blk_data_plane=""
A
Anthony Liguori 已提交
229
gtk=""
230

231 232 233 234 235 236
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
237
  --cc=*) CC="$optarg"
238
  ;;
P
Paolo Bonzini 已提交
239 240
  --source-path=*) source_path="$optarg"
  ;;
241 242
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
243
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
244
                    EXTRA_CFLAGS="$optarg"
245 246
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
247
                     EXTRA_LDFLAGS="$optarg"
248
  ;;
249 250 251 252
  --enable-debug-info) debug_info="yes"
  ;;
  --disable-debug-info) debug_info="no"
  ;;
253 254 255 256
  esac
done
# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
257
# we can eliminate its usage altogether.
258

259 260 261 262 263 264 265 266 267 268
# 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

269
ar="${AR-${cross_prefix}ar}"
270 271
as="${AS-${cross_prefix}as}"
cpp="${CPP-$cc -E}"
272 273
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
ld="${LD-${cross_prefix}ld}"
B
Brad 已提交
274
libtool="${LIBTOOL-${cross_prefix}libtool}"
275 276
strip="${STRIP-${cross_prefix}strip}"
windres="${WINDRES-${cross_prefix}windres}"
277 278 279 280 281
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
query_pkg_config() {
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
}
pkg_config=query_pkg_config
282
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
283

284 285
# default flags for all hosts
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
286
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
287
QEMU_CFLAGS="-Wredundant-decls $QEMU_CFLAGS"
288
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
289
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
290 291 292 293
if test "$debug_info" = "yes"; then
    CFLAGS="-g $CFLAGS"
    LDFLAGS="-g $LDFLAGS"
fi
294

P
Paolo Bonzini 已提交
295 296 297
# make source path absolute
source_path=`cd "$source_path"; pwd`

298 299 300
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
301
#error $1 not defined
302 303 304
#endif
int main(void) { return 0; }
EOF
305
  compile_object
306 307
}

308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
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

343 344 345 346
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
347 348 349
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
350 351 352 353 354 355
elif check_define __sparc__ ; then
  if check_define __arch64__ ; then
    cpu="sparc64"
  else
    cpu="sparc"
  fi
M
malc 已提交
356 357 358 359 360 361
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
362 363
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
364 365
elif check_define __ia64__ ; then
  cpu="ia64"
366 367 368 369 370 371
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
372 373
elif check_define __arm__ ; then
  cpu="arm"
374 375
elif check_define __hppa__ ; then
  cpu="hppa"
376
else
M
malc 已提交
377
  cpu=`uname -m`
378 379
fi

380 381 382
ARCH=
# Normalise host CPU name and set ARCH.
# Note that this case should only have supported host CPUs, not guests.
B
bellard 已提交
383
case "$cpu" in
384
  ia64|ppc|ppc64|s390|s390x|sparc64)
385 386
    cpu="$cpu"
  ;;
B
bellard 已提交
387
  i386|i486|i586|i686|i86pc|BePC)
388
    cpu="i386"
B
bellard 已提交
389
  ;;
A
aurel32 已提交
390 391 392
  x86_64|amd64)
    cpu="x86_64"
  ;;
393 394
  armv*b|armv*l|arm)
    cpu="arm"
B
bellard 已提交
395
  ;;
396
  hppa|parisc|parisc64)
A
aurel32 已提交
397 398
    cpu="hppa"
  ;;
A
Aurelien Jarno 已提交
399 400 401
  mips*)
    cpu="mips"
  ;;
402
  sparc|sun4[cdmuv])
B
bellard 已提交
403 404
    cpu="sparc"
  ;;
B
bellard 已提交
405
  *)
406 407
    # This will result in either an error or falling back to TCI later
    ARCH=unknown
B
bellard 已提交
408 409
  ;;
esac
410 411 412
if test -z "$ARCH"; then
  ARCH="$cpu"
fi
J
Juan Quintela 已提交
413

B
bellard 已提交
414
# OS specific
415

B
bellard 已提交
416
case $targetos in
B
bellard 已提交
417
CYGWIN*)
418
  mingw32="yes"
J
Juan Quintela 已提交
419
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
420 421
  audio_possible_drivers="winwave sdl"
  audio_drv_list="winwave"
B
bellard 已提交
422
;;
B
bellard 已提交
423
MINGW32*)
424
  mingw32="yes"
425 426
  audio_possible_drivers="winwave dsound sdl fmod"
  audio_drv_list="winwave"
B
bellard 已提交
427
;;
T
ths 已提交
428
GNU/kFreeBSD)
A
Aurelien Jarno 已提交
429
  bsd="yes"
430 431
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
432
;;
B
bellard 已提交
433
FreeBSD)
434
  bsd="yes"
435
  make="${MAKE-gmake}"
436 437
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
438 439
  # needed for kinfo_getvmmap(3) in libutil.h
  LIBS="-lutil $LIBS"
B
bellard 已提交
440
;;
441
DragonFly)
442
  bsd="yes"
443
  make="${MAKE-gmake}"
444 445
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
446
;;
B
bellard 已提交
447
NetBSD)
448
  bsd="yes"
449
  make="${MAKE-gmake}"
450 451 452
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
453 454
;;
OpenBSD)
455
  bsd="yes"
456
  make="${MAKE-gmake}"
457 458 459
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
460
;;
461
Darwin)
462 463 464
  bsd="yes"
  darwin="yes"
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
465
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
466
    LDFLAGS="-arch x86_64 $LDFLAGS"
467
  else
J
Juan Quintela 已提交
468
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
469 470 471 472 473
  fi
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
474
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
475 476 477
  # 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"
478
;;
B
bellard 已提交
479
SunOS)
480
  solaris="yes"
481 482
  make="${MAKE-gmake}"
  install="${INSTALL-ginstall}"
483
  ld="gld"
484
  smbd="${SMBD-/usr/sfw/sbin/smbd}"
485 486 487 488 489 490
  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"
491 492 493
        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"
494 495 496 497 498 499 500
      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
T
ths 已提交
501
    fi
502 503 504 505 506
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
507 508 509 510
# 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"
J
Juan Quintela 已提交
511
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
512 513 514
  solarisnetlibs="-lsocket -lnsl -lresolv"
  LIBS="$solarisnetlibs $LIBS"
  libs_qga="$solarisnetlibs $libs_qga"
T
ths 已提交
515
;;
M
malc 已提交
516
AIX)
517
  aix="yes"
518
  make="${MAKE-gmake}"
M
malc 已提交
519
;;
520 521 522 523 524
Haiku)
  haiku="yes"
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
;;
525
*)
526 527 528 529 530
  audio_drv_list="oss"
  audio_possible_drivers="oss alsa sdl esd pa"
  linux="yes"
  linux_user="yes"
  usb="linux"
531 532
  kvm="yes"
  vhost_net="yes"
533
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
534
    audio_possible_drivers="$audio_possible_drivers fmod"
535
  fi
B
bellard 已提交
536
;;
B
bellard 已提交
537 538
esac

B
bellard 已提交
539
if [ "$bsd" = "yes" ] ; then
540
  if [ "$darwin" != "yes" ] ; then
541
    usb="bsd"
542
    bsd_user="yes"
543
  fi
B
bellard 已提交
544 545
fi

546 547
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}
B
Blue Swirl 已提交
548
: ${python=${PYTHON-python}}
549
: ${smbd=${SMBD-/usr/sbin/smbd}}
550

551 552 553 554 555 556 557
# Default objcc to clang if available, otherwise use CC
if has clang; then
  objcc=clang
else
  objcc="$cc"
fi

558 559
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
560
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
561 562
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
563 564 565 566 567 568 569
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
  if compile_prog "" "-liberty" ; then
    LIBS="-liberty $LIBS"
  fi
570
  prefix="c:/Program Files/QEMU"
571
  mandir="\${prefix}"
572
  datadir="\${prefix}"
573
  qemu_docdir="\${prefix}"
574 575
  bindir="\${prefix}"
  sysconfdir="\${prefix}"
L
Luiz Capitulino 已提交
576
  local_statedir="\${prefix}"
577
  confsuffix=""
578
  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
579 580
fi

581
werror=""
582

B
bellard 已提交
583
for opt do
P
pbrook 已提交
584
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
B
bellard 已提交
585
  case "$opt" in
586 587
  --help|-h) show_help=yes
  ;;
M
Mike Frysinger 已提交
588 589
  --version|-V) exec cat $source_path/VERSION
  ;;
590
  --prefix=*) prefix="$optarg"
B
bellard 已提交
591
  ;;
592
  --interp-prefix=*) interp_prefix="$optarg"
B
bellard 已提交
593
  ;;
P
Paolo Bonzini 已提交
594
  --source-path=*)
B
bellard 已提交
595
  ;;
596
  --cross-prefix=*)
B
bellard 已提交
597
  ;;
598
  --cc=*)
B
bellard 已提交
599
  ;;
600
  --host-cc=*) host_cc="$optarg"
B
bellard 已提交
601
  ;;
602 603
  --objcc=*) objcc="$optarg"
  ;;
604
  --make=*) make="$optarg"
B
bellard 已提交
605
  ;;
606 607
  --install=*) install="$optarg"
  ;;
B
Blue Swirl 已提交
608 609
  --python=*) python="$optarg"
  ;;
B
Blue Swirl 已提交
610 611
  --gcov=*) gcov_tool="$optarg"
  ;;
612 613
  --smbd=*) smbd="$optarg"
  ;;
614
  --extra-cflags=*)
B
bellard 已提交
615
  ;;
616
  --extra-ldflags=*)
B
bellard 已提交
617
  ;;
618 619 620 621
  --enable-debug-info)
  ;;
  --disable-debug-info)
  ;;
622
  --cpu=*)
B
bellard 已提交
623
  ;;
624
  --target-list=*) target_list="$optarg"
B
bellard 已提交
625
  ;;
626
  --enable-trace-backend=*) trace_backend="$optarg"
627
  ;;
628
  --with-trace-file=*) trace_file="$optarg"
P
Prerna Saxena 已提交
629
  ;;
B
bellard 已提交
630 631
  --enable-gprof) gprof="yes"
  ;;
B
Blue Swirl 已提交
632 633
  --enable-gcov) gcov="yes"
  ;;
634 635 636
  --static)
    static="yes"
    LDFLAGS="-static $LDFLAGS"
637
    QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
B
bellard 已提交
638
  ;;
639 640 641 642
  --mandir=*) mandir="$optarg"
  ;;
  --bindir=*) bindir="$optarg"
  ;;
A
Alon Levy 已提交
643 644
  --libdir=*) libdir="$optarg"
  ;;
645 646
  --libexecdir=*) libexecdir="$optarg"
  ;;
647 648
  --includedir=*) includedir="$optarg"
  ;;
649
  --datadir=*) datadir="$optarg"
650
  ;;
651 652
  --with-confsuffix=*) confsuffix="$optarg"
  ;;
653
  --docdir=*) qemu_docdir="$optarg"
654
  ;;
655
  --sysconfdir=*) sysconfdir="$optarg"
656
  ;;
L
Luiz Capitulino 已提交
657 658 659
  --localstatedir=*) local_statedir="$optarg"
  ;;
  --sbindir=*|--sharedstatedir=*|\
660 661 662 663 664 665 666
  --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.
  ;;
667 668 669 670
  --with-system-pixman) pixman="system"
  ;;
  --without-system-pixman) pixman="internal"
  ;;
671 672
  --without-pixman) pixman="none"
  ;;
673 674
  --disable-sdl) sdl="no"
  ;;
675 676
  --enable-sdl) sdl="yes"
  ;;
677 678 679 680
  --disable-virtfs) virtfs="no"
  ;;
  --enable-virtfs) virtfs="yes"
  ;;
J
Jes Sorensen 已提交
681 682 683 684
  --disable-vnc) vnc="no"
  ;;
  --enable-vnc) vnc="yes"
  ;;
M
malc 已提交
685
  --fmod-lib=*) fmod_lib="$optarg"
686
  ;;
687 688
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
B
blueswir1 已提交
689 690
  --oss-lib=*) oss_lib="$optarg"
  ;;
691
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
B
bellard 已提交
692
  ;;
M
malc 已提交
693
  --audio-drv-list=*) audio_drv_list="$optarg"
B
bellard 已提交
694
  ;;
695 696
  --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
  ;;
697 698 699 700
  --enable-debug-tcg) debug_tcg="yes"
  ;;
  --disable-debug-tcg) debug_tcg="no"
  ;;
P
Paul Brook 已提交
701 702 703 704 705 706
  --enable-debug)
      # Enable debugging options that aren't excessively noisy
      debug_tcg="yes"
      debug="yes"
      strip_opt="no"
  ;;
707 708 709 710
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
711 712
  --disable-strip) strip_opt="no"
  ;;
713 714
  --disable-vnc-tls) vnc_tls="no"
  ;;
715 716
  --enable-vnc-tls) vnc_tls="yes"
  ;;
717 718
  --disable-vnc-sasl) vnc_sasl="no"
  ;;
719 720
  --enable-vnc-sasl) vnc_sasl="yes"
  ;;
721 722 723 724
  --disable-vnc-jpeg) vnc_jpeg="no"
  ;;
  --enable-vnc-jpeg) vnc_jpeg="yes"
  ;;
C
Corentin Chary 已提交
725 726 727 728
  --disable-vnc-png) vnc_png="no"
  ;;
  --enable-vnc-png) vnc_png="yes"
  ;;
729 730 731 732
  --disable-vnc-ws) vnc_ws="no"
  ;;
  --enable-vnc-ws) vnc_ws="yes"
  ;;
B
bellard 已提交
733
  --disable-slirp) slirp="no"
734
  ;;
735 736 737 738
  --disable-uuid) uuid="no"
  ;;
  --enable-uuid) uuid="yes"
  ;;
739
  --disable-vde) vde="no"
740
  ;;
741 742
  --enable-vde) vde="yes"
  ;;
743 744
  --disable-xen) xen="no"
  ;;
745 746
  --enable-xen) xen="yes"
  ;;
747 748 749 750
  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
  ;;
  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
  ;;
A
aurel32 已提交
751 752
  --disable-brlapi) brlapi="no"
  ;;
753 754
  --enable-brlapi) brlapi="yes"
  ;;
B
balrog 已提交
755 756
  --disable-bluez) bluez="no"
  ;;
757 758
  --enable-bluez) bluez="yes"
  ;;
A
aliguori 已提交
759 760
  --disable-kvm) kvm="no"
  ;;
761 762
  --enable-kvm) kvm="yes"
  ;;
763 764 765 766
  --disable-tcg-interpreter) tcg_interpreter="no"
  ;;
  --enable-tcg-interpreter) tcg_interpreter="yes"
  ;;
767 768 769 770
  --disable-cap-ng)  cap_ng="no"
  ;;
  --enable-cap-ng) cap_ng="yes"
  ;;
771 772 773 774
  --disable-spice) spice="no"
  ;;
  --enable-spice) spice="yes"
  ;;
R
Ronnie Sahlberg 已提交
775 776 777 778
  --disable-libiscsi) libiscsi="no"
  ;;
  --enable-libiscsi) libiscsi="yes"
  ;;
779 780
  --enable-profiler) profiler="yes"
  ;;
781 782
  --disable-cocoa) cocoa="no"
  ;;
783 784 785 786
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
787
  ;;
P
pbrook 已提交
788
  --disable-system) softmmu="no"
789
  ;;
P
pbrook 已提交
790
  --enable-system) softmmu="yes"
791
  ;;
792 793 794 795 796
  --disable-user)
      linux_user="no" ;
      bsd_user="no" ;
  ;;
  --enable-user) ;;
797
  --disable-linux-user) linux_user="no"
798
  ;;
799 800
  --enable-linux-user) linux_user="yes"
  ;;
B
blueswir1 已提交
801 802 803 804
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
P
Paul Brook 已提交
805 806 807 808
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
809
  --enable-pie) pie="yes"
810
  ;;
811
  --disable-pie) pie="no"
812
  ;;
813 814
  --enable-uname-release=*) uname_release="$optarg"
  ;;
815 816 817 818
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
B
balrog 已提交
819 820
  --disable-curses) curses="no"
  ;;
821 822
  --enable-curses) curses="yes"
  ;;
A
Alexander Graf 已提交
823 824
  --disable-curl) curl="no"
  ;;
825 826
  --enable-curl) curl="yes"
  ;;
827 828 829 830
  --disable-fdt) fdt="no"
  ;;
  --enable-fdt) fdt="yes"
  ;;
831 832
  --disable-nptl) nptl="no"
  ;;
833 834
  --enable-nptl) nptl="yes"
  ;;
835 836
  --enable-mixemu) mixemu="yes"
  ;;
837 838 839 840
  --disable-linux-aio) linux_aio="no"
  ;;
  --enable-linux-aio) linux_aio="yes"
  ;;
841 842 843 844
  --disable-attr) attr="no"
  ;;
  --enable-attr) attr="yes"
  ;;
T
ths 已提交
845 846
  --disable-blobs) blobs="no"
  ;;
P
pbrook 已提交
847 848
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
849 850
  --with-coroutine=*) coroutine="$optarg"
  ;;
J
Juan Quintela 已提交
851
  --disable-docs) docs="no"
852
  ;;
J
Juan Quintela 已提交
853
  --enable-docs) docs="yes"
854
  ;;
M
Michael S. Tsirkin 已提交
855 856 857 858
  --disable-vhost-net) vhost_net="no"
  ;;
  --enable-vhost-net) vhost_net="yes"
  ;;
M
Michael Walle 已提交
859 860 861 862
  --disable-opengl) opengl="no"
  ;;
  --enable-opengl) opengl="yes"
  ;;
863 864 865 866
  --disable-rbd) rbd="no"
  ;;
  --enable-rbd) rbd="yes"
  ;;
867 868 869 870
  --disable-xfsctl) xfs="no"
  ;;
  --enable-xfsctl) xfs="yes"
  ;;
R
Robert Relyea 已提交
871 872 873 874
  --disable-smartcard-nss) smartcard_nss="no"
  ;;
  --enable-smartcard-nss) smartcard_nss="yes"
  ;;
875 876 877 878
  --disable-usb-redir) usb_redir="no"
  ;;
  --enable-usb-redir) usb_redir="yes"
  ;;
A
Alon Levy 已提交
879 880
  --disable-zlib-test) zlib="no"
  ;;
881 882 883 884
  --enable-guest-agent) guest_agent="yes"
  ;;
  --disable-guest-agent) guest_agent="no"
  ;;
885 886 887 888
  --enable-tools) want_tools="yes"
  ;;
  --disable-tools) want_tools="no"
  ;;
889 890 891 892
  --enable-seccomp) seccomp="yes"
  ;;
  --disable-seccomp) seccomp="no"
  ;;
893 894 895 896
  --disable-glusterfs) glusterfs="no"
  ;;
  --enable-glusterfs) glusterfs="yes"
  ;;
897 898 899 900
  --disable-virtio-blk-data-plane) virtio_blk_data_plane="no"
  ;;
  --enable-virtio-blk-data-plane) virtio_blk_data_plane="yes"
  ;;
A
Anthony Liguori 已提交
901 902 903 904
  --disable-gtk) gtk="no"
  ;;
  --enable-gtk) gtk="yes"
  ;;
905 906
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
B
bellard 已提交
907 908 909
  esac
done

910
case "$cpu" in
911
    sparc)
912
           LDFLAGS="-m32 $LDFLAGS"
913
           QEMU_CFLAGS="-m32 -mcpu=ultrasparc $QEMU_CFLAGS"
914
           ;;
915 916
    sparc64)
           LDFLAGS="-m64 $LDFLAGS"
917
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc $QEMU_CFLAGS"
918
           ;;
919
    s390)
920 921 922 923 924 925
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m31 $LDFLAGS"
           ;;
    s390x)
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m64 $LDFLAGS"
926
           ;;
927
    i386)
J
Juan Quintela 已提交
928
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
929
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
930
           cc_i386='$(CC) -m32'
931 932
           ;;
    x86_64)
J
Juan Quintela 已提交
933
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
934
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
935
           cc_i386='$(CC) -m32'
936
           ;;
937
    # No special flags required for other host CPUs
938 939
esac

940 941 942 943 944 945 946
default_target_list=""

# these targets are portable
if [ "$softmmu" = "yes" ] ; then
    default_target_list="\
i386-softmmu \
x86_64-softmmu \
947
alpha-softmmu \
948 949 950 951 952 953 954 955 956 957
arm-softmmu \
cris-softmmu \
lm32-softmmu \
m68k-softmmu \
microblaze-softmmu \
microblazeel-softmmu \
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
958
or32-softmmu \
959 960 961 962 963 964 965
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
sparc64-softmmu \
A
Alexander Graf 已提交
966
s390x-softmmu \
967 968
xtensa-softmmu \
xtensaeb-softmmu \
969
unicore32-softmmu \
970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985
"
fi
# the following are Linux specific
if [ "$linux_user" = "yes" ] ; then
    default_target_list="${default_target_list}\
i386-linux-user \
x86_64-linux-user \
alpha-linux-user \
arm-linux-user \
armeb-linux-user \
cris-linux-user \
m68k-linux-user \
microblaze-linux-user \
microblazeel-linux-user \
mips-linux-user \
mipsel-linux-user \
J
Jia Liu 已提交
986
or32-linux-user \
987 988 989 990 991 992 993 994 995
ppc-linux-user \
ppc64-linux-user \
ppc64abi32-linux-user \
sh4-linux-user \
sh4eb-linux-user \
sparc-linux-user \
sparc64-linux-user \
sparc32plus-linux-user \
unicore32-linux-user \
A
Alexander Graf 已提交
996
s390x-linux-user \
997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008
"
fi
# the following are BSD specific
if [ "$bsd_user" = "yes" ] ; then
    default_target_list="${default_target_list}\
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
sparc64-bsd-user \
"
fi

1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020
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]"
1021 1022 1023
echo "  --target-list=LIST       set target list (default: build everything)"
echo "Available targets: $default_target_list" | \
    fold -s -w 53 | sed -e 's/^/                           /'
1024 1025 1026 1027 1028
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]"
1029 1030
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
echo "                           build time"
1031
echo "  --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]"
J
Juan Quintela 已提交
1032
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
1033
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
1034
echo "  --make=MAKE              use specified make [$make]"
1035
echo "  --install=INSTALL        use specified install [$install]"
B
Blue Swirl 已提交
1036
echo "  --python=PYTHON          use specified python [$python]"
1037
echo "  --smbd=SMBD              use specified smbd [$smbd]"
1038
echo "  --static                 enable static build [$static]"
1039
echo "  --mandir=PATH            install man pages in PATH"
1040 1041
echo "  --datadir=PATH           install firmware in PATH$confsuffix"
echo "  --docdir=PATH            install documentation in PATH$confsuffix"
1042
echo "  --bindir=PATH            install binaries in PATH"
1043
echo "  --sysconfdir=PATH        install config in PATH$confsuffix"
L
Luiz Capitulino 已提交
1044
echo "  --localstatedir=PATH     install local state in PATH"
1045
echo "  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and sysconfdir [$confsuffix]"
1046 1047
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
1048
echo "  --enable-debug           enable common debug build options"
1049 1050
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
1051
echo "  --disable-strip          disable stripping binaries"
1052
echo "  --disable-werror         disable compilation abort on warning"
1053
echo "  --disable-sdl            disable SDL"
1054
echo "  --enable-sdl             enable SDL"
1055 1056
echo "  --disable-virtfs         disable VirtFS"
echo "  --enable-virtfs          enable VirtFS"
J
Jes Sorensen 已提交
1057 1058
echo "  --disable-vnc            disable VNC"
echo "  --enable-vnc             enable VNC"
1059 1060
echo "  --disable-cocoa          disable Cocoa (Mac OS X only)"
echo "  --enable-cocoa           enable Cocoa (default on Mac OS X)"
1061 1062
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
M
malc 已提交
1063 1064
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
1065 1066
echo "  --block-drv-whitelist=L  set block driver whitelist"
echo "                           (affects only QEMU, not qemu-img)"
1067
echo "  --enable-mixemu          enable mixer emulation"
1068
echo "  --disable-xen            disable xen backend driver support"
1069
echo "  --enable-xen             enable xen backend driver support"
1070 1071
echo "  --disable-xen-pci-passthrough"
echo "  --enable-xen-pci-passthrough"
A
aurel32 已提交
1072
echo "  --disable-brlapi         disable BrlAPI"
1073
echo "  --enable-brlapi          enable BrlAPI"
1074
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
1075
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
1076
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
1077
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
1078 1079
echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
1080
echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
C
Corentin Chary 已提交
1081
echo "  --enable-vnc-png         enable PNG compression for VNC server"
1082 1083
echo "  --disable-vnc-ws         disable Websockets support for VNC server"
echo "  --enable-vnc-ws          enable Websockets support for VNC server"
P
pbrook 已提交
1084
echo "  --disable-curses         disable curses output"
1085
echo "  --enable-curses          enable curses output"
A
Alexander Graf 已提交
1086
echo "  --disable-curl           disable curl connectivity"
1087
echo "  --enable-curl            enable curl connectivity"
1088 1089
echo "  --disable-fdt            disable fdt device tree"
echo "  --enable-fdt             enable fdt device tree"
B
balrog 已提交
1090
echo "  --disable-bluez          disable bluez stack connectivity"
1091
echo "  --enable-bluez           enable bluez stack connectivity"
1092
echo "  --disable-slirp          disable SLIRP userspace network connectivity"
A
aliguori 已提交
1093
echo "  --disable-kvm            disable KVM acceleration support"
1094
echo "  --enable-kvm             enable KVM acceleration support"
1095
echo "  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
1096
echo "  --disable-nptl           disable usermode NPTL support"
A
Andre Przywara 已提交
1097
echo "  --enable-nptl            enable usermode NPTL support"
1098 1099
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
1100 1101
echo "  --enable-user            enable supported user emulation targets"
echo "  --disable-user           disable all user emulation targets"
1102 1103
echo "  --enable-linux-user      enable all linux usermode emulation targets"
echo "  --disable-linux-user     disable all linux usermode emulation targets"
B
blueswir1 已提交
1104 1105
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
P
Paul Brook 已提交
1106 1107 1108
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
1109 1110
echo "  --enable-pie             build Position Independent Executables"
echo "  --disable-pie            do not build Position Independent Executables"
1111 1112
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
B
blueswir1 已提交
1113
echo "  --oss-lib                path to OSS library"
1114
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
1115
echo "  --cpu=CPU                Build for host CPU [$cpu]"
1116 1117
echo "  --disable-uuid           disable uuid support"
echo "  --enable-uuid            enable uuid support"
1118
echo "  --disable-vde            disable support for vde network"
1119
echo "  --enable-vde             enable support for vde network"
1120 1121
echo "  --disable-linux-aio      disable Linux AIO support"
echo "  --enable-linux-aio       enable Linux AIO support"
1122 1123
echo "  --disable-cap-ng         disable libcap-ng support"
echo "  --enable-cap-ng          enable libcap-ng support"
1124 1125
echo "  --disable-attr           disables attr and xattr support"
echo "  --enable-attr            enable attr and xattr support"
T
ths 已提交
1126
echo "  --disable-blobs          disable installing provided firmware blobs"
1127 1128
echo "  --enable-docs            enable documentation build"
echo "  --disable-docs           disable documentation build"
M
Michael S. Tsirkin 已提交
1129 1130
echo "  --disable-vhost-net      disable vhost-net acceleration support"
echo "  --enable-vhost-net       enable vhost-net acceleration support"
1131
echo "  --enable-trace-backend=B Set trace backend"
1132
echo "                           Available backends:" $($python "$source_path"/scripts/tracetool.py --list-backends)
1133
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
P
Prerna Saxena 已提交
1134
echo "                           Default:trace-<pid>"
1135 1136
echo "  --disable-spice          disable spice"
echo "  --enable-spice           enable spice"
1137
echo "  --enable-rbd             enable building the rados block device (rbd)"
R
Ronnie Sahlberg 已提交
1138 1139
echo "  --disable-libiscsi       disable iscsi support"
echo "  --enable-libiscsi        enable iscsi support"
R
Robert Relyea 已提交
1140 1141
echo "  --disable-smartcard-nss  disable smartcard nss support"
echo "  --enable-smartcard-nss   enable smartcard nss support"
1142 1143
echo "  --disable-usb-redir      disable usb network redirection support"
echo "  --enable-usb-redir       enable usb network redirection support"
1144 1145
echo "  --disable-guest-agent    disable building of the QEMU Guest Agent"
echo "  --enable-guest-agent     enable building of the QEMU Guest Agent"
1146 1147
echo "  --disable-seccomp        disable seccomp support"
echo "  --enable-seccomp         enables seccomp support"
1148
echo "  --with-coroutine=BACKEND coroutine backend. Supported options:"
1149
echo "                           gthread, ucontext, sigaltstack, windows"
1150 1151
echo "  --enable-glusterfs       enable GlusterFS backend"
echo "  --disable-glusterfs      disable GlusterFS backend"
B
Blue Swirl 已提交
1152 1153
echo "  --enable-gcov            enable test coverage analysis with gcov"
echo "  --gcov=GCOV              use specified gcov [$gcov_tool]"
1154
echo ""
T
ths 已提交
1155
echo "NOTE: The object files are built at the place where configure is launched"
1156 1157 1158
exit 1
fi

1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170
# 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
        echo "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
        exit 1
    fi
fi

1171 1172
# check that the C compiler works.
cat > $TMPC <<EOF
1173
int main(void) { return 0; }
1174 1175 1176 1177 1178 1179 1180 1181 1182
EOF

if compile_object ; then
  : C compiler works ok
else
    echo "ERROR: \"$cc\" either does not exist or does not work"
    exit 1
fi

1183 1184 1185 1186 1187
# 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
1188
    if test -d "$source_path/.git" -a \
1189 1190 1191 1192 1193 1194 1195
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

1196 1197 1198
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"
1199
gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
1200
gcc_flags="-Wno-initializer-overrides $gcc_flags"
1201 1202 1203 1204
# 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.
1205 1206 1207 1208
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
for flag in $gcc_flags; do
1209 1210 1211 1212 1213
    # 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
1214 1215 1216 1217
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232
# 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

1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243
if test "$static" = "yes" ; then
  if test "$pie" = "yes" ; then
    echo "static and pie are mutually incompatible"
    exit 1
  else
    pie="no"
  fi
fi

if test "$pie" = ""; then
  case "$cpu-$targetos" in
1244
    i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD)
1245 1246 1247 1248 1249 1250 1251 1252 1253
      ;;
    *)
      pie="no"
      ;;
  esac
fi

if test "$pie" != "no" ; then
  cat > $TMPC << EOF
1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264

#ifdef __linux__
#  define THREAD __thread
#else
#  define THREAD
#endif

static THREAD int tls_var;

int main(void) { return tls_var; }

1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283
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
      echo "PIE not available due to missing toolchain support"
      exit 1
    else
      echo "Disabling PIE due to missing toolchain support"
      pie="no"
    fi
  fi
fi

B
bellard 已提交
1284 1285 1286 1287
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
1288 1289 1290
  if has $install; then
    :
  else
B
bellard 已提交
1291 1292 1293 1294 1295
    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
1296
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
1297 1298 1299 1300 1301
    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
1302 1303 1304
  if has ar; then
    :
  else
B
bellard 已提交
1305 1306 1307 1308 1309 1310
    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
1311
fi
B
bellard 已提交
1312

S
Sebastian Herbszt 已提交
1313 1314 1315
if ! has $python; then
  echo "Python not found. Use --python=/path/to/python"
  exit 1
B
Blue Swirl 已提交
1316 1317
fi

1318 1319
# Note that if the Python conditional here evaluates True we will exit
# with status 1 which is a shell 'false' value.
1320 1321 1322 1323
if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
  echo "Cannot use '$python', Python 2.4 or later is required."
  echo "Note that Python 3 or later is not yet supported."
  echo "Use --python=/path/to/python to specify a supported Python."
1324 1325 1326
  exit 1
fi

1327
if test -z "${target_list+xxx}" ; then
1328 1329 1330 1331
    target_list="$default_target_list"
else
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
fi
P
Paolo Bonzini 已提交
1332 1333 1334 1335 1336 1337 1338
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1339

1340 1341 1342 1343 1344
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
1345
  echo "ERROR: configure was not able to find it"
1346 1347 1348 1349
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
1350 1351 1352 1353 1354 1355
if test -z "$cross_prefix" ; then

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
1356
int main(void) {
1357 1358
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
B
bellard 已提交
1359 1360 1361
}
EOF

1362
if compile_prog "" "" ; then
B
bellard 已提交
1363 1364 1365 1366 1367 1368 1369 1370
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
1371
case "$cpu" in
1372 1373 1374 1375 1376 1377 1378
  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)
1379 1380 1381
    bigendian=yes
  ;;
esac
B
bellard 已提交
1382 1383 1384

fi

S
Stefan Weil 已提交
1385 1386 1387 1388 1389 1390 1391 1392
##########################################
# pkg-config probe

if ! has "$pkg_config_exe"; then
  echo "Error: pkg-config binary '$pkg_config_exe' not found"
  exit 1
fi

1393 1394 1395 1396 1397
##########################################
# NPTL probe

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
1398
#include <sched.h>
P
pbrook 已提交
1399
#include <linux/futex.h>
1400
int main(void) {
1401 1402 1403
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
1404
  return 0;
1405 1406 1407
}
EOF

1408 1409 1410 1411 1412 1413 1414 1415
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
1416 1417
fi

1418 1419 1420
##########################################
# zlib check

A
Alon Levy 已提交
1421 1422
if test "$zlib" != "no" ; then
    cat > $TMPC << EOF
1423 1424 1425
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
A
Alon Levy 已提交
1426 1427 1428 1429 1430 1431 1432 1433 1434
    if compile_prog "" "-lz" ; then
        :
    else
        echo
        echo "Error: zlib check failed"
        echo "Make sure to have the zlib libs and headers installed."
        echo
        exit 1
    fi
1435 1436
fi

1437 1438 1439 1440
##########################################
# libseccomp check

if test "$seccomp" != "no" ; then
B
Blue Swirl 已提交
1441
    if $pkg_config --atleast-version=1.0.0 libseccomp --modversion >/dev/null 2>&1; then
1442
        libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1443 1444 1445 1446 1447
	seccomp="yes"
    else
	if test "$seccomp" = "yes"; then
            feature_not_found "libseccomp"
	fi
Y
Yann E. MORIN 已提交
1448
	seccomp="no"
1449 1450
    fi
fi
1451 1452 1453
##########################################
# xen probe

1454
if test "$xen" != "no" ; then
1455
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1456

1457 1458 1459 1460 1461
  # 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)
1462
  cat > $TMPC <<EOF
1463
#include <xenctrl.h>
1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475
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
1476 1477
  elif
      cat > $TMPC <<EOF &&
1478
#include <xenctrl.h>
A
Anthony PERARD 已提交
1479
#include <xenstore.h>
1480 1481 1482 1483 1484
#include <stdint.h>
#include <xen/hvm/hvm_info_table.h>
#if !defined(HVM_MAX_VCPUS)
# error HVM_MAX_VCPUS not defined
#endif
1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496
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"
1497
    then
1498 1499 1500
    xen_ctrl_version=420
    xen=yes

1501 1502
  elif
      cat > $TMPC <<EOF &&
1503 1504 1505 1506 1507 1508 1509
#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
1510 1511
int main(void) {
  xs_daemon_open();
1512
  xc_interface_open(0, 0, 0);
1513 1514
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_gnttab_open(NULL, 0);
1515
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1516 1517
  return 0;
}
1518
EOF
1519
      compile_prog "" "$xen_libs"
1520
    then
1521
    xen_ctrl_version=410
1522
    xen=yes
1523 1524

  # Xen 4.0.0
1525 1526
  elif
      cat > $TMPC <<EOF &&
1527 1528 1529 1530 1531 1532 1533 1534
#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) {
1535 1536 1537
  struct xen_add_to_physmap xatp = {
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
  };
1538 1539 1540 1541
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1542
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1543 1544 1545 1546
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
1547
    then
1548 1549 1550
    xen_ctrl_version=400
    xen=yes

1551
  # Xen 3.4.0
1552 1553
  elif
      cat > $TMPC <<EOF &&
1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568
#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"
1569
    then
1570 1571 1572 1573
    xen_ctrl_version=340
    xen=yes

  # Xen 3.3.0
1574 1575
  elif
      cat > $TMPC <<EOF &&
1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586
#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"
1587
    then
1588 1589 1590
    xen_ctrl_version=330
    xen=yes

1591
  # Xen version unsupported
1592
  else
1593
    if test "$xen" = "yes" ; then
1594
      feature_not_found "xen (unsupported version)"
1595 1596
    fi
    xen=no
1597
  fi
1598 1599 1600 1601

  if test "$xen" = yes; then
    libs_softmmu="$xen_libs $libs_softmmu"
  fi
1602 1603
fi

1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622
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
      echo "ERROR"
      echo "ERROR: User requested feature Xen PCI Passthrough"
      echo "ERROR: but this feature require /sys from Linux"
      if test "$xen_ctrl_version" -lt 340; then
        echo "ERROR: This feature does not work with Xen 3.3"
      fi
      echo "ERROR"
      exit 1;
    fi
    xen_pci_passthrough=no
  fi
fi

A
Alon Levy 已提交
1623 1624 1625
##########################################
# libtool probe

B
Brad 已提交
1626
if ! has $libtool; then
A
Alon Levy 已提交
1627 1628 1629
    libtool=
fi

1630 1631 1632
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1633
  if has cgcc; then
1634 1635 1636 1637 1638 1639 1640 1641 1642
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

A
Anthony Liguori 已提交
1643 1644 1645 1646
##########################################
# GTK probe

if test "$gtk" != "no"; then
1647 1648
    if $pkg_config --exists 'gtk+-2.0 >= 2.18.0' && \
       $pkg_config --exists 'vte >= 0.26.0'; then
A
Anthony Liguori 已提交
1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662
	gtk_cflags=`$pkg_config --cflags gtk+-2.0 2>/dev/null`
	gtk_libs=`$pkg_config --libs gtk+-2.0 2>/dev/null`
	vte_cflags=`$pkg_config --cflags vte 2>/dev/null`
	vte_libs=`$pkg_config --libs vte 2>/dev/null`
	libs_softmmu="$gtk_libs $vte_libs $libs_softmmu"
	gtk="yes"
    else
	if test "$gtk" = "yes" ; then
	    feature_not_found "gtk"
	fi
	gtk="no"
    fi
fi

B
bellard 已提交
1663 1664 1665
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1666 1667 1668 1669 1670 1671 1672
# 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

if $pkg_config sdl --modversion >/dev/null 2>&1; then
1673
  sdlconfig="$pkg_config sdl"
1674
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
1675 1676
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
1677
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1678 1679 1680 1681 1682
else
  if test "$sdl" = "yes" ; then
    feature_not_found "sdl"
  fi
  sdl=no
1683
fi
1684
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
P
Paolo Bonzini 已提交
1685 1686
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
1687

1688
sdl_too_old=no
1689
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
1690
  cat > $TMPC << EOF
B
bellard 已提交
1691 1692 1693 1694
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
1695
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1696 1697 1698 1699 1700
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
1701
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1702 1703 1704 1705 1706 1707 1708
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
1709

1710
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1711
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1712
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1713 1714
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1715
      fi
1716
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1717 1718 1719 1720 1721
	:
      else
        sdl=no
      fi
    fi # static link
1722 1723 1724 1725 1726
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1727
  fi # sdl compile test
1728
fi
B
bellard 已提交
1729

1730
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1731
  cat > $TMPC <<EOF
1732 1733 1734 1735 1736 1737 1738 1739
#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
1740
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1741 1742
    sdl_libs="$sdl_libs -lX11"
  fi
J
Juan Quintela 已提交
1743
  libs_softmmu="$sdl_libs $libs_softmmu"
1744 1745
fi

1746
##########################################
1747 1748
# VNC TLS/WS detection
if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
1749
  cat > $TMPC <<EOF
1750 1751 1752
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1753 1754
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1755
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
1756 1757 1758 1759 1760 1761
    if test "$vnc_tls" != "no" ; then
      vnc_tls=yes
    fi
    if test "$vnc_ws" != "no" ; then
      vnc_ws=yes
    fi
1762
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
P
Paolo Bonzini 已提交
1763
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
1764 1765 1766
  else
    if test "$vnc_tls" = "yes" ; then
      feature_not_found "vnc-tls"
1767
    fi
1768 1769 1770
    if test "$vnc_ws" = "yes" ; then
      feature_not_found "vnc-ws"
    fi
1771
    vnc_tls=no
1772
    vnc_ws=no
1773
  fi
1774 1775
fi

1776 1777
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
1778
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1779
  cat > $TMPC <<EOF
1780 1781 1782 1783
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1784 1785 1786 1787 1788 1789
  # 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"
P
Paolo Bonzini 已提交
1790
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
1791 1792 1793
  else
    if test "$vnc_sasl" = "yes" ; then
      feature_not_found "vnc-sasl"
1794
    fi
1795 1796
    vnc_sasl=no
  fi
1797 1798
fi

1799 1800
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
1801
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1802 1803 1804 1805 1806 1807 1808 1809 1810 1811
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"
P
Paolo Bonzini 已提交
1812
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
1813 1814 1815 1816 1817 1818 1819 1820
  else
    if test "$vnc_jpeg" = "yes" ; then
      feature_not_found "vnc-jpeg"
    fi
    vnc_jpeg=no
  fi
fi

C
Corentin Chary 已提交
1821 1822
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
1823
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1824 1825 1826
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1827
#include <stddef.h>
C
Corentin Chary 已提交
1828 1829 1830
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1831
    return png_ptr != 0;
C
Corentin Chary 已提交
1832 1833
}
EOF
1834 1835 1836 1837
  if $pkg_config libpng --modversion >/dev/null 2>&1; then
    vnc_png_cflags=`$pkg_config libpng --cflags 2> /dev/null`
    vnc_png_libs=`$pkg_config libpng --libs 2> /dev/null`
  else
C
Corentin Chary 已提交
1838 1839
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
1840
  fi
C
Corentin Chary 已提交
1841 1842 1843
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
1844
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
C
Corentin Chary 已提交
1845 1846 1847 1848 1849 1850 1851 1852
  else
    if test "$vnc_png" = "yes" ; then
      feature_not_found "vnc-png"
    fi
    vnc_png=no
  fi
fi

1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1864
if compile_prog "" "" ; then
1865 1866 1867
   fnmatch="yes"
fi

1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892
##########################################
# uuid_generate() probe, used for vdi block driver
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
  if compile_prog "" "$uuid_libs" ; then
    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

C
Christoph Hellwig 已提交
1893 1894 1895 1896
##########################################
# xfsctl() probe, used for raw-posix
if test "$xfs" != "no" ; then
  cat > $TMPC << EOF
1897
#include <stddef.h>  /* NULL */
C
Christoph Hellwig 已提交
1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914
#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

1915 1916
##########################################
# vde libraries probe
1917
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1918
  vde_libs="-lvdeplug"
1919 1920
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1921 1922 1923
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
1924 1925
    char s[] = "";
    vde_open(s, s, &a);
P
pbrook 已提交
1926 1927
    return 0;
}
1928
EOF
1929
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1930
    vde=yes
1931 1932
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1933 1934 1935 1936 1937
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1938
  fi
1939 1940
fi

1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963
##########################################
# 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

1964
##########################################
1965
# Sound support libraries probe
1966

1967 1968 1969 1970 1971 1972 1973 1974 1975 1976
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1977
EOF
1978
    if compile_prog "$cfl" "$lib" ; then
1979 1980 1981 1982 1983 1984 1985 1986 1987 1988
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1989
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1990 1991 1992 1993
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1994
        "return snd_pcm_close((snd_pcm_t *)0);"
1995
    libs_softmmu="-lasound $libs_softmmu"
1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
    ;;

    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"
2007
    libs_softmmu="$fmod_lib $libs_softmmu"
2008 2009 2010 2011
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
2012
    libs_softmmu="-lesd $libs_softmmu"
2013
    audio_pt_int="yes"
2014
    ;;
M
malc 已提交
2015 2016

    pa)
2017 2018 2019
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
    libs_softmmu="-lpulse $libs_softmmu"
2020
    audio_pt_int="yes"
M
malc 已提交
2021 2022
    ;;

2023 2024 2025 2026
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

2027 2028
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2029
      audio_win_int="yes"
2030 2031 2032 2033 2034 2035 2036
    ;;

    oss)
      libs_softmmu="$oss_lib $libs_softmmu"
    ;;

    sdl|wav)
B
blueswir1 已提交
2037 2038 2039
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

2040 2041 2042 2043 2044
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
2045
    *)
M
malc 已提交
2046
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
2047 2048 2049 2050 2051 2052 2053
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
2054 2055
    esac
done
2056

A
aurel32 已提交
2057 2058 2059
##########################################
# BrlAPI probe

2060
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
2061 2062
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
2063
#include <brlapi.h>
S
Scott Wood 已提交
2064
#include <stddef.h>
A
aurel32 已提交
2065 2066
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
2067
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
2068
    brlapi=yes
2069
    libs_softmmu="$brlapi_libs $libs_softmmu"
2070 2071 2072 2073 2074
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
2075 2076
  fi
fi
A
aurel32 已提交
2077

B
balrog 已提交
2078 2079
##########################################
# curses probe
S
Stefan Weil 已提交
2080 2081 2082
if test "$mingw32" = "yes" ; then
    curses_list="-lpdcurses"
else
2083
    curses_list="-lncurses:-lcurses:$($pkg_config --libs ncurses 2>/dev/null)"
S
Stefan Weil 已提交
2084
fi
B
balrog 已提交
2085

2086 2087
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
2088 2089
  cat > $TMPC << EOF
#include <curses.h>
2090 2091 2092 2093 2094
int main(void) {
  const char *s = curses_version();
  resize_term(0, 0);
  return s != 0;
}
B
balrog 已提交
2095
EOF
2096
  IFS=:
2097
  for curses_lib in $curses_list; do
2098
    unset IFS
2099
    if compile_prog "" "$curses_lib" ; then
2100
      curses_found=yes
2101 2102 2103 2104
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
2105
  unset IFS
2106 2107 2108 2109 2110 2111 2112 2113
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
2114
fi
B
balrog 已提交
2115

A
Alexander Graf 已提交
2116 2117 2118
##########################################
# curl probe

2119 2120
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkg_config libcurl"
2121 2122 2123 2124
else
  curlconfig=curl-config
fi

2125
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
2126 2127
  cat > $TMPC << EOF
#include <curl/curl.h>
2128
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
A
Alexander Graf 已提交
2129
EOF
2130 2131
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
2132
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
2133
    curl=yes
2134 2135
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
2136 2137 2138 2139 2140
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
2141 2142 2143
  fi
fi # test "$curl"

B
balrog 已提交
2144 2145
##########################################
# bluez support probe
2146
if test "$bluez" != "no" ; then
2147 2148 2149 2150
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
2151 2152
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2153
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2154
    bluez=yes
2155
    libs_softmmu="$bluez_libs $libs_softmmu"
2156
  else
2157 2158 2159
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
2160 2161
    bluez="no"
  fi
B
balrog 已提交
2162 2163
fi

2164 2165
##########################################
# glib support probe
2166 2167 2168 2169 2170 2171 2172 2173 2174

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
if $pkg_config --atleast-version=$glib_req_ver gthread-2.0 > /dev/null 2>&1
then
2175 2176
    glib_cflags=`$pkg_config --cflags gthread-2.0 2>/dev/null`
    glib_libs=`$pkg_config --libs gthread-2.0 2>/dev/null`
2177
    LIBS="$glib_libs $LIBS"
2178
    libs_qga="$glib_libs $libs_qga"
2179
else
2180
    echo "glib-$glib_req_ver required to compile QEMU"
2181
    exit 1
2182 2183
fi

2184 2185 2186 2187
##########################################
# pixman support probe

if test "$pixman" = ""; then
2188 2189 2190
  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
    pixman="none"
  elif $pkg_config pixman-1 > /dev/null 2>&1; then
2191 2192 2193 2194 2195
    pixman="system"
  else
    pixman="internal"
  fi
fi
2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206
if test "$pixman" = "none"; then
  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
    echo "ERROR: pixman disabled but system emulation or tools build"
    echo "       enabled.  You can turn off pixman only if you also"
    echo "       disable all system emulation targets and the tools"
    echo "       build with '--disable-tools --disable-system'."
    exit 1
  fi
  pixman_cflags=
  pixman_libs=
elif test "$pixman" = "system"; then
2207 2208 2209 2210
  pixman_cflags=`$pkg_config --cflags pixman-1 2>/dev/null`
  pixman_libs=`$pkg_config --libs pixman-1 2>/dev/null`
else
  if test ! -d ${source_path}/pixman/pixman; then
2211
    echo "ERROR: pixman not present. Your options:"
S
Stefan Weil 已提交
2212
    echo "  (1) Preferred: Install the pixman devel package (any recent"
2213 2214 2215 2216 2217
    echo "      distro should have packages as Xorg needs pixman too)."
    echo "  (2) Fetch the pixman submodule, using:"
    echo "      git submodule update --init pixman"
    exit 1
  fi
2218 2219 2220
  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"
2221 2222
fi

2223 2224 2225 2226 2227 2228 2229
##########################################
# libcap probe

if test "$cap" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/capability.h>
2230
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2231 2232 2233 2234 2235 2236 2237 2238
EOF
  if compile_prog "" "-lcap" ; then
    cap=yes
  else
    cap=no
  fi
fi

2239
##########################################
2240
# pthread probe
2241
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2242

C
Christoph Hellwig 已提交
2243
pthread=no
2244
cat > $TMPC << EOF
2245
#include <pthread.h>
2246 2247 2248 2249 2250 2251
static void *f(void *p) { return NULL; }
int main(void) {
  pthread_t thread;
  pthread_create(&thread, 0, f, 0);
  return 0;
}
2252
EOF
2253 2254 2255 2256 2257 2258
if compile_prog "" "" ; then
  pthread=yes
else
  for pthread_lib in $PTHREADLIBS_LIST; do
    if compile_prog "" "$pthread_lib" ; then
      pthread=yes
P
Peter Portante 已提交
2259 2260 2261 2262 2263 2264 2265 2266 2267 2268
      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
2269 2270 2271 2272
      break
    fi
  done
fi
2273

2274
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
2275 2276 2277 2278 2279
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
2280 2281
fi

2282 2283 2284 2285 2286
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
2287
#include <rbd/librbd.h>
2288
int main(void) {
2289 2290
    rados_t cluster;
    rados_create(&cluster, NULL);
2291 2292 2293
    return 0;
}
EOF
2294 2295 2296 2297 2298
  rbd_libs="-lrbd -lrados"
  if compile_prog "" "$rbd_libs" ; then
    rbd=yes
    libs_tools="$rbd_libs $libs_tools"
    libs_softmmu="$rbd_libs $libs_softmmu"
2299 2300 2301 2302 2303 2304 2305 2306
  else
    if test "$rbd" = "yes" ; then
      feature_not_found "rados block device"
    fi
    rbd=no
  fi
fi

2307 2308 2309 2310 2311 2312 2313
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
2314
#include <stddef.h>
2315 2316 2317 2318
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
P
Paul Brook 已提交
2319 2320
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
2321 2322 2323 2324
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
2325
    linux_aio=no
2326 2327 2328
  fi
fi

2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339
##########################################
# adjust virtio-blk-data-plane based on linux-aio

if test "$virtio_blk_data_plane" = "yes" -a \
	"$linux_aio" != "yes" ; then
  echo "Error: virtio-blk-data-plane requires Linux AIO, please try --enable-linux-aio"
  exit 1
elif test -z "$virtio_blk_data_plane" ; then
  virtio_blk_data_plane=$linux_aio
fi

2340 2341 2342 2343 2344 2345 2346
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
P
Pavel Borzenkov 已提交
2347 2348 2349
#ifdef CONFIG_LIBATTR
#include <attr/xattr.h>
#else
2350
#include <sys/xattr.h>
P
Pavel Borzenkov 已提交
2351
#endif
2352 2353
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
2354 2355 2356
  if compile_prog "" "" ; then
    attr=yes
  # Older distros have <attr/xattr.h>, and need -lattr:
P
Pavel Borzenkov 已提交
2357
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
2358 2359
    attr=yes
    LIBS="-lattr $LIBS"
2360
    libattr=yes
2361 2362 2363 2364 2365 2366 2367 2368
  else
    if test "$attr" = "yes" ; then
      feature_not_found "ATTR"
    fi
    attr=no
  fi
fi

A
aliguori 已提交
2369 2370 2371
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
2372
#include <sys/types.h>
A
aliguori 已提交
2373
#include <sys/uio.h>
B
blueswir1 已提交
2374
#include <unistd.h>
2375
int main(void) { return sizeof(struct iovec); }
A
aliguori 已提交
2376 2377
EOF
iovec=no
2378
if compile_prog "" "" ; then
A
aliguori 已提交
2379 2380 2381
  iovec=yes
fi

2382 2383 2384 2385 2386 2387
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
2388
int main(void) { return preadv(0, 0, 0, 0); }
2389 2390
EOF
preadv=no
2391
if compile_prog "" "" ; then
2392 2393 2394
  preadv=yes
fi

2395 2396
##########################################
# fdt probe
2397
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
2398 2399
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
2400 2401
int main(void) { return 0; }
EOF
2402
  if compile_prog "" "$fdt_libs" ; then
2403
    fdt=yes
2404 2405 2406 2407
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
2408
    fdt_libs=
2409
    fdt=no
2410 2411 2412
  fi
fi

M
Michael Walle 已提交
2413 2414 2415
##########################################
# opengl probe, used by milkymist-tmu2
if test "$opengl" != "no" ; then
2416
  opengl_libs="-lGL -lX11"
M
Michael Walle 已提交
2417 2418 2419 2420
  cat > $TMPC << EOF
#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
2421
int main(void) { return GL_VERSION != 0; }
M
Michael Walle 已提交
2422 2423 2424 2425 2426 2427 2428
EOF
  if compile_prog "" "-lGL" ; then
    opengl=yes
  else
    if test "$opengl" = "yes" ; then
      feature_not_found "opengl"
    fi
2429
    opengl_libs=
M
Michael Walle 已提交
2430 2431 2432 2433
    opengl=no
  fi
fi

2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456
##########################################
# glusterfs probe
if test "$glusterfs" != "no" ; then
  cat > $TMPC <<EOF
#include <glusterfs/api/glfs.h>
int main(void) {
    (void) glfs_new("volume");
    return 0;
}
EOF
  glusterfs_libs="-lgfapi -lgfrpc -lgfxdr"
  if compile_prog "" "$glusterfs_libs" ; then
    glusterfs=yes
    libs_tools="$glusterfs_libs $libs_tools"
    libs_softmmu="$glusterfs_libs $libs_softmmu"
  else
    if test "$glusterfs" = "yes" ; then
      feature_not_found "GlusterFS backend support"
    fi
    glusterfs=no
  fi
fi

2457 2458 2459 2460 2461 2462
#
# Check for xxxat() functions when we are building linux-user
# emulator.  This is done because older glibc versions don't
# have syscall stubs for these implemented.
#
atfile=no
2463
cat > $TMPC << EOF
2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475
#define _ATFILE_SOURCE
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>

int
main(void)
{
	/* try to unlink nonexisting file */
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
}
EOF
2476
if compile_prog "" "" ; then
2477
  atfile=yes
2478 2479
fi

A
aurel32 已提交
2480
# Check for inotify functions when we are building linux-user
2481 2482 2483 2484 2485
# 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
2486
cat > $TMPC << EOF
2487 2488 2489 2490 2491 2492
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
2493
	return inotify_init();
2494 2495
}
EOF
2496
if compile_prog "" "" ; then
2497
  inotify=yes
2498 2499
fi

2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514
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

R
Riku Voipio 已提交
2515 2516 2517 2518 2519 2520
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>
2521
#include <sys/stat.h>
R
Riku Voipio 已提交
2522 2523 2524 2525 2526 2527 2528 2529

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
2530
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2531 2532 2533
  utimens=yes
fi

R
Riku Voipio 已提交
2534 2535 2536 2537 2538 2539 2540 2541 2542
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
2543
    return pipe2(pipefd, O_CLOEXEC);
R
Riku Voipio 已提交
2544 2545
}
EOF
2546
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2547 2548 2549
  pipe2=yes
fi

K
Kevin Wolf 已提交
2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565
# 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

2566 2567 2568 2569 2570 2571 2572 2573 2574
# 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)
{
2575
    int len, fd = 0;
2576 2577 2578 2579 2580
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
2581
if compile_prog "" "" ; then
2582 2583 2584
  splice=yes
fi

M
Marcelo Tosatti 已提交
2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598
##########################################
# 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

R
Riku Voipio 已提交
2599 2600 2601 2602 2603 2604 2605
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

int main(void)
{
2606
    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
R
Riku Voipio 已提交
2607 2608 2609 2610 2611 2612
}
EOF
if compile_prog "" "" ; then
  eventfd=yes
fi

2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2624
if compile_prog "" "" ; then
2625 2626 2627
  fallocate=yes
fi

2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643
# 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

2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654
# 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
2655
if compile_prog "" "" ; then
2656 2657 2658
  sync_file_range=yes
fi

2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671
# 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
2672
if compile_prog "" "" ; then
2673 2674 2675
  fiemap=yes
fi

2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2687
if compile_prog "" "" ; then
2688 2689 2690
  dup3=yes
fi

2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701
# check for epoll support
epoll=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
    epoll_create(0);
    return 0;
}
EOF
2702
if compile_prog "" "" ; then
2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713
  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)
{
2714 2715 2716 2717 2718 2719 2720 2721
    /* 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.)
     */
2722
    return (int)(uintptr_t)&epoll_create1;
2723 2724
}
EOF
2725
if compile_prog "" "" ; then
2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738
  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
2739
if compile_prog "" "" ; then
2740 2741 2742
  epoll_pwait=yes
fi

2743
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2744
if test "$docs" != "no" ; then
2745
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2746
    docs=yes
2747
  else
J
Juan Quintela 已提交
2748 2749
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2750
    fi
J
Juan Quintela 已提交
2751
    docs=no
2752
  fi
2753 2754
fi

S
Stefan Weil 已提交
2755
# Search for bswap_32 function
2756 2757 2758 2759 2760
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2761
if compile_prog "" "" ; then
2762 2763 2764
  byteswap_h=yes
fi

2765
# Search for bswap32 function
2766 2767 2768 2769 2770 2771 2772
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
2773
if compile_prog "" "" ; then
2774 2775 2776
  bswap_h=yes
fi

R
Ronnie Sahlberg 已提交
2777 2778
##########################################
# Do we have libiscsi
2779 2780
# We check for iscsi_unmap_sync() to make sure we have a
# recent enough version of libiscsi.
R
Ronnie Sahlberg 已提交
2781 2782
if test "$libiscsi" != "no" ; then
  cat > $TMPC << EOF
2783
#include <stdio.h>
R
Ronnie Sahlberg 已提交
2784
#include <iscsi/iscsi.h>
2785
int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; }
R
Ronnie Sahlberg 已提交
2786
EOF
2787
  if compile_prog "" "-liscsi" ; then
R
Ronnie Sahlberg 已提交
2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798
    libiscsi="yes"
    LIBS="$LIBS -liscsi"
  else
    if test "$libiscsi" = "yes" ; then
      feature_not_found "libiscsi"
    fi
    libiscsi="no"
  fi
fi


2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816
##########################################
# 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
  echo
  echo "Error: libm check failed"
  echo
  exit 1
fi

A
aliguori 已提交
2817 2818
##########################################
# Do we need librt
2819 2820 2821 2822
# 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.
A
aliguori 已提交
2823 2824 2825
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
2826 2827 2828 2829
int main(void) {
  timer_create(CLOCK_REALTIME, NULL, NULL);
  return clock_gettime(CLOCK_REALTIME, NULL);
}
A
aliguori 已提交
2830 2831
EOF

2832
if compile_prog "" "" ; then
2833
  :
2834 2835
# we need pthread for static linking. use previous pthread test result
elif compile_prog "" "-lrt $pthread_lib" ; then
2836
  LIBS="-lrt $LIBS"
2837
  libs_qga="-lrt $libs_qga"
A
aliguori 已提交
2838 2839
fi

2840
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2841
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2842 2843 2844
    libs_softmmu="-lutil $libs_softmmu"
fi

2845
##########################################
2846 2847 2848 2849 2850 2851
# spice probe
if test "$spice" != "no" ; then
  cat > $TMPC << EOF
#include <spice.h>
int main(void) { spice_server_new(); return 0; }
EOF
J
Jiri Denemark 已提交
2852 2853
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
G
Gerd Hoffmann 已提交
2854 2855
  if $pkg_config --atleast-version=0.12.0 spice-server >/dev/null 2>&1 && \
     $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1 && \
2856 2857 2858 2859
     compile_prog "$spice_cflags" "$spice_libs" ; then
    spice="yes"
    libs_softmmu="$libs_softmmu $spice_libs"
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
2860 2861
    spice_protocol_version=$($pkg_config --modversion spice-protocol)
    spice_server_version=$($pkg_config --modversion spice-server)
2862 2863 2864 2865 2866 2867 2868 2869
  else
    if test "$spice" = "yes" ; then
      feature_not_found "spice"
    fi
    spice="no"
  fi
fi

R
Robert Relyea 已提交
2870
# check for libcacard for smartcard support
P
Paolo Bonzini 已提交
2871 2872 2873 2874
smartcard_cflags=""
# TODO - what's the minimal nss version we support?
if test "$smartcard_nss" != "no"; then
  cat > $TMPC << EOF
2875 2876 2877
#include <pk11pub.h>
int main(void) { PK11_FreeSlot(0); return 0; }
EOF
P
Paolo Bonzini 已提交
2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888
    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
2889 2890
    if test -n "$libtool" &&
            $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \
P
Paolo Bonzini 已提交
2891 2892 2893 2894 2895 2896 2897 2898
      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"
R
Robert Relyea 已提交
2899
        fi
P
Paolo Bonzini 已提交
2900
        smartcard_nss="no"
R
Robert Relyea 已提交
2901 2902 2903
    fi
fi

2904 2905
# check for usbredirparser for usb network redirection support
if test "$usb_redir" != "no" ; then
2906
    if $pkg_config --atleast-version=0.6 libusbredirparser-0.5 >/dev/null 2>&1 ; then
2907
        usb_redir="yes"
2908 2909
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5 2>/dev/null)
        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5 2>/dev/null)
2910
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
A
Aurelien Jarno 已提交
2911
        libs_softmmu="$libs_softmmu $usb_redir_libs"
2912 2913 2914 2915 2916 2917 2918 2919
    else
        if test "$usb_redir" = "yes"; then
            feature_not_found "usb-redir"
        fi
        usb_redir="no"
    fi
fi

2920 2921
##########################################

B
Blue Swirl 已提交
2922 2923 2924 2925 2926 2927
##########################################
# check if we have fdatasync

fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
2928 2929 2930 2931
int main(void) {
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
return fdatasync(0);
#else
2932
#error Not supported
2933 2934
#endif
}
B
Blue Swirl 已提交
2935 2936 2937 2938 2939
EOF
if compile_prog "" "" ; then
    fdatasync=yes
fi

A
Andreas Färber 已提交
2940 2941 2942 2943 2944 2945 2946
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2947
#include <stddef.h>
A
Andreas Färber 已提交
2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959
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>
S
Scott Wood 已提交
2960
#include <stddef.h>
A
Andreas Färber 已提交
2961 2962 2963 2964 2965 2966
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984
##########################################
# 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

2985 2986 2987
##########################################
# check if trace backend exists

2988
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
2989 2990 2991 2992 2993 2994 2995 2996
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2997 2998 2999 3000 3001 3002 3003 3004 3005
##########################################
# 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
3006
    LIBS="-lust -lurcu-bp $LIBS"
3007
    libs_qga="-lust -lurcu-bp $libs_qga"
3008 3009 3010 3011 3012 3013 3014
  else
    echo
    echo "Error: Trace backend 'ust' missing libust header files"
    echo
    exit 1
  fi
fi
3015 3016 3017 3018 3019 3020 3021 3022 3023 3024

##########################################
# For 'dtrace' backend, test if 'dtrace' command is present
if test "$trace_backend" = "dtrace"; then
  if ! has 'dtrace' ; then
    echo
    echo "Error: dtrace command is not found in PATH $PATH"
    echo
    exit 1
  fi
3025 3026 3027 3028
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
3029 3030
fi

W
Wolfgang Mauerer 已提交
3031 3032 3033 3034
##########################################
# __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
3035
if test "$vhost_net" = "yes" && test "$cpu" = "i386"; then
W
Wolfgang Mauerer 已提交
3036
  cat > $TMPC << EOF
3037
static int sfaa(int *ptr)
W
Wolfgang Mauerer 已提交
3038 3039 3040 3041
{
  return __sync_fetch_and_and(ptr, 0);
}

3042
int main(void)
W
Wolfgang Mauerer 已提交
3043 3044 3045 3046 3047 3048 3049
{
  int val = 42;
  sfaa(&val);
  return val;
}
EOF
  if ! compile_prog "" "" ; then
3050
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
W
Wolfgang Mauerer 已提交
3051 3052 3053
  fi
fi

3054
##########################################
3055
# check and set a backend for coroutine
3056

3057 3058 3059 3060 3061
# default is ucontext, but always fallback to gthread
# windows autodetected by make
if test "$coroutine" = "" -o "$coroutine" = "ucontext"; then
  if test "$darwin" != "yes"; then
    cat > $TMPC << EOF
3062
#include <ucontext.h>
3063 3064 3065
#ifdef __stub_makecontext
#error Ignoring glibc stub makecontext which will always fail
#endif
3066
int main(void) { makecontext(0, 0, 0); return 0; }
3067
EOF
3068 3069 3070 3071 3072
    if compile_prog "" "" ; then
        coroutine_backend=ucontext
    else
	coroutine_backend=gthread
    fi
3073
  fi
3074 3075 3076 3077
elif test "$coroutine" = "gthread" ; then
  coroutine_backend=gthread
elif test "$coroutine" = "windows" ; then
  coroutine_backend=windows
3078 3079
elif test "$coroutine" = "sigaltstack" ; then
  coroutine_backend=sigaltstack
3080 3081 3082 3083 3084
else
  echo
  echo "Error: unknown coroutine backend $coroutine"
  echo
  exit 1
3085 3086
fi

3087 3088 3089
##########################################
# check if we have open_by_handle_at

S
Stefan Weil 已提交
3090
open_by_handle_at=no
3091 3092
cat > $TMPC << EOF
#include <fcntl.h>
3093 3094 3095
#if !defined(AT_EMPTY_PATH)
# error missing definition
#else
3096
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
3097
#endif
3098 3099 3100 3101 3102
EOF
if compile_prog "" "" ; then
    open_by_handle_at=yes
fi

3103 3104 3105 3106 3107 3108 3109
########################################
# check if we have linux/magic.h

linux_magic_h=no
cat > $TMPC << EOF
#include <linux/magic.h>
int main(void) {
3110
  return 0;
3111 3112 3113 3114 3115 3116
}
EOF
if compile_prog "" "" ; then
    linux_magic_h=yes
fi

3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130
########################################
# check whether we can disable the -Wunused-but-set-variable
# option with a pragma (this is needed to silence a warning in
# some versions of the valgrind VALGRIND_STACK_DEREGISTER macro.)
# This test has to be compiled with -Werror as otherwise an
# unknown pragma is only a warning.
pragma_disable_unused_but_set=no
cat > $TMPC << EOF
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
int main(void) {
    return 0;
}
EOF
if compile_prog "-Werror" "" ; then
3131
    pragma_diagnostic_available=yes
3132 3133
fi

3134
########################################
3135
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
3136 3137 3138 3139

valgrind_h=no
cat > $TMPC << EOF
#include <valgrind/valgrind.h>
3140
#include <valgrind/memcheck.h>
3141 3142 3143 3144 3145 3146 3147 3148
int main(void) {
  return 0;
}
EOF
if compile_prog "" "" ; then
    valgrind_h=yes
fi

3149 3150 3151 3152 3153 3154 3155
########################################
# check if environ is declared

has_environ=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) {
3156
    environ = 0;
3157 3158 3159 3160 3161 3162 3163
    return 0;
}
EOF
if compile_prog "" "" ; then
    has_environ=yes
fi

3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177
########################################
# 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

3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193
########################################
# 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;
  return 0;
}
EOF
if compile_prog "" "" ; then
    int128=yes
fi
3194

3195
##########################################
3196 3197 3198
# End of CC checks
# After here, no more $cc or $ld runs

B
Blue Swirl 已提交
3199 3200 3201 3202
if test "$gcov" = "yes" ; then
  CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
  LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
elif test "$debug" = "no" ; then
3203
  CFLAGS="-O2 -D_FORTIFY_SOURCE=2 $CFLAGS"
3204
fi
J
Juan Quintela 已提交
3205

B
Blue Swirl 已提交
3206

3207 3208 3209 3210 3211 3212 3213 3214 3215 3216
# 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

3217 3218 3219 3220 3221
# 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

3222 3223
if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
3224
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
3225 3226 3227
    fi
fi

3228 3229 3230 3231 3232 3233 3234
# test if pod2man has --utf8 option
if pod2man --help | grep -q utf8; then
    POD2MAN="pod2man --utf8"
else
    POD2MAN="pod2man"
fi

3235 3236 3237 3238 3239 3240 3241 3242 3243
# 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

3244
qemu_confdir=$sysconfdir$confsuffix
3245
qemu_datadir=$datadir$confsuffix
3246
qemu_localedir="$datadir/locale"
3247

3248 3249
tools=""
if test "$want_tools" = "yes" ; then
3250
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
3251 3252 3253 3254 3255
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
    tools="qemu-nbd\$(EXESUF) $tools"
  fi
fi
if test "$softmmu" = yes ; then
3256
  if test "$virtfs" != no ; then
3257 3258 3259 3260 3261
    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
3262 3263
        echo "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
        exit 1
3264
      fi
3265
      virtfs=no
3266
    fi
3267
  fi
3268
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
3269
    if [ "$guest_agent" = "yes" ]; then
M
Michael Roth 已提交
3270
      tools="qemu-ga\$(EXESUF) $tools"
3271
    fi
3272
  fi
3273
fi
3274 3275 3276 3277 3278 3279 3280 3281

# 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
3282
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
3283 3284
  roms="$roms spapr-rtas"
fi
3285

3286 3287 3288 3289
# add pixman flags after all config tests are done
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags"
libs_softmmu="$libs_softmmu $pixman_libs"

B
bellard 已提交
3290
echo "Install prefix    $prefix"
3291
echo "BIOS directory    `eval echo $qemu_datadir`"
3292
echo "binary directory  `eval echo $bindir`"
A
Alon Levy 已提交
3293
echo "library directory `eval echo $libdir`"
3294
echo "libexec directory `eval echo $libexecdir`"
3295
echo "include directory `eval echo $includedir`"
3296
echo "config directory  `eval echo $sysconfdir`"
L
Luiz Capitulino 已提交
3297
echo "local state directory   `eval echo $local_statedir`"
B
bellard 已提交
3298
if test "$mingw32" = "no" ; then
3299
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
3300
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
3301
fi
3302
echo "Source path       $source_path"
B
bellard 已提交
3303
echo "C compiler        $cc"
B
bellard 已提交
3304
echo "Host C compiler   $host_cc"
3305
echo "Objective-C compiler $objcc"
3306
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
3307
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
3308
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
3309
echo "make              $make"
3310
echo "install           $install"
B
Blue Swirl 已提交
3311
echo "python            $python"
3312 3313 3314
if test "$slirp" = "yes" ; then
    echo "smbd              $smbd"
fi
B
bellard 已提交
3315
echo "host CPU          $cpu"
B
bellard 已提交
3316
echo "host big endian   $bigendian"
3317
echo "target list       $target_list"
3318
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
3319
echo "gprof enabled     $gprof"
3320
echo "sparse enabled    $sparse"
3321
echo "strip binaries    $strip_opt"
3322
echo "profiler          $profiler"
B
bellard 已提交
3323
echo "static build      $static"
3324
echo "-Werror enabled   $werror"
3325 3326 3327
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
3328
echo "pixman            $pixman"
3329
echo "SDL support       $sdl"
A
Anthony Liguori 已提交
3330
echo "GTK support       $gtk"
B
balrog 已提交
3331
echo "curses support    $curses"
A
Alexander Graf 已提交
3332
echo "curl support      $curl"
B
bellard 已提交
3333
echo "mingw32 support   $mingw32"
M
malc 已提交
3334 3335
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
3336
echo "Block whitelist   $block_drv_whitelist"
3337
echo "Mixer emulation   $mixemu"
3338
echo "VirtFS support    $virtfs"
J
Jes Sorensen 已提交
3339 3340 3341 3342 3343 3344
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"
3345
    echo "VNC WS support    $vnc_ws"
J
Jes Sorensen 已提交
3346
fi
3347 3348 3349
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
3350
echo "xen support       $xen"
A
aurel32 已提交
3351
echo "brlapi support    $brlapi"
3352
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
3353
echo "Documentation     $docs"
3354 3355
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
3356
echo "NPTL support      $nptl"
P
Paul Brook 已提交
3357
echo "GUEST_BASE        $guest_base"
3358
echo "PIE               $pie"
3359
echo "vde support       $vde"
3360
echo "Linux AIO support $linux_aio"
3361
echo "ATTR/XATTR support $attr"
T
ths 已提交
3362
echo "Install blobs     $blobs"
3363
echo "KVM support       $kvm"
3364
echo "TCG interpreter   $tcg_interpreter"
3365
echo "fdt support       $fdt"
3366
echo "preadv support    $preadv"
B
Blue Swirl 已提交
3367
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
3368 3369
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
3370
echo "sigev_thread_id   $sigev_thread_id"
3371
echo "uuid support      $uuid"
3372
echo "libcap-ng support $cap_ng"
M
Michael S. Tsirkin 已提交
3373
echo "vhost-net support $vhost_net"
3374
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
3375
echo "Trace output file $trace_file-<pid>"
3376
echo "spice support     $spice ($spice_protocol_version/$spice_server_version)"
3377
echo "rbd support       $rbd"
C
Christoph Hellwig 已提交
3378
echo "xfsctl support    $xfs"
R
Robert Relyea 已提交
3379
echo "nss used          $smartcard_nss"
3380
echo "usb net redir     $usb_redir"
M
Michael Walle 已提交
3381
echo "OpenGL support    $opengl"
R
Ronnie Sahlberg 已提交
3382
echo "libiscsi support  $libiscsi"
3383
echo "build guest agent $guest_agent"
3384
echo "seccomp support   $seccomp"
3385
echo "coroutine backend $coroutine_backend"
3386
echo "GlusterFS support $glusterfs"
3387
echo "virtio-blk-data-plane $virtio_blk_data_plane"
B
Blue Swirl 已提交
3388 3389
echo "gcov              $gcov_tool"
echo "gcov enabled      $gcov"
B
bellard 已提交
3390

3391
if test "$sdl_too_old" = "yes"; then
B
bellard 已提交
3392
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
3393
fi
B
bellard 已提交
3394

3395
config_host_mak="config-host.mak"
3396
config_host_ld="config-host.ld"
3397

3398 3399
echo "# Automatically generated by configure - do not modify" >config-all-disas.mak

3400 3401 3402 3403 3404
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

3405
echo all: >> $config_host_mak
3406 3407
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
A
Alon Levy 已提交
3408
echo "libdir=$libdir" >> $config_host_mak
3409
echo "libexecdir=$libexecdir" >> $config_host_mak
3410
echo "includedir=$includedir" >> $config_host_mak
3411 3412
echo "mandir=$mandir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
3413
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
3414 3415
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
L
Luiz Capitulino 已提交
3416
echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
3417
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
3418 3419
echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
3420
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
3421

3422
echo "ARCH=$ARCH" >> $config_host_mak
3423
if test "$debug_tcg" = "yes" ; then
3424
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
3425
fi
P
Paul Brook 已提交
3426
if test "$debug" = "yes" ; then
3427
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
3428
fi
3429
if test "$strip_opt" = "yes" ; then
3430
  echo "STRIP=${strip}" >> $config_host_mak
3431
fi
B
bellard 已提交
3432
if test "$bigendian" = "yes" ; then
3433
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
3434
fi
B
bellard 已提交
3435
if test "$mingw32" = "yes" ; then
3436
  echo "CONFIG_WIN32=y" >> $config_host_mak
3437 3438 3439 3440 3441 3442 3443 3444 3445
  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
3446
else
J
Juan Quintela 已提交
3447
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
3448 3449 3450 3451
fi

if test "$linux" = "yes" ; then
  echo "CONFIG_LINUX=y" >> $config_host_mak
B
bellard 已提交
3452
fi
3453

3454
if test "$darwin" = "yes" ; then
3455
  echo "CONFIG_DARWIN=y" >> $config_host_mak
3456
fi
M
malc 已提交
3457 3458

if test "$aix" = "yes" ; then
3459
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
3460 3461
fi

B
bellard 已提交
3462
if test "$solaris" = "yes" ; then
3463
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
3464
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
3465
  if test "$needs_libsunmath" = "yes" ; then
3466
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
3467
  fi
B
bellard 已提交
3468
fi
3469 3470 3471
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
3472
if test "$static" = "yes" ; then
3473
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
3474
fi
3475
if test "$profiler" = "yes" ; then
3476
  echo "CONFIG_PROFILER=y" >> $config_host_mak
3477
fi
B
bellard 已提交
3478
if test "$slirp" = "yes" ; then
3479
  echo "CONFIG_SLIRP=y" >> $config_host_mak
3480
  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
B
bellard 已提交
3481
fi
3482
if test "$vde" = "yes" ; then
3483
  echo "CONFIG_VDE=y" >> $config_host_mak
3484
fi
3485 3486 3487
if test "$cap_ng" = "yes" ; then
  echo "CONFIG_LIBCAP=y" >> $config_host_mak
fi
M
malc 已提交
3488
for card in $audio_card_list; do
3489
    def=CONFIG_`echo $card | LC_ALL=C tr '[a-z]' '[A-Z]'`
3490
    echo "$def=y" >> $config_host_mak
M
malc 已提交
3491
done
3492
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
3493
for drv in $audio_drv_list; do
3494
    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
3495
    echo "$def=y" >> $config_host_mak
M
malc 已提交
3496
    if test "$drv" = "fmod"; then
3497
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
3498 3499
    fi
done
3500 3501 3502
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
3503 3504 3505
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
3506
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
3507
if test "$mixemu" = "yes" ; then
3508
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
3509
fi
J
Jes Sorensen 已提交
3510 3511 3512
if test "$vnc" = "yes" ; then
  echo "CONFIG_VNC=y" >> $config_host_mak
fi
3513
if test "$vnc_tls" = "yes" ; then
3514
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
3515
fi
3516
if test "$vnc_sasl" = "yes" ; then
3517
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
3518
fi
J
Jes Sorensen 已提交
3519
if test "$vnc_jpeg" = "yes" ; then
3520 3521
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
fi
J
Jes Sorensen 已提交
3522
if test "$vnc_png" = "yes" ; then
C
Corentin Chary 已提交
3523 3524
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
fi
3525 3526 3527 3528
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
3529
if test "$fnmatch" = "yes" ; then
3530
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
3531
fi
3532 3533 3534
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
C
Christoph Hellwig 已提交
3535 3536 3537
if test "$xfs" = "yes" ; then
  echo "CONFIG_XFS=y" >> $config_host_mak
fi
3538
qemu_version=`head $source_path/VERSION`
3539
echo "VERSION=$qemu_version" >>$config_host_mak
3540
echo "PKGVERSION=$pkgversion" >>$config_host_mak
3541 3542
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
3543
if [ "$docs" = "yes" ] ; then
3544
  echo "BUILD_DOCS=yes" >> $config_host_mak
3545
fi
3546
if test "$sdl" = "yes" ; then
3547
  echo "CONFIG_SDL=y" >> $config_host_mak
3548
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
3549 3550
fi
if test "$cocoa" = "yes" ; then
3551
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
3552 3553
fi
if test "$curses" = "yes" ; then
3554
  echo "CONFIG_CURSES=y" >> $config_host_mak
3555
fi
3556
if test "$atfile" = "yes" ; then
3557
  echo "CONFIG_ATFILE=y" >> $config_host_mak
3558
fi
R
Riku Voipio 已提交
3559
if test "$utimens" = "yes" ; then
3560
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
3561
fi
R
Riku Voipio 已提交
3562
if test "$pipe2" = "yes" ; then
3563
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
3564
fi
K
Kevin Wolf 已提交
3565 3566 3567
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
3568
if test "$splice" = "yes" ; then
3569
  echo "CONFIG_SPLICE=y" >> $config_host_mak
3570
fi
R
Riku Voipio 已提交
3571 3572 3573
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
3574 3575 3576
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
3577 3578 3579
if test "$fallocate_punch_hole" = "yes" ; then
  echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
fi
3580 3581 3582
if test "$sync_file_range" = "yes" ; then
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
3583 3584 3585
if test "$fiemap" = "yes" ; then
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
fi
3586 3587 3588
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
3589 3590 3591 3592 3593 3594 3595 3596 3597
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
3598
if test "$inotify" = "yes" ; then
3599
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
3600
fi
3601 3602 3603
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
3604 3605 3606 3607 3608 3609
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
A
Alexander Graf 已提交
3610
if test "$curl" = "yes" ; then
3611
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
3612
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
3613
fi
A
aurel32 已提交
3614
if test "$brlapi" = "yes" ; then
3615
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
3616
fi
B
balrog 已提交
3617
if test "$bluez" = "yes" ; then
3618
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
3619
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
3620
fi
3621
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
A
Anthony Liguori 已提交
3622 3623 3624 3625 3626
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
3627
if test "$xen" = "yes" ; then
J
Jan Kiszka 已提交
3628
  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
3629
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
3630
fi
3631 3632 3633
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
3634 3635 3636
if test "$attr" = "yes" ; then
  echo "CONFIG_ATTR=y" >> $config_host_mak
fi
3637 3638 3639
if test "$libattr" = "yes" ; then
  echo "CONFIG_LIBATTR=y" >> $config_host_mak
fi
3640 3641
if test "$virtfs" = "yes" ; then
  echo "CONFIG_VIRTFS=y" >> $config_host_mak
3642
fi
T
ths 已提交
3643
if test "$blobs" = "yes" ; then
3644
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
3645
fi
A
aliguori 已提交
3646
if test "$iovec" = "yes" ; then
3647
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
3648
fi
3649
if test "$preadv" = "yes" ; then
3650
  echo "CONFIG_PREADV=y" >> $config_host_mak
3651
fi
3652
if test "$fdt" = "yes" ; then
3653
  echo "CONFIG_FDT=y" >> $config_host_mak
3654
fi
M
Marcelo Tosatti 已提交
3655 3656 3657
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
3658 3659 3660
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
3661 3662 3663
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
3664 3665 3666 3667 3668 3669
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
3670 3671 3672
if test "$sigev_thread_id" = "yes" ; then
  echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
fi
3673

3674 3675 3676
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi
A
Alon Levy 已提交
3677

R
Robert Relyea 已提交
3678 3679
if test "$smartcard_nss" = "yes" ; then
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
P
Paul Brook 已提交
3680 3681
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
R
Robert Relyea 已提交
3682 3683
fi

3684 3685 3686 3687
if test "$usb_redir" = "yes" ; then
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
fi

M
Michael Walle 已提交
3688 3689 3690 3691
if test "$opengl" = "yes" ; then
  echo "CONFIG_OPENGL=y" >> $config_host_mak
fi

R
Ronnie Sahlberg 已提交
3692 3693 3694 3695
if test "$libiscsi" = "yes" ; then
  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
fi

3696 3697 3698 3699
if test "$seccomp" = "yes"; then
  echo "CONFIG_SECCOMP=y" >> $config_host_mak
fi

3700
# XXX: suppress that
B
bellard 已提交
3701
if [ "$bsd" = "yes" ] ; then
3702
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
3703 3704
fi

3705
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3706

3707 3708 3709
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
3710 3711
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
3712 3713
fi

3714
if test "$coroutine_backend" = "ucontext" ; then
3715
  echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak
3716 3717
elif test "$coroutine_backend" = "sigaltstack" ; then
  echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak
3718
fi
3719

3720 3721 3722 3723
if test "$open_by_handle_at" = "yes" ; then
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
fi

3724 3725
if test "$linux_magic_h" = "yes" ; then
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
3726 3727
fi

3728 3729
if test "$pragma_diagnostic_available" = "yes" ; then
  echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
3730 3731
fi

3732 3733 3734 3735
if test "$valgrind_h" = "yes" ; then
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
fi

3736 3737
if test "$has_environ" = "yes" ; then
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
3738 3739
fi

3740 3741 3742 3743
if test "$cpuid_h" = "yes" ; then
  echo "CONFIG_CPUID_H=y" >> $config_host_mak
fi

3744 3745 3746 3747
if test "$int128" = "yes" ; then
  echo "CONFIG_INT128=y" >> $config_host_mak
fi

3748 3749 3750
if test "$glusterfs" = "yes" ; then
  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
fi
3751

3752 3753 3754 3755
if test "$virtio_blk_data_plane" = "yes" ; then
  echo "CONFIG_VIRTIO_BLK_DATA_PLANE=y" >> $config_host_mak
fi

3756 3757 3758
# USB host support
case "$usb" in
linux)
3759
  echo "HOST_USB=linux legacy" >> $config_host_mak
3760 3761
;;
bsd)
3762
  echo "HOST_USB=bsd" >> $config_host_mak
3763 3764
;;
*)
3765
  echo "HOST_USB=stub" >> $config_host_mak
3766 3767 3768
;;
esac

3769 3770
# use default implementation for tracing backend-specific routines
trace_default=yes
3771
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3772 3773
if test "$trace_backend" = "nop"; then
  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
3774
fi
P
Prerna Saxena 已提交
3775
if test "$trace_backend" = "simple"; then
3776
  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
3777
  trace_default=no
3778
  # Set the appropriate trace file.
3779
  trace_file="\"$trace_file-\" FMT_pid"
P
Prerna Saxena 已提交
3780
fi
3781 3782
if test "$trace_backend" = "stderr"; then
  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
3783
  trace_default=no
3784 3785 3786 3787 3788 3789 3790 3791 3792
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
3793
fi
P
Prerna Saxena 已提交
3794
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
3795 3796 3797
if test "$trace_default" = "yes"; then
  echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
3798

3799 3800
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
3801 3802
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
3803 3804
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
3805 3806 3807 3808 3809 3810 3811
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
B
Blue Swirl 已提交
3812
echo "PYTHON=$python" >> $config_host_mak
3813
echo "CC=$cc" >> $config_host_mak
P
Paolo Bonzini 已提交
3814
echo "CC_I386=$cc_i386" >> $config_host_mak
3815
echo "HOST_CC=$host_cc" >> $config_host_mak
3816
echo "OBJCC=$objcc" >> $config_host_mak
3817
echo "AR=$ar" >> $config_host_mak
3818 3819
echo "AS=$as" >> $config_host_mak
echo "CPP=$cpp" >> $config_host_mak
3820 3821
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
3822
echo "WINDRES=$windres" >> $config_host_mak
A
Alon Levy 已提交
3823
echo "LIBTOOL=$libtool" >> $config_host_mak
3824
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
3825
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3826
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
3827 3828 3829 3830 3831
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
3832 3833 3834 3835 3836
if test "$cross_prefix" != ""; then
  echo "AUTOCONF_HOST := --host=${cross_prefix%-}"     >> $config_host_mak
else
  echo "AUTOCONF_HOST := "                             >> $config_host_mak
fi
3837
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3838 3839
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
3840
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
3841
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3842
echo "EXESUF=$EXESUF" >> $config_host_mak
3843
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
3844
echo "POD2MAN=$POD2MAN" >> $config_host_mak
3845
echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
B
Blue Swirl 已提交
3846 3847 3848 3849
if test "$gcov" = "yes" ; then
  echo "CONFIG_GCOV=y" >> $config_host_mak
  echo "GCOV=$gcov_tool" >> $config_host_mak
fi
3850

3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862
# generate list of library paths for linker script

$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}

if test -f ${config_host_ld}~ ; then
  if cmp -s $config_host_ld ${config_host_ld}~ ; then
    mv ${config_host_ld}~ $config_host_ld
  else
    rm ${config_host_ld}~
  fi
fi

3863 3864
# use included Linux headers
if test "$linux" = "yes" ; then
3865
  mkdir -p linux-headers
3866 3867
  case "$cpu" in
  i386|x86_64)
3868
    linux_arch=x86
3869 3870
    ;;
  ppcemb|ppc|ppc64)
3871
    linux_arch=powerpc
3872 3873
    ;;
  s390x)
3874 3875 3876 3877 3878
    linux_arch=s390
    ;;
  *)
    # For most CPUs the kernel architecture name and QEMU CPU name match.
    linux_arch="$cpu"
3879 3880
    ;;
  esac
3881 3882 3883 3884
    # 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
3885 3886
fi

3887
for target in $target_list; do
3888
target_dir="$target"
3889
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
3890
target_arch2=`echo $target | cut -d '-' -f 1`
3891
target_bigendian="no"
3892

3893
case "$target_arch2" in
3894
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
3895 3896 3897
  target_bigendian=yes
  ;;
esac
3898
target_softmmu="no"
B
bellard 已提交
3899
target_user_only="no"
3900
target_linux_user="no"
B
blueswir1 已提交
3901
target_bsd_user="no"
P
pbrook 已提交
3902
case "$target" in
B
Blue Swirl 已提交
3903
  ${target_arch2}-softmmu)
P
pbrook 已提交
3904 3905
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
3906
  ${target_arch2}-linux-user)
3907 3908 3909 3910
    if test "$linux" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Linux host"
      exit 1
    fi
P
pbrook 已提交
3911 3912 3913
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
3914
  ${target_arch2}-bsd-user)
B
Blue Swirl 已提交
3915
    if test "$bsd" != "yes" ; then
3916 3917 3918
      echo "ERROR: Target '$target' is only available on a BSD host"
      exit 1
    fi
B
blueswir1 已提交
3919 3920 3921
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
3922 3923 3924 3925 3926
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
3927

3928
mkdir -p $target_dir
3929
echo "# Automatically generated by configure - do not modify" > $config_target_mak
B
bellard 已提交
3930

P
pbrook 已提交
3931
bflt="no"
3932
target_nptl="no"
B
Blue Swirl 已提交
3933
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
pbrook 已提交
3934
gdb_xml_files=""
3935 3936 3937 3938
target_short_alignment=2
target_int_alignment=4
target_long_alignment=4
target_llong_alignment=8
3939
target_libs_softmmu=
A
aliguori 已提交
3940

3941
TARGET_ARCH="$target_arch2"
3942
TARGET_BASE_ARCH=""
3943
TARGET_ABI_DIR=""
3944

B
Blue Swirl 已提交
3945
case "$target_arch2" in
A
aurel32 已提交
3946 3947 3948
  i386)
  ;;
  x86_64)
3949
    TARGET_BASE_ARCH=i386
3950
    target_long_alignment=8
A
aurel32 已提交
3951 3952
  ;;
  alpha)
3953
    target_long_alignment=8
R
Richard Henderson 已提交
3954
    target_nptl="yes"
A
aurel32 已提交
3955 3956
  ;;
  arm|armeb)
J
Juan Quintela 已提交
3957
    TARGET_ARCH=arm
A
aurel32 已提交
3958
    bflt="yes"
3959
    target_nptl="yes"
P
pbrook 已提交
3960
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
3961
    target_llong_alignment=4
G
Grant Likely 已提交
3962
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3963 3964
  ;;
  cris)
E
edgar_igl 已提交
3965
    target_nptl="yes"
A
aurel32 已提交
3966
  ;;
M
Michael Walle 已提交
3967
  lm32)
3968
    target_libs_softmmu="$opengl_libs"
M
Michael Walle 已提交
3969
  ;;
A
aurel32 已提交
3970 3971
  m68k)
    bflt="yes"
P
pbrook 已提交
3972
    gdb_xml_files="cf-core.xml cf-fp.xml"
3973 3974 3975
    target_int_alignment=2
    target_long_alignment=2
    target_llong_alignment=2
A
aurel32 已提交
3976
  ;;
3977 3978
  microblaze|microblazeel)
    TARGET_ARCH=microblaze
3979 3980
    bflt="yes"
    target_nptl="yes"
3981
    target_libs_softmmu="$fdt_libs"
3982
  ;;
J
Juan Quintela 已提交
3983
  mips|mipsel)
J
Juan Quintela 已提交
3984
    TARGET_ARCH=mips
3985
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
3986
    target_nptl="yes"
A
aurel32 已提交
3987 3988
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
3989
    TARGET_ARCH=mipsn32
3990
    TARGET_BASE_ARCH=mips
3991
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
A
aurel32 已提交
3992 3993
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
3994
    TARGET_ARCH=mips64
3995
    TARGET_BASE_ARCH=mips
3996
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
3997
    target_long_alignment=8
A
aurel32 已提交
3998
  ;;
3999 4000 4001 4002
  or32)
    TARGET_ARCH=openrisc
    TARGET_BASE_ARCH=openrisc
  ;;
A
aurel32 已提交
4003
  ppc)
4004
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4005
    target_nptl="yes"
4006
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
4007 4008
  ;;
  ppcemb)
4009
    TARGET_BASE_ARCH=ppc
4010
    TARGET_ABI_DIR=ppc
4011
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4012
    target_nptl="yes"
4013
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
4014 4015
  ;;
  ppc64)
4016
    TARGET_BASE_ARCH=ppc
4017
    TARGET_ABI_DIR=ppc
4018
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4019
    target_long_alignment=8
4020
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
4021 4022
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
4023
    TARGET_ARCH=ppc64
4024
    TARGET_BASE_ARCH=ppc
4025
    TARGET_ABI_DIR=ppc
4026
    echo "TARGET_ABI32=y" >> $config_target_mak
4027
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
4028
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
4029 4030
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
4031
    TARGET_ARCH=sh4
A
aurel32 已提交
4032
    bflt="yes"
A
aurel32 已提交
4033
    target_nptl="yes"
A
aurel32 已提交
4034 4035 4036 4037
  ;;
  sparc)
  ;;
  sparc64)
4038
    TARGET_BASE_ARCH=sparc
4039
    target_long_alignment=8
A
aurel32 已提交
4040 4041
  ;;
  sparc32plus)
J
Juan Quintela 已提交
4042
    TARGET_ARCH=sparc64
4043
    TARGET_BASE_ARCH=sparc
4044
    TARGET_ABI_DIR=sparc
4045
    echo "TARGET_ABI32=y" >> $config_target_mak
A
aurel32 已提交
4046
  ;;
4047
  s390x)
U
Ulrich Hecht 已提交
4048
    target_nptl="yes"
4049
    target_long_alignment=8
4050
  ;;
4051 4052
  unicore32)
  ;;
4053 4054 4055
  xtensa|xtensaeb)
    TARGET_ARCH=xtensa
  ;;
A
aurel32 已提交
4056 4057 4058 4059 4060
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
4061 4062 4063 4064 4065 4066 4067
# 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"

4068 4069 4070 4071
upper() {
    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
}

4072
case "$cpu" in
M
malc 已提交
4073
  i386|x86_64|ppc)
4074 4075 4076 4077
    # The TCG interpreter currently does not support ld/st optimization.
    if test "$tcg_interpreter" = "no" ; then
        echo "CONFIG_QEMU_LDST_OPTIMIZATION=y" >> $config_target_mak
    fi
4078 4079 4080
  ;;
esac

4081 4082 4083 4084
echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak
echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak
echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
4085
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
4086
target_arch_name="`upper $TARGET_ARCH`"
4087 4088
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
4089
echo "TARGET_TYPE=TARGET_TYPE_`upper $target_arch2`" >> $config_target_mak
4090
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
4091 4092 4093
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
4094
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
J
Juan Quintela 已提交
4095 4096 4097
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
4098
      echo "CONFIG_XEN=y" >> $config_target_mak
4099 4100 4101
      if test "$xen_pci_passthrough" = yes; then
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
      fi
4102 4103
    else
      echo "CONFIG_NO_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
4104
    fi
4105 4106 4107
    ;;
  *)
    echo "CONFIG_NO_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
4108
esac
J
Juan Quintela 已提交
4109
case "$target_arch2" in
A
Alexander Graf 已提交
4110
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
4111 4112 4113 4114
    # Make sure the target and host cpus are compatible
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
      \( "$target_arch2" = "$cpu" -o \
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
A
Alexander Graf 已提交
4115
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
R
René Rebe 已提交
4116 4117
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
J
Juan Quintela 已提交
4118 4119
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
4120
      echo "CONFIG_KVM=y" >> $config_target_mak
4121
      if test "$vhost_net" = "yes" ; then
M
Michael S. Tsirkin 已提交
4122 4123
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
4124 4125
    fi
esac
4126 4127 4128 4129
case "$target_arch2" in
  i386|x86_64)
    echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
esac
4130
if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
4131 4132
  echo "CONFIG_PSERIES=y" >> $config_target_mak
fi
B
bellard 已提交
4133
if test "$target_bigendian" = "yes" ; then
4134
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
4135
fi
4136
if test "$target_softmmu" = "yes" ; then
4137
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
4138
  echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
4139 4140 4141 4142
  case "$target_arch2" in
    i386|x86_64)
      echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
  esac
B
bellard 已提交
4143
fi
B
bellard 已提交
4144
if test "$target_user_only" = "yes" ; then
4145
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
4146
  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
B
bellard 已提交
4147
fi
4148
if test "$target_linux_user" = "yes" ; then
4149
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
4150
fi
P
pbrook 已提交
4151 4152 4153 4154 4155
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
4156
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
4157
fi
4158

P
pbrook 已提交
4159
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
4160
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
4161
fi
4162 4163
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
4164
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
4165
fi
P
Paul Brook 已提交
4166
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
4167
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
4168
fi
B
blueswir1 已提交
4169
if test "$target_bsd_user" = "yes" ; then
4170
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
4171
fi
4172

4173 4174 4175 4176 4177
# the static way of configuring available audio cards requires this workaround
if test "$target_user_only" != "yes" && grep -q CONFIG_PCSPK $source_path/default-configs/$target.mak; then
  echo "CONFIG_PCSPK=y" >> $config_target_mak
fi

4178
# generate QEMU_CFLAGS/LDFLAGS for targets
4179

4180
cflags=""
4181
includes=""
4182
ldflags=""
4183

4184 4185 4186
if test "$tcg_interpreter" = "yes"; then
  includes="-I\$(SRC_PATH)/tcg/tci $includes"
elif test "$ARCH" = "sparc64" ; then
4187
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
4188
elif test "$ARCH" = "s390x" ; then
4189
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
4190
elif test "$ARCH" = "x86_64" ; then
4191
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
J
Juan Quintela 已提交
4192
else
4193
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
J
Juan Quintela 已提交
4194
fi
4195
includes="-I\$(SRC_PATH)/tcg $includes"
J
Juan Quintela 已提交
4196

4197 4198 4199 4200
if test "$linux" = "yes" ; then
  includes="-I\$(SRC_PATH)/linux-headers $includes"
fi

4201 4202 4203
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
4204
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
4205
    echo "CONFIG_ALPHA_DIS=y"  >> config-all-disas.mak
4206 4207
  ;;
  arm)
4208
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
4209
    echo "CONFIG_ARM_DIS=y"  >> config-all-disas.mak
4210 4211
  ;;
  cris)
4212
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
4213
    echo "CONFIG_CRIS_DIS=y"  >> config-all-disas.mak
4214 4215
  ;;
  hppa)
4216
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
4217
    echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
4218 4219
  ;;
  i386|x86_64)
4220
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
4221
    echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak
4222
  ;;
A
Aurelien Jarno 已提交
4223 4224
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
4225
    echo "CONFIG_IA64_DIS=y"  >> config-all-disas.mak
A
Aurelien Jarno 已提交
4226
  ;;
4227 4228
  lm32)
    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
4229
    echo "CONFIG_LM32_DIS=y"  >> config-all-disas.mak
4230
  ;;
4231
  m68k)
4232
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
4233
    echo "CONFIG_M68K_DIS=y"  >> config-all-disas.mak
4234
  ;;
4235
  microblaze*)
4236
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
4237
    echo "CONFIG_MICROBLAZE_DIS=y"  >> config-all-disas.mak
4238 4239
  ;;
  mips*)
4240
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
4241
    echo "CONFIG_MIPS_DIS=y"  >> config-all-disas.mak
4242
  ;;
4243 4244
  or32)
    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
4245
    echo "CONFIG_OPENRISC_DIS=y"  >> config-all-disas.mak
4246
  ;;
4247
  ppc*)
4248
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
4249
    echo "CONFIG_PPC_DIS=y"  >> config-all-disas.mak
4250
  ;;
4251
  s390*)
4252
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
4253
    echo "CONFIG_S390_DIS=y"  >> config-all-disas.mak
4254 4255
  ;;
  sh4)
4256
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
4257
    echo "CONFIG_SH4_DIS=y"  >> config-all-disas.mak
4258 4259
  ;;
  sparc*)
4260
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
4261
    echo "CONFIG_SPARC_DIS=y"  >> config-all-disas.mak
4262
  ;;
4263 4264
  xtensa*)
    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
4265
    echo "CONFIG_XTENSA_DIS=y"  >> config-all-disas.mak
4266
  ;;
4267 4268
  esac
done
4269 4270
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
4271
  echo "CONFIG_TCI_DIS=y"  >> config-all-disas.mak
4272
fi
4273

4274 4275 4276 4277 4278 4279 4280
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

4281 4282 4283 4284
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
M
Michael Walle 已提交
4285 4286 4287
  ;;
  lm32)
    cflags="-DHAS_AUDIO $cflags"
4288 4289 4290 4291 4292 4293 4294
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

4295
if test "$gprof" = "yes" ; then
4296
  echo "TARGET_GPROF=yes" >> $config_target_mak
4297 4298 4299 4300 4301 4302
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
4303
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
4304 4305 4306
  fi
fi

4307 4308 4309
if test "$ARCH" = "tci"; then
  linker_script=""
else
P
Paolo Bonzini 已提交
4310
  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/ldscripts/\$(ARCH).ld"
4311 4312
fi

4313
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
4314
  case "$ARCH" in
4315 4316 4317
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
4318
  *)
4319
    ldflags="$linker_script $ldflags"
4320 4321 4322 4323
    ;;
  esac
fi

4324 4325
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
4326
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
4327

4328
done # for target in $targets
B
bellard 已提交
4329

4330 4331 4332 4333
if [ "$pixman" = "internal" ]; then
  echo "config-host.h: subdir-pixman" >> $config_host_mak
fi

P
Paolo Bonzini 已提交
4334
# build tree in object directory in case the source is not in the current directory
4335
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32"
4336
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
P
Paolo Bonzini 已提交
4337
DIRS="$DIRS roms/seabios roms/vgabios"
4338
DIRS="$DIRS qapi-generated"
A
Anthony Liguori 已提交
4339 4340
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
4341
FILES="$FILES tests/tcg/lm32/Makefile po/Makefile"
P
Paolo Bonzini 已提交
4342
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
A
Andreas Färber 已提交
4343
FILES="$FILES pc-bios/spapr-rtas/Makefile"
P
Paolo Bonzini 已提交
4344
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
4345 4346
for bios_file in \
    $source_path/pc-bios/*.bin \
4347
    $source_path/pc-bios/*.aml \
4348 4349 4350 4351 4352
    $source_path/pc-bios/*.rom \
    $source_path/pc-bios/*.dtb \
    $source_path/pc-bios/openbios-* \
    $source_path/pc-bios/palcode-*
do
P
Paolo Bonzini 已提交
4353 4354 4355 4356
    FILES="$FILES pc-bios/`basename $bios_file`"
done
mkdir -p $DIRS
for f in $FILES ; do
4357
    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
4358 4359
        symlink "$source_path/$f" "$f"
    fi
P
Paolo Bonzini 已提交
4360
done
P
Paul Brook 已提交
4361

4362
# temporary config to build submodules
4363
for rom in seabios vgabios ; do
4364
    config_mak=roms/$rom/config.mak
4365
    echo "# Automatically generated by configure - do not modify" > $config_mak
4366
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
4367
    echo "AS=$as" >> $config_mak
4368 4369
    echo "CC=$cc" >> $config_mak
    echo "BCC=bcc" >> $config_mak
4370
    echo "CPP=$cpp" >> $config_mak
4371 4372 4373 4374 4375
    echo "OBJCOPY=objcopy" >> $config_mak
    echo "IASL=iasl" >> $config_mak
    echo "LD=$ld" >> $config_mak
done

4376 4377 4378
if test "$docs" = "yes" ; then
  mkdir -p QMP
fi