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

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

18 19 20
# NB: do not call "exit" in the trap handler; this is buggy with some shells;
# see <1285349658-3122-1-git-send-email-loic.minier@linaro.org>
trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
G
Gerd Hoffmann 已提交
21
rm -f config.log
22

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

30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
do_cc() {
    # Run the compiler, capturing its output to the log.
    echo $cc "$@" >> config.log
    $cc "$@" >> config.log 2>&1 || return $?
    # Test passed. If this is an --enable-werror build, rerun
    # the test with -Werror and bail out if it fails. This
    # makes warning-generating-errors in configure test code
    # obvious to developers.
    if test "$werror" != "yes"; then
        return 0
    fi
    # Don't bother rerunning the compile if we were already using -Werror
    case "$*" in
        *-Werror*)
           return 0
        ;;
    esac
    echo $cc -Werror "$@" >> config.log
    $cc -Werror "$@" >> config.log 2>&1 && return $?
    echo "ERROR: configure test passed without -Werror but failed with -Werror."
    echo "This is probably a bug in the configure script. The failing command"
    echo "will be at the bottom of config.log."
    echo "You can run configure with --disable-werror to bypass this check."
    exit 1
}

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

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

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

73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
# check whether a command is available to this shell (may be either an
# executable or a builtin)
has() {
    type "$1" >/dev/null 2>&1
}

# search for an executable in PATH
path_of() {
    local_command="$1"
    local_ifs="$IFS"
    local_dir=""

    # pathname has a dir component?
    if [ "${local_command#*/}" != "$local_command" ]; then
        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
            echo "$local_command"
            return 0
        fi
    fi
    if [ -z "$local_command" ]; then
        return 1
    fi

    IFS=:
    for local_dir in $PATH; do
        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
            echo "$local_dir/$local_command"
            IFS="${local_ifs:-$(printf ' \t\n')}"
            return 0
        fi
    done
    # not found
    IFS="${local_ifs:-$(printf ' \t\n')}"
    return 1
}

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

130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
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=""
nptl=""
sdl=""
152
virtfs=""
J
Jes Sorensen 已提交
153
vnc="yes"
154 155 156 157 158 159 160 161
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
xen=""
162
xen_ctrl_version=""
163
xen_pci_passthrough=""
164
linux_aio=""
165
cap_ng=""
166
attr=""
167
libattr=""
168 169
xfs=""

170 171
vhost_net="no"
kvm="no"
172 173 174 175
gprof="no"
debug_tcg="no"
debug="no"
strip_opt="yes"
176
tcg_interpreter="no"
177 178 179 180 181
bigendian="no"
mingw32="no"
EXESUF=""
prefix="/usr/local"
mandir="\${prefix}/share/man"
182
datadir="\${prefix}/share"
183
qemu_docdir="\${prefix}/share/doc/qemu"
184
bindir="\${prefix}/bin"
A
Alon Levy 已提交
185
libdir="\${prefix}/lib"
186
includedir="\${prefix}/include"
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
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"
bsd_user="no"
guest_base=""
uname_release=""
mixemu="no"
aix="no"
blobs="yes"
pkgversion=""
207
pie=""
208 209 210 211 212
zero_malloc=""
trace_backend="nop"
trace_file="trace"
spice=""
rbd=""
A
Alon Levy 已提交
213
smartcard=""
R
Robert Relyea 已提交
214
smartcard_nss=""
215
usb_redir=""
216
opengl=""
A
Alon Levy 已提交
217
zlib="yes"
218
guest_agent="yes"
R
Ronnie Sahlberg 已提交
219
libiscsi=""
220
coroutine=""
221

222 223 224 225 226 227
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
228
  --cc=*) CC="$optarg"
229
  ;;
P
Paolo Bonzini 已提交
230 231
  --source-path=*) source_path="$optarg"
  ;;
232 233
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
234
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
235 236 237
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
238 239 240 241
  --enable-debug-info) debug_info="yes"
  ;;
  --disable-debug-info) debug_info="no"
  ;;
242 243 244
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
245
    v7|v8|v8plus|v8plusa)
246 247 248 249 250 251 252 253 254 255 256
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
257 258 259 260
  esac
done
# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
261
# we can eliminate its usage altogether.
262

263 264 265 266
cc="${CC-${cross_prefix}gcc}"
ar="${AR-${cross_prefix}ar}"
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
ld="${LD-${cross_prefix}ld}"
B
Brad 已提交
267
libtool="${LIBTOOL-${cross_prefix}libtool}"
268 269
strip="${STRIP-${cross_prefix}strip}"
windres="${WINDRES-${cross_prefix}windres}"
270 271 272 273 274
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
query_pkg_config() {
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
}
pkg_config=query_pkg_config
275
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
276

277 278
# default flags for all hosts
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
279
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
280 281
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
282
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu"
283 284 285 286
if test "$debug_info" = "yes"; then
    CFLAGS="-g $CFLAGS"
    LDFLAGS="-g $LDFLAGS"
fi
287

P
Paolo Bonzini 已提交
288 289 290
# make source path absolute
source_path=`cd "$source_path"; pwd`

291 292 293
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
294
#error $1 not defined
295 296 297
#endif
int main(void) { return 0; }
EOF
298
  compile_object
299 300
}

301 302 303 304
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
305 306 307
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
308 309 310 311 312 313 314 315
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 已提交
316 317 318 319 320 321
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
322 323
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
324 325
elif check_define __ia64__ ; then
  cpu="ia64"
326 327 328 329 330 331
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
332 333
elif check_define __arm__ ; then
  cpu="arm"
334 335
elif check_define __hppa__ ; then
  cpu="hppa"
336
else
M
malc 已提交
337
  cpu=`uname -m`
338 339
fi

340 341 342
ARCH=
# Normalise host CPU name and set ARCH.
# Note that this case should only have supported host CPUs, not guests.
B
bellard 已提交
343
case "$cpu" in
344
  ia64|ppc|ppc64|s390|s390x|sparc64)
345 346
    cpu="$cpu"
  ;;
B
bellard 已提交
347
  i386|i486|i586|i686|i86pc|BePC)
348
    cpu="i386"
B
bellard 已提交
349
  ;;
A
aurel32 已提交
350 351 352
  x86_64|amd64)
    cpu="x86_64"
  ;;
353 354
  armv*b|armv*l|arm)
    cpu="arm"
B
bellard 已提交
355
  ;;
356
  hppa|parisc|parisc64)
A
aurel32 已提交
357 358
    cpu="hppa"
  ;;
A
Aurelien Jarno 已提交
359 360 361
  mips*)
    cpu="mips"
  ;;
362
  sparc|sun4[cdmuv])
B
bellard 已提交
363 364
    cpu="sparc"
  ;;
B
bellard 已提交
365
  *)
366 367
    # This will result in either an error or falling back to TCI later
    ARCH=unknown
B
bellard 已提交
368 369
  ;;
esac
370 371 372
if test -z "$ARCH"; then
  ARCH="$cpu"
fi
J
Juan Quintela 已提交
373

B
bellard 已提交
374
# OS specific
375 376 377 378
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
379 380 381 382
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
383 384
elif check_define __HAIKU__ ; then
  targetos='Haiku'
385 386 387
else
  targetos=`uname -s`
fi
388

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

B
bellard 已提交
521
if [ "$bsd" = "yes" ] ; then
522
  if [ "$darwin" != "yes" ] ; then
523
    usb="bsd"
524
    bsd_user="yes"
525
  fi
B
bellard 已提交
526 527
fi

528 529
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}
B
Blue Swirl 已提交
530
: ${python=${PYTHON-python}}
531
: ${smbd=${SMBD-/usr/sbin/smbd}}
532

533 534
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
535
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
536 537
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
538 539 540 541 542 543 544
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
  if compile_prog "" "-liberty" ; then
    LIBS="-liberty $LIBS"
  fi
545
  prefix="c:/Program Files/QEMU"
546
  mandir="\${prefix}"
547
  datadir="\${prefix}"
548
  qemu_docdir="\${prefix}"
549 550 551
  bindir="\${prefix}"
  sysconfdir="\${prefix}"
  confsuffix=""
552
  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
553 554
fi

555
werror=""
556

B
bellard 已提交
557
for opt do
P
pbrook 已提交
558
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
B
bellard 已提交
559
  case "$opt" in
560 561
  --help|-h) show_help=yes
  ;;
M
Mike Frysinger 已提交
562 563
  --version|-V) exec cat $source_path/VERSION
  ;;
564
  --prefix=*) prefix="$optarg"
B
bellard 已提交
565
  ;;
566
  --interp-prefix=*) interp_prefix="$optarg"
B
bellard 已提交
567
  ;;
P
Paolo Bonzini 已提交
568
  --source-path=*)
B
bellard 已提交
569
  ;;
570
  --cross-prefix=*)
B
bellard 已提交
571
  ;;
572
  --cc=*)
B
bellard 已提交
573
  ;;
574
  --host-cc=*) host_cc="$optarg"
B
bellard 已提交
575
  ;;
576
  --make=*) make="$optarg"
B
bellard 已提交
577
  ;;
578 579
  --install=*) install="$optarg"
  ;;
B
Blue Swirl 已提交
580 581
  --python=*) python="$optarg"
  ;;
582 583
  --smbd=*) smbd="$optarg"
  ;;
584
  --extra-cflags=*)
B
bellard 已提交
585
  ;;
586
  --extra-ldflags=*)
B
bellard 已提交
587
  ;;
588 589 590 591
  --enable-debug-info)
  ;;
  --disable-debug-info)
  ;;
592
  --cpu=*)
B
bellard 已提交
593
  ;;
594
  --target-list=*) target_list="$optarg"
B
bellard 已提交
595
  ;;
596
  --enable-trace-backend=*) trace_backend="$optarg"
597
  ;;
598
  --with-trace-file=*) trace_file="$optarg"
P
Prerna Saxena 已提交
599
  ;;
B
bellard 已提交
600 601
  --enable-gprof) gprof="yes"
  ;;
602 603 604
  --static)
    static="yes"
    LDFLAGS="-static $LDFLAGS"
605
    QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
B
bellard 已提交
606
  ;;
607 608 609 610
  --mandir=*) mandir="$optarg"
  ;;
  --bindir=*) bindir="$optarg"
  ;;
A
Alon Levy 已提交
611 612
  --libdir=*) libdir="$optarg"
  ;;
613 614
  --includedir=*) includedir="$optarg"
  ;;
615
  --datadir=*) datadir="$optarg"
616
  ;;
617 618
  --with-confsuffix=*) confsuffix="$optarg"
  ;;
619
  --docdir=*) qemu_docdir="$optarg"
620
  ;;
621
  --sysconfdir=*) sysconfdir="$optarg"
622
  ;;
623 624 625 626 627 628 629 630
  --sbindir=*|--libexecdir=*|--sharedstatedir=*|--localstatedir=*|\
  --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
  --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
    # These switches are silently ignored, for compatibility with
    # autoconf-generated configure scripts. This allows QEMU's
    # configure to be used by RPM and similar macros that set
    # lots of directory switches by default.
  ;;
631 632
  --disable-sdl) sdl="no"
  ;;
633 634
  --enable-sdl) sdl="yes"
  ;;
635 636 637 638
  --disable-virtfs) virtfs="no"
  ;;
  --enable-virtfs) virtfs="yes"
  ;;
J
Jes Sorensen 已提交
639 640 641 642
  --disable-vnc) vnc="no"
  ;;
  --enable-vnc) vnc="yes"
  ;;
M
malc 已提交
643
  --fmod-lib=*) fmod_lib="$optarg"
644
  ;;
645 646
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
B
blueswir1 已提交
647 648
  --oss-lib=*) oss_lib="$optarg"
  ;;
649
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
B
bellard 已提交
650
  ;;
M
malc 已提交
651
  --audio-drv-list=*) audio_drv_list="$optarg"
B
bellard 已提交
652
  ;;
653 654
  --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
  ;;
655 656 657 658
  --enable-debug-tcg) debug_tcg="yes"
  ;;
  --disable-debug-tcg) debug_tcg="no"
  ;;
P
Paul Brook 已提交
659 660 661 662 663 664
  --enable-debug)
      # Enable debugging options that aren't excessively noisy
      debug_tcg="yes"
      debug="yes"
      strip_opt="no"
  ;;
665 666 667 668
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
669 670
  --disable-strip) strip_opt="no"
  ;;
671 672
  --disable-vnc-tls) vnc_tls="no"
  ;;
673 674
  --enable-vnc-tls) vnc_tls="yes"
  ;;
675 676
  --disable-vnc-sasl) vnc_sasl="no"
  ;;
677 678
  --enable-vnc-sasl) vnc_sasl="yes"
  ;;
679 680 681 682
  --disable-vnc-jpeg) vnc_jpeg="no"
  ;;
  --enable-vnc-jpeg) vnc_jpeg="yes"
  ;;
C
Corentin Chary 已提交
683 684 685 686
  --disable-vnc-png) vnc_png="no"
  ;;
  --enable-vnc-png) vnc_png="yes"
  ;;
B
bellard 已提交
687
  --disable-slirp) slirp="no"
688
  ;;
689 690 691 692
  --disable-uuid) uuid="no"
  ;;
  --enable-uuid) uuid="yes"
  ;;
693
  --disable-vde) vde="no"
694
  ;;
695 696
  --enable-vde) vde="yes"
  ;;
697 698
  --disable-xen) xen="no"
  ;;
699 700
  --enable-xen) xen="yes"
  ;;
701 702 703 704
  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
  ;;
  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
  ;;
A
aurel32 已提交
705 706
  --disable-brlapi) brlapi="no"
  ;;
707 708
  --enable-brlapi) brlapi="yes"
  ;;
B
balrog 已提交
709 710
  --disable-bluez) bluez="no"
  ;;
711 712
  --enable-bluez) bluez="yes"
  ;;
A
aliguori 已提交
713 714
  --disable-kvm) kvm="no"
  ;;
715 716
  --enable-kvm) kvm="yes"
  ;;
717 718 719 720
  --disable-tcg-interpreter) tcg_interpreter="no"
  ;;
  --enable-tcg-interpreter) tcg_interpreter="yes"
  ;;
721 722 723 724
  --disable-cap-ng)  cap_ng="no"
  ;;
  --enable-cap-ng) cap_ng="yes"
  ;;
725 726 727 728
  --disable-spice) spice="no"
  ;;
  --enable-spice) spice="yes"
  ;;
R
Ronnie Sahlberg 已提交
729 730 731 732
  --disable-libiscsi) libiscsi="no"
  ;;
  --enable-libiscsi) libiscsi="yes"
  ;;
733 734
  --enable-profiler) profiler="yes"
  ;;
735 736
  --disable-cocoa) cocoa="no"
  ;;
737 738 739 740
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
741
  ;;
P
pbrook 已提交
742
  --disable-system) softmmu="no"
743
  ;;
P
pbrook 已提交
744
  --enable-system) softmmu="yes"
745
  ;;
746 747 748 749 750
  --disable-user)
      linux_user="no" ;
      bsd_user="no" ;
  ;;
  --enable-user) ;;
751
  --disable-linux-user) linux_user="no"
752
  ;;
753 754
  --enable-linux-user) linux_user="yes"
  ;;
B
blueswir1 已提交
755 756 757 758
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
P
Paul Brook 已提交
759 760 761 762
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
763
  --enable-pie) pie="yes"
764
  ;;
765
  --disable-pie) pie="no"
766
  ;;
767 768
  --enable-uname-release=*) uname_release="$optarg"
  ;;
769 770
  --sparc_cpu=*)
  ;;
771 772 773 774
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
B
balrog 已提交
775 776
  --disable-curses) curses="no"
  ;;
777 778
  --enable-curses) curses="yes"
  ;;
A
Alexander Graf 已提交
779 780
  --disable-curl) curl="no"
  ;;
781 782
  --enable-curl) curl="yes"
  ;;
783 784 785 786
  --disable-fdt) fdt="no"
  ;;
  --enable-fdt) fdt="yes"
  ;;
787 788
  --disable-nptl) nptl="no"
  ;;
789 790
  --enable-nptl) nptl="yes"
  ;;
791 792
  --enable-mixemu) mixemu="yes"
  ;;
793 794 795 796
  --disable-linux-aio) linux_aio="no"
  ;;
  --enable-linux-aio) linux_aio="yes"
  ;;
797 798 799 800
  --disable-attr) attr="no"
  ;;
  --enable-attr) attr="yes"
  ;;
T
ths 已提交
801 802
  --disable-blobs) blobs="no"
  ;;
P
pbrook 已提交
803 804
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
805 806
  --with-coroutine=*) coroutine="$optarg"
  ;;
J
Juan Quintela 已提交
807
  --disable-docs) docs="no"
808
  ;;
J
Juan Quintela 已提交
809
  --enable-docs) docs="yes"
810
  ;;
M
Michael S. Tsirkin 已提交
811 812 813 814
  --disable-vhost-net) vhost_net="no"
  ;;
  --enable-vhost-net) vhost_net="yes"
  ;;
M
Michael Walle 已提交
815 816 817 818
  --disable-opengl) opengl="no"
  ;;
  --enable-opengl) opengl="yes"
  ;;
819 820 821 822
  --disable-rbd) rbd="no"
  ;;
  --enable-rbd) rbd="yes"
  ;;
823 824 825 826
  --disable-xfsctl) xfs="no"
  ;;
  --enable-xfsctl) xfs="yes"
  ;;
A
Alon Levy 已提交
827 828 829 830
  --disable-smartcard) smartcard="no"
  ;;
  --enable-smartcard) smartcard="yes"
  ;;
R
Robert Relyea 已提交
831 832 833 834
  --disable-smartcard-nss) smartcard_nss="no"
  ;;
  --enable-smartcard-nss) smartcard_nss="yes"
  ;;
835 836 837 838
  --disable-usb-redir) usb_redir="no"
  ;;
  --enable-usb-redir) usb_redir="yes"
  ;;
A
Alon Levy 已提交
839 840
  --disable-zlib-test) zlib="no"
  ;;
841 842 843 844
  --enable-guest-agent) guest_agent="yes"
  ;;
  --disable-guest-agent) guest_agent="no"
  ;;
845 846
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
B
bellard 已提交
847 848 849
  esac
done

850 851
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
852
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
853
#
P
Paul Brook 已提交
854
host_guest_base="no"
855
case "$cpu" in
856 857
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
858
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
859 860
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
861
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
862 863
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
864
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
865 866
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
867
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
868
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
869
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
870
             helper_cflags="-ffixed-i0"
871
           fi
872
           ;;
873
    sparc64)
J
Juan Quintela 已提交
874
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
875
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
876
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
877
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
878
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
879
           fi
880
           ;;
881
    s390)
882 883
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m31 $LDFLAGS"
R
Richard Henderson 已提交
884
           host_guest_base="yes"
885 886 887 888
           ;;
    s390x)
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m64 $LDFLAGS"
R
Richard Henderson 已提交
889
           host_guest_base="yes"
890
           ;;
891
    i386)
J
Juan Quintela 已提交
892
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
893
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
894
           cc_i386='$(CC) -m32'
J
Juan Quintela 已提交
895
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
896
           host_guest_base="yes"
897 898
           ;;
    x86_64)
J
Juan Quintela 已提交
899
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
900
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
901
           cc_i386='$(CC) -m32'
P
Paul Brook 已提交
902 903 904 905
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
906
           ;;
M
malc 已提交
907 908 909
    ppc*)
           host_guest_base="yes"
           ;;
910 911 912
    mips*)
           host_guest_base="yes"
           ;;
A
Aurelien Jarno 已提交
913 914 915
    ia64*)
           host_guest_base="yes"
           ;;
R
Richard Henderson 已提交
916 917 918
    hppa*)
           host_guest_base="yes"
           ;;
919 920 921
    unicore32*)
           host_guest_base="yes"
           ;;
922 923
esac

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

926 927 928 929 930 931 932 933

default_target_list=""

# these targets are portable
if [ "$softmmu" = "yes" ] ; then
    default_target_list="\
i386-softmmu \
x86_64-softmmu \
934
alpha-softmmu \
935 936 937 938 939 940 941 942 943 944
arm-softmmu \
cris-softmmu \
lm32-softmmu \
m68k-softmmu \
microblaze-softmmu \
microblazeel-softmmu \
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
945
or32-softmmu \
946 947 948 949 950 951 952
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
sparc64-softmmu \
A
Alexander Graf 已提交
953
s390x-softmmu \
954 955
xtensa-softmmu \
xtensaeb-softmmu \
956
unicore32-softmmu \
957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972
"
fi
# the following are Linux specific
if [ "$linux_user" = "yes" ] ; then
    default_target_list="${default_target_list}\
i386-linux-user \
x86_64-linux-user \
alpha-linux-user \
arm-linux-user \
armeb-linux-user \
cris-linux-user \
m68k-linux-user \
microblaze-linux-user \
microblazeel-linux-user \
mips-linux-user \
mipsel-linux-user \
J
Jia Liu 已提交
973
or32-linux-user \
974 975 976 977 978 979 980 981 982
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 已提交
983
s390x-linux-user \
984 985 986 987 988 989 990 991 992 993 994 995
"
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

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

1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150
# Now we have handled --enable-tcg-interpreter and know we're not just
# printing the help message, bail out if the host CPU isn't supported.
if test "$ARCH" = "unknown"; then
    if test "$tcg_interpreter" = "yes" ; then
        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
        ARCH=tci
    else
        echo "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
        exit 1
    fi
fi

1151 1152
# check that the C compiler works.
cat > $TMPC <<EOF
1153
int main(void) { return 0; }
1154 1155 1156 1157 1158 1159 1160 1161 1162
EOF

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

1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175
# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
z_version=`cut -f3 -d. $source_path/VERSION`

if test -z "$werror" ; then
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

1176 1177 1178
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"
1179
gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
1180 1181 1182 1183
# Note that we do not add -Werror to gcc_flags here, because that would
# enable it for all configure tests. If a configure test failed due
# to -Werror this would just silently disable some features,
# so it's too error prone.
1184 1185 1186 1187
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
for flag in $gcc_flags; do
1188
    if compile_prog "-Werror $flag" "" ; then
1189 1190 1191 1192
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203
if test "$static" = "yes" ; then
  if test "$pie" = "yes" ; then
    echo "static and pie are mutually incompatible"
    exit 1
  else
    pie="no"
  fi
fi

if test "$pie" = ""; then
  case "$cpu-$targetos" in
1204
    i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD)
1205 1206 1207 1208 1209 1210 1211 1212 1213
      ;;
    *)
      pie="no"
      ;;
  esac
fi

if test "$pie" != "no" ; then
  cat > $TMPC << EOF
1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224

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

static THREAD int tls_var;

int main(void) { return tls_var; }

1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243
EOF
  if compile_prog "-fPIE -DPIE" "-pie"; then
    QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
    LDFLAGS="-pie $LDFLAGS"
    pie="yes"
    if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
      LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
    fi
  else
    if test "$pie" = "yes"; then
      echo "PIE not available due to missing toolchain support"
      exit 1
    else
      echo "Disabling PIE due to missing toolchain support"
      pie="no"
    fi
  fi
fi

B
bellard 已提交
1244 1245 1246 1247
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
1248 1249 1250
  if has $install; then
    :
  else
B
bellard 已提交
1251 1252 1253 1254 1255
    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
1256
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
1257 1258 1259 1260 1261
    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
1262 1263 1264
  if has ar; then
    :
  else
B
bellard 已提交
1265 1266 1267 1268 1269 1270
    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
1271
fi
B
bellard 已提交
1272

S
Sebastian Herbszt 已提交
1273 1274 1275
if ! has $python; then
  echo "Python not found. Use --python=/path/to/python"
  exit 1
B
Blue Swirl 已提交
1276 1277
fi

1278 1279
# Note that if the Python conditional here evaluates True we will exit
# with status 1 which is a shell 'false' value.
1280 1281 1282 1283
if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
  echo "Cannot use '$python', Python 2.4 or later is required."
  echo "Note that Python 3 or later is not yet supported."
  echo "Use --python=/path/to/python to specify a supported Python."
1284 1285 1286
  exit 1
fi

B
bellard 已提交
1287
if test -z "$target_list" ; then
1288
    target_list="$default_target_list"
1289
else
1290
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
1291
fi
1292 1293 1294 1295
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
P
Paolo Bonzini 已提交
1296 1297 1298 1299 1300 1301 1302
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1303

1304 1305 1306 1307 1308
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
1309
  echo "ERROR: configure was not able to find it"
1310 1311 1312 1313
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
1314 1315 1316 1317 1318 1319 1320
if test -z "$cross_prefix" ; then

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

1326
if compile_prog "" "" ; then
B
bellard 已提交
1327 1328 1329 1330 1331 1332 1333 1334
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
1335
case "$cpu" in
1336 1337 1338 1339 1340 1341 1342
  arm)
    # ARM can be either way; ask the compiler which one we are
    if check_define __ARMEB__; then
      bigendian=yes
    fi
  ;;
  hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1343 1344 1345
    bigendian=yes
  ;;
esac
B
bellard 已提交
1346 1347 1348

fi

1349 1350 1351 1352 1353
##########################################
# NPTL probe

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
1354
#include <sched.h>
P
pbrook 已提交
1355
#include <linux/futex.h>
1356
int main(void) {
1357 1358 1359
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
1360
  return 0;
1361 1362 1363
}
EOF

1364 1365 1366 1367 1368 1369 1370 1371
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
1372 1373
fi

1374 1375 1376
##########################################
# zlib check

A
Alon Levy 已提交
1377 1378
if test "$zlib" != "no" ; then
    cat > $TMPC << EOF
1379 1380 1381
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
A
Alon Levy 已提交
1382 1383 1384 1385 1386 1387 1388 1389 1390
    if compile_prog "" "-lz" ; then
        :
    else
        echo
        echo "Error: zlib check failed"
        echo "Make sure to have the zlib libs and headers installed."
        echo
        exit 1
    fi
1391 1392
fi

1393 1394 1395
##########################################
# xen probe

1396
if test "$xen" != "no" ; then
1397
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1398

1399 1400 1401 1402 1403
  # First we test whether Xen headers and libraries are available.
  # If no, we are done and there is no Xen support.
  # If yes, more tests are run to detect the Xen version.

  # Xen (any)
1404
  cat > $TMPC <<EOF
1405
#include <xenctrl.h>
1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417
int main(void) {
  return 0;
}
EOF
  if ! compile_prog "" "$xen_libs" ; then
    # Xen not found
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no

  # Xen unstable
1418 1419
  elif
      cat > $TMPC <<EOF &&
1420
#include <xenctrl.h>
A
Anthony PERARD 已提交
1421
#include <xenstore.h>
1422 1423 1424 1425 1426
#include <stdint.h>
#include <xen/hvm/hvm_info_table.h>
#if !defined(HVM_MAX_VCPUS)
# error HVM_MAX_VCPUS not defined
#endif
1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438
int main(void) {
  xc_interface *xc;
  xs_daemon_open();
  xc = xc_interface_open(0, 0, 0);
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_gnttab_open(NULL, 0);
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
1439
    then
1440 1441 1442
    xen_ctrl_version=420
    xen=yes

1443 1444
  elif
      cat > $TMPC <<EOF &&
1445 1446 1447 1448 1449 1450 1451
#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
1452 1453
int main(void) {
  xs_daemon_open();
1454
  xc_interface_open(0, 0, 0);
1455 1456
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_gnttab_open(NULL, 0);
1457
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1458 1459
  return 0;
}
1460
EOF
1461
      compile_prog "" "$xen_libs"
1462
    then
1463
    xen_ctrl_version=410
1464
    xen=yes
1465 1466

  # Xen 4.0.0
1467 1468
  elif
      cat > $TMPC <<EOF &&
1469 1470 1471 1472 1473 1474 1475 1476
#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) {
1477 1478 1479
  struct xen_add_to_physmap xatp = {
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
  };
1480 1481 1482 1483
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1484
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1485 1486 1487 1488
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
1489
    then
1490 1491 1492
    xen_ctrl_version=400
    xen=yes

1493
  # Xen 3.4.0
1494 1495
  elif
      cat > $TMPC <<EOF &&
1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510
#include <xenctrl.h>
#include <xs.h>
int main(void) {
  struct xen_add_to_physmap xatp = {
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
  };
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
1511
    then
1512 1513 1514 1515
    xen_ctrl_version=340
    xen=yes

  # Xen 3.3.0
1516 1517
  elif
      cat > $TMPC <<EOF &&
1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528
#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"
1529
    then
1530 1531 1532
    xen_ctrl_version=330
    xen=yes

1533
  # Xen version unsupported
1534
  else
1535
    if test "$xen" = "yes" ; then
1536
      feature_not_found "xen (unsupported version)"
1537 1538
    fi
    xen=no
1539
  fi
1540 1541 1542 1543

  if test "$xen" = yes; then
    libs_softmmu="$xen_libs $libs_softmmu"
  fi
1544 1545
fi

1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564
if test "$xen_pci_passthrough" != "no"; then
  if test "$xen" = "yes" && test "$linux" = "yes" &&
    test "$xen_ctrl_version" -ge 340; then
    xen_pci_passthrough=yes
  else
    if test "$xen_pci_passthrough" = "yes"; then
      echo "ERROR"
      echo "ERROR: User requested feature Xen PCI Passthrough"
      echo "ERROR: but this feature require /sys from Linux"
      if test "$xen_ctrl_version" -lt 340; then
        echo "ERROR: This feature does not work with Xen 3.3"
      fi
      echo "ERROR"
      exit 1;
    fi
    xen_pci_passthrough=no
  fi
fi

P
Paolo Bonzini 已提交
1565
##########################################
1566
# pkg-config probe
P
Paolo Bonzini 已提交
1567

1568 1569
if ! has "$pkg_config_exe"; then
  echo "Error: pkg-config binary '$pkg_config_exe' not found"
1570
  exit 1
P
Paolo Bonzini 已提交
1571 1572
fi

A
Alon Levy 已提交
1573 1574 1575
##########################################
# libtool probe

B
Brad 已提交
1576
if ! has $libtool; then
A
Alon Levy 已提交
1577 1578 1579
    libtool=
fi

1580 1581 1582
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1583
  if has cgcc; then
1584 1585 1586 1587 1588 1589 1590 1591 1592
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
1593 1594 1595
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1596 1597 1598 1599 1600 1601 1602
# 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
1603
  sdlconfig="$pkg_config sdl"
1604
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
1605 1606
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
1607
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1608 1609 1610 1611 1612
else
  if test "$sdl" = "yes" ; then
    feature_not_found "sdl"
  fi
  sdl=no
1613
fi
1614
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
P
Paolo Bonzini 已提交
1615 1616
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
1617

1618
sdl_too_old=no
1619
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
1620
  cat > $TMPC << EOF
B
bellard 已提交
1621 1622 1623 1624
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
1625
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1626 1627 1628 1629 1630
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
1631
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1632 1633 1634 1635 1636 1637 1638
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
1639

1640
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1641
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1642
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1643 1644
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1645
      fi
1646
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1647 1648 1649 1650 1651
	:
      else
        sdl=no
      fi
    fi # static link
1652 1653 1654 1655 1656
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1657
  fi # sdl compile test
1658
fi
B
bellard 已提交
1659

1660
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1661
  cat > $TMPC <<EOF
1662 1663 1664 1665 1666 1667 1668 1669
#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
1670
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1671 1672
    sdl_libs="$sdl_libs -lX11"
  fi
J
Juan Quintela 已提交
1673
  libs_softmmu="$sdl_libs $libs_softmmu"
1674 1675
fi

1676 1677
##########################################
# VNC TLS detection
J
Jes Sorensen 已提交
1678
if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1679
  cat > $TMPC <<EOF
1680 1681 1682
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1683 1684
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1685 1686 1687 1688 1689 1690
  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"
1691
    fi
1692 1693
    vnc_tls=no
  fi
1694 1695
fi

1696 1697
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
1698
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1699
  cat > $TMPC <<EOF
1700 1701 1702 1703
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1704 1705 1706 1707 1708 1709 1710 1711 1712
  # 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"
1713
    fi
1714 1715
    vnc_sasl=no
  fi
1716 1717
fi

1718 1719
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
1720
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738
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 已提交
1739 1740
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
1741
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1742 1743 1744
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1745
#include <stddef.h>
C
Corentin Chary 已提交
1746 1747 1748
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1749
    return png_ptr != 0;
C
Corentin Chary 已提交
1750 1751
}
EOF
1752 1753 1754 1755
  if $pkg_config libpng --modversion >/dev/null 2>&1; then
    vnc_png_cflags=`$pkg_config libpng --cflags 2> /dev/null`
    vnc_png_libs=`$pkg_config libpng --libs 2> /dev/null`
  else
C
Corentin Chary 已提交
1756 1757
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
1758
  fi
C
Corentin Chary 已提交
1759 1760 1761
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
1762
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
C
Corentin Chary 已提交
1763 1764 1765 1766 1767 1768 1769 1770
  else
    if test "$vnc_png" = "yes" ; then
      feature_not_found "vnc-png"
    fi
    vnc_png=no
  fi
fi

1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1782
if compile_prog "" "" ; then
1783 1784 1785
   fnmatch="yes"
fi

1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810
##########################################
# 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 已提交
1811 1812 1813 1814
##########################################
# xfsctl() probe, used for raw-posix
if test "$xfs" != "no" ; then
  cat > $TMPC << EOF
1815
#include <stddef.h>  /* NULL */
C
Christoph Hellwig 已提交
1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832
#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

1833 1834
##########################################
# vde libraries probe
1835
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1836
  vde_libs="-lvdeplug"
1837 1838
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1839 1840 1841
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
1842 1843
    char s[] = "";
    vde_open(s, s, &a);
P
pbrook 已提交
1844 1845
    return 0;
}
1846
EOF
1847
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1848
    vde=yes
1849 1850
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1851 1852 1853 1854 1855
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1856
  fi
1857 1858
fi

1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881
##########################################
# libcap-ng library probe
if test "$cap_ng" != "no" ; then
  cap_libs="-lcap-ng"
  cat > $TMPC << EOF
#include <cap-ng.h>
int main(void)
{
    capng_capability_to_name(CAPNG_EFFECTIVE);
    return 0;
}
EOF
  if compile_prog "" "$cap_libs" ; then
    cap_ng=yes
    libs_tools="$cap_libs $libs_tools"
  else
    if test "$cap_ng" = "yes" ; then
      feature_not_found "cap_ng"
    fi
    cap_ng=no
  fi
fi

1882
##########################################
1883
# Sound support libraries probe
1884

1885 1886 1887 1888 1889 1890 1891 1892 1893 1894
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1895
EOF
1896
    if compile_prog "$cfl" "$lib" ; then
1897 1898 1899 1900 1901 1902 1903 1904 1905 1906
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1907
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1908 1909 1910 1911
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1912
        "return snd_pcm_close((snd_pcm_t *)0);"
1913
    libs_softmmu="-lasound $libs_softmmu"
1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924
    ;;

    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"
1925
    libs_softmmu="$fmod_lib $libs_softmmu"
1926 1927 1928 1929
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1930
    libs_softmmu="-lesd $libs_softmmu"
1931
    audio_pt_int="yes"
1932
    ;;
M
malc 已提交
1933 1934

    pa)
1935 1936 1937
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
    libs_softmmu="-lpulse $libs_softmmu"
1938
    audio_pt_int="yes"
M
malc 已提交
1939 1940
    ;;

1941 1942 1943 1944
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1945 1946
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1947
      audio_win_int="yes"
1948 1949 1950 1951 1952 1953 1954
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1955 1956 1957
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1958 1959 1960 1961 1962
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1963
    *)
M
malc 已提交
1964
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1965 1966 1967 1968 1969 1970 1971
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1972 1973
    esac
done
1974

A
aurel32 已提交
1975 1976 1977
##########################################
# BrlAPI probe

1978
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1979 1980
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1981
#include <brlapi.h>
S
Scott Wood 已提交
1982
#include <stddef.h>
A
aurel32 已提交
1983 1984
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1985
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1986
    brlapi=yes
1987
    libs_softmmu="$brlapi_libs $libs_softmmu"
1988 1989 1990 1991 1992
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1993 1994
  fi
fi
A
aurel32 已提交
1995

B
balrog 已提交
1996 1997
##########################################
# curses probe
S
Stefan Weil 已提交
1998 1999 2000 2001 2002
if test "$mingw32" = "yes" ; then
    curses_list="-lpdcurses"
else
    curses_list="-lncurses -lcurses"
fi
B
balrog 已提交
2003

2004 2005
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
2006 2007
  cat > $TMPC << EOF
#include <curses.h>
2008 2009 2010 2011 2012
int main(void) {
  const char *s = curses_version();
  resize_term(0, 0);
  return s != 0;
}
B
balrog 已提交
2013
EOF
2014 2015
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
2016
      curses_found=yes
2017 2018 2019 2020
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
2021 2022 2023 2024 2025 2026 2027 2028
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
2029
fi
B
balrog 已提交
2030

A
Alexander Graf 已提交
2031 2032 2033
##########################################
# curl probe

2034 2035
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkg_config libcurl"
2036 2037 2038 2039
else
  curlconfig=curl-config
fi

2040
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
2041 2042
  cat > $TMPC << EOF
#include <curl/curl.h>
2043
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
A
Alexander Graf 已提交
2044
EOF
2045 2046
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
2047
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
2048
    curl=yes
2049 2050
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
2051 2052 2053 2054 2055
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
2056 2057 2058
  fi
fi # test "$curl"

B
balrog 已提交
2059 2060
##########################################
# bluez support probe
2061
if test "$bluez" != "no" ; then
2062 2063 2064 2065
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
2066 2067
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2068
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2069
    bluez=yes
2070
    libs_softmmu="$bluez_libs $libs_softmmu"
2071
  else
2072 2073 2074
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
2075 2076
    bluez="no"
  fi
B
balrog 已提交
2077 2078
fi

2079 2080
##########################################
# glib support probe
2081 2082 2083 2084 2085 2086 2087 2088 2089

if test "$mingw32" = yes; then
    # g_poll is required in order to integrate with the glib main loop.
    glib_req_ver=2.20
else
    glib_req_ver=2.12
fi
if $pkg_config --atleast-version=$glib_req_ver gthread-2.0 > /dev/null 2>&1
then
2090 2091
    glib_cflags=`$pkg_config --cflags gthread-2.0 2>/dev/null`
    glib_libs=`$pkg_config --libs gthread-2.0 2>/dev/null`
2092
    LIBS="$glib_libs $LIBS"
2093
    libs_qga="$glib_libs $libs_qga"
2094
else
2095
    echo "glib-$glib_req_ver required to compile QEMU"
2096
    exit 1
2097 2098
fi

2099 2100 2101 2102 2103 2104 2105
##########################################
# libcap probe

if test "$cap" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/capability.h>
2106
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2107 2108 2109 2110 2111 2112 2113 2114
EOF
  if compile_prog "" "-lcap" ; then
    cap=yes
  else
    cap=no
  fi
fi

2115
##########################################
2116
# pthread probe
2117
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2118

C
Christoph Hellwig 已提交
2119
pthread=no
2120
cat > $TMPC << EOF
2121
#include <pthread.h>
2122 2123 2124 2125 2126 2127
static void *f(void *p) { return NULL; }
int main(void) {
  pthread_t thread;
  pthread_create(&thread, 0, f, 0);
  return 0;
}
2128
EOF
2129 2130 2131 2132 2133 2134
if compile_prog "" "" ; then
  pthread=yes
else
  for pthread_lib in $PTHREADLIBS_LIST; do
    if compile_prog "" "$pthread_lib" ; then
      pthread=yes
P
Peter Portante 已提交
2135 2136 2137 2138 2139 2140 2141 2142 2143 2144
      found=no
      for lib_entry in $LIBS; do
        if test "$lib_entry" = "$pthread_lib"; then
          found=yes
          break
        fi
      done
      if test "$found" = "no"; then
        LIBS="$pthread_lib $LIBS"
      fi
2145 2146 2147 2148
      break
    fi
  done
fi
2149

2150
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
2151 2152 2153 2154 2155
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
2156 2157
fi

2158 2159 2160 2161 2162
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
2163
#include <rbd/librbd.h>
2164
int main(void) {
2165 2166
    rados_t cluster;
    rados_create(&cluster, NULL);
2167 2168 2169
    return 0;
}
EOF
2170 2171 2172 2173 2174
  rbd_libs="-lrbd -lrados"
  if compile_prog "" "$rbd_libs" ; then
    rbd=yes
    libs_tools="$rbd_libs $libs_tools"
    libs_softmmu="$rbd_libs $libs_softmmu"
2175 2176 2177 2178 2179 2180 2181 2182
  else
    if test "$rbd" = "yes" ; then
      feature_not_found "rados block device"
    fi
    rbd=no
  fi
fi

2183 2184 2185 2186 2187 2188 2189
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
2190
#include <stddef.h>
2191 2192 2193 2194
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 已提交
2195 2196
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
2197 2198 2199 2200
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
2201
    linux_aio=no
2202 2203 2204
  fi
fi

2205 2206 2207 2208 2209 2210 2211
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
P
Pavel Borzenkov 已提交
2212 2213 2214
#ifdef CONFIG_LIBATTR
#include <attr/xattr.h>
#else
2215
#include <sys/xattr.h>
P
Pavel Borzenkov 已提交
2216
#endif
2217 2218
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
2219 2220 2221
  if compile_prog "" "" ; then
    attr=yes
  # Older distros have <attr/xattr.h>, and need -lattr:
P
Pavel Borzenkov 已提交
2222
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
2223 2224
    attr=yes
    LIBS="-lattr $LIBS"
2225
    libattr=yes
2226 2227 2228 2229 2230 2231 2232 2233
  else
    if test "$attr" = "yes" ; then
      feature_not_found "ATTR"
    fi
    attr=no
  fi
fi

A
aliguori 已提交
2234 2235 2236
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
2237
#include <sys/types.h>
A
aliguori 已提交
2238
#include <sys/uio.h>
B
blueswir1 已提交
2239
#include <unistd.h>
2240
int main(void) { return sizeof(struct iovec); }
A
aliguori 已提交
2241 2242
EOF
iovec=no
2243
if compile_prog "" "" ; then
A
aliguori 已提交
2244 2245 2246
  iovec=yes
fi

2247 2248 2249 2250 2251 2252
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
2253
int main(void) { return preadv(0, 0, 0, 0); }
2254 2255
EOF
preadv=no
2256
if compile_prog "" "" ; then
2257 2258 2259
  preadv=yes
fi

2260 2261
##########################################
# fdt probe
2262
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
2263 2264
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
2265 2266
int main(void) { return 0; }
EOF
2267
  if compile_prog "" "$fdt_libs" ; then
2268
    fdt=yes
2269 2270 2271 2272
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
2273
    fdt_libs=
2274
    fdt=no
2275 2276 2277
  fi
fi

M
Michael Walle 已提交
2278 2279 2280 2281 2282 2283 2284 2285
##########################################
# 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>
2286
int main(void) { return GL_VERSION != 0; }
M
Michael Walle 已提交
2287 2288 2289 2290 2291 2292 2293
EOF
  if compile_prog "" "-lGL" ; then
    opengl=yes
  else
    if test "$opengl" = "yes" ; then
      feature_not_found "opengl"
    fi
2294
    opengl_libs=
M
Michael Walle 已提交
2295 2296 2297 2298
    opengl=no
  fi
fi

2299 2300 2301 2302 2303 2304
#
# 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
2305
cat > $TMPC << EOF
2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317
#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
2318
if compile_prog "" "" ; then
2319
  atfile=yes
2320 2321
fi

A
aurel32 已提交
2322
# Check for inotify functions when we are building linux-user
2323 2324 2325 2326 2327
# 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
2328
cat > $TMPC << EOF
2329 2330 2331 2332 2333 2334
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
2335
	return inotify_init();
2336 2337
}
EOF
2338
if compile_prog "" "" ; then
2339
  inotify=yes
2340 2341
fi

2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356
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 已提交
2357 2358 2359 2360 2361 2362
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>
2363
#include <sys/stat.h>
R
Riku Voipio 已提交
2364 2365 2366 2367 2368 2369 2370 2371

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
2372
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2373 2374 2375
  utimens=yes
fi

R
Riku Voipio 已提交
2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388
# 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
2389
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2390 2391 2392
  pipe2=yes
fi

K
Kevin Wolf 已提交
2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408
# 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

2409 2410 2411 2412 2413 2414 2415 2416 2417
# 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)
{
2418
    int len, fd = 0;
2419 2420 2421 2422 2423
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
2424
if compile_prog "" "" ; then
2425 2426 2427
  splice=yes
fi

M
Marcelo Tosatti 已提交
2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441
##########################################
# signalfd probe
signalfd="no"
cat > $TMPC << EOF
#include <unistd.h>
#include <sys/syscall.h>
#include <signal.h>
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
EOF

if compile_prog "" "" ; then
  signalfd=yes
fi

R
Riku Voipio 已提交
2442 2443 2444 2445 2446 2447 2448
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

int main(void)
{
2449
    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
R
Riku Voipio 已提交
2450 2451 2452 2453 2454 2455
}
EOF
if compile_prog "" "" ; then
  eventfd=yes
fi

2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2467
if compile_prog "" "" ; then
2468 2469 2470
  fallocate=yes
fi

2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481
# 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
2482
if compile_prog "" "" ; then
2483 2484 2485
  sync_file_range=yes
fi

2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498
# 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
2499
if compile_prog "" "" ; then
2500 2501 2502
  fiemap=yes
fi

2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2514
if compile_prog "" "" ; then
2515 2516 2517
  dup3=yes
fi

2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528
# check for epoll support
epoll=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
    epoll_create(0);
    return 0;
}
EOF
2529
if compile_prog "" "" ; then
2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540
  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)
{
2541 2542 2543 2544 2545 2546 2547 2548
    /* 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.)
     */
2549
    return (int)(uintptr_t)&epoll_create1;
2550 2551
}
EOF
2552
if compile_prog "" "" ; then
2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565
  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
2566
if compile_prog "" "" ; then
2567 2568 2569
  epoll_pwait=yes
fi

2570
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2571
if test "$docs" != "no" ; then
2572
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2573
    docs=yes
2574
  else
J
Juan Quintela 已提交
2575 2576
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2577
    fi
J
Juan Quintela 已提交
2578
    docs=no
2579
  fi
2580 2581
fi

S
Stefan Weil 已提交
2582
# Search for bswap_32 function
2583 2584 2585 2586 2587
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2588
if compile_prog "" "" ; then
2589 2590 2591
  byteswap_h=yes
fi

S
Stefan Weil 已提交
2592
# Search for bswap_32 function
2593 2594 2595 2596 2597 2598 2599
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
2600
if compile_prog "" "" ; then
2601 2602 2603
  bswap_h=yes
fi

R
Ronnie Sahlberg 已提交
2604 2605
##########################################
# Do we have libiscsi
2606 2607
# We check for iscsi_unmap_sync() to make sure we have a
# recent enough version of libiscsi.
R
Ronnie Sahlberg 已提交
2608 2609
if test "$libiscsi" != "no" ; then
  cat > $TMPC << EOF
2610
#include <stdio.h>
R
Ronnie Sahlberg 已提交
2611
#include <iscsi/iscsi.h>
2612
int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; }
R
Ronnie Sahlberg 已提交
2613
EOF
2614
  if compile_prog "" "-liscsi" ; then
R
Ronnie Sahlberg 已提交
2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625
    libiscsi="yes"
    LIBS="$LIBS -liscsi"
  else
    if test "$libiscsi" = "yes" ; then
      feature_not_found "libiscsi"
    fi
    libiscsi="no"
  fi
fi


A
aliguori 已提交
2626 2627 2628 2629 2630
##########################################
# Do we need librt
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
2631
int main(void) { return clock_gettime(CLOCK_REALTIME, NULL); }
A
aliguori 已提交
2632 2633
EOF

2634
if compile_prog "" "" ; then
2635
  :
2636
elif compile_prog "" "-lrt" ; then
2637
  LIBS="-lrt $LIBS"
A
aliguori 已提交
2638 2639
fi

2640
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2641
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2642 2643 2644
    libs_softmmu="-lutil $libs_softmmu"
fi

2645
##########################################
2646 2647 2648 2649 2650 2651
# 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 已提交
2652 2653
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
A
Alon Levy 已提交
2654
  if $pkg_config --atleast-version=0.8.2 spice-server >/dev/null 2>&1 && \
2655
     $pkg_config --atleast-version=0.8.1 spice-protocol > /dev/null 2>&1 && \
2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667
     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 已提交
2668 2669 2670 2671 2672 2673
# 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
2674 2675 2676 2677
      cat > $TMPC << EOF
#include <pk11pub.h>
int main(void) { PK11_FreeSlot(0); return 0; }
EOF
2678
        smartcard_includes="-I\$(SRC_PATH)/libcacard"
2679 2680
        libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
        libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
2681 2682 2683 2684 2685 2686 2687 2688
        test_cflags="$libcacard_cflags"
        # The header files in nss < 3.13.3 have a bug which causes them to
        # emit a warning. If we're going to compile QEMU with -Werror, then
        # test that the headers don't have this bug. Otherwise we would pass
        # the configure test but fail to compile QEMU later.
        if test "$werror" = "yes"; then
            test_cflags="-Werror $test_cflags"
        fi
2689
        if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \
2690
          compile_prog "$test_cflags" "$libcacard_libs"; then
R
Robert Relyea 已提交
2691
            smartcard_nss="yes"
2692 2693
            QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
            QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
P
Paul Brook 已提交
2694
            libs_softmmu="$libcacard_libs $libs_softmmu"
R
Robert Relyea 已提交
2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706
        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

2707 2708
# check for usbredirparser for usb network redirection support
if test "$usb_redir" != "no" ; then
2709
    if $pkg_config --atleast-version=0.3.4 libusbredirparser >/dev/null 2>&1 ; then
2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722
        usb_redir="yes"
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser 2>/dev/null)
        usb_redir_libs=$($pkg_config --libs libusbredirparser 2>/dev/null)
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
        LIBS="$LIBS $usb_redir_libs"
    else
        if test "$usb_redir" = "yes"; then
            feature_not_found "usb-redir"
        fi
        usb_redir="no"
    fi
fi

2723 2724
##########################################

B
Blue Swirl 已提交
2725 2726 2727 2728 2729 2730
##########################################
# check if we have fdatasync

fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
2731 2732 2733 2734
int main(void) {
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
return fdatasync(0);
#else
2735
#error Not supported
2736 2737
#endif
}
B
Blue Swirl 已提交
2738 2739 2740 2741 2742
EOF
if compile_prog "" "" ; then
    fdatasync=yes
fi

A
Andreas Färber 已提交
2743 2744 2745 2746 2747 2748 2749
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2750
#include <stddef.h>
A
Andreas Färber 已提交
2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762
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 已提交
2763
#include <stddef.h>
A
Andreas Färber 已提交
2764 2765 2766 2767 2768 2769
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2770 2771 2772
##########################################
# check if trace backend exists

2773
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
2774 2775 2776 2777 2778 2779 2780 2781
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2782 2783 2784 2785 2786 2787 2788 2789 2790
##########################################
# 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
2791
    LIBS="-lust -lurcu-bp $LIBS"
2792
    libs_qga="-lust -lurcu-bp $libs_qga"
2793 2794 2795 2796 2797 2798 2799
  else
    echo
    echo "Error: Trace backend 'ust' missing libust header files"
    echo
    exit 1
  fi
fi
2800 2801 2802 2803 2804 2805 2806 2807 2808 2809

##########################################
# 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
2810 2811 2812 2813
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
2814 2815
fi

W
Wolfgang Mauerer 已提交
2816 2817 2818 2819
##########################################
# __sync_fetch_and_and requires at least -march=i486. Many toolchains
# use i686 as default anyway, but for those that don't, an explicit
# specification is necessary
2820
if test "$vhost_net" = "yes" && test "$cpu" = "i386"; then
W
Wolfgang Mauerer 已提交
2821
  cat > $TMPC << EOF
2822
static int sfaa(int *ptr)
W
Wolfgang Mauerer 已提交
2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834
{
  return __sync_fetch_and_and(ptr, 0);
}

int main(int argc, char **argv)
{
  int val = 42;
  sfaa(&val);
  return val;
}
EOF
  if ! compile_prog "" "" ; then
2835
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
W
Wolfgang Mauerer 已提交
2836 2837 2838
  fi
fi

2839
##########################################
2840
# check and set a backend for coroutine
2841

2842 2843 2844 2845 2846
# default is ucontext, but always fallback to gthread
# windows autodetected by make
if test "$coroutine" = "" -o "$coroutine" = "ucontext"; then
  if test "$darwin" != "yes"; then
    cat > $TMPC << EOF
2847
#include <ucontext.h>
2848 2849 2850
#ifdef __stub_makecontext
#error Ignoring glibc stub makecontext which will always fail
#endif
2851
int main(void) { makecontext(0, 0, 0); return 0; }
2852
EOF
2853 2854 2855 2856 2857 2858 2859
    if compile_prog "" "" ; then
        coroutine_backend=ucontext
    else
	coroutine_backend=gthread
    fi
  else
    echo "Silently falling back into gthread backend under darwin"
2860
  fi
2861 2862 2863 2864
elif test "$coroutine" = "gthread" ; then
  coroutine_backend=gthread
elif test "$coroutine" = "windows" ; then
  coroutine_backend=windows
2865 2866
elif test "$coroutine" = "sigaltstack" ; then
  coroutine_backend=sigaltstack
2867 2868 2869 2870 2871
else
  echo
  echo "Error: unknown coroutine backend $coroutine"
  echo
  exit 1
2872 2873
fi

2874 2875 2876
##########################################
# check if we have open_by_handle_at

S
Stefan Weil 已提交
2877
open_by_handle_at=no
2878 2879
cat > $TMPC << EOF
#include <fcntl.h>
2880 2881 2882
#if !defined(AT_EMPTY_PATH)
# error missing definition
#else
2883
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
2884
#endif
2885 2886 2887 2888 2889
EOF
if compile_prog "" "" ; then
    open_by_handle_at=yes
fi

2890 2891 2892 2893 2894 2895 2896
########################################
# check if we have linux/magic.h

linux_magic_h=no
cat > $TMPC << EOF
#include <linux/magic.h>
int main(void) {
2897
  return 0;
2898 2899 2900 2901 2902 2903
}
EOF
if compile_prog "" "" ; then
    linux_magic_h=yes
fi

2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920
########################################
# check whether we can disable the -Wunused-but-set-variable
# option with a pragma (this is needed to silence a warning in
# some versions of the valgrind VALGRIND_STACK_DEREGISTER macro.)
# This test has to be compiled with -Werror as otherwise an
# unknown pragma is only a warning.
pragma_disable_unused_but_set=no
cat > $TMPC << EOF
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
int main(void) {
    return 0;
}
EOF
if compile_prog "-Werror" "" ; then
    pragma_disable_unused_but_set=yes
fi

2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934
########################################
# check if we have valgrind/valgrind.h

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

2935 2936 2937 2938 2939 2940 2941
########################################
# check if environ is declared

has_environ=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) {
2942
    environ = 0;
2943 2944 2945 2946 2947 2948 2949
    return 0;
}
EOF
if compile_prog "" "" ; then
    has_environ=yes
fi

2950
##########################################
2951 2952 2953 2954
# End of CC checks
# After here, no more $cc or $ld runs

if test "$debug" = "no" ; then
2955
  CFLAGS="-O2 -D_FORTIFY_SOURCE=2 $CFLAGS"
2956
fi
J
Juan Quintela 已提交
2957

2958 2959 2960 2961 2962 2963 2964 2965 2966 2967
# 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

2968 2969 2970 2971 2972
# Now we've finished running tests it's OK to add -Werror to the compiler flags
if test "$werror" = "yes"; then
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
fi

2973 2974
if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2975
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2976 2977 2978
    fi
fi

2979 2980 2981 2982 2983 2984 2985
# test if pod2man has --utf8 option
if pod2man --help | grep -q utf8; then
    POD2MAN="pod2man --utf8"
else
    POD2MAN="pod2man"
fi

2986 2987 2988 2989 2990 2991 2992 2993 2994
# 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

2995
qemu_confdir=$sysconfdir$confsuffix
2996
qemu_datadir=$datadir$confsuffix
2997

2998 2999 3000
tools=
if test "$softmmu" = yes ; then
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
3001
  if test "$virtfs" != no ; then
3002 3003 3004 3005 3006
    if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
      virtfs=yes
      tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
    else
      if test "$virtfs" = yes; then
3007 3008
        echo "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
        exit 1
3009
      fi
3010
      virtfs=no
3011
    fi
3012
  fi
3013 3014
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
      tools="qemu-nbd\$(EXESUF) $tools"
3015
    if [ "$guest_agent" = "yes" ]; then
M
Michael Roth 已提交
3016
      tools="qemu-ga\$(EXESUF) $tools"
3017
    fi
3018 3019
  fi
fi
3020 3021 3022
if test "$smartcard_nss" = "yes" ; then
  tools="vscclient\$(EXESUF) $tools"
fi
3023 3024 3025 3026 3027 3028 3029 3030

# 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
3031
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
3032 3033
  roms="$roms spapr-rtas"
fi
3034

B
bellard 已提交
3035
echo "Install prefix    $prefix"
3036
echo "BIOS directory    `eval echo $qemu_datadir`"
3037
echo "binary directory  `eval echo $bindir`"
A
Alon Levy 已提交
3038
echo "library directory `eval echo $libdir`"
3039
echo "include directory `eval echo $includedir`"
3040
echo "config directory  `eval echo $sysconfdir`"
B
bellard 已提交
3041
if test "$mingw32" = "no" ; then
3042
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
3043
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
3044
fi
3045
echo "Source path       $source_path"
B
bellard 已提交
3046
echo "C compiler        $cc"
B
bellard 已提交
3047
echo "Host C compiler   $host_cc"
3048
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
3049
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
3050
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
3051
echo "make              $make"
3052
echo "install           $install"
B
Blue Swirl 已提交
3053
echo "python            $python"
3054 3055 3056
if test "$slirp" = "yes" ; then
    echo "smbd              $smbd"
fi
B
bellard 已提交
3057
echo "host CPU          $cpu"
B
bellard 已提交
3058
echo "host big endian   $bigendian"
3059
echo "target list       $target_list"
3060
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
3061
echo "gprof enabled     $gprof"
3062
echo "sparse enabled    $sparse"
3063
echo "strip binaries    $strip_opt"
3064
echo "profiler          $profiler"
B
bellard 已提交
3065
echo "static build      $static"
3066
echo "-Werror enabled   $werror"
3067 3068 3069
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
3070
echo "SDL support       $sdl"
B
balrog 已提交
3071
echo "curses support    $curses"
A
Alexander Graf 已提交
3072
echo "curl support      $curl"
B
bellard 已提交
3073
echo "mingw32 support   $mingw32"
M
malc 已提交
3074 3075
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
3076
echo "Block whitelist   $block_drv_whitelist"
3077
echo "Mixer emulation   $mixemu"
3078
echo "VirtFS support    $virtfs"
J
Jes Sorensen 已提交
3079 3080 3081 3082 3083 3084 3085
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"
fi
3086 3087 3088
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
3089
echo "xen support       $xen"
A
aurel32 已提交
3090
echo "brlapi support    $brlapi"
3091
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
3092
echo "Documentation     $docs"
3093 3094
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
3095
echo "NPTL support      $nptl"
P
Paul Brook 已提交
3096
echo "GUEST_BASE        $guest_base"
3097
echo "PIE               $pie"
3098
echo "vde support       $vde"
3099
echo "Linux AIO support $linux_aio"
3100
echo "ATTR/XATTR support $attr"
T
ths 已提交
3101
echo "Install blobs     $blobs"
3102
echo "KVM support       $kvm"
3103
echo "TCG interpreter   $tcg_interpreter"
3104
echo "fdt support       $fdt"
3105
echo "preadv support    $preadv"
B
Blue Swirl 已提交
3106
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
3107 3108
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
3109
echo "uuid support      $uuid"
3110
echo "libcap-ng support $cap_ng"
M
Michael S. Tsirkin 已提交
3111
echo "vhost-net support $vhost_net"
3112
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
3113
echo "Trace output file $trace_file-<pid>"
3114
echo "spice support     $spice"
3115
echo "rbd support       $rbd"
C
Christoph Hellwig 已提交
3116
echo "xfsctl support    $xfs"
R
Robert Relyea 已提交
3117
echo "nss used          $smartcard_nss"
3118
echo "usb net redir     $usb_redir"
M
Michael Walle 已提交
3119
echo "OpenGL support    $opengl"
R
Ronnie Sahlberg 已提交
3120
echo "libiscsi support  $libiscsi"
3121
echo "build guest agent $guest_agent"
3122
echo "coroutine backend $coroutine_backend"
B
bellard 已提交
3123

3124
if test "$sdl_too_old" = "yes"; then
B
bellard 已提交
3125
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
3126
fi
B
bellard 已提交
3127

3128
config_host_mak="config-host.mak"
3129
config_host_ld="config-host.ld"
3130 3131 3132 3133 3134 3135

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

3136
echo all: >> $config_host_mak
3137 3138
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
A
Alon Levy 已提交
3139
echo "libdir=$libdir" >> $config_host_mak
3140
echo "includedir=$includedir" >> $config_host_mak
3141 3142
echo "mandir=$mandir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
3143
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
3144 3145
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
3146
echo "libexecdir=\${prefix}/libexec" >> $config_host_mak
C
Corey Bryant 已提交
3147
echo "CONFIG_QEMU_HELPERDIR=\"$prefix/libexec\"" >> $config_host_mak
3148

3149
echo "ARCH=$ARCH" >> $config_host_mak
3150
if test "$debug_tcg" = "yes" ; then
3151
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
3152
fi
P
Paul Brook 已提交
3153
if test "$debug" = "yes" ; then
3154
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
3155
fi
3156
if test "$strip_opt" = "yes" ; then
3157
  echo "STRIP=${strip}" >> $config_host_mak
3158
fi
B
bellard 已提交
3159
if test "$bigendian" = "yes" ; then
3160
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
3161
fi
B
bellard 已提交
3162
if test "$mingw32" = "yes" ; then
3163
  echo "CONFIG_WIN32=y" >> $config_host_mak
3164 3165 3166 3167 3168 3169 3170 3171 3172
  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
3173
else
J
Juan Quintela 已提交
3174
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
3175 3176 3177 3178
fi

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

3181
if test "$darwin" = "yes" ; then
3182
  echo "CONFIG_DARWIN=y" >> $config_host_mak
3183
fi
M
malc 已提交
3184 3185

if test "$aix" = "yes" ; then
3186
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
3187 3188
fi

B
bellard 已提交
3189
if test "$solaris" = "yes" ; then
3190
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
3191
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
3192
  if test "$needs_libsunmath" = "yes" ; then
3193
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
3194
  fi
B
bellard 已提交
3195
fi
3196 3197 3198
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
3199
if test "$static" = "yes" ; then
3200
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
3201
fi
3202
if test "$profiler" = "yes" ; then
3203
  echo "CONFIG_PROFILER=y" >> $config_host_mak
3204
fi
B
bellard 已提交
3205
if test "$slirp" = "yes" ; then
3206
  echo "CONFIG_SLIRP=y" >> $config_host_mak
3207
  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
3208
  QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
B
bellard 已提交
3209
fi
3210
if test "$vde" = "yes" ; then
3211
  echo "CONFIG_VDE=y" >> $config_host_mak
3212
fi
3213 3214 3215
if test "$cap_ng" = "yes" ; then
  echo "CONFIG_LIBCAP=y" >> $config_host_mak
fi
M
malc 已提交
3216
for card in $audio_card_list; do
3217
    def=CONFIG_`echo $card | LC_ALL=C tr '[a-z]' '[A-Z]'`
3218
    echo "$def=y" >> $config_host_mak
M
malc 已提交
3219
done
3220
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
3221
for drv in $audio_drv_list; do
3222
    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
3223
    echo "$def=y" >> $config_host_mak
M
malc 已提交
3224
    if test "$drv" = "fmod"; then
3225
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
3226 3227
    fi
done
3228 3229 3230
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
3231 3232 3233
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
3234
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
3235
if test "$mixemu" = "yes" ; then
3236
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
3237
fi
J
Jes Sorensen 已提交
3238 3239 3240
if test "$vnc" = "yes" ; then
  echo "CONFIG_VNC=y" >> $config_host_mak
fi
3241
if test "$vnc_tls" = "yes" ; then
3242
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
3243
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
3244
fi
3245
if test "$vnc_sasl" = "yes" ; then
3246
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
3247
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
3248
fi
J
Jes Sorensen 已提交
3249
if test "$vnc_jpeg" = "yes" ; then
3250 3251 3252
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
fi
J
Jes Sorensen 已提交
3253
if test "$vnc_png" = "yes" ; then
C
Corentin Chary 已提交
3254 3255 3256
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
fi
3257
if test "$fnmatch" = "yes" ; then
3258
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
3259
fi
3260 3261 3262
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
C
Christoph Hellwig 已提交
3263 3264 3265
if test "$xfs" = "yes" ; then
  echo "CONFIG_XFS=y" >> $config_host_mak
fi
3266
qemu_version=`head $source_path/VERSION`
3267
echo "VERSION=$qemu_version" >>$config_host_mak
3268
echo "PKGVERSION=$pkgversion" >>$config_host_mak
3269 3270
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
3271
if [ "$docs" = "yes" ] ; then
3272
  echo "BUILD_DOCS=yes" >> $config_host_mak
3273
fi
3274
if test "$sdl" = "yes" ; then
3275
  echo "CONFIG_SDL=y" >> $config_host_mak
3276
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
3277 3278
fi
if test "$cocoa" = "yes" ; then
3279
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
3280 3281
fi
if test "$curses" = "yes" ; then
3282
  echo "CONFIG_CURSES=y" >> $config_host_mak
3283
fi
3284
if test "$atfile" = "yes" ; then
3285
  echo "CONFIG_ATFILE=y" >> $config_host_mak
3286
fi
R
Riku Voipio 已提交
3287
if test "$utimens" = "yes" ; then
3288
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
3289
fi
R
Riku Voipio 已提交
3290
if test "$pipe2" = "yes" ; then
3291
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
3292
fi
K
Kevin Wolf 已提交
3293 3294 3295
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
3296
if test "$splice" = "yes" ; then
3297
  echo "CONFIG_SPLICE=y" >> $config_host_mak
3298
fi
R
Riku Voipio 已提交
3299 3300 3301
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
3302 3303 3304
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
3305 3306 3307
if test "$sync_file_range" = "yes" ; then
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
3308 3309 3310
if test "$fiemap" = "yes" ; then
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
fi
3311 3312 3313
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
3314 3315 3316 3317 3318 3319 3320 3321 3322
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
3323
if test "$inotify" = "yes" ; then
3324
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
3325
fi
3326 3327 3328
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
3329 3330 3331 3332 3333 3334
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 已提交
3335
if test "$curl" = "yes" ; then
3336
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
3337
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
3338
fi
A
aurel32 已提交
3339
if test "$brlapi" = "yes" ; then
3340
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
3341
fi
B
balrog 已提交
3342
if test "$bluez" = "yes" ; then
3343
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
3344
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
3345
fi
3346
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
3347
if test "$xen" = "yes" ; then
J
Jan Kiszka 已提交
3348
  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
3349
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
3350
fi
3351 3352 3353
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
3354 3355 3356
if test "$attr" = "yes" ; then
  echo "CONFIG_ATTR=y" >> $config_host_mak
fi
3357 3358 3359
if test "$libattr" = "yes" ; then
  echo "CONFIG_LIBATTR=y" >> $config_host_mak
fi
3360 3361
if test "$virtfs" = "yes" ; then
  echo "CONFIG_VIRTFS=y" >> $config_host_mak
3362
fi
T
ths 已提交
3363
if test "$blobs" = "yes" ; then
3364
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
3365
fi
A
aliguori 已提交
3366
if test "$iovec" = "yes" ; then
3367
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
3368
fi
3369
if test "$preadv" = "yes" ; then
3370
  echo "CONFIG_PREADV=y" >> $config_host_mak
3371
fi
3372
if test "$fdt" = "yes" ; then
3373
  echo "CONFIG_FDT=y" >> $config_host_mak
3374
fi
M
Marcelo Tosatti 已提交
3375 3376 3377
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
3378 3379 3380
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
3381 3382 3383
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
3384 3385 3386 3387 3388 3389
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
3390

3391 3392 3393
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi
A
Alon Levy 已提交
3394 3395 3396 3397

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

R
Robert Relyea 已提交
3399 3400
if test "$smartcard_nss" = "yes" ; then
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
P
Paul Brook 已提交
3401 3402
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
R
Robert Relyea 已提交
3403 3404
fi

3405 3406 3407 3408
if test "$usb_redir" = "yes" ; then
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
fi

M
Michael Walle 已提交
3409 3410 3411 3412
if test "$opengl" = "yes" ; then
  echo "CONFIG_OPENGL=y" >> $config_host_mak
fi

R
Ronnie Sahlberg 已提交
3413 3414 3415 3416
if test "$libiscsi" = "yes" ; then
  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
fi

3417
# XXX: suppress that
B
bellard 已提交
3418
if [ "$bsd" = "yes" ] ; then
3419
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
3420 3421
fi

3422
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3423

3424 3425 3426
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
3427 3428
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
3429 3430
fi

3431
if test "$coroutine_backend" = "ucontext" ; then
3432
  echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak
3433 3434
elif test "$coroutine_backend" = "sigaltstack" ; then
  echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak
3435
fi
3436

3437 3438 3439 3440
if test "$open_by_handle_at" = "yes" ; then
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
fi

3441 3442
if test "$linux_magic_h" = "yes" ; then
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
3443 3444
fi

3445 3446 3447 3448
if test "$pragma_disable_unused_but_set" = "yes" ; then
  echo "CONFIG_PRAGMA_DISABLE_UNUSED_BUT_SET=y" >> $config_host_mak
fi

3449 3450 3451 3452
if test "$valgrind_h" = "yes" ; then
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
fi

3453 3454
if test "$has_environ" = "yes" ; then
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
3455 3456
fi

3457 3458 3459
# USB host support
case "$usb" in
linux)
3460
  echo "HOST_USB=linux" >> $config_host_mak
3461 3462
;;
bsd)
3463
  echo "HOST_USB=bsd" >> $config_host_mak
3464 3465
;;
*)
3466
  echo "HOST_USB=stub" >> $config_host_mak
3467 3468 3469
;;
esac

3470 3471
# use default implementation for tracing backend-specific routines
trace_default=yes
3472
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3473 3474
if test "$trace_backend" = "nop"; then
  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
3475
fi
P
Prerna Saxena 已提交
3476
if test "$trace_backend" = "simple"; then
3477
  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
3478
  trace_default=no
3479
  # Set the appropriate trace file.
3480
  trace_file="\"$trace_file-\" FMT_pid"
P
Prerna Saxena 已提交
3481
fi
3482 3483
if test "$trace_backend" = "stderr"; then
  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
3484
  trace_default=no
3485 3486 3487 3488 3489 3490 3491 3492 3493
fi
if test "$trace_backend" = "ust"; then
  echo "CONFIG_TRACE_UST=y" >> $config_host_mak
fi
if test "$trace_backend" = "dtrace"; then
  echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
  if test "$trace_backend_stap" = "yes" ; then
    echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
  fi
3494
fi
P
Prerna Saxena 已提交
3495
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
3496 3497 3498
if test "$trace_default" = "yes"; then
  echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
3499

3500 3501
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
3502 3503
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
3504 3505 3506
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
B
Blue Swirl 已提交
3507
echo "PYTHON=$python" >> $config_host_mak
3508
echo "CC=$cc" >> $config_host_mak
P
Paolo Bonzini 已提交
3509
echo "CC_I386=$cc_i386" >> $config_host_mak
3510 3511 3512 3513
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
3514
echo "WINDRES=$windres" >> $config_host_mak
A
Alon Levy 已提交
3515
echo "LIBTOOL=$libtool" >> $config_host_mak
3516
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
3517
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3518
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
3519 3520 3521 3522 3523
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 已提交
3524
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
3525
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3526 3527
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
3528
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
3529
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3530
echo "EXESUF=$EXESUF" >> $config_host_mak
3531
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
3532
echo "POD2MAN=$POD2MAN" >> $config_host_mak
3533

3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545
# 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 已提交
3546
for d in libdis libdis-user; do
3547
    symlink "$source_path/Makefile.dis" "$d/Makefile"
B
Blue Swirl 已提交
3548 3549 3550
    echo > $d/config.mak
done

3551 3552
# use included Linux headers
if test "$linux" = "yes" ; then
3553
  mkdir -p linux-headers
3554 3555
  case "$cpu" in
  i386|x86_64)
3556
    linux_arch=x86
3557 3558
    ;;
  ppcemb|ppc|ppc64)
3559
    linux_arch=powerpc
3560 3561
    ;;
  s390x)
3562 3563 3564 3565 3566
    linux_arch=s390
    ;;
  *)
    # For most CPUs the kernel architecture name and QEMU CPU name match.
    linux_arch="$cpu"
3567 3568
    ;;
  esac
3569 3570 3571 3572
    # For non-KVM architectures we will not have asm headers
    if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
      symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
    fi
3573 3574
fi

3575
for target in $target_list; do
3576
target_dir="$target"
3577
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
3578
target_arch2=`echo $target | cut -d '-' -f 1`
3579
target_bigendian="no"
3580

3581
case "$target_arch2" in
3582
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
3583 3584 3585
  target_bigendian=yes
  ;;
esac
3586
target_softmmu="no"
B
bellard 已提交
3587
target_user_only="no"
3588
target_linux_user="no"
B
blueswir1 已提交
3589
target_bsd_user="no"
P
pbrook 已提交
3590
case "$target" in
B
Blue Swirl 已提交
3591
  ${target_arch2}-softmmu)
P
pbrook 已提交
3592 3593
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
3594
  ${target_arch2}-linux-user)
3595 3596 3597 3598
    if test "$linux" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Linux host"
      exit 1
    fi
P
pbrook 已提交
3599 3600 3601
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
3602
  ${target_arch2}-bsd-user)
B
Blue Swirl 已提交
3603
    if test "$bsd" != "yes" ; then
3604 3605 3606
      echo "ERROR: Target '$target' is only available on a BSD host"
      exit 1
    fi
B
blueswir1 已提交
3607 3608 3609
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
3610 3611 3612 3613 3614
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
3615

3616
mkdir -p $target_dir
3617
echo "# Automatically generated by configure - do not modify" > $config_target_mak
B
bellard 已提交
3618

P
pbrook 已提交
3619
bflt="no"
3620
target_nptl="no"
B
Blue Swirl 已提交
3621
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
pbrook 已提交
3622
gdb_xml_files=""
3623 3624 3625 3626
target_short_alignment=2
target_int_alignment=4
target_long_alignment=4
target_llong_alignment=8
3627
target_libs_softmmu=
A
aliguori 已提交
3628

3629
TARGET_ARCH="$target_arch2"
3630
TARGET_BASE_ARCH=""
3631
TARGET_ABI_DIR=""
3632

B
Blue Swirl 已提交
3633
case "$target_arch2" in
A
aurel32 已提交
3634
  i386)
3635
    target_phys_bits=64
A
aurel32 已提交
3636 3637
  ;;
  x86_64)
3638
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
3639
    target_phys_bits=64
3640
    target_long_alignment=8
A
aurel32 已提交
3641 3642
  ;;
  alpha)
P
Paul Brook 已提交
3643
    target_phys_bits=64
3644
    target_long_alignment=8
R
Richard Henderson 已提交
3645
    target_nptl="yes"
A
aurel32 已提交
3646 3647
  ;;
  arm|armeb)
J
Juan Quintela 已提交
3648
    TARGET_ARCH=arm
A
aurel32 已提交
3649
    bflt="yes"
3650
    target_nptl="yes"
P
pbrook 已提交
3651
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
3652
    target_phys_bits=64
3653
    target_llong_alignment=4
G
Grant Likely 已提交
3654
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3655 3656
  ;;
  cris)
E
edgar_igl 已提交
3657
    target_nptl="yes"
P
Paul Brook 已提交
3658
    target_phys_bits=32
A
aurel32 已提交
3659
  ;;
M
Michael Walle 已提交
3660 3661
  lm32)
    target_phys_bits=32
3662
    target_libs_softmmu="$opengl_libs"
M
Michael Walle 已提交
3663
  ;;
A
aurel32 已提交
3664 3665
  m68k)
    bflt="yes"
P
pbrook 已提交
3666
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
3667
    target_phys_bits=32
3668 3669 3670
    target_int_alignment=2
    target_long_alignment=2
    target_llong_alignment=2
A
aurel32 已提交
3671
  ;;
3672 3673
  microblaze|microblazeel)
    TARGET_ARCH=microblaze
3674 3675 3676
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
3677
    target_libs_softmmu="$fdt_libs"
3678
  ;;
J
Juan Quintela 已提交
3679
  mips|mipsel)
J
Juan Quintela 已提交
3680
    TARGET_ARCH=mips
3681
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
3682
    target_nptl="yes"
P
Paul Brook 已提交
3683
    target_phys_bits=64
A
aurel32 已提交
3684 3685
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
3686
    TARGET_ARCH=mipsn32
3687
    TARGET_BASE_ARCH=mips
3688
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
P
Paul Brook 已提交
3689
    target_phys_bits=64
A
aurel32 已提交
3690 3691
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
3692
    TARGET_ARCH=mips64
3693
    TARGET_BASE_ARCH=mips
3694
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
P
Paul Brook 已提交
3695
    target_phys_bits=64
3696
    target_long_alignment=8
A
aurel32 已提交
3697
  ;;
3698 3699 3700 3701 3702
  or32)
    TARGET_ARCH=openrisc
    TARGET_BASE_ARCH=openrisc
    target_phys_bits=32
  ;;
A
aurel32 已提交
3703
  ppc)
3704
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3705
    target_phys_bits=64
3706
    target_nptl="yes"
3707
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3708 3709
  ;;
  ppcemb)
3710
    TARGET_BASE_ARCH=ppc
3711
    TARGET_ABI_DIR=ppc
3712
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3713
    target_phys_bits=64
3714
    target_nptl="yes"
3715
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3716 3717
  ;;
  ppc64)
3718
    TARGET_BASE_ARCH=ppc
3719
    TARGET_ABI_DIR=ppc
3720
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3721
    target_phys_bits=64
3722
    target_long_alignment=8
3723
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3724 3725
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
3726
    TARGET_ARCH=ppc64
3727
    TARGET_BASE_ARCH=ppc
3728
    TARGET_ABI_DIR=ppc
3729
    echo "TARGET_ABI32=y" >> $config_target_mak
3730
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3731
    target_phys_bits=64
3732
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3733 3734
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
3735
    TARGET_ARCH=sh4
A
aurel32 已提交
3736
    bflt="yes"
A
aurel32 已提交
3737
    target_nptl="yes"
P
Paul Brook 已提交
3738
    target_phys_bits=32
A
aurel32 已提交
3739 3740
  ;;
  sparc)
P
Paul Brook 已提交
3741
    target_phys_bits=64
A
aurel32 已提交
3742 3743
  ;;
  sparc64)
3744
    TARGET_BASE_ARCH=sparc
P
Paul Brook 已提交
3745
    target_phys_bits=64
3746
    target_long_alignment=8
A
aurel32 已提交
3747 3748
  ;;
  sparc32plus)
J
Juan Quintela 已提交
3749
    TARGET_ARCH=sparc64
3750
    TARGET_BASE_ARCH=sparc
3751
    TARGET_ABI_DIR=sparc
3752
    echo "TARGET_ABI32=y" >> $config_target_mak
P
Paul Brook 已提交
3753
    target_phys_bits=64
A
aurel32 已提交
3754
  ;;
3755
  s390x)
U
Ulrich Hecht 已提交
3756
    target_nptl="yes"
3757
    target_phys_bits=64
3758
    target_long_alignment=8
3759
  ;;
3760 3761 3762
  unicore32)
    target_phys_bits=32
  ;;
3763 3764 3765 3766
  xtensa|xtensaeb)
    TARGET_ARCH=xtensa
    target_phys_bits=32
  ;;
A
aurel32 已提交
3767 3768 3769 3770 3771
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
3772 3773 3774 3775 3776 3777 3778
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi

symlink "$source_path/Makefile.target" "$target_dir/Makefile"

3779 3780

case "$target_arch2" in
B
Blue Swirl 已提交
3781
  alpha | i386 | or32 | sparc* | x86_64 | xtensa* | ppc*)
3782 3783 3784 3785
    echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak
  ;;
esac

3786 3787 3788 3789
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
3790
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3791
target_arch_name="`echo $TARGET_ARCH | LC_ALL=C tr '[a-z]' '[A-Z]'`"
3792 3793 3794
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3795 3796 3797
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
3798
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
J
Juan Quintela 已提交
3799 3800 3801
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3802
      target_phys_bits=64
3803
      echo "CONFIG_XEN=y" >> $config_target_mak
3804 3805 3806
      if test "$xen_pci_passthrough" = yes; then
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
      fi
3807 3808
    else
      echo "CONFIG_NO_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
3809
    fi
3810 3811 3812
    ;;
  *)
    echo "CONFIG_NO_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
3813
esac
J
Juan Quintela 已提交
3814
case "$target_arch2" in
A
Alexander Graf 已提交
3815
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
3816 3817 3818 3819
    # 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 已提交
3820
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
R
René Rebe 已提交
3821 3822
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
J
Juan Quintela 已提交
3823 3824
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
3825
      echo "CONFIG_KVM=y" >> $config_target_mak
3826
      if test "$vhost_net" = "yes" ; then
M
Michael S. Tsirkin 已提交
3827 3828
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
3829 3830
    fi
esac
3831 3832 3833 3834
case "$target_arch2" in
  i386|x86_64)
    echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
esac
3835
if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
3836 3837
  echo "CONFIG_PSERIES=y" >> $config_target_mak
fi
B
bellard 已提交
3838
if test "$target_bigendian" = "yes" ; then
3839
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
3840
fi
3841
if test "$target_softmmu" = "yes" ; then
P
Paul Brook 已提交
3842
  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
3843
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
3844
  echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
3845
  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
3846
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
P
Paul Brook 已提交
3847 3848 3849
  if test "$smartcard_nss" = "yes" ; then
    echo "subdir-$target: subdir-libcacard" >> $config_host_mak
  fi
3850 3851 3852 3853
  case "$target_arch2" in
    i386|x86_64)
      echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
  esac
B
bellard 已提交
3854
fi
B
bellard 已提交
3855
if test "$target_user_only" = "yes" ; then
3856
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
3857
  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
B
bellard 已提交
3858
fi
3859
if test "$target_linux_user" = "yes" ; then
3860
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
3861
fi
P
pbrook 已提交
3862 3863 3864 3865 3866
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
3867
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
3868
fi
3869

P
pbrook 已提交
3870
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3871
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
3872
fi
3873 3874
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3875
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3876
fi
P
Paul Brook 已提交
3877
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3878
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
3879
fi
B
blueswir1 已提交
3880
if test "$target_bsd_user" = "yes" ; then
3881
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
3882
fi
3883

3884 3885 3886 3887 3888
# the static way of configuring available audio cards requires this workaround
if test "$target_user_only" != "yes" && grep -q CONFIG_PCSPK $source_path/default-configs/$target.mak; then
  echo "CONFIG_PCSPK=y" >> $config_target_mak
fi

3889
# generate QEMU_CFLAGS/LDFLAGS for targets
3890

3891
cflags=""
3892
includes=""
3893
ldflags=""
3894

3895 3896 3897
if test "$tcg_interpreter" = "yes"; then
  includes="-I\$(SRC_PATH)/tcg/tci $includes"
elif test "$ARCH" = "sparc64" ; then
3898
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3899
elif test "$ARCH" = "s390x" ; then
3900
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3901
elif test "$ARCH" = "x86_64" ; then
3902
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
J
Juan Quintela 已提交
3903
else
3904
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
J
Juan Quintela 已提交
3905
fi
3906
includes="-I\$(SRC_PATH)/tcg $includes"
J
Juan Quintela 已提交
3907

3908 3909 3910 3911
if test "$linux" = "yes" ; then
  includes="-I\$(SRC_PATH)/linux-headers $includes"
fi

B
Blue Swirl 已提交
3912 3913 3914 3915 3916 3917
if test "$target_user_only" = "yes" ; then
    libdis_config_mak=libdis-user/config.mak
else
    libdis_config_mak=libdis/config.mak
fi

3918 3919 3920
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
3921
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3922
    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
3923 3924
  ;;
  arm)
3925
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3926
    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
3927 3928
  ;;
  cris)
3929
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3930
    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
3931 3932
  ;;
  hppa)
3933
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3934
    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
3935 3936
  ;;
  i386|x86_64)
3937
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3938
    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
3939
  ;;
A
Aurelien Jarno 已提交
3940 3941 3942 3943
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
  ;;
3944 3945 3946 3947
  lm32)
    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
    echo "CONFIG_LM32_DIS=y"  >> $libdis_config_mak
  ;;
3948
  m68k)
3949
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3950
    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
3951
  ;;
3952
  microblaze*)
3953
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3954
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
3955 3956
  ;;
  mips*)
3957
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3958
    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
3959
  ;;
3960 3961 3962 3963
  or32)
    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
    echo "CONFIG_OPENRISC_DIS=y"  >> $libdis_config_mak
  ;;
3964
  ppc*)
3965
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3966
    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
3967
  ;;
3968
  s390*)
3969
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3970
    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
3971 3972
  ;;
  sh4)
3973
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3974
    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
3975 3976
  ;;
  sparc*)
3977
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3978
    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
3979
  ;;
3980 3981 3982 3983
  xtensa*)
    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
    echo "CONFIG_XTENSA_DIS=y"  >> $libdis_config_mak
  ;;
3984 3985
  esac
done
3986 3987 3988 3989
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
  echo "CONFIG_TCI_DIS=y"  >> $libdis_config_mak
fi
3990

3991 3992 3993 3994 3995 3996 3997
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

3998 3999 4000 4001
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
M
Michael Walle 已提交
4002 4003 4004
  ;;
  lm32)
    cflags="-DHAS_AUDIO $cflags"
4005 4006 4007 4008 4009 4010 4011
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

4012
if test "$gprof" = "yes" ; then
4013
  echo "TARGET_GPROF=yes" >> $config_target_mak
4014 4015 4016 4017 4018 4019
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
4020
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
4021 4022 4023
  fi
fi

4024 4025 4026 4027 4028 4029
if test "$ARCH" = "tci"; then
  linker_script=""
else
  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
fi

4030
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
4031 4032 4033
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
4034
    ldflags="$linker_script -static $ldflags"
4035
    ;;
4036 4037 4038
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
4039
  *)
4040
    ldflags="$linker_script $ldflags"
4041 4042 4043 4044
    ;;
  esac
fi

4045 4046
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
4047
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
4048

4049
done # for target in $targets
B
bellard 已提交
4050

P
Paolo Bonzini 已提交
4051
# build tree in object directory in case the source is not in the current directory
4052
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32"
4053
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
P
Paolo Bonzini 已提交
4054
DIRS="$DIRS roms/seabios roms/vgabios"
4055
DIRS="$DIRS qapi-generated"
4056
DIRS="$DIRS libcacard libcacard/libcacard libcacard/trace"
A
Anthony Liguori 已提交
4057 4058
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
4059
FILES="$FILES tests/tcg/lm32/Makefile libcacard/Makefile"
P
Paolo Bonzini 已提交
4060
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
A
Andreas Färber 已提交
4061
FILES="$FILES pc-bios/spapr-rtas/Makefile"
P
Paolo Bonzini 已提交
4062
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
4063 4064 4065 4066 4067 4068 4069
for bios_file in \
    $source_path/pc-bios/*.bin \
    $source_path/pc-bios/*.rom \
    $source_path/pc-bios/*.dtb \
    $source_path/pc-bios/openbios-* \
    $source_path/pc-bios/palcode-*
do
P
Paolo Bonzini 已提交
4070 4071 4072 4073
    FILES="$FILES pc-bios/`basename $bios_file`"
done
mkdir -p $DIRS
for f in $FILES ; do
4074
    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
4075 4076
        symlink "$source_path/$f" "$f"
    fi
P
Paolo Bonzini 已提交
4077
done
P
Paul Brook 已提交
4078

4079
# temporary config to build submodules
4080
for rom in seabios vgabios ; do
4081
    config_mak=roms/$rom/config.mak
4082
    echo "# Automatically generated by configure - do not modify" > $config_mak
4083 4084 4085 4086 4087 4088 4089 4090 4091
    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 已提交
4092 4093
for hwlib in 32 64; do
  d=libhw$hwlib
4094
  symlink "$source_path/Makefile.hw" "$d/Makefile"
4095
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
P
Paul Brook 已提交
4096
done
4097 4098

d=libuser
4099
symlink "$source_path/Makefile.user" "$d/Makefile"
4100 4101 4102 4103

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