configure 84.8 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
compile_object() {
G
Gerd Hoffmann 已提交
24 25
  echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
26 27 28 29 30
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
G
Gerd Hoffmann 已提交
31 32
  echo $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log
  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log 2>&1
33 34
}

35 36 37 38 39 40
# symbolically link $1 to $2.  Portable version of "ln -sf".
symlink() {
  rm -f $2
  ln -s $1 $2
}

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
# 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 已提交
77
# default parameters
P
Paolo Bonzini 已提交
78
source_path=`dirname "$0"`
79
cpu=""
80
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
81
static="no"
82
sparc_cpu=""
B
bellard 已提交
83
cross_prefix=""
M
malc 已提交
84
audio_drv_list=""
85 86
audio_card_list="ac97 es1370 sb16 hda"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
87
block_drv_whitelist=""
B
bellard 已提交
88
host_cc="gcc"
J
Juan Quintela 已提交
89
helper_cflags=""
J
Juan Quintela 已提交
90
libs_softmmu=""
J
Juan Quintela 已提交
91
libs_tools=""
92
audio_pt_int=""
93
audio_win_int=""
P
Paolo Bonzini 已提交
94
cc_i386=i386-pc-linux-gnu-gcc
95

96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
target_list=""

# 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=""
kvm=""
kvm_para=""
nptl=""
sdl=""
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
vnc_thread="no"
xen=""
linux_aio=""
attr=""
vhost_net=""
xfs=""

gprof="no"
debug_tcg="no"
debug_mon="no"
debug="no"
strip_opt="yes"
bigendian="no"
mingw32="no"
EXESUF=""
prefix="/usr/local"
mandir="\${prefix}/share/man"
datadir="\${prefix}/share/qemu"
docdir="\${prefix}/share/doc/qemu"
bindir="\${prefix}/bin"
sysconfdir="\${prefix}/etc"
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"
darwin_user="no"
bsd_user="no"
guest_base=""
uname_release=""
io_thread="no"
mixemu="no"
kerneldir=""
aix="no"
blobs="yes"
pkgversion=""
check_utests="no"
user_pie="no"
zero_malloc=""
trace_backend="nop"
trace_file="trace"
spice=""
rbd=""

178 179 180 181 182 183
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
184
  --cc=*) CC="$optarg"
185
  ;;
P
Paolo Bonzini 已提交
186 187
  --source-path=*) source_path="$optarg"
  ;;
188 189
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
190
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
191 192 193
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
194 195 196
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
197
    v7|v8|v8plus|v8plusa)
198 199 200 201 202 203 204 205 206 207 208
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
209 210 211 212 213 214
  esac
done
# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
# we can eliminate it's usage altogether

215 216 217 218 219 220
cc="${cross_prefix}${CC-gcc}"
ar="${cross_prefix}${AR-ar}"
objcopy="${cross_prefix}${OBJCOPY-objcopy}"
ld="${cross_prefix}${LD-ld}"
strip="${cross_prefix}${STRIP-strip}"
windres="${cross_prefix}${WINDRES-windres}"
221
pkg_config="${cross_prefix}${PKG_CONFIG-pkg-config}"
P
Paolo Bonzini 已提交
222
sdl_config="${cross_prefix}${SDL_CONFIG-sdl-config}"
223

224 225 226 227 228 229
# default flags for all hosts
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
K
Kirill A. Shutemov 已提交
230
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
231
QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
232 233
LDFLAGS="-g $LDFLAGS"

P
Paolo Bonzini 已提交
234 235 236
# make source path absolute
source_path=`cd "$source_path"; pwd`

237 238 239 240 241 242 243
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
#error Not defined
#endif
int main(void) { return 0; }
EOF
244
  compile_object
245 246
}

247 248 249 250
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
251 252 253
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
254 255 256 257 258 259 260 261
elif check_define __sparc__ ; then
  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
  # They must be specified using --sparc_cpu
  if check_define __arch64__ ; then
    cpu="sparc64"
  else
    cpu="sparc"
  fi
M
malc 已提交
262 263 264 265 266 267
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
268 269
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
270 271
elif check_define __ia64__ ; then
  cpu="ia64"
272 273 274 275 276 277
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
278
else
M
malc 已提交
279
  cpu=`uname -m`
280 281
fi

B
bellard 已提交
282
case "$cpu" in
M
Michael Walle 已提交
283
  alpha|cris|ia64|lm32|m68k|microblaze|ppc|ppc64|sparc64)
284 285
    cpu="$cpu"
  ;;
B
bellard 已提交
286
  i386|i486|i586|i686|i86pc|BePC)
287
    cpu="i386"
B
bellard 已提交
288
  ;;
A
aurel32 已提交
289 290 291
  x86_64|amd64)
    cpu="x86_64"
  ;;
B
bellard 已提交
292
  armv*b)
293 294
    cpu="armv4b"
  ;;
B
bellard 已提交
295
  armv*l)
B
bellard 已提交
296 297
    cpu="armv4l"
  ;;
A
aurel32 已提交
298 299 300
  parisc|parisc64)
    cpu="hppa"
  ;;
A
Aurelien Jarno 已提交
301 302 303
  mips*)
    cpu="mips"
  ;;
304
  s390)
B
bellard 已提交
305 306
    cpu="s390"
  ;;
307 308 309
  s390x)
    cpu="s390x"
  ;;
310
  sparc|sun4[cdmuv])
B
bellard 已提交
311 312
    cpu="sparc"
  ;;
B
bellard 已提交
313
  *)
314 315
    echo "Unsupported CPU = $cpu"
    exit 1
B
bellard 已提交
316 317
  ;;
esac
J
Juan Quintela 已提交
318

B
bellard 已提交
319
# OS specific
320 321 322 323
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
324 325 326 327
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
328 329
elif check_define __HAIKU__ ; then
  targetos='Haiku'
330 331 332
else
  targetos=`uname -s`
fi
333

B
bellard 已提交
334
case $targetos in
B
bellard 已提交
335
CYGWIN*)
336
  mingw32="yes"
J
Juan Quintela 已提交
337
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
338 339
  audio_possible_drivers="winwave sdl"
  audio_drv_list="winwave"
B
bellard 已提交
340
;;
B
bellard 已提交
341
MINGW32*)
342
  mingw32="yes"
343 344
  audio_possible_drivers="winwave dsound sdl fmod"
  audio_drv_list="winwave"
B
bellard 已提交
345
;;
T
ths 已提交
346
GNU/kFreeBSD)
A
Aurelien Jarno 已提交
347
  bsd="yes"
348 349
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
350
;;
B
bellard 已提交
351
FreeBSD)
352
  bsd="yes"
353
  make="${MAKE-gmake}"
354 355
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
356 357
  # needed for kinfo_getvmmap(3) in libutil.h
  LIBS="-lutil $LIBS"
B
bellard 已提交
358
;;
359
DragonFly)
360
  bsd="yes"
361
  make="${MAKE-gmake}"
362 363
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
364
;;
B
bellard 已提交
365
NetBSD)
366
  bsd="yes"
367
  make="${MAKE-gmake}"
368 369 370
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
371 372
;;
OpenBSD)
373
  bsd="yes"
374
  make="${MAKE-gmake}"
375 376 377
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
378
;;
379
Darwin)
380 381 382 383 384
  bsd="yes"
  darwin="yes"
  # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
  # run 64-bit userspace code
  if [ "$cpu" = "i386" ] ; then
M
malc 已提交
385 386
    is_x86_64=`sysctl -n hw.optional.x86_64`
    [ "$is_x86_64" = "1" ] && cpu=x86_64
387 388
  fi
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
389
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
390
    LDFLAGS="-arch x86_64 $LDFLAGS"
391
  else
J
Juan Quintela 已提交
392
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
393 394 395 396 397 398
  fi
  darwin_user="yes"
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
399
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
400
;;
B
bellard 已提交
401
SunOS)
402
  solaris="yes"
403 404
  make="${MAKE-gmake}"
  install="${INSTALL-ginstall}"
405
  ld="gld"
406 407 408 409 410 411 412 413 414 415 416 417
  needs_libsunmath="no"
  solarisrev=`uname -r | cut -f2 -d.`
  # have to select again, because `uname -m` returns i86pc
  # even on an x86_64 box.
  solariscpu=`isainfo -k`
  if test "${solariscpu}" = "amd64" ; then
    cpu="x86_64"
  fi
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
    if test "$solarisrev" -le 9 ; then
      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
        needs_libsunmath="yes"
418 419 420
        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"
421 422 423 424 425 426 427
      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 已提交
428
    fi
429 430 431 432 433
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
434 435 436 437
# 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 已提交
438
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
439
  LIBS="-lsocket -lnsl -lresolv $LIBS"
T
ths 已提交
440
;;
M
malc 已提交
441
AIX)
442
  aix="yes"
443
  make="${MAKE-gmake}"
M
malc 已提交
444
;;
445 446 447 448 449
Haiku)
  haiku="yes"
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
;;
450
*)
451 452 453 454 455 456
  audio_drv_list="oss"
  audio_possible_drivers="oss alsa sdl esd pa"
  linux="yes"
  linux_user="yes"
  usb="linux"
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
457
    audio_possible_drivers="$audio_possible_drivers fmod"
458
  fi
B
bellard 已提交
459
;;
B
bellard 已提交
460 461
esac

B
bellard 已提交
462
if [ "$bsd" = "yes" ] ; then
463
  if [ "$darwin" != "yes" ] ; then
464
    usb="bsd"
465
  fi
B
blueswir1 已提交
466
  bsd_user="yes"
B
bellard 已提交
467 468
fi

469 470 471
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}

472 473
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
474
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
475 476
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
477
  LIBS="-lwinmm -lws2_32 -liberty -liphlpapi $LIBS"
478 479 480 481 482 483 484
  prefix="c:/Program Files/Qemu"
  mandir="\${prefix}"
  datadir="\${prefix}"
  docdir="\${prefix}"
  bindir="\${prefix}"
  sysconfdir="\${prefix}"
  confsuffix=""
485 486
fi

487
werror=""
488

B
bellard 已提交
489
for opt do
P
pbrook 已提交
490
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
B
bellard 已提交
491
  case "$opt" in
492 493
  --help|-h) show_help=yes
  ;;
494
  --prefix=*) prefix="$optarg"
B
bellard 已提交
495
  ;;
496
  --interp-prefix=*) interp_prefix="$optarg"
B
bellard 已提交
497
  ;;
P
Paolo Bonzini 已提交
498
  --source-path=*)
B
bellard 已提交
499
  ;;
500
  --cross-prefix=*)
B
bellard 已提交
501
  ;;
502
  --cc=*)
B
bellard 已提交
503
  ;;
504
  --host-cc=*) host_cc="$optarg"
B
bellard 已提交
505
  ;;
506
  --make=*) make="$optarg"
B
bellard 已提交
507
  ;;
508 509
  --install=*) install="$optarg"
  ;;
510
  --extra-cflags=*)
B
bellard 已提交
511
  ;;
512
  --extra-ldflags=*)
B
bellard 已提交
513
  ;;
514
  --cpu=*)
B
bellard 已提交
515
  ;;
516
  --target-list=*) target_list="$optarg"
B
bellard 已提交
517
  ;;
518
  --enable-trace-backend=*) trace_backend="$optarg"
519
  ;;
520
  --with-trace-file=*) trace_file="$optarg"
P
Prerna Saxena 已提交
521
  ;;
B
bellard 已提交
522 523
  --enable-gprof) gprof="yes"
  ;;
524 525 526
  --static)
    static="yes"
    LDFLAGS="-static $LDFLAGS"
B
bellard 已提交
527
  ;;
528 529 530 531 532 533 534 535
  --mandir=*) mandir="$optarg"
  ;;
  --bindir=*) bindir="$optarg"
  ;;
  --datadir=*) datadir="$optarg"
  ;;
  --docdir=*) docdir="$optarg"
  ;;
536
  --sysconfdir=*) sysconfdir="$optarg"
537
  ;;
538 539
  --disable-sdl) sdl="no"
  ;;
540 541
  --enable-sdl) sdl="yes"
  ;;
M
malc 已提交
542
  --fmod-lib=*) fmod_lib="$optarg"
543
  ;;
544 545
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
B
blueswir1 已提交
546 547
  --oss-lib=*) oss_lib="$optarg"
  ;;
548
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
B
bellard 已提交
549
  ;;
M
malc 已提交
550
  --audio-drv-list=*) audio_drv_list="$optarg"
B
bellard 已提交
551
  ;;
552 553
  --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
  ;;
554 555 556 557
  --enable-debug-tcg) debug_tcg="yes"
  ;;
  --disable-debug-tcg) debug_tcg="no"
  ;;
L
Luiz Capitulino 已提交
558 559 560 561
  --enable-debug-mon) debug_mon="yes"
  ;;
  --disable-debug-mon) debug_mon="no"
  ;;
P
Paul Brook 已提交
562 563 564
  --enable-debug)
      # Enable debugging options that aren't excessively noisy
      debug_tcg="yes"
L
Luiz Capitulino 已提交
565
      debug_mon="yes"
P
Paul Brook 已提交
566 567 568
      debug="yes"
      strip_opt="no"
  ;;
569 570 571 572
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
573 574
  --disable-strip) strip_opt="no"
  ;;
575 576
  --disable-vnc-tls) vnc_tls="no"
  ;;
577 578
  --enable-vnc-tls) vnc_tls="yes"
  ;;
579 580
  --disable-vnc-sasl) vnc_sasl="no"
  ;;
581 582
  --enable-vnc-sasl) vnc_sasl="yes"
  ;;
583 584 585 586
  --disable-vnc-jpeg) vnc_jpeg="no"
  ;;
  --enable-vnc-jpeg) vnc_jpeg="yes"
  ;;
C
Corentin Chary 已提交
587 588 589 590
  --disable-vnc-png) vnc_png="no"
  ;;
  --enable-vnc-png) vnc_png="yes"
  ;;
C
Corentin Chary 已提交
591 592 593 594
  --disable-vnc-thread) vnc_thread="no"
  ;;
  --enable-vnc-thread) vnc_thread="yes"
  ;;
B
bellard 已提交
595
  --disable-slirp) slirp="no"
596
  ;;
597 598 599 600
  --disable-uuid) uuid="no"
  ;;
  --enable-uuid) uuid="yes"
  ;;
601
  --disable-vde) vde="no"
602
  ;;
603 604
  --enable-vde) vde="yes"
  ;;
605 606
  --disable-xen) xen="no"
  ;;
607 608
  --enable-xen) xen="yes"
  ;;
A
aurel32 已提交
609 610
  --disable-brlapi) brlapi="no"
  ;;
611 612
  --enable-brlapi) brlapi="yes"
  ;;
B
balrog 已提交
613 614
  --disable-bluez) bluez="no"
  ;;
615 616
  --enable-bluez) bluez="yes"
  ;;
A
aliguori 已提交
617 618
  --disable-kvm) kvm="no"
  ;;
619 620
  --enable-kvm) kvm="yes"
  ;;
621 622 623 624
  --disable-spice) spice="no"
  ;;
  --enable-spice) spice="yes"
  ;;
625 626
  --enable-profiler) profiler="yes"
  ;;
627 628 629 630
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
631
  ;;
P
pbrook 已提交
632
  --disable-system) softmmu="no"
633
  ;;
P
pbrook 已提交
634
  --enable-system) softmmu="yes"
635
  ;;
636 637 638 639 640 641
  --disable-user)
      linux_user="no" ;
      bsd_user="no" ;
      darwin_user="no"
  ;;
  --enable-user) ;;
642
  --disable-linux-user) linux_user="no"
643
  ;;
644 645 646 647 648
  --enable-linux-user) linux_user="yes"
  ;;
  --disable-darwin-user) darwin_user="no"
  ;;
  --enable-darwin-user) darwin_user="yes"
649
  ;;
B
blueswir1 已提交
650 651 652 653
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
P
Paul Brook 已提交
654 655 656 657
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
658 659 660 661
  --enable-user-pie) user_pie="yes"
  ;;
  --disable-user-pie) user_pie="no"
  ;;
662 663
  --enable-uname-release=*) uname_release="$optarg"
  ;;
664 665
  --sparc_cpu=*)
  ;;
666 667 668 669
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
B
balrog 已提交
670 671
  --disable-curses) curses="no"
  ;;
672 673
  --enable-curses) curses="yes"
  ;;
A
Alexander Graf 已提交
674 675
  --disable-curl) curl="no"
  ;;
676 677
  --enable-curl) curl="yes"
  ;;
678 679 680 681
  --disable-fdt) fdt="no"
  ;;
  --enable-fdt) fdt="yes"
  ;;
L
Luiz Capitulino 已提交
682 683 684 685
  --disable-check-utests) check_utests="no"
  ;;
  --enable-check-utests) check_utests="yes"
  ;;
686 687
  --disable-nptl) nptl="no"
  ;;
688 689
  --enable-nptl) nptl="yes"
  ;;
690 691
  --enable-mixemu) mixemu="yes"
  ;;
692 693 694 695
  --disable-linux-aio) linux_aio="no"
  ;;
  --enable-linux-aio) linux_aio="yes"
  ;;
696 697 698 699
  --disable-attr) attr="no"
  ;;
  --enable-attr) attr="yes"
  ;;
700 701
  --enable-io-thread) io_thread="yes"
  ;;
T
ths 已提交
702 703
  --disable-blobs) blobs="no"
  ;;
A
aliguori 已提交
704 705
  --kerneldir=*) kerneldir="$optarg"
  ;;
P
pbrook 已提交
706 707
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
J
Juan Quintela 已提交
708
  --disable-docs) docs="no"
709
  ;;
J
Juan Quintela 已提交
710
  --enable-docs) docs="yes"
711
  ;;
M
Michael S. Tsirkin 已提交
712 713 714 715
  --disable-vhost-net) vhost_net="no"
  ;;
  --enable-vhost-net) vhost_net="yes"
  ;;
716 717
  --*dir)
  ;;
718 719 720 721
  --disable-rbd) rbd="no"
  ;;
  --enable-rbd) rbd="yes"
  ;;
722 723
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
B
bellard 已提交
724 725 726
  esac
done

727 728
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
729
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
730
#
P
Paul Brook 已提交
731
host_guest_base="no"
732
case "$cpu" in
733 734
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
735
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
736 737
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
738
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
739 740
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
741
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
742 743
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
744
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
745
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
746
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
747
             helper_cflags="-ffixed-i0"
748
           fi
749
           ;;
750
    sparc64)
J
Juan Quintela 已提交
751
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
752
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
753
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
754
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
755
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
756
           fi
757
           ;;
758
    s390)
759 760
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m31 $LDFLAGS"
R
Richard Henderson 已提交
761
           host_guest_base="yes"
762 763 764 765
           ;;
    s390x)
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m64 $LDFLAGS"
R
Richard Henderson 已提交
766
           host_guest_base="yes"
767
           ;;
768
    i386)
J
Juan Quintela 已提交
769
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
770
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
771
           cc_i386='$(CC) -m32'
J
Juan Quintela 已提交
772
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
773
           host_guest_base="yes"
774 775
           ;;
    x86_64)
J
Juan Quintela 已提交
776
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
777
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
778
           cc_i386='$(CC) -m32'
P
Paul Brook 已提交
779 780 781 782
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
783
           ;;
M
malc 已提交
784 785 786
    ppc*)
           host_guest_base="yes"
           ;;
787 788 789
    mips*)
           host_guest_base="yes"
           ;;
A
Aurelien Jarno 已提交
790 791 792
    ia64*)
           host_guest_base="yes"
           ;;
R
Richard Henderson 已提交
793 794 795
    hppa*)
           host_guest_base="yes"
           ;;
796 797
esac

P
Paul Brook 已提交
798 799
[ -z "$guest_base" ] && guest_base="$host_guest_base"

800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817
if test x"$show_help" = x"yes" ; then
cat << EOF

Usage: configure [options]
Options: [defaults in brackets after descriptions]

EOF
echo "Standard options:"
echo "  --help                   print this message"
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
echo "                           use %M for cpu name [$interp_prefix]"
echo "  --target-list=LIST       set target list [$target_list]"
echo ""
echo "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]"
818 819
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
echo "                           build time"
J
Juan Quintela 已提交
820
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
821
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
822
echo "  --make=MAKE              use specified make [$make]"
823
echo "  --install=INSTALL        use specified install [$install]"
824
echo "  --static                 enable static build [$static]"
825 826 827 828 829
echo "  --mandir=PATH            install man pages in PATH"
echo "  --datadir=PATH           install firmware in PATH"
echo "  --docdir=PATH            install documentation in PATH"
echo "  --bindir=PATH            install binaries in PATH"
echo "  --sysconfdir=PATH        install config in PATH/qemu"
830 831
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
832
echo "  --enable-debug           enable common debug build options"
833 834
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
835
echo "  --disable-strip          disable stripping binaries"
836
echo "  --disable-werror         disable compilation abort on warning"
837
echo "  --disable-sdl            disable SDL"
838
echo "  --enable-sdl             enable SDL"
839
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
840 841
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
M
malc 已提交
842 843
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
844 845
echo "  --block-drv-whitelist=L  set block driver whitelist"
echo "                           (affects only QEMU, not qemu-img)"
846
echo "  --enable-mixemu          enable mixer emulation"
847
echo "  --disable-xen            disable xen backend driver support"
848
echo "  --enable-xen             enable xen backend driver support"
A
aurel32 已提交
849
echo "  --disable-brlapi         disable BrlAPI"
850
echo "  --enable-brlapi          enable BrlAPI"
851
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
852
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
853
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
854
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
855 856
echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
857
echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
C
Corentin Chary 已提交
858
echo "  --enable-vnc-png         enable PNG compression for VNC server"
C
Corentin Chary 已提交
859 860
echo "  --disable-vnc-thread     disable threaded VNC server"
echo "  --enable-vnc-thread      enable threaded VNC server"
P
pbrook 已提交
861
echo "  --disable-curses         disable curses output"
862
echo "  --enable-curses          enable curses output"
A
Alexander Graf 已提交
863
echo "  --disable-curl           disable curl connectivity"
864
echo "  --enable-curl            enable curl connectivity"
865 866
echo "  --disable-fdt            disable fdt device tree"
echo "  --enable-fdt             enable fdt device tree"
L
Luiz Capitulino 已提交
867 868
echo "  --disable-check-utests   disable check unit-tests"
echo "  --enable-check-utests    enable check unit-tests"
B
balrog 已提交
869
echo "  --disable-bluez          disable bluez stack connectivity"
870
echo "  --enable-bluez           enable bluez stack connectivity"
A
aliguori 已提交
871
echo "  --disable-kvm            disable KVM acceleration support"
872
echo "  --enable-kvm             enable KVM acceleration support"
873
echo "  --disable-nptl           disable usermode NPTL support"
A
Andre Przywara 已提交
874
echo "  --enable-nptl            enable usermode NPTL support"
875 876
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
877 878
echo "  --enable-user            enable supported user emulation targets"
echo "  --disable-user           disable all user emulation targets"
879 880 881 882
echo "  --enable-linux-user      enable all linux usermode emulation targets"
echo "  --disable-linux-user     disable all linux usermode emulation targets"
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
B
blueswir1 已提交
883 884
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
P
Paul Brook 已提交
885 886 887
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
888 889
echo "  --enable-user-pie        build usermode emulation targets as PIE"
echo "  --disable-user-pie       do not build usermode emulation targets as PIE"
890 891
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
B
blueswir1 已提交
892
echo "  --oss-lib                path to OSS library"
893
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
894
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
895 896
echo "  --disable-uuid           disable uuid support"
echo "  --enable-uuid            enable uuid support"
897
echo "  --disable-vde            disable support for vde network"
898
echo "  --enable-vde             enable support for vde network"
899 900
echo "  --disable-linux-aio      disable Linux AIO support"
echo "  --enable-linux-aio       enable Linux AIO support"
901 902
echo "  --disable-attr           disables attr and xattr support"
echo "  --enable-attr            enable attr and xattr support"
903
echo "  --enable-io-thread       enable IO thread"
T
ths 已提交
904
echo "  --disable-blobs          disable installing provided firmware blobs"
A
aliguori 已提交
905
echo "  --kerneldir=PATH         look for kernel includes in PATH"
906 907
echo "  --enable-docs            enable documentation build"
echo "  --disable-docs           disable documentation build"
M
Michael S. Tsirkin 已提交
908 909
echo "  --disable-vhost-net      disable vhost-net acceleration support"
echo "  --enable-vhost-net       enable vhost-net acceleration support"
910 911
echo "  --enable-trace-backend=B Set trace backend"
echo "                           Available backends:" $("$source_path"/scripts/tracetool --list-backends)
912
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
P
Prerna Saxena 已提交
913
echo "                           Default:trace-<pid>"
914 915
echo "  --disable-spice          disable spice"
echo "  --enable-spice           enable spice"
916
echo "  --enable-rbd             enable building the rados block device (rbd)"
917
echo ""
T
ths 已提交
918
echo "NOTE: The object files are built at the place where configure is launched"
919 920 921
exit 1
fi

922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946
# check that the C compiler works.
cat > $TMPC <<EOF
int main(void) {}
EOF

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

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"
gcc_flags="-fstack-protector-all $gcc_flags"
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
for flag in $gcc_flags; do
    if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

B
bellard 已提交
947 948 949 950
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
951 952 953
  if has $install; then
    :
  else
B
bellard 已提交
954 955 956 957 958
    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
959
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
960 961 962 963 964
    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
965 966 967
  if has ar; then
    :
  else
B
bellard 已提交
968 969 970 971 972 973
    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
974
fi
B
bellard 已提交
975 976


B
bellard 已提交
977 978
if test -z "$target_list" ; then
# these targets are portable
979
    if [ "$softmmu" = "yes" ] ; then
A
aurel32 已提交
980 981 982 983 984
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
M
Michael Walle 已提交
985
lm32-softmmu \
A
aurel32 已提交
986
m68k-softmmu \
987
microblaze-softmmu \
988
microblazeel-softmmu \
A
aurel32 已提交
989 990 991 992 993 994 995 996 997 998
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
999
sparc64-softmmu \
A
aurel32 已提交
1000
"
1001
    fi
B
bellard 已提交
1002
# the following are Linux specific
1003
    if [ "$linux_user" = "yes" ] ; then
A
aurel32 已提交
1004 1005 1006 1007 1008 1009 1010 1011
        target_list="${target_list}\
i386-linux-user \
x86_64-linux-user \
alpha-linux-user \
arm-linux-user \
armeb-linux-user \
cris-linux-user \
m68k-linux-user \
1012
microblaze-linux-user \
1013
microblazeel-linux-user \
A
aurel32 已提交
1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024
mips-linux-user \
mipsel-linux-user \
ppc-linux-user \
ppc64-linux-user \
ppc64abi32-linux-user \
sh4-linux-user \
sh4eb-linux-user \
sparc-linux-user \
sparc64-linux-user \
sparc32plus-linux-user \
"
1025 1026 1027
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
M
malc 已提交
1028
        target_list="$target_list i386-darwin-user ppc-darwin-user "
B
bellard 已提交
1029
    fi
B
blueswir1 已提交
1030 1031 1032
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
1033 1034 1035
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
B
blueswir1 已提交
1036 1037 1038
sparc64-bsd-user \
"
    fi
1039
else
1040
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
1041
fi
1042 1043 1044 1045
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
P
Paolo Bonzini 已提交
1046 1047 1048 1049 1050 1051 1052
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1053

1054 1055 1056 1057 1058
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
1059
  echo "ERROR: configure was not able to find it"
1060 1061 1062 1063
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
1064 1065 1066 1067 1068 1069 1070
if test -z "$cross_prefix" ; then

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
1071 1072
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
B
bellard 已提交
1073 1074 1075
}
EOF

1076
if compile_prog "" "" ; then
B
bellard 已提交
1077 1078 1079 1080 1081 1082 1083 1084
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
1085
case "$cpu" in
1086
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1087 1088 1089
    bigendian=yes
  ;;
esac
B
bellard 已提交
1090 1091 1092

fi

1093 1094 1095 1096 1097 1098 1099 1100 1101
# host long bits test, actually a pointer size test
cat > $TMPC << EOF
int sizeof_pointer_is_8[sizeof(void *) == 8 ? 1 : -1];
EOF
if compile_object; then
hostlongbits=64
else
hostlongbits=32
fi
B
bellard 已提交
1102

1103 1104 1105 1106 1107 1108

##########################################
# NPTL probe

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
1109
#include <sched.h>
P
pbrook 已提交
1110
#include <linux/futex.h>
1111 1112 1113 1114 1115 1116 1117 1118
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

1119 1120 1121 1122 1123 1124 1125 1126
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
1127 1128
fi

1129 1130 1131 1132 1133 1134 1135
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
1136
if compile_prog "" "-lz" ; then
1137 1138 1139 1140 1141 1142 1143 1144 1145
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

1146 1147 1148
##########################################
# xen probe

1149
if test "$xen" != "no" ; then
1150 1151
  xen_libs="-lxenstore -lxenctrl -lxenguest"
  cat > $TMPC <<EOF
1152 1153
#include <xenctrl.h>
#include <xs.h>
1154
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
1155
EOF
1156
  if compile_prog "" "$xen_libs" ; then
1157
    xen=yes
J
Juan Quintela 已提交
1158
    libs_softmmu="$xen_libs $libs_softmmu"
1159
  else
1160 1161 1162 1163
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no
1164
  fi
1165 1166
fi

P
Paolo Bonzini 已提交
1167
##########################################
1168
# pkg-config probe
P
Paolo Bonzini 已提交
1169

1170
if ! has $pkg_config; then
1171 1172
  echo warning: proceeding without "$pkg_config" >&2
  pkg_config=/bin/false
P
Paolo Bonzini 已提交
1173 1174
fi

1175 1176 1177
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1178
  if has cgcc; then
1179 1180 1181 1182 1183 1184 1185 1186 1187
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
1188 1189 1190
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1191 1192 1193 1194 1195 1196 1197
# 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
1198
  sdlconfig="$pkg_config sdl"
1199
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
1200 1201
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
1202
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1203 1204 1205 1206 1207
else
  if test "$sdl" = "yes" ; then
    feature_not_found "sdl"
  fi
  sdl=no
1208
fi
P
Paolo Bonzini 已提交
1209 1210 1211
if test -n "$cross_prefix" && test "`basename $sdlconfig`" = sdl-config; then
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
1212

1213
sdl_too_old=no
1214
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
1215
  cat > $TMPC << EOF
B
bellard 已提交
1216 1217 1218 1219
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
1220
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1221 1222 1223 1224 1225
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
1226
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1227 1228 1229 1230 1231 1232 1233
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
1234

1235
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1236
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1237
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1238 1239
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1240
      fi
1241
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1242 1243 1244 1245 1246
	:
      else
        sdl=no
      fi
    fi # static link
1247 1248 1249 1250 1251
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1252
  fi # sdl compile test
1253
fi
B
bellard 已提交
1254

1255
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1256
  cat > $TMPC <<EOF
1257 1258 1259 1260 1261 1262 1263 1264
#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
1265
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1266 1267
    sdl_libs="$sdl_libs -lX11"
  fi
1268 1269 1270
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
1271
  libs_softmmu="$sdl_libs $libs_softmmu"
1272 1273
fi

1274 1275
##########################################
# VNC TLS detection
1276 1277
if test "$vnc_tls" != "no" ; then
  cat > $TMPC <<EOF
1278 1279 1280
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1281 1282
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1283 1284 1285 1286 1287 1288
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
    vnc_tls=yes
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
  else
    if test "$vnc_tls" = "yes" ; then
      feature_not_found "vnc-tls"
1289
    fi
1290 1291
    vnc_tls=no
  fi
1292 1293
fi

1294 1295
##########################################
# VNC SASL detection
J
Juan Quintela 已提交
1296
if test "$vnc_sasl" != "no" ; then
1297
  cat > $TMPC <<EOF
1298 1299 1300 1301
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1302 1303 1304 1305 1306 1307 1308 1309 1310
  # 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"
  else
    if test "$vnc_sasl" = "yes" ; then
      feature_not_found "vnc-sasl"
1311
    fi
1312 1313
    vnc_sasl=no
  fi
1314 1315
fi

1316 1317
##########################################
# VNC JPEG detection
1318
if test "$vnc_jpeg" != "no" ; then
1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336
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"
  else
    if test "$vnc_jpeg" = "yes" ; then
      feature_not_found "vnc-jpeg"
    fi
    vnc_jpeg=no
  fi
fi

C
Corentin Chary 已提交
1337 1338
##########################################
# VNC PNG detection
1339
if test "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1340 1341 1342
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1343
#include <stddef.h>
C
Corentin Chary 已提交
1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    return 0;
}
EOF
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
  else
    if test "$vnc_png" = "yes" ; then
      feature_not_found "vnc-png"
    fi
    vnc_png=no
  fi
fi

1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1374
if compile_prog "" "" ; then
1375 1376 1377
   fnmatch="yes"
fi

1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402
##########################################
# 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 已提交
1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423
##########################################
# xfsctl() probe, used for raw-posix
if test "$xfs" != "no" ; then
  cat > $TMPC << EOF
#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

1424 1425
##########################################
# vde libraries probe
1426
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1427
  vde_libs="-lvdeplug"
1428 1429
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1430 1431 1432 1433 1434 1435
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1436
EOF
1437
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1438
    vde=yes
1439 1440
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1441 1442 1443 1444 1445
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1446
  fi
1447 1448
fi

1449
##########################################
1450
# Sound support libraries probe
1451

1452 1453 1454 1455 1456 1457 1458 1459 1460 1461
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1462
EOF
1463
    if compile_prog "$cfl" "$lib" ; then
1464 1465 1466 1467 1468 1469 1470 1471 1472 1473
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1474
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1475 1476 1477 1478 1479
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1480
    libs_softmmu="-lasound $libs_softmmu"
1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491
    ;;

    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"
1492
    libs_softmmu="$fmod_lib $libs_softmmu"
1493 1494 1495 1496
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1497
    libs_softmmu="-lesd $libs_softmmu"
1498
    audio_pt_int="yes"
1499
    ;;
M
malc 已提交
1500 1501

    pa)
1502
    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
M
malc 已提交
1503
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1504
    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1505
    audio_pt_int="yes"
M
malc 已提交
1506 1507
    ;;

1508 1509 1510 1511
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1512 1513
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1514
      audio_win_int="yes"
1515 1516 1517 1518 1519 1520 1521
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1522 1523 1524
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1525 1526 1527 1528 1529
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1530
    *)
M
malc 已提交
1531
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1532 1533 1534 1535 1536 1537 1538
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1539 1540
    esac
done
1541

A
aurel32 已提交
1542 1543 1544
##########################################
# BrlAPI probe

1545
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1546 1547
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1548
#include <brlapi.h>
S
Scott Wood 已提交
1549
#include <stddef.h>
A
aurel32 已提交
1550 1551
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1552
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1553
    brlapi=yes
1554
    libs_softmmu="$brlapi_libs $libs_softmmu"
1555 1556 1557 1558 1559
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1560 1561
  fi
fi
A
aurel32 已提交
1562

B
balrog 已提交
1563 1564
##########################################
# curses probe
S
Stefan Weil 已提交
1565 1566 1567 1568 1569
if test "$mingw32" = "yes" ; then
    curses_list="-lpdcurses"
else
    curses_list="-lncurses -lcurses"
fi
B
balrog 已提交
1570

1571 1572
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1573 1574
  cat > $TMPC << EOF
#include <curses.h>
1575 1576 1577 1578
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1579
EOF
1580 1581
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1582
      curses_found=yes
1583 1584 1585 1586
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1587 1588 1589 1590 1591 1592 1593 1594
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1595
fi
B
balrog 已提交
1596

A
Alexander Graf 已提交
1597 1598 1599
##########################################
# curl probe

1600 1601
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkg_config libcurl"
1602 1603 1604 1605
else
  curlconfig=curl-config
fi

1606
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1607 1608 1609 1610
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
1611 1612
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
1613
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1614
    curl=yes
1615 1616
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1617 1618 1619 1620 1621
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1622 1623 1624
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1625 1626 1627 1628 1629 1630 1631 1632
##########################################
# check framework probe

if test "$check_utests" != "no" ; then
  cat > $TMPC << EOF
#include <check.h>
int main(void) { suite_create("qemu test"); return 0; }
EOF
1633
  check_libs=`$pkg_config --libs check`
L
Luiz Capitulino 已提交
1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644
  if compile_prog "" $check_libs ; then
    check_utests=yes
    libs_tools="$check_libs $libs_tools"
  else
    if test "$check_utests" = "yes" ; then
      feature_not_found "check"
    fi
    check_utests=no
  fi
fi # test "$check_utests"

B
balrog 已提交
1645 1646
##########################################
# bluez support probe
1647
if test "$bluez" != "no" ; then
1648 1649 1650 1651
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1652 1653
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
1654
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1655
    bluez=yes
1656
    libs_softmmu="$bluez_libs $libs_softmmu"
1657
  else
1658 1659 1660
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1661 1662
    bluez="no"
  fi
B
balrog 已提交
1663 1664
fi

A
aliguori 已提交
1665 1666
##########################################
# kvm probe
1667
if test "$kvm" != "no" ; then
A
aliguori 已提交
1668 1669
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1670
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1671 1672
#error Invalid KVM version
#endif
1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693
EOF
    must_have_caps="KVM_CAP_USER_MEMORY \
                    KVM_CAP_DESTROY_MEMORY_REGION_WORKS \
                    KVM_CAP_COALESCED_MMIO \
                    KVM_CAP_SYNC_MMU \
                   "
    if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) ; then
      must_have_caps="$caps \
                      KVM_CAP_SET_TSS_ADDR \
                      KVM_CAP_EXT_CPUID \
                      KVM_CAP_CLOCKSOURCE \
                      KVM_CAP_NOP_IO_DELAY \
                      KVM_CAP_PV_MMU \
                      KVM_CAP_MP_STATE \
                      KVM_CAP_USER_NMI \
                     "
    fi
    for c in $must_have_caps ; do
      cat >> $TMPC <<EOF
#if !defined($c)
#error Missing KVM capability $c
1694
#endif
1695 1696 1697
EOF
    done
    cat >> $TMPC <<EOF
A
aliguori 已提交
1698 1699
int main(void) { return 0; }
EOF
A
aliguori 已提交
1700 1701
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1702 1703 1704
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
         -a -d "$kerneldir/arch/x86/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
A
aliguori 已提交
1705 1706
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
A
Alexander Graf 已提交
1707 1708
	elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
1709 1710 1711
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1712
  else
1713
    kvm_cflags=`$pkg_config --cflags kvm-kmod 2>/dev/null`
A
aliguori 已提交
1714
  fi
1715
  if compile_prog "$kvm_cflags" "" ; then
1716
    kvm=yes
1717 1718 1719 1720 1721 1722 1723
    cat > $TMPC <<EOF
#include <linux/kvm_para.h>
int main(void) { return 0; }
EOF
    if compile_prog "$kvm_cflags" "" ; then
      kvm_para=yes
    fi
A
aliguori 已提交
1724
  else
1725
    if test "$kvm" = "yes" ; then
1726
      if has awk && has grep; then
1727
        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1728 1729
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1730 1731
        if test "$kvmerr" != "" ; then
          echo -e "${kvmerr}\n\
1732 1733
NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
recent kvm-kmod from http://sourceforge.net/projects/kvm."
1734
        fi
1735
      fi
1736
      feature_not_found "kvm"
1737
    fi
1738
    kvm=no
A
aliguori 已提交
1739 1740 1741
  fi
fi

M
Michael S. Tsirkin 已提交
1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760
##########################################
# test for vhost net

if test "$vhost_net" != "no"; then
    if test "$kvm" != "no"; then
            cat > $TMPC <<EOF
    #include <linux/vhost.h>
    int main(void) { return 0; }
EOF
            if compile_prog "$kvm_cflags" "" ; then
                vhost_net=yes
            else
                if test "$vhost_net" = "yes" ; then
                    feature_not_found "vhost-net"
                fi
                vhost_net=no
            fi
    else
            if test "$vhost_net" = "yes" ; then
A
Aurelien Jarno 已提交
1761
                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
M
Michael S. Tsirkin 已提交
1762 1763 1764 1765 1766 1767
                feature_not_found "vhost-net"
            fi
            vhost_net=no
    fi
fi

1768
##########################################
1769
# pthread probe
1770
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1771

C
Christoph Hellwig 已提交
1772
pthread=no
1773
cat > $TMPC << EOF
1774
#include <pthread.h>
1775
int main(void) { pthread_create(0,0,0,0); return 0; }
1776
EOF
1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787
if compile_prog "" "" ; then
  pthread=yes
else
  for pthread_lib in $PTHREADLIBS_LIST; do
    if compile_prog "" "$pthread_lib" ; then
      pthread=yes
      LIBS="$pthread_lib $LIBS"
      break
    fi
  done
fi
1788

1789
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1790 1791 1792 1793 1794
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1795 1796
fi

1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <rados/librados.h>
int main(void) { rados_initialize(0, NULL); return 0; }
EOF
  rbd_libs="-lrados -lcrypto"
  if compile_prog "" "$rbd_libs" ; then
    librados_too_old=no
    cat > $TMPC <<EOF
#include <stdio.h>
#include <rados/librados.h>
#ifndef CEPH_OSD_TMAP_SET
#error missing CEPH_OSD_TMAP_SET
#endif
int main(void) {
    int (*func)(const rados_pool_t pool, uint64_t *snapid) = rados_selfmanaged_snap_create;
    rados_initialize(0, NULL);
    return 0;
}
EOF
    if compile_prog "" "$rbd_libs" ; then
      rbd=yes
      libs_tools="$rbd_libs $libs_tools"
      libs_softmmu="$rbd_libs $libs_softmmu"
    else
      rbd=no
      librados_too_old=yes
    fi
  else
    if test "$rbd" = "yes" ; then
      feature_not_found "rados block device"
    fi
    rbd=no
  fi
  if test "$librados_too_old" = "yes" ; then
    echo "-> Your librados version is too old - upgrade needed to have rbd support"
  fi
fi

1839 1840 1841 1842 1843 1844 1845
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
1846
#include <stddef.h>
1847 1848 1849 1850
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 已提交
1851 1852
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
1853 1854 1855 1856
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
1857
    linux_aio=no
1858 1859 1860
  fi
fi

1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
#include <attr/xattr.h>
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
  if compile_prog "" "-lattr" ; then
    attr=yes
    LIBS="-lattr $LIBS"
  else
    if test "$attr" = "yes" ; then
      feature_not_found "ATTR"
    fi
    attr=no
  fi
fi

A
aliguori 已提交
1882 1883 1884
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
1885
#include <sys/types.h>
A
aliguori 已提交
1886
#include <sys/uio.h>
B
blueswir1 已提交
1887
#include <unistd.h>
A
aliguori 已提交
1888 1889 1890
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1891
if compile_prog "" "" ; then
A
aliguori 已提交
1892 1893 1894
  iovec=yes
fi

1895 1896 1897 1898 1899 1900 1901 1902 1903
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1904
if compile_prog "" "" ; then
1905 1906 1907
  preadv=yes
fi

1908 1909
##########################################
# fdt probe
1910
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
1911 1912
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1913 1914
int main(void) { return 0; }
EOF
1915
  if compile_prog "" "$fdt_libs" ; then
1916
    fdt=yes
J
Juan Quintela 已提交
1917
    libs_softmmu="$fdt_libs $libs_softmmu"
1918 1919 1920 1921 1922
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
    fdt=no
1923 1924 1925
  fi
fi

1926 1927 1928 1929 1930 1931
#
# 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
1932
cat > $TMPC << EOF
1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944
#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
1945
if compile_prog "" "" ; then
1946
  atfile=yes
1947 1948
fi

A
aurel32 已提交
1949
# Check for inotify functions when we are building linux-user
1950 1951 1952 1953 1954
# 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
1955
cat > $TMPC << EOF
1956 1957 1958 1959 1960 1961
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1962
	return inotify_init();
1963 1964
}
EOF
1965
if compile_prog "" "" ; then
1966
  inotify=yes
1967 1968
fi

1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983
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 已提交
1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
1998
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1999 2000 2001
  utimens=yes
fi

R
Riku Voipio 已提交
2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
    pipe2(pipefd, O_CLOEXEC);
    return 0;
}
EOF
2015
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2016 2017 2018
  pipe2=yes
fi

K
Kevin Wolf 已提交
2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034
# 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

2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049
# 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)
{
    int len, fd;
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
2050
if compile_prog "" "" ; then
2051 2052 2053
  splice=yes
fi

M
Marcelo Tosatti 已提交
2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066
##########################################
# signalfd probe
signalfd="no"
cat > $TMPC << EOF
#define _GNU_SOURCE
#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
2067 2068 2069 2070 2071 2072
elif test "$kvm" = "yes" -a "$io_thread" != "yes"; then
  echo
  echo "ERROR: Host kernel lacks signalfd() support,"
  echo "but KVM depends on it when the IO thread is disabled."
  echo
  exit 1
M
Marcelo Tosatti 已提交
2073 2074
fi

R
Riku Voipio 已提交
2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

int main(void)
{
    int efd = eventfd(0, 0);
    return 0;
}
EOF
if compile_prog "" "" ; then
  eventfd=yes
fi

2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2101
if compile_prog "$ARCH_CFLAGS" "" ; then
2102 2103 2104
  fallocate=yes
fi

2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119
# 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
if compile_prog "$ARCH_CFLAGS" "" ; then
  sync_file_range=yes
fi

2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136
# 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
if compile_prog "$ARCH_CFLAGS" "" ; then
  fiemap=yes
fi

2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2148
if compile_prog "" "" ; then
2149 2150 2151
  dup3=yes
fi

2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196
# check for epoll support
epoll=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
    epoll_create(0);
    return 0;
}
EOF
if compile_prog "$ARCH_CFLAGS" "" ; then
  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)
{
    epoll_create1(0);
    return 0;
}
EOF
if compile_prog "$ARCH_CFLAGS" "" ; then
  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
if compile_prog "$ARCH_CFLAGS" "" ; then
  epoll_pwait=yes
fi

2197
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2198
if test "$docs" != "no" ; then
2199
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2200
    docs=yes
2201
  else
J
Juan Quintela 已提交
2202 2203
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2204
    fi
J
Juan Quintela 已提交
2205
    docs=no
2206
  fi
2207 2208
fi

S
Stefan Weil 已提交
2209
# Search for bswap_32 function
2210 2211 2212 2213 2214
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2215
if compile_prog "" "" ; then
2216 2217 2218
  byteswap_h=yes
fi

S
Stefan Weil 已提交
2219
# Search for bswap_32 function
2220 2221 2222 2223 2224 2225 2226
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
2227
if compile_prog "" "" ; then
2228 2229 2230
  bswap_h=yes
fi

A
aliguori 已提交
2231 2232 2233 2234 2235 2236 2237 2238
##########################################
# Do we need librt
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
EOF

2239
if compile_prog "" "" ; then
2240
  :
2241
elif compile_prog "" "-lrt" ; then
2242
  LIBS="-lrt $LIBS"
A
aliguori 已提交
2243 2244
fi

2245
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2246
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2247 2248 2249
    libs_softmmu="-lutil $libs_softmmu"
fi

2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261
##########################################
# check if the compiler defines offsetof

need_offsetof=yes
cat > $TMPC << EOF
#include <stddef.h>
int main(void) { struct s { int f; }; return offsetof(struct s, f); }
EOF
if compile_prog "" "" ; then
    need_offsetof=no
fi

2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278
##########################################
# check if the compiler understands attribute warn_unused_result
#
# This could be smarter, but gcc -Werror does not error out even when warning
# about attribute warn_unused_result

gcc_attribute_warn_unused_result=no
cat > $TMPC << EOF
#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
#error gcc 3.3 or older
#endif
int main(void) { return 0;}
EOF
if compile_prog "" ""; then
    gcc_attribute_warn_unused_result=yes
fi

2279 2280 2281 2282 2283 2284
# 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 已提交
2285 2286 2287
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
  if $pkg_config --atleast-version=0.5.3 spice-server >/dev/null 2>&1 && \
2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301
     compile_prog "$spice_cflags" "$spice_libs" ; then
    spice="yes"
    libs_softmmu="$libs_softmmu $spice_libs"
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
  else
    if test "$spice" = "yes" ; then
      feature_not_found "spice"
    fi
    spice="no"
  fi
fi

##########################################

B
Blue Swirl 已提交
2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313
##########################################
# check if we have fdatasync

fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) { return fdatasync(0); }
EOF
if compile_prog "" "" ; then
    fdatasync=yes
fi

A
Andreas Färber 已提交
2314 2315 2316 2317 2318 2319 2320
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2321
#include <stddef.h>
A
Andreas Färber 已提交
2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333
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 已提交
2334
#include <stddef.h>
A
Andreas Färber 已提交
2335 2336 2337 2338 2339 2340
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2341 2342 2343
##########################################
# check if trace backend exists

B
Blue Swirl 已提交
2344
sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
2345 2346 2347 2348 2349 2350 2351 2352
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369
##########################################
# 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
    LIBS="-lust $LIBS"
  else
    echo
    echo "Error: Trace backend 'ust' missing libust header files"
    echo
    exit 1
  fi
fi
2370 2371 2372 2373 2374 2375 2376 2377 2378 2379

##########################################
# 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
2380 2381 2382 2383
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
2384 2385
fi

2386
##########################################
2387 2388 2389 2390
# End of CC checks
# After here, no more $cc or $ld runs

if test "$debug" = "no" ; then
2391
  CFLAGS="-O2 $CFLAGS"
2392
fi
J
Juan Quintela 已提交
2393

2394 2395
# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
2396 2397
z_version=`cut -f3 -d. $source_path/VERSION`

2398 2399 2400 2401 2402 2403 2404 2405 2406
if test -z "$werror" ; then
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

2407 2408 2409 2410 2411 2412 2413 2414 2415 2416
# 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

2417
if test "$werror" = "yes" ; then
J
Juan Quintela 已提交
2418
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2419 2420 2421 2422
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2423
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2424 2425 2426
    fi
fi

2427 2428 2429 2430 2431 2432 2433 2434 2435
# 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

2436
confdir=$sysconfdir$confsuffix
2437

2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458
tools=
if test "$softmmu" = yes ; then
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
      tools="qemu-nbd\$(EXESUF) $tools"
    if [ "$check_utests" = "yes" ]; then
      tools="check-qint check-qstring check-qdict check-qlist $tools"
      tools="check-qfloat check-qjson $tools"
    fi
  fi
fi

# 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


B
bellard 已提交
2459
echo "Install prefix    $prefix"
2460 2461
echo "BIOS directory    `eval echo $datadir`"
echo "binary directory  `eval echo $bindir`"
2462
echo "config directory  `eval echo $sysconfdir`"
B
bellard 已提交
2463
if test "$mingw32" = "no" ; then
2464
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
2465
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
2466
fi
2467
echo "Source path       $source_path"
B
bellard 已提交
2468
echo "C compiler        $cc"
B
bellard 已提交
2469
echo "Host C compiler   $host_cc"
2470
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
2471
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
2472
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
2473
echo "make              $make"
2474
echo "install           $install"
B
bellard 已提交
2475
echo "host CPU          $cpu"
B
bellard 已提交
2476
echo "host big endian   $bigendian"
2477
echo "target list       $target_list"
2478
echo "tcg debug enabled $debug_tcg"
L
Luiz Capitulino 已提交
2479
echo "Mon debug enabled $debug_mon"
B
bellard 已提交
2480
echo "gprof enabled     $gprof"
2481
echo "sparse enabled    $sparse"
2482
echo "strip binaries    $strip_opt"
2483
echo "profiler          $profiler"
B
bellard 已提交
2484
echo "static build      $static"
2485
echo "-Werror enabled   $werror"
2486 2487 2488
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
2489
echo "SDL support       $sdl"
B
balrog 已提交
2490
echo "curses support    $curses"
A
Alexander Graf 已提交
2491
echo "curl support      $curl"
L
Luiz Capitulino 已提交
2492
echo "check support     $check_utests"
B
bellard 已提交
2493
echo "mingw32 support   $mingw32"
M
malc 已提交
2494 2495
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
2496
echo "Block whitelist   $block_drv_whitelist"
2497
echo "Mixer emulation   $mixemu"
2498
echo "VNC TLS support   $vnc_tls"
2499
echo "VNC SASL support  $vnc_sasl"
2500
echo "VNC JPEG support  $vnc_jpeg"
C
Corentin Chary 已提交
2501
echo "VNC PNG support   $vnc_png"
C
Corentin Chary 已提交
2502
echo "VNC thread        $vnc_thread"
2503 2504 2505
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
2506
echo "xen support       $xen"
A
aurel32 已提交
2507
echo "brlapi support    $brlapi"
2508
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
2509
echo "Documentation     $docs"
2510 2511
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
2512
echo "NPTL support      $nptl"
P
Paul Brook 已提交
2513
echo "GUEST_BASE        $guest_base"
2514
echo "PIE user targets  $user_pie"
2515
echo "vde support       $vde"
2516
echo "IO thread         $io_thread"
2517
echo "Linux AIO support $linux_aio"
2518
echo "ATTR/XATTR support $attr"
T
ths 已提交
2519
echo "Install blobs     $blobs"
2520
echo "KVM support       $kvm"
2521
echo "fdt support       $fdt"
2522
echo "preadv support    $preadv"
B
Blue Swirl 已提交
2523
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
2524 2525
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
2526
echo "uuid support      $uuid"
M
Michael S. Tsirkin 已提交
2527
echo "vhost-net support $vhost_net"
2528
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
2529
echo "Trace output file $trace_file-<pid>"
2530
echo "spice support     $spice"
2531
echo "rbd support       $rbd"
C
Christoph Hellwig 已提交
2532
echo "xfsctl support    $xfs"
B
bellard 已提交
2533

2534
if test $sdl_too_old = "yes"; then
B
bellard 已提交
2535
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
2536
fi
B
bellard 已提交
2537

2538
config_host_mak="config-host.mak"
2539
config_host_ld="config-host.ld"
2540 2541 2542 2543 2544 2545

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

2546
echo all: >> $config_host_mak
2547 2548 2549 2550 2551 2552
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
echo "mandir=$mandir" >> $config_host_mak
echo "datadir=$datadir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
echo "docdir=$docdir" >> $config_host_mak
2553
echo "confdir=$confdir" >> $config_host_mak
2554

A
aurel32 已提交
2555
case "$cpu" in
M
Michael Walle 已提交
2556
  i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
2557
    ARCH=$cpu
A
aurel32 已提交
2558
  ;;
2559
  armv4b|armv4l)
2560
    ARCH=arm
A
aurel32 已提交
2561 2562
  ;;
esac
2563
echo "ARCH=$ARCH" >> $config_host_mak
2564
if test "$debug_tcg" = "yes" ; then
2565
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2566
fi
L
Luiz Capitulino 已提交
2567 2568 2569
if test "$debug_mon" = "yes" ; then
  echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
fi
P
Paul Brook 已提交
2570
if test "$debug" = "yes" ; then
2571
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
2572
fi
2573
if test "$strip_opt" = "yes" ; then
2574
  echo "STRIP=${strip}" >> $config_host_mak
2575
fi
B
bellard 已提交
2576
if test "$bigendian" = "yes" ; then
2577
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
2578
fi
2579
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
2580
if test "$mingw32" = "yes" ; then
2581
  echo "CONFIG_WIN32=y" >> $config_host_mak
2582 2583 2584 2585 2586 2587 2588 2589 2590
  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
2591
else
J
Juan Quintela 已提交
2592
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
2593 2594 2595 2596
fi

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

2599
if test "$darwin" = "yes" ; then
2600
  echo "CONFIG_DARWIN=y" >> $config_host_mak
2601
fi
M
malc 已提交
2602 2603

if test "$aix" = "yes" ; then
2604
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
2605 2606
fi

B
bellard 已提交
2607
if test "$solaris" = "yes" ; then
2608
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
2609
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
2610
  if test "$needs_libsunmath" = "yes" ; then
2611
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
2612
  fi
B
bellard 已提交
2613
fi
2614 2615 2616
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
2617
if test "$static" = "yes" ; then
2618
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
2619
fi
2620
if test $profiler = "yes" ; then
2621
  echo "CONFIG_PROFILER=y" >> $config_host_mak
2622
fi
B
bellard 已提交
2623
if test "$slirp" = "yes" ; then
2624
  echo "CONFIG_SLIRP=y" >> $config_host_mak
2625
  QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
B
bellard 已提交
2626
fi
2627
if test "$vde" = "yes" ; then
2628
  echo "CONFIG_VDE=y" >> $config_host_mak
2629
fi
M
malc 已提交
2630
for card in $audio_card_list; do
P
pbrook 已提交
2631
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
2632
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2633
done
2634
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
2635
for drv in $audio_drv_list; do
P
pbrook 已提交
2636
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
2637
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2638
    if test "$drv" = "fmod"; then
2639
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
2640 2641
    fi
done
2642 2643 2644
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
2645 2646 2647
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
2648
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
2649
if test "$mixemu" = "yes" ; then
2650
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
2651
fi
2652
if test "$vnc_tls" = "yes" ; then
2653
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2654
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
2655
fi
2656
if test "$vnc_sasl" = "yes" ; then
2657
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
2658
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
2659
fi
2660
if test "$vnc_jpeg" != "no" ; then
2661 2662 2663
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
fi
2664
if test "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
2665 2666 2667
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
fi
2668
if test "$vnc_thread" != "no" ; then
C
Corentin Chary 已提交
2669 2670
  echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
fi
2671
if test "$fnmatch" = "yes" ; then
2672
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
2673
fi
2674 2675 2676
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
C
Christoph Hellwig 已提交
2677 2678 2679
if test "$xfs" = "yes" ; then
  echo "CONFIG_XFS=y" >> $config_host_mak
fi
2680
qemu_version=`head $source_path/VERSION`
2681
echo "VERSION=$qemu_version" >>$config_host_mak
2682
echo "PKGVERSION=$pkgversion" >>$config_host_mak
2683 2684
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
2685
if [ "$docs" = "yes" ] ; then
2686
  echo "BUILD_DOCS=yes" >> $config_host_mak
2687
fi
2688
if test "$sdl" = "yes" ; then
2689
  echo "CONFIG_SDL=y" >> $config_host_mak
2690
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
2691 2692
fi
if test "$cocoa" = "yes" ; then
2693
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
2694 2695
fi
if test "$curses" = "yes" ; then
2696
  echo "CONFIG_CURSES=y" >> $config_host_mak
2697
fi
2698
if test "$atfile" = "yes" ; then
2699
  echo "CONFIG_ATFILE=y" >> $config_host_mak
2700
fi
R
Riku Voipio 已提交
2701
if test "$utimens" = "yes" ; then
2702
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
2703
fi
R
Riku Voipio 已提交
2704
if test "$pipe2" = "yes" ; then
2705
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
2706
fi
K
Kevin Wolf 已提交
2707 2708 2709
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
2710
if test "$splice" = "yes" ; then
2711
  echo "CONFIG_SPLICE=y" >> $config_host_mak
2712
fi
R
Riku Voipio 已提交
2713 2714 2715
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
2716 2717 2718
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
2719 2720 2721
if test "$sync_file_range" = "yes" ; then
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
2722 2723 2724
if test "$fiemap" = "yes" ; then
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
fi
2725 2726 2727
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
2728 2729 2730 2731 2732 2733 2734 2735 2736
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
2737
if test "$inotify" = "yes" ; then
2738
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
2739
fi
2740 2741 2742
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
2743 2744 2745 2746 2747 2748
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 已提交
2749
if test "$curl" = "yes" ; then
2750
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
2751
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
2752
fi
A
aurel32 已提交
2753
if test "$brlapi" = "yes" ; then
2754
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
2755
fi
B
balrog 已提交
2756
if test "$bluez" = "yes" ; then
2757
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2758
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
2759
fi
2760
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
2761
  echo "CONFIG_XEN=y" >> $config_host_mak
2762
fi
2763
if test "$io_thread" = "yes" ; then
2764
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2765
fi
2766 2767 2768
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
2769 2770 2771 2772 2773 2774 2775 2776
if test "$attr" = "yes" ; then
  echo "CONFIG_ATTR=y" >> $config_host_mak
fi
if test "$linux" = "yes" ; then
  if test "$attr" = "yes" ; then
    echo "CONFIG_VIRTFS=y" >> $config_host_mak
  fi
fi
T
ths 已提交
2777
if test "$blobs" = "yes" ; then
2778
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
2779
fi
A
aliguori 已提交
2780
if test "$iovec" = "yes" ; then
2781
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
2782
fi
2783
if test "$preadv" = "yes" ; then
2784
  echo "CONFIG_PREADV=y" >> $config_host_mak
2785
fi
2786
if test "$fdt" = "yes" ; then
2787
  echo "CONFIG_FDT=y" >> $config_host_mak
2788
fi
M
Marcelo Tosatti 已提交
2789 2790 2791
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
2792 2793 2794
if test "$need_offsetof" = "yes" ; then
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
fi
2795 2796 2797
if test "$gcc_attribute_warn_unused_result" = "yes" ; then
  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
2798 2799 2800
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
2801 2802 2803 2804 2805 2806
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
2807

2808 2809 2810 2811
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi

2812
# XXX: suppress that
B
bellard 已提交
2813
if [ "$bsd" = "yes" ] ; then
2814
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
2815 2816
fi

2817
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2818

2819 2820 2821
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
2822 2823 2824
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
fi
2825

2826 2827 2828
# USB host support
case "$usb" in
linux)
2829
  echo "HOST_USB=linux" >> $config_host_mak
2830 2831
;;
bsd)
2832
  echo "HOST_USB=bsd" >> $config_host_mak
2833 2834
;;
*)
2835
  echo "HOST_USB=stub" >> $config_host_mak
2836 2837 2838
;;
esac

2839
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
2840 2841 2842
if test "$trace_backend" = "simple"; then
  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
2843 2844 2845 2846
# Set the appropriate trace file.
if test "$trace_backend" = "simple"; then
  trace_file="\"$trace_file-%u\""
fi
2847 2848 2849
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
  echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
2850 2851
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak

2852 2853
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
2854 2855 2856 2857 2858 2859
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
echo "CC=$cc" >> $config_host_mak
P
Paolo Bonzini 已提交
2860
echo "CC_I386=$cc_i386" >> $config_host_mak
2861 2862 2863 2864
echo "HOST_CC=$host_cc" >> $config_host_mak
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
2865
echo "WINDRES=$windres" >> $config_host_mak
2866
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2867
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
2868
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
2869 2870 2871 2872 2873
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
J
Juan Quintela 已提交
2874
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2875
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2876 2877
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
2878
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
2879
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2880 2881
echo "EXESUF=$EXESUF" >> $config_host_mak

2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893
# 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

B
Blue Swirl 已提交
2894 2895
for d in libdis libdis-user; do
    mkdir -p $d
2896
    symlink $source_path/Makefile.dis $d/Makefile
B
Blue Swirl 已提交
2897 2898
    echo > $d/config.mak
done
2899 2900 2901
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
fi
B
Blue Swirl 已提交
2902

2903
for target in $target_list; do
2904
target_dir="$target"
2905
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
2906
target_arch2=`echo $target | cut -d '-' -f 1`
2907
target_bigendian="no"
2908

2909
case "$target_arch2" in
M
Michael Walle 已提交
2910
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
2911 2912 2913
  target_bigendian=yes
  ;;
esac
2914
target_softmmu="no"
B
bellard 已提交
2915
target_user_only="no"
2916 2917
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
2918
target_bsd_user="no"
P
pbrook 已提交
2919
case "$target" in
B
Blue Swirl 已提交
2920
  ${target_arch2}-softmmu)
P
pbrook 已提交
2921 2922
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
2923
  ${target_arch2}-linux-user)
2924 2925 2926 2927
    if test "$linux" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Linux host"
      exit 1
    fi
P
pbrook 已提交
2928 2929 2930
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
2931
  ${target_arch2}-darwin-user)
2932 2933 2934 2935
    if test "$darwin" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Darwin host"
      exit 1
    fi
P
pbrook 已提交
2936 2937 2938
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
2939
  ${target_arch2}-bsd-user)
B
Blue Swirl 已提交
2940
    if test "$bsd" != "yes" ; then
2941 2942 2943
      echo "ERROR: Target '$target' is only available on a BSD host"
      exit 1
    fi
B
blueswir1 已提交
2944 2945 2946
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
2947 2948 2949 2950 2951
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
2952

2953
mkdir -p $target_dir
B
bellard 已提交
2954
mkdir -p $target_dir/fpu
B
bellard 已提交
2955
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
2956
mkdir -p $target_dir/ide
B
blueswir1 已提交
2957
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
2958 2959
  mkdir -p $target_dir/nwfpe
fi
2960
symlink $source_path/Makefile.target $target_dir/Makefile
B
bellard 已提交
2961

2962

2963
echo "# Automatically generated by configure - do not modify" > $config_target_mak
B
bellard 已提交
2964

P
pbrook 已提交
2965
bflt="no"
2966
target_nptl="no"
B
Blue Swirl 已提交
2967
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
Paolo Bonzini 已提交
2968
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
P
pbrook 已提交
2969
gdb_xml_files=""
2970 2971 2972 2973
target_short_alignment=2
target_int_alignment=4
target_long_alignment=4
target_llong_alignment=8
A
aliguori 已提交
2974

2975
TARGET_ARCH="$target_arch2"
2976
TARGET_BASE_ARCH=""
2977
TARGET_ABI_DIR=""
2978

B
Blue Swirl 已提交
2979
case "$target_arch2" in
A
aurel32 已提交
2980
  i386)
2981
    target_phys_bits=64
A
aurel32 已提交
2982 2983
  ;;
  x86_64)
2984
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
2985
    target_phys_bits=64
2986
    target_long_alignment=8
A
aurel32 已提交
2987 2988
  ;;
  alpha)
P
Paul Brook 已提交
2989
    target_phys_bits=64
2990
    target_long_alignment=8
R
Richard Henderson 已提交
2991
    target_nptl="yes"
A
aurel32 已提交
2992 2993
  ;;
  arm|armeb)
J
Juan Quintela 已提交
2994
    TARGET_ARCH=arm
A
aurel32 已提交
2995
    bflt="yes"
2996
    target_nptl="yes"
P
pbrook 已提交
2997
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
2998
    target_phys_bits=32
2999
    target_llong_alignment=4
A
aurel32 已提交
3000 3001
  ;;
  cris)
E
edgar_igl 已提交
3002
    target_nptl="yes"
P
Paul Brook 已提交
3003
    target_phys_bits=32
A
aurel32 已提交
3004
  ;;
M
Michael Walle 已提交
3005 3006 3007
  lm32)
    target_phys_bits=32
  ;;
A
aurel32 已提交
3008 3009
  m68k)
    bflt="yes"
P
pbrook 已提交
3010
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
3011
    target_phys_bits=32
3012 3013 3014
    target_int_alignment=2
    target_long_alignment=2
    target_llong_alignment=2
A
aurel32 已提交
3015
  ;;
3016 3017
  microblaze|microblazeel)
    TARGET_ARCH=microblaze
3018 3019 3020 3021
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
J
Juan Quintela 已提交
3022
  mips|mipsel)
J
Juan Quintela 已提交
3023
    TARGET_ARCH=mips
3024
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
3025
    target_nptl="yes"
P
Paul Brook 已提交
3026
    target_phys_bits=64
A
aurel32 已提交
3027 3028
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
3029
    TARGET_ARCH=mipsn32
3030
    TARGET_BASE_ARCH=mips
3031
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
P
Paul Brook 已提交
3032
    target_phys_bits=64
A
aurel32 已提交
3033 3034
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
3035
    TARGET_ARCH=mips64
3036
    TARGET_BASE_ARCH=mips
3037
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
P
Paul Brook 已提交
3038
    target_phys_bits=64
3039
    target_long_alignment=8
A
aurel32 已提交
3040 3041
  ;;
  ppc)
3042
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3043
    target_phys_bits=32
3044
    target_nptl="yes"
A
aurel32 已提交
3045 3046
  ;;
  ppcemb)
3047
    TARGET_BASE_ARCH=ppc
3048
    TARGET_ABI_DIR=ppc
3049
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3050
    target_phys_bits=64
3051
    target_nptl="yes"
A
aurel32 已提交
3052 3053
  ;;
  ppc64)
3054
    TARGET_BASE_ARCH=ppc
3055
    TARGET_ABI_DIR=ppc
3056
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3057
    target_phys_bits=64
3058
    target_long_alignment=8
A
aurel32 已提交
3059 3060
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
3061
    TARGET_ARCH=ppc64
3062
    TARGET_BASE_ARCH=ppc
3063
    TARGET_ABI_DIR=ppc
3064
    echo "TARGET_ABI32=y" >> $config_target_mak
3065
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3066
    target_phys_bits=64
A
aurel32 已提交
3067 3068
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
3069
    TARGET_ARCH=sh4
A
aurel32 已提交
3070
    bflt="yes"
A
aurel32 已提交
3071
    target_nptl="yes"
P
Paul Brook 已提交
3072
    target_phys_bits=32
A
aurel32 已提交
3073 3074
  ;;
  sparc)
P
Paul Brook 已提交
3075
    target_phys_bits=64
A
aurel32 已提交
3076 3077
  ;;
  sparc64)
3078
    TARGET_BASE_ARCH=sparc
P
Paul Brook 已提交
3079
    target_phys_bits=64
3080
    target_long_alignment=8
A
aurel32 已提交
3081 3082
  ;;
  sparc32plus)
J
Juan Quintela 已提交
3083
    TARGET_ARCH=sparc64
3084
    TARGET_BASE_ARCH=sparc
3085
    TARGET_ABI_DIR=sparc
3086
    echo "TARGET_ABI32=y" >> $config_target_mak
P
Paul Brook 已提交
3087
    target_phys_bits=64
A
aurel32 已提交
3088
  ;;
3089 3090 3091
  s390x)
    target_phys_bits=64
  ;;
A
aurel32 已提交
3092 3093 3094 3095 3096
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
3097 3098 3099 3100
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
3101
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3102
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
3103 3104
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
3105
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
3106 3107 3108
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
3109
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3110 3111 3112
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
3113
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
J
Juan Quintela 已提交
3114 3115 3116
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3117
      echo "CONFIG_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
3118 3119
    fi
esac
J
Juan Quintela 已提交
3120
case "$target_arch2" in
A
Alexander Graf 已提交
3121
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
3122 3123 3124 3125
    # 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 已提交
3126
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
J
Juan Quintela 已提交
3127 3128
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
3129 3130
      echo "CONFIG_KVM=y" >> $config_target_mak
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
3131 3132 3133
      if test "$kvm_para" = "yes"; then
        echo "CONFIG_KVM_PARA=y" >> $config_target_mak
      fi
M
Michael S. Tsirkin 已提交
3134 3135 3136
      if test $vhost_net = "yes" ; then
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
3137 3138
    fi
esac
B
bellard 已提交
3139
if test "$target_bigendian" = "yes" ; then
3140
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
3141
fi
3142
if test "$target_softmmu" = "yes" ; then
P
Paul Brook 已提交
3143
  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
3144 3145
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
  echo "LIBS+=$libs_softmmu" >> $config_target_mak
3146
  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
3147
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
3148
fi
B
bellard 已提交
3149
if test "$target_user_only" = "yes" ; then
3150
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
B
bellard 已提交
3151
fi
3152
if test "$target_linux_user" = "yes" ; then
3153
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
3154 3155
fi
if test "$target_darwin_user" = "yes" ; then
3156
  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
3157
fi
P
pbrook 已提交
3158 3159 3160 3161 3162
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
3163
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
3164
fi
3165

3166
case "$target_arch2" in
3167 3168
  i386|x86_64)
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
3169
    ;;
3170
  *)
3171
    echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
3172
    ;;
3173 3174
esac

P
pbrook 已提交
3175
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3176
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
3177
fi
3178 3179
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3180
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3181
fi
P
Paul Brook 已提交
3182
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3183
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
3184
fi
B
blueswir1 已提交
3185
if test "$target_bsd_user" = "yes" ; then
3186
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
3187
fi
3188

3189
# generate QEMU_CFLAGS/LDFLAGS for targets
3190

3191
cflags=""
3192
includes=""
3193
ldflags=""
3194

J
Juan Quintela 已提交
3195
if test "$ARCH" = "sparc64" ; then
3196
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3197
elif test "$ARCH" = "s390x" ; then
3198
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3199
elif test "$ARCH" = "x86_64" ; then
3200
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
J
Juan Quintela 已提交
3201
else
3202
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
J
Juan Quintela 已提交
3203
fi
3204 3205
includes="-I\$(SRC_PATH)/tcg $includes"
includes="-I\$(SRC_PATH)/fpu $includes"
J
Juan Quintela 已提交
3206

B
Blue Swirl 已提交
3207 3208 3209 3210 3211 3212
if test "$target_user_only" = "yes" ; then
    libdis_config_mak=libdis-user/config.mak
else
    libdis_config_mak=libdis/config.mak
fi

3213 3214 3215
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
3216
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3217
    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
3218 3219
  ;;
  arm)
3220
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3221
    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
3222 3223
  ;;
  cris)
3224
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3225
    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
3226 3227
  ;;
  hppa)
3228
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3229
    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
3230 3231
  ;;
  i386|x86_64)
3232
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3233
    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
3234
  ;;
A
Aurelien Jarno 已提交
3235 3236 3237 3238
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
  ;;
3239
  m68k)
3240
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3241
    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
3242
  ;;
3243
  microblaze*)
3244
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3245
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
3246 3247
  ;;
  mips*)
3248
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3249
    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
3250 3251
  ;;
  ppc*)
3252
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3253
    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
3254
  ;;
3255
  s390*)
3256
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3257
    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
3258 3259
  ;;
  sh4)
3260
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3261
    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
3262 3263
  ;;
  sparc*)
3264
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3265
    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
3266 3267 3268 3269
  ;;
  esac
done

3270 3271 3272 3273 3274 3275 3276
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

3288
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3289
	"$user_pie" = "yes" ; then
3290 3291 3292 3293
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

3294 3295 3296
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
3297
  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3298 3299
fi

3300
if test "$gprof" = "yes" ; then
3301
  echo "TARGET_GPROF=yes" >> $config_target_mak
3302 3303 3304 3305 3306 3307
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
3308
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
3309 3310 3311
  fi
fi

3312
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3313
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3314 3315 3316
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
3317
    ldflags="$linker_script -static $ldflags"
3318
    ;;
3319 3320 3321
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
3322
  *)
3323
    ldflags="$linker_script $ldflags"
3324 3325 3326 3327
    ;;
  esac
fi

3328 3329
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3330
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
3331

3332
done # for target in $targets
B
bellard 已提交
3333

P
Paolo Bonzini 已提交
3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346
# build tree in object directory in case the source is not in the current directory
DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
DIRS="$DIRS roms/seabios roms/vgabios"
DIRS="$DIRS fsdev ui"
FILES="Makefile tests/Makefile"
FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
    FILES="$FILES pc-bios/`basename $bios_file`"
done
mkdir -p $DIRS
for f in $FILES ; do
A
Aurelien Jarno 已提交
3347
    test -e $f || symlink $source_path/$f $f
P
Paolo Bonzini 已提交
3348
done
P
Paul Brook 已提交
3349

3350
# temporary config to build submodules
3351
for rom in seabios vgabios ; do
3352
    config_mak=roms/$rom/config.mak
3353
    echo "# Automatically generated by configure - do not modify" > $config_mak
3354 3355 3356 3357 3358 3359 3360 3361 3362
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
    echo "CC=$cc" >> $config_mak
    echo "BCC=bcc" >> $config_mak
    echo "CPP=${cross_prefix}cpp" >> $config_mak
    echo "OBJCOPY=objcopy" >> $config_mak
    echo "IASL=iasl" >> $config_mak
    echo "LD=$ld" >> $config_mak
done

P
Paul Brook 已提交
3363 3364 3365
for hwlib in 32 64; do
  d=libhw$hwlib
  mkdir -p $d
B
Blue Swirl 已提交
3366
  mkdir -p $d/ide
3367
  symlink $source_path/Makefile.hw $d/Makefile
3368
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
P
Paul Brook 已提交
3369
done
3370 3371 3372

d=libuser
mkdir -p $d
3373
symlink $source_path/Makefile.user $d/Makefile
3374 3375 3376
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
fi
3377 3378 3379 3380

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