configure 91.4 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
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=""
J
Jes Sorensen 已提交
120
vnc="yes"
121 122 123 124 125 126 127 128 129
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
vnc_thread="no"
xen=""
130
xen_ctrl_version=""
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
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"
A
Alon Levy 已提交
149
libdir="\${prefix}/lib"
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 178 179
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=""
A
Alon Levy 已提交
180
smartcard=""
R
Robert Relyea 已提交
181
smartcard_nss=""
182
opengl=""
183

184 185 186 187 188 189
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
190
  --cc=*) CC="$optarg"
191
  ;;
P
Paolo Bonzini 已提交
192 193
  --source-path=*) source_path="$optarg"
  ;;
194 195
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
196
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
197 198 199
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
200 201 202
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
203
    v7|v8|v8plus|v8plusa)
204 205 206 207 208 209 210 211 212 213 214
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
215 216 217 218 219 220
  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

221 222 223 224 225 226
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}"
227
pkg_config="${cross_prefix}${PKG_CONFIG-pkg-config}"
P
Paolo Bonzini 已提交
228
sdl_config="${cross_prefix}${SDL_CONFIG-sdl-config}"
229

230 231 232 233 234 235
# 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 已提交
236
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
237
QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
238 239
LDFLAGS="-g $LDFLAGS"

P
Paolo Bonzini 已提交
240 241 242
# make source path absolute
source_path=`cd "$source_path"; pwd`

243 244 245 246 247 248 249
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
#error Not defined
#endif
int main(void) { return 0; }
EOF
250
  compile_object
251 252
}

253 254 255 256
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
257 258 259
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
260 261 262 263 264 265 266 267
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 已提交
268 269 270 271 272 273
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
274 275
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
276 277
elif check_define __ia64__ ; then
  cpu="ia64"
278 279 280 281 282 283
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
284
else
M
malc 已提交
285
  cpu=`uname -m`
286 287
fi

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

B
bellard 已提交
325
# OS specific
326 327 328 329
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
330 331 332 333
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
334 335
elif check_define __HAIKU__ ; then
  targetos='Haiku'
336 337 338
else
  targetos=`uname -s`
fi
339

B
bellard 已提交
340
case $targetos in
B
bellard 已提交
341
CYGWIN*)
342
  mingw32="yes"
J
Juan Quintela 已提交
343
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
344 345
  audio_possible_drivers="winwave sdl"
  audio_drv_list="winwave"
B
bellard 已提交
346
;;
B
bellard 已提交
347
MINGW32*)
348
  mingw32="yes"
349 350
  audio_possible_drivers="winwave dsound sdl fmod"
  audio_drv_list="winwave"
B
bellard 已提交
351
;;
T
ths 已提交
352
GNU/kFreeBSD)
A
Aurelien Jarno 已提交
353
  bsd="yes"
354 355
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
356
;;
B
bellard 已提交
357
FreeBSD)
358
  bsd="yes"
359
  make="${MAKE-gmake}"
360 361
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
362 363
  # needed for kinfo_getvmmap(3) in libutil.h
  LIBS="-lutil $LIBS"
B
bellard 已提交
364
;;
365
DragonFly)
366
  bsd="yes"
367
  make="${MAKE-gmake}"
368 369
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
370
;;
B
bellard 已提交
371
NetBSD)
372
  bsd="yes"
373
  make="${MAKE-gmake}"
374 375 376
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
377 378
;;
OpenBSD)
379
  bsd="yes"
380
  make="${MAKE-gmake}"
381 382 383
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
384
;;
385
Darwin)
386 387 388 389 390
  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 已提交
391 392
    is_x86_64=`sysctl -n hw.optional.x86_64`
    [ "$is_x86_64" = "1" ] && cpu=x86_64
393 394
  fi
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
395
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
396
    LDFLAGS="-arch x86_64 $LDFLAGS"
397
  else
J
Juan Quintela 已提交
398
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
399 400 401 402 403 404
  fi
  darwin_user="yes"
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
405
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
406
;;
B
bellard 已提交
407
SunOS)
408
  solaris="yes"
409 410
  make="${MAKE-gmake}"
  install="${INSTALL-ginstall}"
411
  ld="gld"
412 413 414 415 416 417 418 419 420 421 422 423
  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"
424 425 426
        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"
427 428 429 430 431 432 433
      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 已提交
434
    fi
435 436 437 438 439
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
440 441 442 443
# 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 已提交
444
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
445
  LIBS="-lsocket -lnsl -lresolv $LIBS"
T
ths 已提交
446
;;
M
malc 已提交
447
AIX)
448
  aix="yes"
449
  make="${MAKE-gmake}"
M
malc 已提交
450
;;
451 452 453 454 455
Haiku)
  haiku="yes"
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
;;
456
*)
457 458 459 460 461 462
  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
463
    audio_possible_drivers="$audio_possible_drivers fmod"
464
  fi
B
bellard 已提交
465
;;
B
bellard 已提交
466 467
esac

B
bellard 已提交
468
if [ "$bsd" = "yes" ] ; then
469
  if [ "$darwin" != "yes" ] ; then
470
    usb="bsd"
471
  fi
B
blueswir1 已提交
472
  bsd_user="yes"
B
bellard 已提交
473 474
fi

475 476 477
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}

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

493
werror=""
494

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

753 754
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
755
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
756
#
P
Paul Brook 已提交
757
host_guest_base="no"
758
case "$cpu" in
759 760
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
761
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
762 763
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
764
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
765 766
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
767
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
768 769
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
770
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
771
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
772
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
773
             helper_cflags="-ffixed-i0"
774
           fi
775
           ;;
776
    sparc64)
J
Juan Quintela 已提交
777
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
778
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
779
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
780
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
781
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
782
           fi
783
           ;;
784
    s390)
785 786
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m31 $LDFLAGS"
R
Richard Henderson 已提交
787
           host_guest_base="yes"
788 789 790 791
           ;;
    s390x)
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m64 $LDFLAGS"
R
Richard Henderson 已提交
792
           host_guest_base="yes"
793
           ;;
794
    i386)
J
Juan Quintela 已提交
795
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
796
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
797
           cc_i386='$(CC) -m32'
J
Juan Quintela 已提交
798
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
799
           host_guest_base="yes"
800 801
           ;;
    x86_64)
J
Juan Quintela 已提交
802
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
803
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
804
           cc_i386='$(CC) -m32'
P
Paul Brook 已提交
805 806 807 808
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
809
           ;;
M
malc 已提交
810 811 812
    ppc*)
           host_guest_base="yes"
           ;;
813 814 815
    mips*)
           host_guest_base="yes"
           ;;
A
Aurelien Jarno 已提交
816 817 818
    ia64*)
           host_guest_base="yes"
           ;;
R
Richard Henderson 已提交
819 820 821
    hppa*)
           host_guest_base="yes"
           ;;
822 823 824
    unicore32*)
           host_guest_base="yes"
           ;;
825 826
esac

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

829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853

default_target_list=""

# these targets are portable
if [ "$softmmu" = "yes" ] ; then
    default_target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
lm32-softmmu \
m68k-softmmu \
microblaze-softmmu \
microblazeel-softmmu \
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
sparc64-softmmu \
A
Alexander Graf 已提交
854
s390x-softmmu \
855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879
"
fi
# the following are Linux specific
if [ "$linux_user" = "yes" ] ; then
    default_target_list="${default_target_list}\
i386-linux-user \
x86_64-linux-user \
alpha-linux-user \
arm-linux-user \
armeb-linux-user \
cris-linux-user \
m68k-linux-user \
microblaze-linux-user \
microblazeel-linux-user \
mips-linux-user \
mipsel-linux-user \
ppc-linux-user \
ppc64-linux-user \
ppc64abi32-linux-user \
sh4-linux-user \
sh4eb-linux-user \
sparc-linux-user \
sparc64-linux-user \
sparc32plus-linux-user \
unicore32-linux-user \
A
Alexander Graf 已提交
880
s390x-linux-user \
881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896
"
fi
# the following are Darwin specific
if [ "$darwin_user" = "yes" ] ; then
    default_target_list="$default_target_list i386-darwin-user ppc-darwin-user "
fi
# the following are BSD specific
if [ "$bsd_user" = "yes" ] ; then
    default_target_list="${default_target_list}\
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
sparc64-bsd-user \
"
fi

897 898 899 900 901 902 903 904 905 906 907 908
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]"
909 910 911
echo "  --target-list=LIST       set target list (default: build everything)"
echo "Available targets: $default_target_list" | \
    fold -s -w 53 | sed -e 's/^/                           /'
912 913 914 915 916
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]"
917 918
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
echo "                           build time"
J
Juan Quintela 已提交
919
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
920
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
921
echo "  --make=MAKE              use specified make [$make]"
922
echo "  --install=INSTALL        use specified install [$install]"
923
echo "  --static                 enable static build [$static]"
924 925 926 927 928
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"
929 930
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
931
echo "  --enable-debug           enable common debug build options"
932 933
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
934
echo "  --disable-strip          disable stripping binaries"
935
echo "  --disable-werror         disable compilation abort on warning"
936
echo "  --disable-sdl            disable SDL"
937
echo "  --enable-sdl             enable SDL"
J
Jes Sorensen 已提交
938 939
echo "  --disable-vnc            disable VNC"
echo "  --enable-vnc             enable VNC"
940
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
941 942
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
M
malc 已提交
943 944
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
945 946
echo "  --block-drv-whitelist=L  set block driver whitelist"
echo "                           (affects only QEMU, not qemu-img)"
947
echo "  --enable-mixemu          enable mixer emulation"
948
echo "  --disable-xen            disable xen backend driver support"
949
echo "  --enable-xen             enable xen backend driver support"
A
aurel32 已提交
950
echo "  --disable-brlapi         disable BrlAPI"
951
echo "  --enable-brlapi          enable BrlAPI"
952
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
953
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
954
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
955
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
956 957
echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
958
echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
C
Corentin Chary 已提交
959
echo "  --enable-vnc-png         enable PNG compression for VNC server"
C
Corentin Chary 已提交
960 961
echo "  --disable-vnc-thread     disable threaded VNC server"
echo "  --enable-vnc-thread      enable threaded VNC server"
P
pbrook 已提交
962
echo "  --disable-curses         disable curses output"
963
echo "  --enable-curses          enable curses output"
A
Alexander Graf 已提交
964
echo "  --disable-curl           disable curl connectivity"
965
echo "  --enable-curl            enable curl connectivity"
966 967
echo "  --disable-fdt            disable fdt device tree"
echo "  --enable-fdt             enable fdt device tree"
L
Luiz Capitulino 已提交
968 969
echo "  --disable-check-utests   disable check unit-tests"
echo "  --enable-check-utests    enable check unit-tests"
B
balrog 已提交
970
echo "  --disable-bluez          disable bluez stack connectivity"
971
echo "  --enable-bluez           enable bluez stack connectivity"
972
echo "  --disable-slirp          disable SLIRP userspace network connectivity"
A
aliguori 已提交
973
echo "  --disable-kvm            disable KVM acceleration support"
974
echo "  --enable-kvm             enable KVM acceleration support"
975
echo "  --disable-nptl           disable usermode NPTL support"
A
Andre Przywara 已提交
976
echo "  --enable-nptl            enable usermode NPTL support"
977 978
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
979 980
echo "  --enable-user            enable supported user emulation targets"
echo "  --disable-user           disable all user emulation targets"
981 982 983 984
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 已提交
985 986
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
P
Paul Brook 已提交
987 988 989
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
990 991
echo "  --enable-user-pie        build usermode emulation targets as PIE"
echo "  --disable-user-pie       do not build usermode emulation targets as PIE"
992 993
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
B
blueswir1 已提交
994
echo "  --oss-lib                path to OSS library"
995
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
996
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
997 998
echo "  --disable-uuid           disable uuid support"
echo "  --enable-uuid            enable uuid support"
999
echo "  --disable-vde            disable support for vde network"
1000
echo "  --enable-vde             enable support for vde network"
1001 1002
echo "  --disable-linux-aio      disable Linux AIO support"
echo "  --enable-linux-aio       enable Linux AIO support"
1003 1004
echo "  --disable-attr           disables attr and xattr support"
echo "  --enable-attr            enable attr and xattr support"
1005
echo "  --enable-io-thread       enable IO thread"
T
ths 已提交
1006
echo "  --disable-blobs          disable installing provided firmware blobs"
A
aliguori 已提交
1007
echo "  --kerneldir=PATH         look for kernel includes in PATH"
1008 1009
echo "  --enable-docs            enable documentation build"
echo "  --disable-docs           disable documentation build"
M
Michael S. Tsirkin 已提交
1010 1011
echo "  --disable-vhost-net      disable vhost-net acceleration support"
echo "  --enable-vhost-net       enable vhost-net acceleration support"
1012 1013
echo "  --enable-trace-backend=B Set trace backend"
echo "                           Available backends:" $("$source_path"/scripts/tracetool --list-backends)
1014
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
P
Prerna Saxena 已提交
1015
echo "                           Default:trace-<pid>"
1016 1017
echo "  --disable-spice          disable spice"
echo "  --enable-spice           enable spice"
1018
echo "  --enable-rbd             enable building the rados block device (rbd)"
A
Alon Levy 已提交
1019 1020
echo "  --disable-smartcard      disable smartcard support"
echo "  --enable-smartcard       enable smartcard support"
R
Robert Relyea 已提交
1021 1022
echo "  --disable-smartcard-nss  disable smartcard nss support"
echo "  --enable-smartcard-nss   enable smartcard nss support"
1023
echo ""
T
ths 已提交
1024
echo "NOTE: The object files are built at the place where configure is launched"
1025 1026 1027
exit 1
fi

1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052
# 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 已提交
1053 1054 1055 1056
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
1057 1058 1059
  if has $install; then
    :
  else
B
bellard 已提交
1060 1061 1062 1063 1064
    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
1065
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
1066 1067 1068 1069 1070
    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
1071 1072 1073
  if has ar; then
    :
  else
B
bellard 已提交
1074 1075 1076 1077 1078 1079
    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
1080
fi
B
bellard 已提交
1081

B
bellard 已提交
1082
if test -z "$target_list" ; then
1083
    target_list="$default_target_list"
1084
else
1085
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
1086
fi
1087 1088 1089 1090
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
P
Paolo Bonzini 已提交
1091 1092 1093 1094 1095 1096 1097
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1098

1099 1100 1101 1102 1103
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
1104
  echo "ERROR: configure was not able to find it"
1105 1106 1107 1108
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
1109 1110 1111 1112 1113 1114 1115
if test -z "$cross_prefix" ; then

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

1121
if compile_prog "" "" ; then
B
bellard 已提交
1122 1123 1124 1125 1126 1127 1128 1129
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
1130
case "$cpu" in
1131
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1132 1133 1134
    bigendian=yes
  ;;
esac
B
bellard 已提交
1135 1136 1137

fi

1138 1139 1140 1141 1142 1143 1144 1145 1146
# 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 已提交
1147

1148 1149 1150 1151 1152 1153

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

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
1154
#include <sched.h>
P
pbrook 已提交
1155
#include <linux/futex.h>
1156 1157 1158 1159 1160 1161 1162 1163
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

1164 1165 1166 1167 1168 1169 1170 1171
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
1172 1173
fi

1174 1175 1176 1177 1178 1179 1180
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
1181
if compile_prog "" "-lz" ; then
1182 1183 1184 1185 1186 1187 1188 1189 1190
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

1191 1192 1193
##########################################
# xen probe

1194
if test "$xen" != "no" ; then
1195
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1196 1197

  # Xen unstable
1198
  cat > $TMPC <<EOF
1199 1200
#include <xenctrl.h>
#include <xs.h>
1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213
#include <stdint.h>
#include <xen/hvm/hvm_info_table.h>
#if !defined(HVM_MAX_VCPUS)
# error HVM_MAX_VCPUS not defined
#endif
int main(void) {
  xc_interface *xc;
  xs_daemon_open();
  xc = xc_interface_open(0, 0, 0);
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_gnttab_open(NULL, 0);
  return 0;
}
1214
EOF
1215
  if compile_prog "" "$xen_libs" ; then
1216
    xen_ctrl_version=410
1217
    xen=yes
1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260

  # Xen 4.0.0
  elif (
      cat > $TMPC <<EOF
#include <xenctrl.h>
#include <xs.h>
#include <stdint.h>
#include <xen/hvm/hvm_info_table.h>
#if !defined(HVM_MAX_VCPUS)
# error HVM_MAX_VCPUS not defined
#endif
int main(void) {
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
    ) ; then
    xen_ctrl_version=400
    xen=yes

  # Xen 3.3.0, 3.4.0
  elif (
      cat > $TMPC <<EOF
#include <xenctrl.h>
#include <xs.h>
int main(void) {
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
    ) ; then
    xen_ctrl_version=330
    xen=yes

  # Xen not found or unsupported
1261
  else
1262 1263 1264 1265
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no
1266
  fi
1267 1268 1269 1270

  if test "$xen" = yes; then
    libs_softmmu="$xen_libs $libs_softmmu"
  fi
1271 1272
fi

P
Paolo Bonzini 已提交
1273
##########################################
1274
# pkg-config probe
P
Paolo Bonzini 已提交
1275

1276
if ! has $pkg_config; then
1277 1278
  echo warning: proceeding without "$pkg_config" >&2
  pkg_config=/bin/false
P
Paolo Bonzini 已提交
1279 1280
fi

A
Alon Levy 已提交
1281 1282 1283 1284 1285 1286 1287 1288 1289
##########################################
# libtool probe

if ! has libtool; then
    libtool=
else
    libtool=libtool
fi

1290 1291 1292
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1293
  if has cgcc; then
1294 1295 1296 1297 1298 1299 1300 1301 1302
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
1303 1304 1305
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1306 1307 1308 1309 1310 1311 1312
# 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
1313
  sdlconfig="$pkg_config sdl"
1314
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
1315 1316
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
1317
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1318 1319 1320 1321 1322
else
  if test "$sdl" = "yes" ; then
    feature_not_found "sdl"
  fi
  sdl=no
1323
fi
1324
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
P
Paolo Bonzini 已提交
1325 1326
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
1327

1328
sdl_too_old=no
1329
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
1330
  cat > $TMPC << EOF
B
bellard 已提交
1331 1332 1333 1334
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
1335
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1336 1337 1338 1339 1340
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
1341
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1342 1343 1344 1345 1346 1347 1348
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
1349

1350
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1351
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1352
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1353 1354
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1355
      fi
1356
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1357 1358 1359 1360 1361
	:
      else
        sdl=no
      fi
    fi # static link
1362 1363 1364 1365 1366
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1367
  fi # sdl compile test
1368
fi
B
bellard 已提交
1369

1370
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1371
  cat > $TMPC <<EOF
1372 1373 1374 1375 1376 1377 1378 1379
#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
1380
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1381 1382
    sdl_libs="$sdl_libs -lX11"
  fi
1383 1384 1385
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
1386
  libs_softmmu="$sdl_libs $libs_softmmu"
1387 1388
fi

1389 1390
##########################################
# VNC TLS detection
J
Jes Sorensen 已提交
1391
if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1392
  cat > $TMPC <<EOF
1393 1394 1395
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1396 1397
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1398 1399 1400 1401 1402 1403
  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"
1404
    fi
1405 1406
    vnc_tls=no
  fi
1407 1408
fi

1409 1410
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
1411
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1412
  cat > $TMPC <<EOF
1413 1414 1415 1416
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1417 1418 1419 1420 1421 1422 1423 1424 1425
  # 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"
1426
    fi
1427 1428
    vnc_sasl=no
  fi
1429 1430
fi

1431 1432
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
1433
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451
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 已提交
1452 1453
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
1454
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1455 1456 1457
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1458
#include <stddef.h>
C
Corentin Chary 已提交
1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477
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

1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1489
if compile_prog "" "" ; then
1490 1491 1492
   fnmatch="yes"
fi

1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517
##########################################
# 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 已提交
1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538
##########################################
# 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

1539 1540
##########################################
# vde libraries probe
1541
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1542
  vde_libs="-lvdeplug"
1543 1544
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1545 1546 1547 1548 1549 1550
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1551
EOF
1552
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1553
    vde=yes
1554 1555
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1556 1557 1558 1559 1560
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1561
  fi
1562 1563
fi

1564
##########################################
1565
# Sound support libraries probe
1566

1567 1568 1569 1570 1571 1572 1573 1574 1575 1576
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1577
EOF
1578
    if compile_prog "$cfl" "$lib" ; then
1579 1580 1581 1582 1583 1584 1585 1586 1587 1588
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1589
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1590 1591 1592 1593 1594
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);"
1595
    libs_softmmu="-lasound $libs_softmmu"
1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606
    ;;

    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"
1607
    libs_softmmu="$fmod_lib $libs_softmmu"
1608 1609 1610 1611
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1612
    libs_softmmu="-lesd $libs_softmmu"
1613
    audio_pt_int="yes"
1614
    ;;
M
malc 已提交
1615 1616

    pa)
1617
    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
M
malc 已提交
1618
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1619
    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1620
    audio_pt_int="yes"
M
malc 已提交
1621 1622
    ;;

1623 1624 1625 1626
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1627 1628
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1629
      audio_win_int="yes"
1630 1631 1632 1633 1634 1635 1636
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1637 1638 1639
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1640 1641 1642 1643 1644
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1645
    *)
M
malc 已提交
1646
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1647 1648 1649 1650 1651 1652 1653
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1654 1655
    esac
done
1656

A
aurel32 已提交
1657 1658 1659
##########################################
# BrlAPI probe

1660
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1661 1662
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1663
#include <brlapi.h>
S
Scott Wood 已提交
1664
#include <stddef.h>
A
aurel32 已提交
1665 1666
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1667
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1668
    brlapi=yes
1669
    libs_softmmu="$brlapi_libs $libs_softmmu"
1670 1671 1672 1673 1674
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1675 1676
  fi
fi
A
aurel32 已提交
1677

B
balrog 已提交
1678 1679
##########################################
# curses probe
S
Stefan Weil 已提交
1680 1681 1682 1683 1684
if test "$mingw32" = "yes" ; then
    curses_list="-lpdcurses"
else
    curses_list="-lncurses -lcurses"
fi
B
balrog 已提交
1685

1686 1687
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1688 1689
  cat > $TMPC << EOF
#include <curses.h>
1690 1691 1692 1693
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1694
EOF
1695 1696
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1697
      curses_found=yes
1698 1699 1700 1701
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1702 1703 1704 1705 1706 1707 1708 1709
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1710
fi
B
balrog 已提交
1711

A
Alexander Graf 已提交
1712 1713 1714
##########################################
# curl probe

1715 1716
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkg_config libcurl"
1717 1718 1719 1720
else
  curlconfig=curl-config
fi

1721
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1722 1723 1724 1725
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
1726 1727
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
1728
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1729
    curl=yes
1730 1731
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1732 1733 1734 1735 1736
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1737 1738 1739
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1740 1741 1742 1743 1744 1745 1746 1747
##########################################
# 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
1748
  check_libs=`$pkg_config --libs check`
L
Luiz Capitulino 已提交
1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759
  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 已提交
1760 1761
##########################################
# bluez support probe
1762
if test "$bluez" != "no" ; then
1763 1764 1765 1766
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1767 1768
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
1769
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1770
    bluez=yes
1771
    libs_softmmu="$bluez_libs $libs_softmmu"
1772
  else
1773 1774 1775
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1776 1777
    bluez="no"
  fi
B
balrog 已提交
1778 1779
fi

A
aliguori 已提交
1780 1781
##########################################
# kvm probe
1782
if test "$kvm" != "no" ; then
A
aliguori 已提交
1783 1784
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1785
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1786 1787
#error Invalid KVM version
#endif
1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808
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
1809
#endif
1810 1811 1812
EOF
    done
    cat >> $TMPC <<EOF
A
aliguori 已提交
1813 1814
int main(void) { return 0; }
EOF
A
aliguori 已提交
1815 1816
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1817 1818 1819
      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 已提交
1820 1821
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
A
Alexander Graf 已提交
1822 1823
	elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
1824 1825 1826
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1827
  else
1828
    kvm_cflags=`$pkg_config --cflags kvm-kmod 2>/dev/null`
A
aliguori 已提交
1829
  fi
1830
  if compile_prog "$kvm_cflags" "" ; then
1831
    kvm=yes
1832 1833 1834 1835 1836 1837 1838
    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 已提交
1839
  else
1840
    if test "$kvm" = "yes" ; then
1841
      if has awk && has grep; then
1842
        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1843 1844
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1845 1846
        if test "$kvmerr" != "" ; then
          echo -e "${kvmerr}\n\
1847 1848
NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
recent kvm-kmod from http://sourceforge.net/projects/kvm."
1849
        fi
1850
      fi
1851
      feature_not_found "kvm"
1852
    fi
1853
    kvm=no
A
aliguori 已提交
1854 1855 1856
  fi
fi

A
Alexander Graf 已提交
1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871
##########################################
# test for ppc kvm pvr setting

if test "$kvm" = "yes" && test "$cpu" = "ppc" -o "$cpu" = "ppc64"; then
            cat > $TMPC <<EOF
    #include <asm/kvm.h>
    int main(void) { struct kvm_sregs s; s.pvr = 0; return 0; }
EOF
    if compile_prog "$kvm_cflags" "" ; then
        kvm_ppc_pvr=yes
    else
        kvm_ppc_pvr=no
    fi
fi

M
Michael S. Tsirkin 已提交
1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890
##########################################
# 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 已提交
1891
                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
M
Michael S. Tsirkin 已提交
1892 1893 1894 1895 1896 1897
                feature_not_found "vhost-net"
            fi
            vhost_net=no
    fi
fi

1898
##########################################
1899
# pthread probe
1900
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1901

C
Christoph Hellwig 已提交
1902
pthread=no
1903
cat > $TMPC << EOF
1904
#include <pthread.h>
1905
int main(void) { pthread_create(0,0,0,0); return 0; }
1906
EOF
1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917
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
1918

1919
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1920 1921 1922 1923 1924
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1925 1926
fi

1927 1928 1929 1930 1931 1932 1933 1934
##########################################
# 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
A
Aurelien Jarno 已提交
1935
  rbd_libs="-lrados"
1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968
  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

1969 1970 1971 1972 1973 1974 1975
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
1976
#include <stddef.h>
1977 1978 1979 1980
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 已提交
1981 1982
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
1983 1984 1985 1986
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
1987
    linux_aio=no
1988 1989 1990
  fi
fi

1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011
##########################################
# 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 已提交
2012 2013 2014
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
2015
#include <sys/types.h>
A
aliguori 已提交
2016
#include <sys/uio.h>
B
blueswir1 已提交
2017
#include <unistd.h>
A
aliguori 已提交
2018 2019 2020
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
2021
if compile_prog "" "" ; then
A
aliguori 已提交
2022 2023 2024
  iovec=yes
fi

2025 2026 2027 2028 2029 2030 2031 2032 2033
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
2034
if compile_prog "" "" ; then
2035 2036 2037
  preadv=yes
fi

2038 2039
##########################################
# fdt probe
2040
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
2041 2042
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
2043 2044
int main(void) { return 0; }
EOF
2045
  if compile_prog "" "$fdt_libs" ; then
2046
    fdt=yes
2047 2048 2049 2050
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
2051
    fdt_libs=
2052
    fdt=no
2053 2054 2055
  fi
fi

M
Michael Walle 已提交
2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071
##########################################
# opengl probe, used by milkymist-tmu2
if test "$opengl" != "no" ; then
  opengl_libs="-lGL"
  cat > $TMPC << EOF
#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
int main(void) { GL_VERSION; return 0; }
EOF
  if compile_prog "" "-lGL" ; then
    opengl=yes
  else
    if test "$opengl" = "yes" ; then
      feature_not_found "opengl"
    fi
2072
    opengl_libs=
M
Michael Walle 已提交
2073 2074 2075 2076
    opengl=no
  fi
fi

2077 2078 2079 2080 2081 2082
#
# 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
2083
cat > $TMPC << EOF
2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095
#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
2096
if compile_prog "" "" ; then
2097
  atfile=yes
2098 2099
fi

A
aurel32 已提交
2100
# Check for inotify functions when we are building linux-user
2101 2102 2103 2104 2105
# 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
2106
cat > $TMPC << EOF
2107 2108 2109 2110 2111 2112
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
2113
	return inotify_init();
2114 2115
}
EOF
2116
if compile_prog "" "" ; then
2117
  inotify=yes
2118 2119
fi

2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134
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 已提交
2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148
# 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
2149
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2150 2151 2152
  utimens=yes
fi

R
Riku Voipio 已提交
2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165
# 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
2166
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2167 2168 2169
  pipe2=yes
fi

K
Kevin Wolf 已提交
2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185
# 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

2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200
# 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
2201
if compile_prog "" "" ; then
2202 2203 2204
  splice=yes
fi

M
Marcelo Tosatti 已提交
2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217
##########################################
# 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
2218 2219 2220 2221 2222 2223
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 已提交
2224 2225
fi

R
Riku Voipio 已提交
2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240
# 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

2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2252
if compile_prog "$ARCH_CFLAGS" "" ; then
2253 2254 2255
  fallocate=yes
fi

2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270
# 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

2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287
# 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

2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2299
if compile_prog "" "" ; then
2300 2301 2302
  dup3=yes
fi

2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325
# 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)
{
2326 2327 2328 2329 2330 2331 2332 2333 2334
    /* Note that we use epoll_create1 as a value, not as
     * a function being called. This is necessary so that on
     * old SPARC glibc versions where the function was present in
     * the library but not declared in the header file we will
     * fail the configure check. (Otherwise we will get a compiler
     * warning but not an error, and will proceed to fail the
     * qemu compile where we compile with -Werror.)
     */
    epoll_create1;
2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355
    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

2356
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2357
if test "$docs" != "no" ; then
2358
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2359
    docs=yes
2360
  else
J
Juan Quintela 已提交
2361 2362
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2363
    fi
J
Juan Quintela 已提交
2364
    docs=no
2365
  fi
2366 2367
fi

S
Stefan Weil 已提交
2368
# Search for bswap_32 function
2369 2370 2371 2372 2373
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2374
if compile_prog "" "" ; then
2375 2376 2377
  byteswap_h=yes
fi

S
Stefan Weil 已提交
2378
# Search for bswap_32 function
2379 2380 2381 2382 2383 2384 2385
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
2386
if compile_prog "" "" ; then
2387 2388 2389
  bswap_h=yes
fi

A
aliguori 已提交
2390 2391 2392 2393 2394 2395 2396 2397
##########################################
# 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

2398
if compile_prog "" "" ; then
2399
  :
2400
elif compile_prog "" "-lrt" ; then
2401
  LIBS="-lrt $LIBS"
A
aliguori 已提交
2402 2403
fi

2404
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2405
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2406 2407 2408
    libs_softmmu="-lutil $libs_softmmu"
fi

2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420
##########################################
# 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

2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437
##########################################
# 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

2438 2439 2440 2441 2442 2443
# 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 已提交
2444 2445 2446
  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 && \
2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458
     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

R
Robert Relyea 已提交
2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483
# check for libcacard for smartcard support
if test "$smartcard" != "no" ; then
    smartcard="yes"
    smartcard_cflags=""
    # TODO - what's the minimal nss version we support?
    if test "$smartcard_nss" != "no"; then
        if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 ; then
            smartcard_nss="yes"
            smartcard_cflags="-I\$(SRC_PATH)/libcacard"
            libcacard_libs=$($pkg_config --libs nss 2>/dev/null)
            libcacard_cflags=$($pkg_config --cflags nss 2>/dev/null)
            QEMU_CFLAGS="$QEMU_CFLAGS $smartcard_cflags $libcacard_cflags"
            LIBS="$libcacard_libs $LIBS"
        else
            if test "$smartcard_nss" = "yes"; then
                feature_not_found "nss"
            fi
            smartcard_nss="no"
        fi
    fi
fi
if test "$smartcard" = "no" ; then
    smartcard_nss="no"
fi

2484 2485
##########################################

B
Blue Swirl 已提交
2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497
##########################################
# 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 已提交
2498 2499 2500 2501 2502 2503 2504
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2505
#include <stddef.h>
A
Andreas Färber 已提交
2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517
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 已提交
2518
#include <stddef.h>
A
Andreas Färber 已提交
2519 2520 2521 2522 2523 2524
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2525 2526 2527
##########################################
# check if trace backend exists

B
Blue Swirl 已提交
2528
sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
2529 2530 2531 2532 2533 2534 2535 2536
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553
##########################################
# 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
2554 2555 2556 2557 2558 2559 2560 2561 2562 2563

##########################################
# 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
2564 2565 2566 2567
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
2568 2569
fi

2570
##########################################
2571 2572 2573 2574
# End of CC checks
# After here, no more $cc or $ld runs

if test "$debug" = "no" ; then
2575
  CFLAGS="-O2 $CFLAGS"
2576
fi
J
Juan Quintela 已提交
2577

2578 2579
# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
2580 2581
z_version=`cut -f3 -d. $source_path/VERSION`

2582 2583 2584 2585 2586 2587 2588 2589 2590
if test -z "$werror" ; then
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

2591 2592 2593 2594 2595 2596 2597 2598 2599 2600
# 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

2601
if test "$werror" = "yes" ; then
J
Juan Quintela 已提交
2602
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2603 2604 2605 2606
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2607
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2608 2609 2610
    fi
fi

2611 2612 2613 2614 2615 2616 2617 2618 2619
# 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

2620
confdir=$sysconfdir$confsuffix
2621

2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640
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
2641
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
2642 2643
  roms="$roms spapr-rtas"
fi
2644

B
bellard 已提交
2645
echo "Install prefix    $prefix"
2646 2647
echo "BIOS directory    `eval echo $datadir`"
echo "binary directory  `eval echo $bindir`"
A
Alon Levy 已提交
2648
echo "library directory `eval echo $libdir`"
2649
echo "config directory  `eval echo $sysconfdir`"
B
bellard 已提交
2650
if test "$mingw32" = "no" ; then
2651
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
2652
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
2653
fi
2654
echo "Source path       $source_path"
B
bellard 已提交
2655
echo "C compiler        $cc"
B
bellard 已提交
2656
echo "Host C compiler   $host_cc"
2657
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
2658
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
2659
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
2660
echo "make              $make"
2661
echo "install           $install"
B
bellard 已提交
2662
echo "host CPU          $cpu"
B
bellard 已提交
2663
echo "host big endian   $bigendian"
2664
echo "target list       $target_list"
2665
echo "tcg debug enabled $debug_tcg"
L
Luiz Capitulino 已提交
2666
echo "Mon debug enabled $debug_mon"
B
bellard 已提交
2667
echo "gprof enabled     $gprof"
2668
echo "sparse enabled    $sparse"
2669
echo "strip binaries    $strip_opt"
2670
echo "profiler          $profiler"
B
bellard 已提交
2671
echo "static build      $static"
2672
echo "-Werror enabled   $werror"
2673 2674 2675
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
2676
echo "SDL support       $sdl"
B
balrog 已提交
2677
echo "curses support    $curses"
A
Alexander Graf 已提交
2678
echo "curl support      $curl"
L
Luiz Capitulino 已提交
2679
echo "check support     $check_utests"
B
bellard 已提交
2680
echo "mingw32 support   $mingw32"
M
malc 已提交
2681 2682
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
2683
echo "Block whitelist   $block_drv_whitelist"
2684
echo "Mixer emulation   $mixemu"
J
Jes Sorensen 已提交
2685 2686 2687 2688 2689 2690 2691 2692
echo "VNC support       $vnc"
if test "$vnc" = "yes" ; then
    echo "VNC TLS support   $vnc_tls"
    echo "VNC SASL support  $vnc_sasl"
    echo "VNC JPEG support  $vnc_jpeg"
    echo "VNC PNG support   $vnc_png"
    echo "VNC thread        $vnc_thread"
fi
2693 2694 2695
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
2696
echo "xen support       $xen"
A
aurel32 已提交
2697
echo "brlapi support    $brlapi"
2698
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
2699
echo "Documentation     $docs"
2700 2701
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
2702
echo "NPTL support      $nptl"
P
Paul Brook 已提交
2703
echo "GUEST_BASE        $guest_base"
2704
echo "PIE user targets  $user_pie"
2705
echo "vde support       $vde"
2706
echo "IO thread         $io_thread"
2707
echo "Linux AIO support $linux_aio"
2708
echo "ATTR/XATTR support $attr"
T
ths 已提交
2709
echo "Install blobs     $blobs"
2710
echo "KVM support       $kvm"
2711
echo "fdt support       $fdt"
2712
echo "preadv support    $preadv"
B
Blue Swirl 已提交
2713
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
2714 2715
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
2716
echo "uuid support      $uuid"
M
Michael S. Tsirkin 已提交
2717
echo "vhost-net support $vhost_net"
2718
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
2719
echo "Trace output file $trace_file-<pid>"
2720
echo "spice support     $spice"
2721
echo "rbd support       $rbd"
C
Christoph Hellwig 已提交
2722
echo "xfsctl support    $xfs"
R
Robert Relyea 已提交
2723
echo "nss used          $smartcard_nss"
M
Michael Walle 已提交
2724
echo "OpenGL support    $opengl"
B
bellard 已提交
2725

2726
if test $sdl_too_old = "yes"; then
B
bellard 已提交
2727
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
2728
fi
B
bellard 已提交
2729

2730
config_host_mak="config-host.mak"
2731
config_host_ld="config-host.ld"
2732 2733 2734 2735 2736 2737

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

2738
echo all: >> $config_host_mak
2739 2740
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
A
Alon Levy 已提交
2741
echo "libdir=$libdir" >> $config_host_mak
2742 2743 2744 2745
echo "mandir=$mandir" >> $config_host_mak
echo "datadir=$datadir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
echo "docdir=$docdir" >> $config_host_mak
2746
echo "confdir=$confdir" >> $config_host_mak
2747

A
aurel32 已提交
2748
case "$cpu" in
2749
  i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64|unicore32)
2750
    ARCH=$cpu
A
aurel32 已提交
2751
  ;;
2752
  armv4b|armv4l)
2753
    ARCH=arm
A
aurel32 已提交
2754 2755
  ;;
esac
2756
echo "ARCH=$ARCH" >> $config_host_mak
2757
if test "$debug_tcg" = "yes" ; then
2758
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2759
fi
L
Luiz Capitulino 已提交
2760 2761 2762
if test "$debug_mon" = "yes" ; then
  echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
fi
P
Paul Brook 已提交
2763
if test "$debug" = "yes" ; then
2764
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
2765
fi
2766
if test "$strip_opt" = "yes" ; then
2767
  echo "STRIP=${strip}" >> $config_host_mak
2768
fi
B
bellard 已提交
2769
if test "$bigendian" = "yes" ; then
2770
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
2771
fi
2772
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
2773
if test "$mingw32" = "yes" ; then
2774
  echo "CONFIG_WIN32=y" >> $config_host_mak
2775 2776 2777 2778 2779 2780 2781 2782 2783
  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
2784
else
J
Juan Quintela 已提交
2785
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
2786 2787 2788 2789
fi

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

2792
if test "$darwin" = "yes" ; then
2793
  echo "CONFIG_DARWIN=y" >> $config_host_mak
2794
fi
M
malc 已提交
2795 2796

if test "$aix" = "yes" ; then
2797
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
2798 2799
fi

B
bellard 已提交
2800
if test "$solaris" = "yes" ; then
2801
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
2802
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
2803
  if test "$needs_libsunmath" = "yes" ; then
2804
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
2805
  fi
B
bellard 已提交
2806
fi
2807 2808 2809
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
2810
if test "$static" = "yes" ; then
2811
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
2812
fi
2813
if test $profiler = "yes" ; then
2814
  echo "CONFIG_PROFILER=y" >> $config_host_mak
2815
fi
B
bellard 已提交
2816
if test "$slirp" = "yes" ; then
2817
  echo "CONFIG_SLIRP=y" >> $config_host_mak
2818
  QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
B
bellard 已提交
2819
fi
2820
if test "$vde" = "yes" ; then
2821
  echo "CONFIG_VDE=y" >> $config_host_mak
2822
fi
M
malc 已提交
2823
for card in $audio_card_list; do
P
pbrook 已提交
2824
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
2825
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2826
done
2827
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
2828
for drv in $audio_drv_list; do
P
pbrook 已提交
2829
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
2830
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2831
    if test "$drv" = "fmod"; then
2832
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
2833 2834
    fi
done
2835 2836 2837
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
2838 2839 2840
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
2841
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
2842
if test "$mixemu" = "yes" ; then
2843
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
2844
fi
J
Jes Sorensen 已提交
2845 2846 2847
if test "$vnc" = "yes" ; then
  echo "CONFIG_VNC=y" >> $config_host_mak
fi
2848
if test "$vnc_tls" = "yes" ; then
2849
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2850
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
2851
fi
2852
if test "$vnc_sasl" = "yes" ; then
2853
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
2854
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
2855
fi
J
Jes Sorensen 已提交
2856
if test "$vnc_jpeg" = "yes" ; then
2857 2858 2859
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
fi
J
Jes Sorensen 已提交
2860
if test "$vnc_png" = "yes" ; then
C
Corentin Chary 已提交
2861 2862 2863
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
fi
J
Jes Sorensen 已提交
2864
if test "$vnc_thread" = "yes" ; then
C
Corentin Chary 已提交
2865 2866
  echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
fi
2867
if test "$fnmatch" = "yes" ; then
2868
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
2869
fi
2870 2871 2872
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
C
Christoph Hellwig 已提交
2873 2874 2875
if test "$xfs" = "yes" ; then
  echo "CONFIG_XFS=y" >> $config_host_mak
fi
2876
qemu_version=`head $source_path/VERSION`
2877
echo "VERSION=$qemu_version" >>$config_host_mak
2878
echo "PKGVERSION=$pkgversion" >>$config_host_mak
2879 2880
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
2881
if [ "$docs" = "yes" ] ; then
2882
  echo "BUILD_DOCS=yes" >> $config_host_mak
2883
fi
2884
if test "$sdl" = "yes" ; then
2885
  echo "CONFIG_SDL=y" >> $config_host_mak
2886
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
2887 2888
fi
if test "$cocoa" = "yes" ; then
2889
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
2890 2891
fi
if test "$curses" = "yes" ; then
2892
  echo "CONFIG_CURSES=y" >> $config_host_mak
2893
fi
2894
if test "$atfile" = "yes" ; then
2895
  echo "CONFIG_ATFILE=y" >> $config_host_mak
2896
fi
R
Riku Voipio 已提交
2897
if test "$utimens" = "yes" ; then
2898
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
2899
fi
R
Riku Voipio 已提交
2900
if test "$pipe2" = "yes" ; then
2901
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
2902
fi
K
Kevin Wolf 已提交
2903 2904 2905
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
2906
if test "$splice" = "yes" ; then
2907
  echo "CONFIG_SPLICE=y" >> $config_host_mak
2908
fi
R
Riku Voipio 已提交
2909 2910 2911
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
2912 2913 2914
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
2915 2916 2917
if test "$sync_file_range" = "yes" ; then
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
2918 2919 2920
if test "$fiemap" = "yes" ; then
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
fi
2921 2922 2923
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
2924 2925 2926 2927 2928 2929 2930 2931 2932
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
2933
if test "$inotify" = "yes" ; then
2934
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
2935
fi
2936 2937 2938
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
2939 2940 2941 2942 2943 2944
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 已提交
2945
if test "$curl" = "yes" ; then
2946
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
2947
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
2948
fi
A
aurel32 已提交
2949
if test "$brlapi" = "yes" ; then
2950
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
2951
fi
B
balrog 已提交
2952
if test "$bluez" = "yes" ; then
2953
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2954
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
2955
fi
2956
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
2957
  echo "CONFIG_XEN=y" >> $config_host_mak
2958
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
2959
fi
2960
if test "$io_thread" = "yes" ; then
2961
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2962
fi
2963 2964 2965
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
2966 2967 2968 2969 2970 2971 2972 2973
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 已提交
2974
if test "$blobs" = "yes" ; then
2975
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
2976
fi
A
aliguori 已提交
2977
if test "$iovec" = "yes" ; then
2978
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
2979
fi
2980
if test "$preadv" = "yes" ; then
2981
  echo "CONFIG_PREADV=y" >> $config_host_mak
2982
fi
2983
if test "$fdt" = "yes" ; then
2984
  echo "CONFIG_FDT=y" >> $config_host_mak
2985
fi
M
Marcelo Tosatti 已提交
2986 2987 2988
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
2989 2990 2991
if test "$need_offsetof" = "yes" ; then
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
fi
2992 2993 2994
if test "$gcc_attribute_warn_unused_result" = "yes" ; then
  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
2995 2996 2997
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
2998 2999 3000 3001 3002 3003
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
3004

3005 3006 3007
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi
A
Alon Levy 已提交
3008 3009 3010 3011

if test "$smartcard" = "yes" ; then
  echo "CONFIG_SMARTCARD=y" >> $config_host_mak
fi
3012

R
Robert Relyea 已提交
3013 3014 3015 3016
if test "$smartcard_nss" = "yes" ; then
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
fi

M
Michael Walle 已提交
3017 3018 3019 3020
if test "$opengl" = "yes" ; then
  echo "CONFIG_OPENGL=y" >> $config_host_mak
fi

3021
# XXX: suppress that
B
bellard 已提交
3022
if [ "$bsd" = "yes" ] ; then
3023
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
3024 3025
fi

3026
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3027

3028 3029 3030
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
3031 3032 3033
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
fi
3034

3035 3036 3037
# USB host support
case "$usb" in
linux)
3038
  echo "HOST_USB=linux" >> $config_host_mak
3039 3040
;;
bsd)
3041
  echo "HOST_USB=bsd" >> $config_host_mak
3042 3043
;;
*)
3044
  echo "HOST_USB=stub" >> $config_host_mak
3045 3046 3047
;;
esac

3048
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3049 3050 3051
if test "$trace_backend" = "simple"; then
  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
3052 3053 3054 3055
# Set the appropriate trace file.
if test "$trace_backend" = "simple"; then
  trace_file="\"$trace_file-%u\""
fi
3056 3057 3058
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
  echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
3059 3060
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak

3061 3062
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
3063 3064 3065 3066 3067 3068
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 已提交
3069
echo "CC_I386=$cc_i386" >> $config_host_mak
3070 3071 3072 3073
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
3074
echo "WINDRES=$windres" >> $config_host_mak
A
Alon Levy 已提交
3075
echo "LIBTOOL=$libtool" >> $config_host_mak
3076
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
3077
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3078
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
3079 3080 3081 3082 3083
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 已提交
3084
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
3085
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3086 3087
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
3088
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
3089
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3090 3091
echo "EXESUF=$EXESUF" >> $config_host_mak

3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103
# 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 已提交
3104 3105
for d in libdis libdis-user; do
    mkdir -p $d
3106
    symlink $source_path/Makefile.dis $d/Makefile
B
Blue Swirl 已提交
3107 3108
    echo > $d/config.mak
done
3109 3110 3111
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
fi
B
Blue Swirl 已提交
3112

3113
for target in $target_list; do
3114
target_dir="$target"
3115
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
3116
target_arch2=`echo $target | cut -d '-' -f 1`
3117
target_bigendian="no"
3118

3119
case "$target_arch2" in
M
Michael Walle 已提交
3120
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
3121 3122 3123
  target_bigendian=yes
  ;;
esac
3124
target_softmmu="no"
B
bellard 已提交
3125
target_user_only="no"
3126 3127
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
3128
target_bsd_user="no"
P
pbrook 已提交
3129
case "$target" in
B
Blue Swirl 已提交
3130
  ${target_arch2}-softmmu)
P
pbrook 已提交
3131 3132
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
3133
  ${target_arch2}-linux-user)
3134 3135 3136 3137
    if test "$linux" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Linux host"
      exit 1
    fi
P
pbrook 已提交
3138 3139 3140
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
3141
  ${target_arch2}-darwin-user)
3142 3143 3144 3145
    if test "$darwin" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Darwin host"
      exit 1
    fi
P
pbrook 已提交
3146 3147 3148
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
3149
  ${target_arch2}-bsd-user)
B
Blue Swirl 已提交
3150
    if test "$bsd" != "yes" ; then
3151 3152 3153
      echo "ERROR: Target '$target' is only available on a BSD host"
      exit 1
    fi
B
blueswir1 已提交
3154 3155 3156
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
3157 3158 3159 3160 3161
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
3162

3163
mkdir -p $target_dir
B
bellard 已提交
3164
mkdir -p $target_dir/fpu
B
bellard 已提交
3165
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
3166
mkdir -p $target_dir/ide
3167
mkdir -p $target_dir/9pfs
B
blueswir1 已提交
3168
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
3169 3170
  mkdir -p $target_dir/nwfpe
fi
3171
symlink $source_path/Makefile.target $target_dir/Makefile
B
bellard 已提交
3172

3173

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

P
pbrook 已提交
3176
bflt="no"
3177
target_nptl="no"
B
Blue Swirl 已提交
3178
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
Paolo Bonzini 已提交
3179
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
P
pbrook 已提交
3180
gdb_xml_files=""
3181 3182 3183 3184
target_short_alignment=2
target_int_alignment=4
target_long_alignment=4
target_llong_alignment=8
3185
target_libs_softmmu=
A
aliguori 已提交
3186

3187
TARGET_ARCH="$target_arch2"
3188
TARGET_BASE_ARCH=""
3189
TARGET_ABI_DIR=""
3190

B
Blue Swirl 已提交
3191
case "$target_arch2" in
A
aurel32 已提交
3192
  i386)
3193
    target_phys_bits=64
A
aurel32 已提交
3194 3195
  ;;
  x86_64)
3196
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
3197
    target_phys_bits=64
3198
    target_long_alignment=8
A
aurel32 已提交
3199 3200
  ;;
  alpha)
P
Paul Brook 已提交
3201
    target_phys_bits=64
3202
    target_long_alignment=8
R
Richard Henderson 已提交
3203
    target_nptl="yes"
A
aurel32 已提交
3204 3205
  ;;
  arm|armeb)
J
Juan Quintela 已提交
3206
    TARGET_ARCH=arm
A
aurel32 已提交
3207
    bflt="yes"
3208
    target_nptl="yes"
P
pbrook 已提交
3209
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
3210
    target_phys_bits=32
3211
    target_llong_alignment=4
A
aurel32 已提交
3212 3213
  ;;
  cris)
E
edgar_igl 已提交
3214
    target_nptl="yes"
P
Paul Brook 已提交
3215
    target_phys_bits=32
A
aurel32 已提交
3216
  ;;
M
Michael Walle 已提交
3217 3218
  lm32)
    target_phys_bits=32
3219
    target_libs_softmmu="$opengl_libs"
M
Michael Walle 已提交
3220
  ;;
A
aurel32 已提交
3221 3222
  m68k)
    bflt="yes"
P
pbrook 已提交
3223
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
3224
    target_phys_bits=32
3225 3226 3227
    target_int_alignment=2
    target_long_alignment=2
    target_llong_alignment=2
A
aurel32 已提交
3228
  ;;
3229 3230
  microblaze|microblazeel)
    TARGET_ARCH=microblaze
3231 3232 3233
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
3234
    target_libs_softmmu="$fdt_libs"
3235
  ;;
J
Juan Quintela 已提交
3236
  mips|mipsel)
J
Juan Quintela 已提交
3237
    TARGET_ARCH=mips
3238
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
3239
    target_nptl="yes"
P
Paul Brook 已提交
3240
    target_phys_bits=64
A
aurel32 已提交
3241 3242
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
3243
    TARGET_ARCH=mipsn32
3244
    TARGET_BASE_ARCH=mips
3245
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
P
Paul Brook 已提交
3246
    target_phys_bits=64
A
aurel32 已提交
3247 3248
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
3249
    TARGET_ARCH=mips64
3250
    TARGET_BASE_ARCH=mips
3251
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
P
Paul Brook 已提交
3252
    target_phys_bits=64
3253
    target_long_alignment=8
A
aurel32 已提交
3254 3255
  ;;
  ppc)
3256
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3257
    target_phys_bits=32
3258
    target_nptl="yes"
3259
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3260 3261
  ;;
  ppcemb)
3262
    TARGET_BASE_ARCH=ppc
3263
    TARGET_ABI_DIR=ppc
3264
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3265
    target_phys_bits=64
3266
    target_nptl="yes"
3267
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3268 3269
  ;;
  ppc64)
3270
    TARGET_BASE_ARCH=ppc
3271
    TARGET_ABI_DIR=ppc
3272
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3273
    target_phys_bits=64
3274
    target_long_alignment=8
3275
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3276 3277
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
3278
    TARGET_ARCH=ppc64
3279
    TARGET_BASE_ARCH=ppc
3280
    TARGET_ABI_DIR=ppc
3281
    echo "TARGET_ABI32=y" >> $config_target_mak
3282
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3283
    target_phys_bits=64
3284
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3285 3286
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
3287
    TARGET_ARCH=sh4
A
aurel32 已提交
3288
    bflt="yes"
A
aurel32 已提交
3289
    target_nptl="yes"
P
Paul Brook 已提交
3290
    target_phys_bits=32
A
aurel32 已提交
3291 3292
  ;;
  sparc)
P
Paul Brook 已提交
3293
    target_phys_bits=64
A
aurel32 已提交
3294 3295
  ;;
  sparc64)
3296
    TARGET_BASE_ARCH=sparc
P
Paul Brook 已提交
3297
    target_phys_bits=64
3298
    target_long_alignment=8
A
aurel32 已提交
3299 3300
  ;;
  sparc32plus)
J
Juan Quintela 已提交
3301
    TARGET_ARCH=sparc64
3302
    TARGET_BASE_ARCH=sparc
3303
    TARGET_ABI_DIR=sparc
3304
    echo "TARGET_ABI32=y" >> $config_target_mak
P
Paul Brook 已提交
3305
    target_phys_bits=64
A
aurel32 已提交
3306
  ;;
3307
  s390x)
U
Ulrich Hecht 已提交
3308
    target_nptl="yes"
3309
    target_phys_bits=64
3310
    target_long_alignment=8
3311
  ;;
3312 3313 3314
  unicore32)
    target_phys_bits=32
  ;;
A
aurel32 已提交
3315 3316 3317 3318 3319
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
3320 3321 3322 3323
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
3324
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3325
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
3326 3327
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
3328
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
3329 3330 3331
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
3332
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3333 3334 3335
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
3336
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
J
Juan Quintela 已提交
3337 3338 3339
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3340
      target_phys_bits=64
3341
      echo "CONFIG_XEN=y" >> $config_target_mak
J
Jun Nakajima 已提交
3342 3343 3344
      if test "$cpu" = "i386" -o "$cpu" = "x86_64"; then
          echo "CONFIG_XEN_MAPCACHE=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
3345 3346
    fi
esac
J
Juan Quintela 已提交
3347
case "$target_arch2" in
A
Alexander Graf 已提交
3348
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
3349 3350 3351 3352
    # 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 已提交
3353
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
R
René Rebe 已提交
3354 3355
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
J
Juan Quintela 已提交
3356 3357
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
3358 3359
      echo "CONFIG_KVM=y" >> $config_target_mak
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
3360 3361 3362
      if test "$kvm_para" = "yes"; then
        echo "CONFIG_KVM_PARA=y" >> $config_target_mak
      fi
M
Michael S. Tsirkin 已提交
3363 3364 3365
      if test $vhost_net = "yes" ; then
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
A
Aurelien Jarno 已提交
3366
      if test "$kvm_ppc_pvr" = "yes" ; then
A
Alexander Graf 已提交
3367 3368
        echo "CONFIG_KVM_PPC_PVR=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
3369 3370
    fi
esac
B
bellard 已提交
3371
if test "$target_bigendian" = "yes" ; then
3372
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
3373
fi
3374
if test "$target_softmmu" = "yes" ; then
P
Paul Brook 已提交
3375
  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
3376
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
3377
  echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
3378
  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
3379
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
3380
fi
B
bellard 已提交
3381
if test "$target_user_only" = "yes" ; then
3382
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
B
bellard 已提交
3383
fi
3384
if test "$target_linux_user" = "yes" ; then
3385
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
3386 3387
fi
if test "$target_darwin_user" = "yes" ; then
3388
  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
3389
fi
R
Robert Relyea 已提交
3390 3391 3392 3393 3394
if test "$smartcard_nss" = "yes" ; then
  echo "subdir-$target: subdir-libcacard" >> $config_host_mak
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
fi
P
pbrook 已提交
3395 3396 3397 3398 3399
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
3400
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
3401
fi
3402

3403
echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
3404

P
pbrook 已提交
3405
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3406
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
3407
fi
3408 3409
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3410
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3411
fi
P
Paul Brook 已提交
3412
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3413
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
3414
fi
B
blueswir1 已提交
3415
if test "$target_bsd_user" = "yes" ; then
3416
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
3417
fi
3418

3419
# generate QEMU_CFLAGS/LDFLAGS for targets
3420

3421
cflags=""
3422
includes=""
3423
ldflags=""
3424

J
Juan Quintela 已提交
3425
if test "$ARCH" = "sparc64" ; then
3426
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3427
elif test "$ARCH" = "s390x" ; then
3428
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3429
elif test "$ARCH" = "x86_64" ; then
3430
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
J
Juan Quintela 已提交
3431
else
3432
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
J
Juan Quintela 已提交
3433
fi
3434 3435
includes="-I\$(SRC_PATH)/tcg $includes"
includes="-I\$(SRC_PATH)/fpu $includes"
J
Juan Quintela 已提交
3436

B
Blue Swirl 已提交
3437 3438 3439 3440 3441 3442
if test "$target_user_only" = "yes" ; then
    libdis_config_mak=libdis-user/config.mak
else
    libdis_config_mak=libdis/config.mak
fi

3443 3444 3445
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
3446
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3447
    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
3448 3449
  ;;
  arm)
3450
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3451
    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
3452 3453
  ;;
  cris)
3454
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3455
    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
3456 3457
  ;;
  hppa)
3458
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3459
    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
3460 3461
  ;;
  i386|x86_64)
3462
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3463
    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
3464
  ;;
A
Aurelien Jarno 已提交
3465 3466 3467 3468
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
  ;;
3469
  m68k)
3470
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3471
    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
3472
  ;;
3473
  microblaze*)
3474
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3475
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
3476 3477
  ;;
  mips*)
3478
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3479
    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
3480 3481
  ;;
  ppc*)
3482
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3483
    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
3484
  ;;
3485
  s390*)
3486
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3487
    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
3488 3489
  ;;
  sh4)
3490
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3491
    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
3492 3493
  ;;
  sparc*)
3494
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3495
    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
3496 3497 3498 3499
  ;;
  esac
done

3500 3501 3502 3503 3504 3505 3506
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

3507 3508 3509 3510
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
M
Michael Walle 已提交
3511 3512 3513
  ;;
  lm32)
    cflags="-DHAS_AUDIO $cflags"
3514 3515 3516 3517 3518 3519 3520
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

3521
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3522
	"$user_pie" = "yes" ; then
3523 3524 3525 3526
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

3527 3528 3529
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
3530
  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3531 3532
fi

3533
if test "$gprof" = "yes" ; then
3534
  echo "TARGET_GPROF=yes" >> $config_target_mak
3535 3536 3537 3538 3539 3540
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
3541
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
3542 3543 3544
  fi
fi

3545
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3546
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3547 3548 3549
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
3550
    ldflags="$linker_script -static $ldflags"
3551
    ;;
3552 3553 3554
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
3555
  *)
3556
    ldflags="$linker_script $ldflags"
3557 3558 3559 3560
    ;;
  esac
fi

3561 3562
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3563
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
3564

3565
done # for target in $targets
B
bellard 已提交
3566

P
Paolo Bonzini 已提交
3567 3568
# 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"
A
Andreas Färber 已提交
3569
DIRS="$DIRS pc-bios/spapr-rtas"
P
Paolo Bonzini 已提交
3570 3571 3572 3573 3574
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"
A
Andreas Färber 已提交
3575
FILES="$FILES pc-bios/spapr-rtas/Makefile"
P
Paolo Bonzini 已提交
3576
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
3577
for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.rom $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
P
Paolo Bonzini 已提交
3578 3579 3580 3581
    FILES="$FILES pc-bios/`basename $bios_file`"
done
mkdir -p $DIRS
for f in $FILES ; do
A
Aurelien Jarno 已提交
3582
    test -e $f || symlink $source_path/$f $f
P
Paolo Bonzini 已提交
3583
done
P
Paul Brook 已提交
3584

3585
# temporary config to build submodules
3586
for rom in seabios vgabios ; do
3587
    config_mak=roms/$rom/config.mak
3588
    echo "# Automatically generated by configure - do not modify" > $config_mak
3589 3590 3591 3592 3593 3594 3595 3596 3597
    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 已提交
3598 3599 3600
for hwlib in 32 64; do
  d=libhw$hwlib
  mkdir -p $d
B
Blue Swirl 已提交
3601
  mkdir -p $d/ide
3602
  symlink $source_path/Makefile.hw $d/Makefile
3603
  mkdir -p $d/9pfs
3604
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
P
Paul Brook 已提交
3605
done
3606

R
Robert Relyea 已提交
3607 3608 3609 3610
if [ "$source_path" != `pwd` ]; then
    # out of tree build
    mkdir -p libcacard
    rm -f libcacard/Makefile
A
Alon Levy 已提交
3611
    symlink "$source_path/libcacard/Makefile" libcacard/Makefile
R
Robert Relyea 已提交
3612 3613
fi

3614 3615
d=libuser
mkdir -p $d
3616
symlink $source_path/Makefile.user $d/Makefile
3617 3618 3619
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
fi
3620 3621 3622 3623

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