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

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

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

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

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

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

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

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

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

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

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

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

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

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

# Default value for a variable defining feature "foo".
#  * foo="no"  feature will only be used if --enable-foo arg is given
#  * foo=""    feature will be searched for, and if found, will be used
#              unless --disable-foo is given
#  * foo="yes" this value will only be set by --enable-foo flag.
#              feature will searched for,
#              if not found, configure exits with error
#
# Always add --enable-foo and --disable-foo command line args.
# Distributions want to ensure that several features are compiled in, and it
# is impossible without a --enable-foo that exits if a feature is not found.

bluez=""
brlapi=""
curl=""
curses=""
docs=""
fdt=""
nptl=""
150
pixman=""
151
sdl=""
152
virtfs=""
J
Jes Sorensen 已提交
153
vnc="yes"
154 155 156 157 158 159 160 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
libexecdir="\${prefix}/libexec"
187
includedir="\${prefix}/include"
188
sysconfdir="\${prefix}/etc"
L
Luiz Capitulino 已提交
189
local_statedir="\${prefix}/var"
190 191 192 193 194 195 196 197 198 199 200 201 202
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"
203
guest_base="yes"
204 205 206 207 208
uname_release=""
mixemu="no"
aix="no"
blobs="yes"
pkgversion=""
209
pie=""
210 211 212 213 214
zero_malloc=""
trace_backend="nop"
trace_file="trace"
spice=""
rbd=""
A
Alon Levy 已提交
215
smartcard=""
R
Robert Relyea 已提交
216
smartcard_nss=""
217
usb_redir=""
218
opengl=""
A
Alon Levy 已提交
219
zlib="yes"
220
guest_agent="yes"
221
want_tools="yes"
R
Ronnie Sahlberg 已提交
222
libiscsi=""
223
coroutine=""
224
seccomp=""
225
glusterfs=""
226
virtio_blk_data_plane=""
227

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

254 255 256 257 258 259 260 261 262 263
# Preferred compiler:
#  ${CC} (if set)
#  ${cross_prefix}gcc (if cross-prefix specified)
#  system compiler
if test -z "${CC}${cross_prefix}"; then
  cc="$host_cc"
else
  cc="${CC-${cross_prefix}gcc}"
fi

264 265 266
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)/include"
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 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
elif check_define __HAIKU__ ; then
  targetos='Haiku'
else
  targetos=`uname -s`
fi

# Some host OSes need non-standard checks for which CPU to use.
# Note that these checks are broken for cross-compilation: if you're
# cross-compiling to one of these OSes then you'll need to specify
# the correct CPU with the --cpu option.
case $targetos in
Darwin)
  # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
  # run 64-bit userspace code.
  # If the user didn't specify a CPU explicitly and the kernel says this is
  # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
  if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
    cpu="x86_64"
  fi
  ;;
SunOS)
  # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
  if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
    cpu="x86_64"
  fi
esac

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

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

B
bellard 已提交
407
# OS specific
408

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

B
bellard 已提交
532
if [ "$bsd" = "yes" ] ; then
533
  if [ "$darwin" != "yes" ] ; then
534
    usb="bsd"
535
    bsd_user="yes"
536
  fi
B
bellard 已提交
537 538
fi

539 540
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}
B
Blue Swirl 已提交
541
: ${python=${PYTHON-python}}
542
: ${smbd=${SMBD-/usr/sbin/smbd}}
543

544 545 546 547 548 549 550
# Default objcc to clang if available, otherwise use CC
if has clang; then
  objcc=clang
else
  objcc="$cc"
fi

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

574
werror=""
575

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

895
case "$cpu" in
896
    sparc)
897
           LDFLAGS="-m32 $LDFLAGS"
898
           QEMU_CFLAGS="-m32 -mcpu=ultrasparc $QEMU_CFLAGS"
899
           ;;
900 901
    sparc64)
           LDFLAGS="-m64 $LDFLAGS"
902
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc $QEMU_CFLAGS"
903
           ;;
904
    s390)
905 906 907 908 909 910
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m31 $LDFLAGS"
           ;;
    s390x)
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m64 $LDFLAGS"
911
           ;;
912
    i386)
J
Juan Quintela 已提交
913
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
914
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
915
           cc_i386='$(CC) -m32'
916 917
           ;;
    x86_64)
J
Juan Quintela 已提交
918
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
919
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
920
           cc_i386='$(CC) -m32'
921
           ;;
922
    # No special flags required for other host CPUs
923 924
esac

925 926 927 928 929 930 931
default_target_list=""

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

994 995 996 997 998 999 1000 1001 1002 1003 1004 1005
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]"
1006 1007 1008
echo "  --target-list=LIST       set target list (default: build everything)"
echo "Available targets: $default_target_list" | \
    fold -s -w 53 | sed -e 's/^/                           /'
1009 1010 1011 1012 1013
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]"
1014 1015
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
echo "                           build time"
1016
echo "  --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]"
J
Juan Quintela 已提交
1017
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
1018
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
1019
echo "  --make=MAKE              use specified make [$make]"
1020
echo "  --install=INSTALL        use specified install [$install]"
B
Blue Swirl 已提交
1021
echo "  --python=PYTHON          use specified python [$python]"
1022
echo "  --smbd=SMBD              use specified smbd [$smbd]"
1023
echo "  --static                 enable static build [$static]"
1024
echo "  --mandir=PATH            install man pages in PATH"
1025 1026
echo "  --datadir=PATH           install firmware in PATH$confsuffix"
echo "  --docdir=PATH            install documentation in PATH$confsuffix"
1027
echo "  --bindir=PATH            install binaries in PATH"
1028
echo "  --sysconfdir=PATH        install config in PATH$confsuffix"
L
Luiz Capitulino 已提交
1029
echo "  --localstatedir=PATH     install local state in PATH"
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 1100
echo "  --disable-uuid           disable uuid support"
echo "  --enable-uuid            enable uuid support"
1101
echo "  --disable-vde            disable support for vde network"
1102
echo "  --enable-vde             enable support for vde network"
1103 1104
echo "  --disable-linux-aio      disable Linux AIO support"
echo "  --enable-linux-aio       enable Linux AIO support"
1105 1106
echo "  --disable-cap-ng         disable libcap-ng support"
echo "  --enable-cap-ng          enable libcap-ng support"
1107 1108
echo "  --disable-attr           disables attr and xattr support"
echo "  --enable-attr            enable attr and xattr support"
T
ths 已提交
1109
echo "  --disable-blobs          disable installing provided firmware blobs"
1110 1111
echo "  --enable-docs            enable documentation build"
echo "  --disable-docs           disable documentation build"
M
Michael S. Tsirkin 已提交
1112 1113
echo "  --disable-vhost-net      disable vhost-net acceleration support"
echo "  --enable-vhost-net       enable vhost-net acceleration support"
1114
echo "  --enable-trace-backend=B Set trace backend"
1115
echo "                           Available backends:" $($python "$source_path"/scripts/tracetool.py --list-backends)
1116
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
P
Prerna Saxena 已提交
1117
echo "                           Default:trace-<pid>"
1118 1119
echo "  --disable-spice          disable spice"
echo "  --enable-spice           enable spice"
1120
echo "  --enable-rbd             enable building the rados block device (rbd)"
R
Ronnie Sahlberg 已提交
1121 1122
echo "  --disable-libiscsi       disable iscsi support"
echo "  --enable-libiscsi        enable iscsi support"
A
Alon Levy 已提交
1123 1124
echo "  --disable-smartcard      disable smartcard support"
echo "  --enable-smartcard       enable smartcard support"
R
Robert Relyea 已提交
1125 1126
echo "  --disable-smartcard-nss  disable smartcard nss support"
echo "  --enable-smartcard-nss   enable smartcard nss support"
1127 1128
echo "  --disable-usb-redir      disable usb network redirection support"
echo "  --enable-usb-redir       enable usb network redirection support"
1129 1130
echo "  --disable-guest-agent    disable building of the QEMU Guest Agent"
echo "  --enable-guest-agent     enable building of the QEMU Guest Agent"
1131 1132
echo "  --disable-seccomp        disable seccomp support"
echo "  --enable-seccomp         enables seccomp support"
1133
echo "  --with-coroutine=BACKEND coroutine backend. Supported options:"
1134
echo "                           gthread, ucontext, sigaltstack, windows"
1135 1136
echo "  --enable-glusterfs       enable GlusterFS backend"
echo "  --disable-glusterfs      disable GlusterFS backend"
1137
echo ""
T
ths 已提交
1138
echo "NOTE: The object files are built at the place where configure is launched"
1139 1140 1141
exit 1
fi

1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153
# 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

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

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

1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178
# 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

1179 1180 1181
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"
1182
gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
1183
gcc_flags="-Wno-initializer-overrides $gcc_flags"
1184 1185 1186 1187
# 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.
1188 1189 1190 1191
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
for flag in $gcc_flags; do
1192 1193 1194 1195 1196
    # Use the positive sense of the flag when testing for -Wno-wombat
    # support (gcc will happily accept the -Wno- form of unknown
    # warning options).
    optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')"
    if compile_prog "-Werror $optflag" "" ; then
1197 1198 1199 1200
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215
# Workaround for http://gcc.gnu.org/PR55489.  Happens with -fPIE/-fPIC and
# large functions that use global variables.  The bug is in all releases of
# GCC, but it became particularly acute in 4.6.x and 4.7.x.  It is fixed in
# 4.7.3 and 4.8.0.  We should be able to delete this at the end of 2013.
cat > $TMPC << EOF
#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
int main(void) { return 0; }
#else
#error No bug in this compiler.
#endif
EOF
if compile_prog "-Werror -fno-gcse" "" ; then
  TRANSLATE_OPT_CFLAGS=-fno-gcse
fi

1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226
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
1227
    i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD)
1228 1229 1230 1231 1232 1233 1234 1235 1236
      ;;
    *)
      pie="no"
      ;;
  esac
fi

if test "$pie" != "no" ; then
  cat > $TMPC << EOF
1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247

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

static THREAD int tls_var;

int main(void) { return tls_var; }

1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266
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 已提交
1267 1268 1269 1270
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
1271 1272 1273
  if has $install; then
    :
  else
B
bellard 已提交
1274 1275 1276 1277 1278
    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
1279
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
1280 1281 1282 1283 1284
    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
1285 1286 1287
  if has ar; then
    :
  else
B
bellard 已提交
1288 1289 1290 1291 1292 1293
    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
1294
fi
B
bellard 已提交
1295

S
Sebastian Herbszt 已提交
1296 1297 1298
if ! has $python; then
  echo "Python not found. Use --python=/path/to/python"
  exit 1
B
Blue Swirl 已提交
1299 1300
fi

1301 1302
# Note that if the Python conditional here evaluates True we will exit
# with status 1 which is a shell 'false' value.
1303 1304 1305 1306
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."
1307 1308 1309
  exit 1
fi

1310
if test -z "${target_list+xxx}" ; then
1311 1312 1313 1314
    target_list="$default_target_list"
else
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
fi
P
Paolo Bonzini 已提交
1315 1316 1317 1318 1319 1320 1321
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1322

1323 1324 1325 1326 1327
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
1328
  echo "ERROR: configure was not able to find it"
1329 1330 1331 1332
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
1333 1334 1335 1336 1337 1338
if test -z "$cross_prefix" ; then

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
1339
int main(void) {
1340 1341
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
B
bellard 已提交
1342 1343 1344
}
EOF

1345
if compile_prog "" "" ; then
B
bellard 已提交
1346 1347 1348 1349 1350 1351 1352 1353
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
1354
case "$cpu" in
1355 1356 1357 1358 1359 1360 1361
  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)
1362 1363 1364
    bigendian=yes
  ;;
esac
B
bellard 已提交
1365 1366 1367

fi

S
Stefan Weil 已提交
1368 1369 1370 1371 1372 1373 1374 1375
##########################################
# pkg-config probe

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

1376 1377 1378 1379 1380
##########################################
# NPTL probe

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
1381
#include <sched.h>
P
pbrook 已提交
1382
#include <linux/futex.h>
1383
int main(void) {
1384 1385 1386
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
1387
  return 0;
1388 1389 1390
}
EOF

1391 1392 1393 1394 1395 1396 1397 1398
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
1399 1400
fi

1401 1402 1403
##########################################
# zlib check

A
Alon Levy 已提交
1404 1405
if test "$zlib" != "no" ; then
    cat > $TMPC << EOF
1406 1407 1408
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
A
Alon Levy 已提交
1409 1410 1411 1412 1413 1414 1415 1416 1417
    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
1418 1419
fi

1420 1421 1422 1423
##########################################
# libseccomp check

if test "$seccomp" != "no" ; then
B
Blue Swirl 已提交
1424
    if $pkg_config --atleast-version=1.0.0 libseccomp --modversion >/dev/null 2>&1; then
1425 1426 1427 1428 1429 1430
        LIBS=`$pkg_config --libs libseccomp`
	seccomp="yes"
    else
	if test "$seccomp" = "yes"; then
            feature_not_found "libseccomp"
	fi
Y
Yann E. MORIN 已提交
1431
	seccomp="no"
1432 1433
    fi
fi
1434 1435 1436
##########################################
# xen probe

1437
if test "$xen" != "no" ; then
1438
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1439

1440 1441 1442 1443 1444
  # 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)
1445
  cat > $TMPC <<EOF
1446
#include <xenctrl.h>
1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458
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
1459 1460
  elif
      cat > $TMPC <<EOF &&
1461
#include <xenctrl.h>
A
Anthony PERARD 已提交
1462
#include <xenstore.h>
1463 1464 1465 1466 1467
#include <stdint.h>
#include <xen/hvm/hvm_info_table.h>
#if !defined(HVM_MAX_VCPUS)
# error HVM_MAX_VCPUS not defined
#endif
1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479
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"
1480
    then
1481 1482 1483
    xen_ctrl_version=420
    xen=yes

1484 1485
  elif
      cat > $TMPC <<EOF &&
1486 1487 1488 1489 1490 1491 1492
#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
1493 1494
int main(void) {
  xs_daemon_open();
1495
  xc_interface_open(0, 0, 0);
1496 1497
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_gnttab_open(NULL, 0);
1498
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1499 1500
  return 0;
}
1501
EOF
1502
      compile_prog "" "$xen_libs"
1503
    then
1504
    xen_ctrl_version=410
1505
    xen=yes
1506 1507

  # Xen 4.0.0
1508 1509
  elif
      cat > $TMPC <<EOF &&
1510 1511 1512 1513 1514 1515 1516 1517
#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) {
1518 1519 1520
  struct xen_add_to_physmap xatp = {
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
  };
1521 1522 1523 1524
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1525
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1526 1527 1528 1529
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
1530
    then
1531 1532 1533
    xen_ctrl_version=400
    xen=yes

1534
  # Xen 3.4.0
1535 1536
  elif
      cat > $TMPC <<EOF &&
1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551
#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"
1552
    then
1553 1554 1555 1556
    xen_ctrl_version=340
    xen=yes

  # Xen 3.3.0
1557 1558
  elif
      cat > $TMPC <<EOF &&
1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569
#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"
1570
    then
1571 1572 1573
    xen_ctrl_version=330
    xen=yes

1574
  # Xen version unsupported
1575
  else
1576
    if test "$xen" = "yes" ; then
1577
      feature_not_found "xen (unsupported version)"
1578 1579
    fi
    xen=no
1580
  fi
1581 1582 1583 1584

  if test "$xen" = yes; then
    libs_softmmu="$xen_libs $libs_softmmu"
  fi
1585 1586
fi

1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605
if test "$xen_pci_passthrough" != "no"; then
  if test "$xen" = "yes" && test "$linux" = "yes" &&
    test "$xen_ctrl_version" -ge 340; then
    xen_pci_passthrough=yes
  else
    if test "$xen_pci_passthrough" = "yes"; then
      echo "ERROR"
      echo "ERROR: User requested feature Xen PCI Passthrough"
      echo "ERROR: but this feature require /sys from Linux"
      if test "$xen_ctrl_version" -lt 340; then
        echo "ERROR: This feature does not work with Xen 3.3"
      fi
      echo "ERROR"
      exit 1;
    fi
    xen_pci_passthrough=no
  fi
fi

A
Alon Levy 已提交
1606 1607 1608
##########################################
# libtool probe

B
Brad 已提交
1609
if ! has $libtool; then
A
Alon Levy 已提交
1610 1611 1612
    libtool=
fi

1613 1614 1615
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1616
  if has cgcc; then
1617 1618 1619 1620 1621 1622 1623 1624 1625
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
1626 1627 1628
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1629 1630 1631 1632 1633 1634 1635
# 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
1636
  sdlconfig="$pkg_config sdl"
1637
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
1638 1639
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
1640
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1641 1642 1643 1644 1645
else
  if test "$sdl" = "yes" ; then
    feature_not_found "sdl"
  fi
  sdl=no
1646
fi
1647
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
P
Paolo Bonzini 已提交
1648 1649
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
1650

1651
sdl_too_old=no
1652
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
1653
  cat > $TMPC << EOF
B
bellard 已提交
1654 1655 1656 1657
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
1658
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1659 1660 1661 1662 1663
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
1664
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1665 1666 1667 1668 1669 1670 1671
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
1672

1673
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1674
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1675
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1676 1677
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1678
      fi
1679
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1680 1681 1682 1683 1684
	:
      else
        sdl=no
      fi
    fi # static link
1685 1686 1687 1688 1689
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1690
  fi # sdl compile test
1691
fi
B
bellard 已提交
1692

1693
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1694
  cat > $TMPC <<EOF
1695 1696 1697 1698 1699 1700 1701 1702
#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
1703
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1704 1705
    sdl_libs="$sdl_libs -lX11"
  fi
J
Juan Quintela 已提交
1706
  libs_softmmu="$sdl_libs $libs_softmmu"
1707 1708
fi

1709 1710
##########################################
# VNC TLS detection
J
Jes Sorensen 已提交
1711
if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1712
  cat > $TMPC <<EOF
1713 1714 1715
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1716 1717
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1718 1719 1720
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
    vnc_tls=yes
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
P
Paolo Bonzini 已提交
1721
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
1722 1723 1724
  else
    if test "$vnc_tls" = "yes" ; then
      feature_not_found "vnc-tls"
1725
    fi
1726 1727
    vnc_tls=no
  fi
1728 1729
fi

1730 1731
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
1732
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1733
  cat > $TMPC <<EOF
1734 1735 1736 1737
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1738 1739 1740 1741 1742 1743
  # Assuming Cyrus-SASL installed in /usr prefix
  vnc_sasl_cflags=""
  vnc_sasl_libs="-lsasl2"
  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
    vnc_sasl=yes
    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
P
Paolo Bonzini 已提交
1744
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
1745 1746 1747
  else
    if test "$vnc_sasl" = "yes" ; then
      feature_not_found "vnc-sasl"
1748
    fi
1749 1750
    vnc_sasl=no
  fi
1751 1752
fi

1753 1754
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
1755
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1756 1757 1758 1759 1760 1761 1762 1763 1764 1765
cat > $TMPC <<EOF
#include <stdio.h>
#include <jpeglib.h>
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
EOF
    vnc_jpeg_cflags=""
    vnc_jpeg_libs="-ljpeg"
  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
    vnc_jpeg=yes
    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
P
Paolo Bonzini 已提交
1766
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
1767 1768 1769 1770 1771 1772 1773 1774
  else
    if test "$vnc_jpeg" = "yes" ; then
      feature_not_found "vnc-jpeg"
    fi
    vnc_jpeg=no
  fi
fi

C
Corentin Chary 已提交
1775 1776
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
1777
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1778 1779 1780
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1781
#include <stddef.h>
C
Corentin Chary 已提交
1782 1783 1784
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1785
    return png_ptr != 0;
C
Corentin Chary 已提交
1786 1787
}
EOF
1788 1789 1790 1791
  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 已提交
1792 1793
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
1794
  fi
C
Corentin Chary 已提交
1795 1796 1797
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
1798
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
C
Corentin Chary 已提交
1799 1800 1801 1802 1803 1804 1805 1806
  else
    if test "$vnc_png" = "yes" ; then
      feature_not_found "vnc-png"
    fi
    vnc_png=no
  fi
fi

1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1818
if compile_prog "" "" ; then
1819 1820 1821
   fnmatch="yes"
fi

1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846
##########################################
# 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 已提交
1847 1848 1849 1850
##########################################
# xfsctl() probe, used for raw-posix
if test "$xfs" != "no" ; then
  cat > $TMPC << EOF
1851
#include <stddef.h>  /* NULL */
C
Christoph Hellwig 已提交
1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868
#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

1869 1870
##########################################
# vde libraries probe
1871
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1872
  vde_libs="-lvdeplug"
1873 1874
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1875 1876 1877
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
1878 1879
    char s[] = "";
    vde_open(s, s, &a);
P
pbrook 已提交
1880 1881
    return 0;
}
1882
EOF
1883
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1884
    vde=yes
1885 1886
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1887 1888 1889 1890 1891
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1892
  fi
1893 1894
fi

1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917
##########################################
# 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

1918
##########################################
1919
# Sound support libraries probe
1920

1921 1922 1923 1924 1925 1926 1927 1928 1929 1930
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1931
EOF
1932
    if compile_prog "$cfl" "$lib" ; then
1933 1934 1935 1936 1937 1938 1939 1940 1941 1942
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1943
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1944 1945 1946 1947
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1948
        "return snd_pcm_close((snd_pcm_t *)0);"
1949
    libs_softmmu="-lasound $libs_softmmu"
1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960
    ;;

    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"
1961
    libs_softmmu="$fmod_lib $libs_softmmu"
1962 1963 1964 1965
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1966
    libs_softmmu="-lesd $libs_softmmu"
1967
    audio_pt_int="yes"
1968
    ;;
M
malc 已提交
1969 1970

    pa)
1971 1972 1973
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
    libs_softmmu="-lpulse $libs_softmmu"
1974
    audio_pt_int="yes"
M
malc 已提交
1975 1976
    ;;

1977 1978 1979 1980
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1981 1982
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1983
      audio_win_int="yes"
1984 1985 1986 1987 1988 1989 1990
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1991 1992 1993
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1994 1995 1996 1997 1998
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1999
    *)
M
malc 已提交
2000
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
2001 2002 2003 2004 2005 2006 2007
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
2008 2009
    esac
done
2010

A
aurel32 已提交
2011 2012 2013
##########################################
# BrlAPI probe

2014
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
2015 2016
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
2017
#include <brlapi.h>
S
Scott Wood 已提交
2018
#include <stddef.h>
A
aurel32 已提交
2019 2020
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
2021
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
2022
    brlapi=yes
2023
    libs_softmmu="$brlapi_libs $libs_softmmu"
2024 2025 2026 2027 2028
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
2029 2030
  fi
fi
A
aurel32 已提交
2031

B
balrog 已提交
2032 2033
##########################################
# curses probe
S
Stefan Weil 已提交
2034 2035 2036 2037 2038
if test "$mingw32" = "yes" ; then
    curses_list="-lpdcurses"
else
    curses_list="-lncurses -lcurses"
fi
B
balrog 已提交
2039

2040 2041
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
2042 2043
  cat > $TMPC << EOF
#include <curses.h>
2044 2045 2046 2047 2048
int main(void) {
  const char *s = curses_version();
  resize_term(0, 0);
  return s != 0;
}
B
balrog 已提交
2049
EOF
2050 2051
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
2052
      curses_found=yes
2053 2054 2055 2056
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
2057 2058 2059 2060 2061 2062 2063 2064
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
2065
fi
B
balrog 已提交
2066

A
Alexander Graf 已提交
2067 2068 2069
##########################################
# curl probe

2070 2071
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkg_config libcurl"
2072 2073 2074 2075
else
  curlconfig=curl-config
fi

2076
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
2077 2078
  cat > $TMPC << EOF
#include <curl/curl.h>
2079
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
A
Alexander Graf 已提交
2080
EOF
2081 2082
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
2083
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
2084
    curl=yes
2085 2086
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
2087 2088 2089 2090 2091
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
2092 2093 2094
  fi
fi # test "$curl"

B
balrog 已提交
2095 2096
##########################################
# bluez support probe
2097
if test "$bluez" != "no" ; then
2098 2099 2100 2101
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
2102 2103
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2104
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2105
    bluez=yes
2106
    libs_softmmu="$bluez_libs $libs_softmmu"
2107
  else
2108 2109 2110
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
2111 2112
    bluez="no"
  fi
B
balrog 已提交
2113 2114
fi

2115 2116
##########################################
# glib support probe
2117 2118 2119 2120 2121 2122 2123 2124 2125

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
2126 2127
    glib_cflags=`$pkg_config --cflags gthread-2.0 2>/dev/null`
    glib_libs=`$pkg_config --libs gthread-2.0 2>/dev/null`
2128
    LIBS="$glib_libs $LIBS"
2129
    libs_qga="$glib_libs $libs_qga"
2130
else
2131
    echo "glib-$glib_req_ver required to compile QEMU"
2132
    exit 1
2133 2134
fi

2135 2136 2137 2138
##########################################
# pixman support probe

if test "$pixman" = ""; then
2139 2140 2141
  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
    pixman="none"
  elif $pkg_config pixman-1 > /dev/null 2>&1; then
2142 2143 2144 2145 2146
    pixman="system"
  else
    pixman="internal"
  fi
fi
2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157
if test "$pixman" = "none"; then
  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
    echo "ERROR: pixman disabled but system emulation or tools build"
    echo "       enabled.  You can turn off pixman only if you also"
    echo "       disable all system emulation targets and the tools"
    echo "       build with '--disable-tools --disable-system'."
    exit 1
  fi
  pixman_cflags=
  pixman_libs=
elif test "$pixman" = "system"; then
2158 2159 2160 2161
  pixman_cflags=`$pkg_config --cflags pixman-1 2>/dev/null`
  pixman_libs=`$pkg_config --libs pixman-1 2>/dev/null`
else
  if test ! -d ${source_path}/pixman/pixman; then
2162
    echo "ERROR: pixman not present. Your options:"
S
Stefan Weil 已提交
2163
    echo "  (1) Preferred: Install the pixman devel package (any recent"
2164 2165 2166 2167 2168
    echo "      distro should have packages as Xorg needs pixman too)."
    echo "  (2) Fetch the pixman submodule, using:"
    echo "      git submodule update --init pixman"
    exit 1
  fi
2169 2170 2171
  mkdir -p pixman/pixman
  pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
  pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2172 2173
fi

2174 2175 2176 2177 2178 2179 2180
##########################################
# libcap probe

if test "$cap" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/capability.h>
2181
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2182 2183 2184 2185 2186 2187 2188 2189
EOF
  if compile_prog "" "-lcap" ; then
    cap=yes
  else
    cap=no
  fi
fi

2190
##########################################
2191
# pthread probe
2192
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2193

C
Christoph Hellwig 已提交
2194
pthread=no
2195
cat > $TMPC << EOF
2196
#include <pthread.h>
2197 2198 2199 2200 2201 2202
static void *f(void *p) { return NULL; }
int main(void) {
  pthread_t thread;
  pthread_create(&thread, 0, f, 0);
  return 0;
}
2203
EOF
2204 2205 2206 2207 2208 2209
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 已提交
2210 2211 2212 2213 2214 2215 2216 2217 2218 2219
      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
2220 2221 2222 2223
      break
    fi
  done
fi
2224

2225
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
2226 2227 2228 2229 2230
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
2231 2232
fi

2233 2234 2235 2236 2237
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
2238
#include <rbd/librbd.h>
2239
int main(void) {
2240 2241
    rados_t cluster;
    rados_create(&cluster, NULL);
2242 2243 2244
    return 0;
}
EOF
2245 2246 2247 2248 2249
  rbd_libs="-lrbd -lrados"
  if compile_prog "" "$rbd_libs" ; then
    rbd=yes
    libs_tools="$rbd_libs $libs_tools"
    libs_softmmu="$rbd_libs $libs_softmmu"
2250 2251 2252 2253 2254 2255 2256 2257
  else
    if test "$rbd" = "yes" ; then
      feature_not_found "rados block device"
    fi
    rbd=no
  fi
fi

2258 2259 2260 2261 2262 2263 2264
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
2265
#include <stddef.h>
2266 2267 2268 2269
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 已提交
2270 2271
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
2272 2273 2274 2275
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
2276
    linux_aio=no
2277 2278 2279
  fi
fi

2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290
##########################################
# adjust virtio-blk-data-plane based on linux-aio

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

2291 2292 2293 2294 2295 2296 2297
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
P
Pavel Borzenkov 已提交
2298 2299 2300
#ifdef CONFIG_LIBATTR
#include <attr/xattr.h>
#else
2301
#include <sys/xattr.h>
P
Pavel Borzenkov 已提交
2302
#endif
2303 2304
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
2305 2306 2307
  if compile_prog "" "" ; then
    attr=yes
  # Older distros have <attr/xattr.h>, and need -lattr:
P
Pavel Borzenkov 已提交
2308
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
2309 2310
    attr=yes
    LIBS="-lattr $LIBS"
2311
    libattr=yes
2312 2313 2314 2315 2316 2317 2318 2319
  else
    if test "$attr" = "yes" ; then
      feature_not_found "ATTR"
    fi
    attr=no
  fi
fi

A
aliguori 已提交
2320 2321 2322
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
2323
#include <sys/types.h>
A
aliguori 已提交
2324
#include <sys/uio.h>
B
blueswir1 已提交
2325
#include <unistd.h>
2326
int main(void) { return sizeof(struct iovec); }
A
aliguori 已提交
2327 2328
EOF
iovec=no
2329
if compile_prog "" "" ; then
A
aliguori 已提交
2330 2331 2332
  iovec=yes
fi

2333 2334 2335 2336 2337 2338
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
2339
int main(void) { return preadv(0, 0, 0, 0); }
2340 2341
EOF
preadv=no
2342
if compile_prog "" "" ; then
2343 2344 2345
  preadv=yes
fi

2346 2347
##########################################
# fdt probe
2348
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
2349 2350
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
2351 2352
int main(void) { return 0; }
EOF
2353
  if compile_prog "" "$fdt_libs" ; then
2354
    fdt=yes
2355 2356 2357 2358
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
2359
    fdt_libs=
2360
    fdt=no
2361 2362 2363
  fi
fi

M
Michael Walle 已提交
2364 2365 2366 2367 2368 2369 2370 2371
##########################################
# 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>
2372
int main(void) { return GL_VERSION != 0; }
M
Michael Walle 已提交
2373 2374 2375 2376 2377 2378 2379
EOF
  if compile_prog "" "-lGL" ; then
    opengl=yes
  else
    if test "$opengl" = "yes" ; then
      feature_not_found "opengl"
    fi
2380
    opengl_libs=
M
Michael Walle 已提交
2381 2382 2383 2384
    opengl=no
  fi
fi

2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407
##########################################
# glusterfs probe
if test "$glusterfs" != "no" ; then
  cat > $TMPC <<EOF
#include <glusterfs/api/glfs.h>
int main(void) {
    (void) glfs_new("volume");
    return 0;
}
EOF
  glusterfs_libs="-lgfapi -lgfrpc -lgfxdr"
  if compile_prog "" "$glusterfs_libs" ; then
    glusterfs=yes
    libs_tools="$glusterfs_libs $libs_tools"
    libs_softmmu="$glusterfs_libs $libs_softmmu"
  else
    if test "$glusterfs" = "yes" ; then
      feature_not_found "GlusterFS backend support"
    fi
    glusterfs=no
  fi
fi

2408 2409 2410 2411 2412 2413
#
# 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
2414
cat > $TMPC << EOF
2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426
#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
2427
if compile_prog "" "" ; then
2428
  atfile=yes
2429 2430
fi

A
aurel32 已提交
2431
# Check for inotify functions when we are building linux-user
2432 2433 2434 2435 2436
# 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
2437
cat > $TMPC << EOF
2438 2439 2440 2441 2442 2443
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
2444
	return inotify_init();
2445 2446
}
EOF
2447
if compile_prog "" "" ; then
2448
  inotify=yes
2449 2450
fi

2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465
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 已提交
2466 2467 2468 2469 2470 2471
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>
2472
#include <sys/stat.h>
R
Riku Voipio 已提交
2473 2474 2475 2476 2477 2478 2479 2480

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
2481
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2482 2483 2484
  utimens=yes
fi

R
Riku Voipio 已提交
2485 2486 2487 2488 2489 2490 2491 2492 2493
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
2494
    return pipe2(pipefd, O_CLOEXEC);
R
Riku Voipio 已提交
2495 2496
}
EOF
2497
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2498 2499 2500
  pipe2=yes
fi

K
Kevin Wolf 已提交
2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516
# 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

2517 2518 2519 2520 2521 2522 2523 2524 2525
# 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)
{
2526
    int len, fd = 0;
2527 2528 2529 2530 2531
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
2532
if compile_prog "" "" ; then
2533 2534 2535
  splice=yes
fi

M
Marcelo Tosatti 已提交
2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549
##########################################
# 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 已提交
2550 2551 2552 2553 2554 2555 2556
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

int main(void)
{
2557
    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
R
Riku Voipio 已提交
2558 2559 2560 2561 2562 2563
}
EOF
if compile_prog "" "" ; then
  eventfd=yes
fi

2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2575
if compile_prog "" "" ; then
2576 2577 2578
  fallocate=yes
fi

2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589
# 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
2590
if compile_prog "" "" ; then
2591 2592 2593
  sync_file_range=yes
fi

2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606
# 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
2607
if compile_prog "" "" ; then
2608 2609 2610
  fiemap=yes
fi

2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2622
if compile_prog "" "" ; then
2623 2624 2625
  dup3=yes
fi

2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636
# check for epoll support
epoll=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
    epoll_create(0);
    return 0;
}
EOF
2637
if compile_prog "" "" ; then
2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648
  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)
{
2649 2650 2651 2652 2653 2654 2655 2656
    /* 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.)
     */
2657
    return (int)(uintptr_t)&epoll_create1;
2658 2659
}
EOF
2660
if compile_prog "" "" ; then
2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673
  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
2674
if compile_prog "" "" ; then
2675 2676 2677
  epoll_pwait=yes
fi

2678
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2679
if test "$docs" != "no" ; then
2680
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2681
    docs=yes
2682
  else
J
Juan Quintela 已提交
2683 2684
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2685
    fi
J
Juan Quintela 已提交
2686
    docs=no
2687
  fi
2688 2689
fi

S
Stefan Weil 已提交
2690
# Search for bswap_32 function
2691 2692 2693 2694 2695
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2696
if compile_prog "" "" ; then
2697 2698 2699
  byteswap_h=yes
fi

S
Stefan Weil 已提交
2700
# Search for bswap_32 function
2701 2702 2703 2704 2705 2706 2707
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
2708
if compile_prog "" "" ; then
2709 2710 2711
  bswap_h=yes
fi

R
Ronnie Sahlberg 已提交
2712 2713
##########################################
# Do we have libiscsi
2714 2715
# We check for iscsi_unmap_sync() to make sure we have a
# recent enough version of libiscsi.
R
Ronnie Sahlberg 已提交
2716 2717
if test "$libiscsi" != "no" ; then
  cat > $TMPC << EOF
2718
#include <stdio.h>
R
Ronnie Sahlberg 已提交
2719
#include <iscsi/iscsi.h>
2720
int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; }
R
Ronnie Sahlberg 已提交
2721
EOF
2722
  if compile_prog "" "-liscsi" ; then
R
Ronnie Sahlberg 已提交
2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733
    libiscsi="yes"
    LIBS="$LIBS -liscsi"
  else
    if test "$libiscsi" = "yes" ; then
      feature_not_found "libiscsi"
    fi
    libiscsi="no"
  fi
fi


2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751
##########################################
# Do we need libm
cat > $TMPC << EOF
#include <math.h>
int main(void) { return isnan(sin(0.0)); }
EOF
if compile_prog "" "" ; then
  :
elif compile_prog "" "-lm" ; then
  LIBS="-lm $LIBS"
  libs_qga="-lm $libs_qga"
else
  echo
  echo "Error: libm check failed"
  echo
  exit 1
fi

A
aliguori 已提交
2752 2753
##########################################
# Do we need librt
2754 2755 2756 2757
# uClibc provides 2 versions of clock_gettime(), one with realtime
# support and one without. This means that the clock_gettime() don't
# need -lrt. We still need it for timer_create() so we check for this
# function in addition.
A
aliguori 已提交
2758 2759 2760
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
2761 2762 2763 2764
int main(void) {
  timer_create(CLOCK_REALTIME, NULL, NULL);
  return clock_gettime(CLOCK_REALTIME, NULL);
}
A
aliguori 已提交
2765 2766
EOF

2767
if compile_prog "" "" ; then
2768
  :
2769 2770
# we need pthread for static linking. use previous pthread test result
elif compile_prog "" "-lrt $pthread_lib" ; then
2771
  LIBS="-lrt $LIBS"
2772
  libs_qga="-lrt $libs_qga"
A
aliguori 已提交
2773 2774
fi

2775
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2776
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2777 2778 2779
    libs_softmmu="-lutil $libs_softmmu"
fi

2780
##########################################
2781 2782 2783 2784 2785 2786
# 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 已提交
2787 2788
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
G
Gerd Hoffmann 已提交
2789 2790
  if $pkg_config --atleast-version=0.12.0 spice-server >/dev/null 2>&1 && \
     $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1 && \
2791 2792 2793 2794
     compile_prog "$spice_cflags" "$spice_libs" ; then
    spice="yes"
    libs_softmmu="$libs_softmmu $spice_libs"
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
2795 2796
    spice_protocol_version=$($pkg_config --modversion spice-protocol)
    spice_server_version=$($pkg_config --modversion spice-server)
2797 2798 2799 2800 2801 2802 2803 2804
  else
    if test "$spice" = "yes" ; then
      feature_not_found "spice"
    fi
    spice="no"
  fi
fi

R
Robert Relyea 已提交
2805 2806 2807 2808 2809 2810
# 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
2811 2812 2813 2814
      cat > $TMPC << EOF
#include <pk11pub.h>
int main(void) { PK11_FreeSlot(0); return 0; }
EOF
2815
        smartcard_includes="-I\$(SRC_PATH)/libcacard"
2816 2817
        libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
        libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
2818 2819 2820 2821 2822 2823 2824 2825
        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
2826
        if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \
2827
          compile_prog "$test_cflags" "$libcacard_libs"; then
R
Robert Relyea 已提交
2828
            smartcard_nss="yes"
2829 2830
            QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
            QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
P
Paul Brook 已提交
2831
            libs_softmmu="$libcacard_libs $libs_softmmu"
R
Robert Relyea 已提交
2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843
        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

2844 2845
# check for usbredirparser for usb network redirection support
if test "$usb_redir" != "no" ; then
2846
    if $pkg_config --atleast-version=0.5.3 libusbredirparser-0.5 >/dev/null 2>&1 ; then
2847
        usb_redir="yes"
2848 2849
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5 2>/dev/null)
        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5 2>/dev/null)
2850
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
A
Aurelien Jarno 已提交
2851
        libs_softmmu="$libs_softmmu $usb_redir_libs"
2852 2853 2854 2855 2856 2857 2858 2859
    else
        if test "$usb_redir" = "yes"; then
            feature_not_found "usb-redir"
        fi
        usb_redir="no"
    fi
fi

2860 2861
##########################################

B
Blue Swirl 已提交
2862 2863 2864 2865 2866 2867
##########################################
# check if we have fdatasync

fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
2868 2869 2870 2871
int main(void) {
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
return fdatasync(0);
#else
2872
#error Not supported
2873 2874
#endif
}
B
Blue Swirl 已提交
2875 2876 2877 2878 2879
EOF
if compile_prog "" "" ; then
    fdatasync=yes
fi

A
Andreas Färber 已提交
2880 2881 2882 2883 2884 2885 2886
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2887
#include <stddef.h>
A
Andreas Färber 已提交
2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899
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 已提交
2900
#include <stddef.h>
A
Andreas Färber 已提交
2901 2902 2903 2904 2905 2906
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924
##########################################
# check if we have usable SIGEV_THREAD_ID

sigev_thread_id=no
cat > $TMPC << EOF
#include <signal.h>
int main(void) {
  struct sigevent ev;
  ev.sigev_notify = SIGEV_THREAD_ID;
  ev._sigev_un._tid = 0;
  asm volatile("" : : "g"(&ev));
  return 0;
}
EOF
if compile_prog "" "" ; then
    sigev_thread_id=yes
fi

2925 2926 2927
##########################################
# check if trace backend exists

2928
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
2929 2930 2931 2932 2933 2934 2935 2936
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2937 2938 2939 2940 2941 2942 2943 2944 2945
##########################################
# 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
2946
    LIBS="-lust -lurcu-bp $LIBS"
2947
    libs_qga="-lust -lurcu-bp $libs_qga"
2948 2949 2950 2951 2952 2953 2954
  else
    echo
    echo "Error: Trace backend 'ust' missing libust header files"
    echo
    exit 1
  fi
fi
2955 2956 2957 2958 2959 2960 2961 2962 2963 2964

##########################################
# 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
2965 2966 2967 2968
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
2969 2970
fi

W
Wolfgang Mauerer 已提交
2971 2972 2973 2974
##########################################
# __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
2975
if test "$vhost_net" = "yes" && test "$cpu" = "i386"; then
W
Wolfgang Mauerer 已提交
2976
  cat > $TMPC << EOF
2977
static int sfaa(int *ptr)
W
Wolfgang Mauerer 已提交
2978 2979 2980 2981
{
  return __sync_fetch_and_and(ptr, 0);
}

2982
int main(void)
W
Wolfgang Mauerer 已提交
2983 2984 2985 2986 2987 2988 2989
{
  int val = 42;
  sfaa(&val);
  return val;
}
EOF
  if ! compile_prog "" "" ; then
2990
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
W
Wolfgang Mauerer 已提交
2991 2992 2993
  fi
fi

2994
##########################################
2995
# check and set a backend for coroutine
2996

2997 2998 2999 3000 3001
# 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
3002
#include <ucontext.h>
3003 3004 3005
#ifdef __stub_makecontext
#error Ignoring glibc stub makecontext which will always fail
#endif
3006
int main(void) { makecontext(0, 0, 0); return 0; }
3007
EOF
3008 3009 3010 3011 3012
    if compile_prog "" "" ; then
        coroutine_backend=ucontext
    else
	coroutine_backend=gthread
    fi
3013
  fi
3014 3015 3016 3017
elif test "$coroutine" = "gthread" ; then
  coroutine_backend=gthread
elif test "$coroutine" = "windows" ; then
  coroutine_backend=windows
3018 3019
elif test "$coroutine" = "sigaltstack" ; then
  coroutine_backend=sigaltstack
3020 3021 3022 3023 3024
else
  echo
  echo "Error: unknown coroutine backend $coroutine"
  echo
  exit 1
3025 3026
fi

3027 3028 3029
##########################################
# check if we have open_by_handle_at

S
Stefan Weil 已提交
3030
open_by_handle_at=no
3031 3032
cat > $TMPC << EOF
#include <fcntl.h>
3033 3034 3035
#if !defined(AT_EMPTY_PATH)
# error missing definition
#else
3036
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
3037
#endif
3038 3039 3040 3041 3042
EOF
if compile_prog "" "" ; then
    open_by_handle_at=yes
fi

3043 3044 3045 3046 3047 3048 3049
########################################
# check if we have linux/magic.h

linux_magic_h=no
cat > $TMPC << EOF
#include <linux/magic.h>
int main(void) {
3050
  return 0;
3051 3052 3053 3054 3055 3056
}
EOF
if compile_prog "" "" ; then
    linux_magic_h=yes
fi

3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073
########################################
# 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

3074
########################################
3075
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
3076 3077 3078 3079

valgrind_h=no
cat > $TMPC << EOF
#include <valgrind/valgrind.h>
3080
#include <valgrind/memcheck.h>
3081 3082 3083 3084 3085 3086 3087 3088
int main(void) {
  return 0;
}
EOF
if compile_prog "" "" ; then
    valgrind_h=yes
fi

3089 3090 3091 3092 3093 3094 3095
########################################
# check if environ is declared

has_environ=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) {
3096
    environ = 0;
3097 3098 3099 3100 3101 3102 3103
    return 0;
}
EOF
if compile_prog "" "" ; then
    has_environ=yes
fi

3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118
########################################
# check if cpuid.h is usable.

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


3119
##########################################
3120 3121 3122 3123
# End of CC checks
# After here, no more $cc or $ld runs

if test "$debug" = "no" ; then
3124
  CFLAGS="-O2 -D_FORTIFY_SOURCE=2 $CFLAGS"
3125
fi
J
Juan Quintela 已提交
3126

3127 3128 3129 3130 3131 3132 3133 3134 3135 3136
# 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

3137 3138 3139 3140 3141
# 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

3142 3143
if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
3144
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
3145 3146 3147
    fi
fi

3148 3149 3150 3151 3152 3153 3154
# test if pod2man has --utf8 option
if pod2man --help | grep -q utf8; then
    POD2MAN="pod2man --utf8"
else
    POD2MAN="pod2man"
fi

3155 3156 3157 3158 3159 3160 3161 3162 3163
# 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

3164
qemu_confdir=$sysconfdir$confsuffix
3165
qemu_datadir=$datadir$confsuffix
3166

3167 3168
tools=""
if test "$want_tools" = "yes" ; then
3169
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
3170 3171 3172 3173 3174
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
    tools="qemu-nbd\$(EXESUF) $tools"
  fi
fi
if test "$softmmu" = yes ; then
3175
  if test "$virtfs" != no ; then
3176 3177 3178 3179 3180
    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
3181 3182
        echo "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
        exit 1
3183
      fi
3184
      virtfs=no
3185
    fi
3186
  fi
3187
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
3188
    if [ "$guest_agent" = "yes" ]; then
M
Michael Roth 已提交
3189
      tools="qemu-ga\$(EXESUF) $tools"
3190
    fi
3191
  fi
3192 3193 3194
  if test "$smartcard_nss" = "yes" ; then
    tools="vscclient\$(EXESUF) $tools"
  fi
3195
fi
3196 3197 3198 3199 3200 3201 3202 3203

# 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
3204
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
3205 3206
  roms="$roms spapr-rtas"
fi
3207

3208 3209 3210 3211
# add pixman flags after all config tests are done
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags"
libs_softmmu="$libs_softmmu $pixman_libs"

B
bellard 已提交
3212
echo "Install prefix    $prefix"
3213
echo "BIOS directory    `eval echo $qemu_datadir`"
3214
echo "binary directory  `eval echo $bindir`"
A
Alon Levy 已提交
3215
echo "library directory `eval echo $libdir`"
3216
echo "libexec directory `eval echo $libexecdir`"
3217
echo "include directory `eval echo $includedir`"
3218
echo "config directory  `eval echo $sysconfdir`"
L
Luiz Capitulino 已提交
3219
echo "local state directory   `eval echo $local_statedir`"
B
bellard 已提交
3220
if test "$mingw32" = "no" ; then
3221
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
3222
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
3223
fi
3224
echo "Source path       $source_path"
B
bellard 已提交
3225
echo "C compiler        $cc"
B
bellard 已提交
3226
echo "Host C compiler   $host_cc"
3227
echo "Objective-C compiler $objcc"
3228
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
3229
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
3230
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
3231
echo "make              $make"
3232
echo "install           $install"
B
Blue Swirl 已提交
3233
echo "python            $python"
3234 3235 3236
if test "$slirp" = "yes" ; then
    echo "smbd              $smbd"
fi
B
bellard 已提交
3237
echo "host CPU          $cpu"
B
bellard 已提交
3238
echo "host big endian   $bigendian"
3239
echo "target list       $target_list"
3240
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
3241
echo "gprof enabled     $gprof"
3242
echo "sparse enabled    $sparse"
3243
echo "strip binaries    $strip_opt"
3244
echo "profiler          $profiler"
B
bellard 已提交
3245
echo "static build      $static"
3246
echo "-Werror enabled   $werror"
3247 3248 3249
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
3250
echo "pixman            $pixman"
3251
echo "SDL support       $sdl"
B
balrog 已提交
3252
echo "curses support    $curses"
A
Alexander Graf 已提交
3253
echo "curl support      $curl"
B
bellard 已提交
3254
echo "mingw32 support   $mingw32"
M
malc 已提交
3255 3256
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
3257
echo "Block whitelist   $block_drv_whitelist"
3258
echo "Mixer emulation   $mixemu"
3259
echo "VirtFS support    $virtfs"
J
Jes Sorensen 已提交
3260 3261 3262 3263 3264 3265 3266
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
3267 3268 3269
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
3270
echo "xen support       $xen"
A
aurel32 已提交
3271
echo "brlapi support    $brlapi"
3272
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
3273
echo "Documentation     $docs"
3274 3275
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
3276
echo "NPTL support      $nptl"
P
Paul Brook 已提交
3277
echo "GUEST_BASE        $guest_base"
3278
echo "PIE               $pie"
3279
echo "vde support       $vde"
3280
echo "Linux AIO support $linux_aio"
3281
echo "ATTR/XATTR support $attr"
T
ths 已提交
3282
echo "Install blobs     $blobs"
3283
echo "KVM support       $kvm"
3284
echo "TCG interpreter   $tcg_interpreter"
3285
echo "fdt support       $fdt"
3286
echo "preadv support    $preadv"
B
Blue Swirl 已提交
3287
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
3288 3289
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
3290
echo "sigev_thread_id   $sigev_thread_id"
3291
echo "uuid support      $uuid"
3292
echo "libcap-ng support $cap_ng"
M
Michael S. Tsirkin 已提交
3293
echo "vhost-net support $vhost_net"
3294
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
3295
echo "Trace output file $trace_file-<pid>"
3296
echo "spice support     $spice ($spice_protocol_version/$spice_server_version)"
3297
echo "rbd support       $rbd"
C
Christoph Hellwig 已提交
3298
echo "xfsctl support    $xfs"
R
Robert Relyea 已提交
3299
echo "nss used          $smartcard_nss"
3300
echo "usb net redir     $usb_redir"
M
Michael Walle 已提交
3301
echo "OpenGL support    $opengl"
R
Ronnie Sahlberg 已提交
3302
echo "libiscsi support  $libiscsi"
3303
echo "build guest agent $guest_agent"
3304
echo "seccomp support   $seccomp"
3305
echo "coroutine backend $coroutine_backend"
3306
echo "GlusterFS support $glusterfs"
3307
echo "virtio-blk-data-plane $virtio_blk_data_plane"
B
bellard 已提交
3308

3309
if test "$sdl_too_old" = "yes"; then
B
bellard 已提交
3310
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
3311
fi
B
bellard 已提交
3312

3313
config_host_mak="config-host.mak"
3314
config_host_ld="config-host.ld"
3315

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

3318 3319 3320 3321 3322
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

3323
echo all: >> $config_host_mak
3324 3325
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
A
Alon Levy 已提交
3326
echo "libdir=$libdir" >> $config_host_mak
3327
echo "libexecdir=$libexecdir" >> $config_host_mak
3328
echo "includedir=$includedir" >> $config_host_mak
3329 3330
echo "mandir=$mandir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
3331
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
3332 3333
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
L
Luiz Capitulino 已提交
3334
echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
3335
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
3336

3337
echo "ARCH=$ARCH" >> $config_host_mak
3338
if test "$debug_tcg" = "yes" ; then
3339
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
3340
fi
P
Paul Brook 已提交
3341
if test "$debug" = "yes" ; then
3342
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
3343
fi
3344
if test "$strip_opt" = "yes" ; then
3345
  echo "STRIP=${strip}" >> $config_host_mak
3346
fi
B
bellard 已提交
3347
if test "$bigendian" = "yes" ; then
3348
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
3349
fi
B
bellard 已提交
3350
if test "$mingw32" = "yes" ; then
3351
  echo "CONFIG_WIN32=y" >> $config_host_mak
3352 3353 3354 3355 3356 3357 3358 3359 3360
  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
3361
else
J
Juan Quintela 已提交
3362
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
3363 3364 3365 3366
fi

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

3369
if test "$darwin" = "yes" ; then
3370
  echo "CONFIG_DARWIN=y" >> $config_host_mak
3371
fi
M
malc 已提交
3372 3373

if test "$aix" = "yes" ; then
3374
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
3375 3376
fi

B
bellard 已提交
3377
if test "$solaris" = "yes" ; then
3378
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
3379
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
3380
  if test "$needs_libsunmath" = "yes" ; then
3381
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
3382
  fi
B
bellard 已提交
3383
fi
3384 3385 3386
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
3387
if test "$static" = "yes" ; then
3388
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
3389
fi
3390
if test "$profiler" = "yes" ; then
3391
  echo "CONFIG_PROFILER=y" >> $config_host_mak
3392
fi
B
bellard 已提交
3393
if test "$slirp" = "yes" ; then
3394
  echo "CONFIG_SLIRP=y" >> $config_host_mak
3395
  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
B
bellard 已提交
3396
fi
3397
if test "$vde" = "yes" ; then
3398
  echo "CONFIG_VDE=y" >> $config_host_mak
3399
fi
3400 3401 3402
if test "$cap_ng" = "yes" ; then
  echo "CONFIG_LIBCAP=y" >> $config_host_mak
fi
M
malc 已提交
3403
for card in $audio_card_list; do
3404
    def=CONFIG_`echo $card | LC_ALL=C tr '[a-z]' '[A-Z]'`
3405
    echo "$def=y" >> $config_host_mak
M
malc 已提交
3406
done
3407
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
3408
for drv in $audio_drv_list; do
3409
    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
3410
    echo "$def=y" >> $config_host_mak
M
malc 已提交
3411
    if test "$drv" = "fmod"; then
3412
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
3413 3414
    fi
done
3415 3416 3417
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
3418 3419 3420
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
3421
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
3422
if test "$mixemu" = "yes" ; then
3423
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
3424
fi
J
Jes Sorensen 已提交
3425 3426 3427
if test "$vnc" = "yes" ; then
  echo "CONFIG_VNC=y" >> $config_host_mak
fi
3428
if test "$vnc_tls" = "yes" ; then
3429
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
3430
fi
3431
if test "$vnc_sasl" = "yes" ; then
3432
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
3433
fi
J
Jes Sorensen 已提交
3434
if test "$vnc_jpeg" = "yes" ; then
3435 3436
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
fi
J
Jes Sorensen 已提交
3437
if test "$vnc_png" = "yes" ; then
C
Corentin Chary 已提交
3438 3439
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
fi
3440
if test "$fnmatch" = "yes" ; then
3441
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
3442
fi
3443 3444 3445
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
C
Christoph Hellwig 已提交
3446 3447 3448
if test "$xfs" = "yes" ; then
  echo "CONFIG_XFS=y" >> $config_host_mak
fi
3449
qemu_version=`head $source_path/VERSION`
3450
echo "VERSION=$qemu_version" >>$config_host_mak
3451
echo "PKGVERSION=$pkgversion" >>$config_host_mak
3452 3453
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
3454
if [ "$docs" = "yes" ] ; then
3455
  echo "BUILD_DOCS=yes" >> $config_host_mak
3456
fi
3457
if test "$sdl" = "yes" ; then
3458
  echo "CONFIG_SDL=y" >> $config_host_mak
3459
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
3460 3461
fi
if test "$cocoa" = "yes" ; then
3462
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
3463 3464
fi
if test "$curses" = "yes" ; then
3465
  echo "CONFIG_CURSES=y" >> $config_host_mak
3466
fi
3467
if test "$atfile" = "yes" ; then
3468
  echo "CONFIG_ATFILE=y" >> $config_host_mak
3469
fi
R
Riku Voipio 已提交
3470
if test "$utimens" = "yes" ; then
3471
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
3472
fi
R
Riku Voipio 已提交
3473
if test "$pipe2" = "yes" ; then
3474
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
3475
fi
K
Kevin Wolf 已提交
3476 3477 3478
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
3479
if test "$splice" = "yes" ; then
3480
  echo "CONFIG_SPLICE=y" >> $config_host_mak
3481
fi
R
Riku Voipio 已提交
3482 3483 3484
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
3485 3486 3487
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
3488 3489 3490
if test "$sync_file_range" = "yes" ; then
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
3491 3492 3493
if test "$fiemap" = "yes" ; then
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
fi
3494 3495 3496
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
3497 3498 3499 3500 3501 3502 3503 3504 3505
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
3506
if test "$inotify" = "yes" ; then
3507
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
3508
fi
3509 3510 3511
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
3512 3513 3514 3515 3516 3517
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 已提交
3518
if test "$curl" = "yes" ; then
3519
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
3520
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
3521
fi
A
aurel32 已提交
3522
if test "$brlapi" = "yes" ; then
3523
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
3524
fi
B
balrog 已提交
3525
if test "$bluez" = "yes" ; then
3526
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
3527
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
3528
fi
3529
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
3530
if test "$xen" = "yes" ; then
J
Jan Kiszka 已提交
3531
  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
3532
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
3533
fi
3534 3535 3536
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
3537 3538 3539
if test "$attr" = "yes" ; then
  echo "CONFIG_ATTR=y" >> $config_host_mak
fi
3540 3541 3542
if test "$libattr" = "yes" ; then
  echo "CONFIG_LIBATTR=y" >> $config_host_mak
fi
3543 3544
if test "$virtfs" = "yes" ; then
  echo "CONFIG_VIRTFS=y" >> $config_host_mak
3545
fi
T
ths 已提交
3546
if test "$blobs" = "yes" ; then
3547
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
3548
fi
A
aliguori 已提交
3549
if test "$iovec" = "yes" ; then
3550
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
3551
fi
3552
if test "$preadv" = "yes" ; then
3553
  echo "CONFIG_PREADV=y" >> $config_host_mak
3554
fi
3555
if test "$fdt" = "yes" ; then
3556
  echo "CONFIG_FDT=y" >> $config_host_mak
3557
fi
M
Marcelo Tosatti 已提交
3558 3559 3560
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
3561 3562 3563
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
3564 3565 3566
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
3567 3568 3569 3570 3571 3572
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
3573 3574 3575
if test "$sigev_thread_id" = "yes" ; then
  echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
fi
3576

3577 3578 3579
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi
A
Alon Levy 已提交
3580 3581 3582 3583

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

R
Robert Relyea 已提交
3585 3586
if test "$smartcard_nss" = "yes" ; then
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
P
Paul Brook 已提交
3587 3588
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
R
Robert Relyea 已提交
3589 3590
fi

3591 3592 3593 3594
if test "$usb_redir" = "yes" ; then
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
fi

M
Michael Walle 已提交
3595 3596 3597 3598
if test "$opengl" = "yes" ; then
  echo "CONFIG_OPENGL=y" >> $config_host_mak
fi

R
Ronnie Sahlberg 已提交
3599 3600 3601 3602
if test "$libiscsi" = "yes" ; then
  echo "CONFIG_LIBISCSI=y" >> $config_host_mak
fi

3603 3604 3605 3606
if test "$seccomp" = "yes"; then
  echo "CONFIG_SECCOMP=y" >> $config_host_mak
fi

3607
# XXX: suppress that
B
bellard 已提交
3608
if [ "$bsd" = "yes" ] ; then
3609
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
3610 3611
fi

3612
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3613

3614 3615 3616
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
3617 3618
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
3619 3620
fi

3621
if test "$coroutine_backend" = "ucontext" ; then
3622
  echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak
3623 3624
elif test "$coroutine_backend" = "sigaltstack" ; then
  echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak
3625
fi
3626

3627 3628 3629 3630
if test "$open_by_handle_at" = "yes" ; then
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
fi

3631 3632
if test "$linux_magic_h" = "yes" ; then
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
3633 3634
fi

3635 3636 3637 3638
if test "$pragma_disable_unused_but_set" = "yes" ; then
  echo "CONFIG_PRAGMA_DISABLE_UNUSED_BUT_SET=y" >> $config_host_mak
fi

3639 3640 3641 3642
if test "$valgrind_h" = "yes" ; then
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
fi

3643 3644
if test "$has_environ" = "yes" ; then
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
3645 3646
fi

3647 3648 3649 3650
if test "$cpuid_h" = "yes" ; then
  echo "CONFIG_CPUID_H=y" >> $config_host_mak
fi

3651 3652 3653
if test "$glusterfs" = "yes" ; then
  echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
fi
3654

3655 3656 3657 3658
if test "$virtio_blk_data_plane" = "yes" ; then
  echo "CONFIG_VIRTIO_BLK_DATA_PLANE=y" >> $config_host_mak
fi

3659 3660 3661
# USB host support
case "$usb" in
linux)
3662
  echo "HOST_USB=linux" >> $config_host_mak
3663 3664
;;
bsd)
3665
  echo "HOST_USB=bsd" >> $config_host_mak
3666 3667
;;
*)
3668
  echo "HOST_USB=stub" >> $config_host_mak
3669 3670 3671
;;
esac

3672 3673
# use default implementation for tracing backend-specific routines
trace_default=yes
3674
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3675 3676
if test "$trace_backend" = "nop"; then
  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
3677
fi
P
Prerna Saxena 已提交
3678
if test "$trace_backend" = "simple"; then
3679
  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
3680
  trace_default=no
3681
  # Set the appropriate trace file.
3682
  trace_file="\"$trace_file-\" FMT_pid"
P
Prerna Saxena 已提交
3683
fi
3684 3685
if test "$trace_backend" = "stderr"; then
  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
3686
  trace_default=no
3687 3688 3689 3690 3691 3692 3693 3694 3695
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
3696
fi
P
Prerna Saxena 已提交
3697
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
3698 3699 3700
if test "$trace_default" = "yes"; then
  echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
3701

3702 3703
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
3704 3705
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
3706 3707 3708
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 已提交
3709
echo "PYTHON=$python" >> $config_host_mak
3710
echo "CC=$cc" >> $config_host_mak
P
Paolo Bonzini 已提交
3711
echo "CC_I386=$cc_i386" >> $config_host_mak
3712
echo "HOST_CC=$host_cc" >> $config_host_mak
3713
echo "OBJCC=$objcc" >> $config_host_mak
3714 3715 3716
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
3717
echo "WINDRES=$windres" >> $config_host_mak
A
Alon Levy 已提交
3718
echo "LIBTOOL=$libtool" >> $config_host_mak
3719
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
3720
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3721
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
3722 3723 3724 3725 3726
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
3727 3728 3729 3730 3731
if test "$cross_prefix" != ""; then
  echo "AUTOCONF_HOST := --host=${cross_prefix%-}"     >> $config_host_mak
else
  echo "AUTOCONF_HOST := "                             >> $config_host_mak
fi
3732
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3733 3734
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
3735
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
3736
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3737
echo "EXESUF=$EXESUF" >> $config_host_mak
3738
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
3739
echo "POD2MAN=$POD2MAN" >> $config_host_mak
3740
echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
3741

3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753
# 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

3754 3755
# use included Linux headers
if test "$linux" = "yes" ; then
3756
  mkdir -p linux-headers
3757 3758
  case "$cpu" in
  i386|x86_64)
3759
    linux_arch=x86
3760 3761
    ;;
  ppcemb|ppc|ppc64)
3762
    linux_arch=powerpc
3763 3764
    ;;
  s390x)
3765 3766 3767 3768 3769
    linux_arch=s390
    ;;
  *)
    # For most CPUs the kernel architecture name and QEMU CPU name match.
    linux_arch="$cpu"
3770 3771
    ;;
  esac
3772 3773 3774 3775
    # 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
3776 3777
fi

3778
for target in $target_list; do
3779
target_dir="$target"
3780
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
3781
target_arch2=`echo $target | cut -d '-' -f 1`
3782
target_bigendian="no"
3783

3784
case "$target_arch2" in
3785
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
3786 3787 3788
  target_bigendian=yes
  ;;
esac
3789
target_softmmu="no"
B
bellard 已提交
3790
target_user_only="no"
3791
target_linux_user="no"
B
blueswir1 已提交
3792
target_bsd_user="no"
P
pbrook 已提交
3793
case "$target" in
B
Blue Swirl 已提交
3794
  ${target_arch2}-softmmu)
P
pbrook 已提交
3795 3796
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
3797
  ${target_arch2}-linux-user)
3798 3799 3800 3801
    if test "$linux" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Linux host"
      exit 1
    fi
P
pbrook 已提交
3802 3803 3804
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
3805
  ${target_arch2}-bsd-user)
B
Blue Swirl 已提交
3806
    if test "$bsd" != "yes" ; then
3807 3808 3809
      echo "ERROR: Target '$target' is only available on a BSD host"
      exit 1
    fi
B
blueswir1 已提交
3810 3811 3812
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
3813 3814 3815 3816 3817
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
3818

3819
mkdir -p $target_dir
3820
echo "# Automatically generated by configure - do not modify" > $config_target_mak
B
bellard 已提交
3821

P
pbrook 已提交
3822
bflt="no"
3823
target_nptl="no"
B
Blue Swirl 已提交
3824
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
pbrook 已提交
3825
gdb_xml_files=""
3826 3827 3828 3829
target_short_alignment=2
target_int_alignment=4
target_long_alignment=4
target_llong_alignment=8
3830
target_libs_softmmu=
A
aliguori 已提交
3831

3832
TARGET_ARCH="$target_arch2"
3833
TARGET_BASE_ARCH=""
3834
TARGET_ABI_DIR=""
3835

B
Blue Swirl 已提交
3836
case "$target_arch2" in
A
aurel32 已提交
3837 3838 3839
  i386)
  ;;
  x86_64)
3840
    TARGET_BASE_ARCH=i386
3841
    target_long_alignment=8
A
aurel32 已提交
3842 3843
  ;;
  alpha)
3844
    target_long_alignment=8
R
Richard Henderson 已提交
3845
    target_nptl="yes"
A
aurel32 已提交
3846 3847
  ;;
  arm|armeb)
J
Juan Quintela 已提交
3848
    TARGET_ARCH=arm
A
aurel32 已提交
3849
    bflt="yes"
3850
    target_nptl="yes"
P
pbrook 已提交
3851
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
3852
    target_llong_alignment=4
G
Grant Likely 已提交
3853
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3854 3855
  ;;
  cris)
E
edgar_igl 已提交
3856
    target_nptl="yes"
A
aurel32 已提交
3857
  ;;
M
Michael Walle 已提交
3858
  lm32)
3859
    target_libs_softmmu="$opengl_libs"
M
Michael Walle 已提交
3860
  ;;
A
aurel32 已提交
3861 3862
  m68k)
    bflt="yes"
P
pbrook 已提交
3863
    gdb_xml_files="cf-core.xml cf-fp.xml"
3864 3865 3866
    target_int_alignment=2
    target_long_alignment=2
    target_llong_alignment=2
A
aurel32 已提交
3867
  ;;
3868 3869
  microblaze|microblazeel)
    TARGET_ARCH=microblaze
3870 3871
    bflt="yes"
    target_nptl="yes"
3872
    target_libs_softmmu="$fdt_libs"
3873
  ;;
J
Juan Quintela 已提交
3874
  mips|mipsel)
J
Juan Quintela 已提交
3875
    TARGET_ARCH=mips
3876
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
3877
    target_nptl="yes"
A
aurel32 已提交
3878 3879
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
3880
    TARGET_ARCH=mipsn32
3881
    TARGET_BASE_ARCH=mips
3882
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
A
aurel32 已提交
3883 3884
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
3885
    TARGET_ARCH=mips64
3886
    TARGET_BASE_ARCH=mips
3887
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
3888
    target_long_alignment=8
A
aurel32 已提交
3889
  ;;
3890 3891 3892 3893
  or32)
    TARGET_ARCH=openrisc
    TARGET_BASE_ARCH=openrisc
  ;;
A
aurel32 已提交
3894
  ppc)
3895
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3896
    target_nptl="yes"
3897
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3898 3899
  ;;
  ppcemb)
3900
    TARGET_BASE_ARCH=ppc
3901
    TARGET_ABI_DIR=ppc
3902
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3903
    target_nptl="yes"
3904
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3905 3906
  ;;
  ppc64)
3907
    TARGET_BASE_ARCH=ppc
3908
    TARGET_ABI_DIR=ppc
3909
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3910
    target_long_alignment=8
3911
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3912 3913
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
3914
    TARGET_ARCH=ppc64
3915
    TARGET_BASE_ARCH=ppc
3916
    TARGET_ABI_DIR=ppc
3917
    echo "TARGET_ABI32=y" >> $config_target_mak
3918
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3919
    target_libs_softmmu="$fdt_libs"
A
aurel32 已提交
3920 3921
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
3922
    TARGET_ARCH=sh4
A
aurel32 已提交
3923
    bflt="yes"
A
aurel32 已提交
3924
    target_nptl="yes"
A
aurel32 已提交
3925 3926 3927 3928
  ;;
  sparc)
  ;;
  sparc64)
3929
    TARGET_BASE_ARCH=sparc
3930
    target_long_alignment=8
A
aurel32 已提交
3931 3932
  ;;
  sparc32plus)
J
Juan Quintela 已提交
3933
    TARGET_ARCH=sparc64
3934
    TARGET_BASE_ARCH=sparc
3935
    TARGET_ABI_DIR=sparc
3936
    echo "TARGET_ABI32=y" >> $config_target_mak
A
aurel32 已提交
3937
  ;;
3938
  s390x)
U
Ulrich Hecht 已提交
3939
    target_nptl="yes"
3940
    target_long_alignment=8
3941
  ;;
3942 3943
  unicore32)
  ;;
3944 3945 3946
  xtensa|xtensaeb)
    TARGET_ARCH=xtensa
  ;;
A
aurel32 已提交
3947 3948 3949 3950 3951
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
3952 3953 3954 3955 3956 3957 3958
# 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"

3959 3960 3961 3962
upper() {
    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
}

3963
case "$cpu" in
M
malc 已提交
3964
  i386|x86_64|ppc)
3965 3966 3967 3968
    # The TCG interpreter currently does not support ld/st optimization.
    if test "$tcg_interpreter" = "no" ; then
        echo "CONFIG_QEMU_LDST_OPTIMIZATION=y" >> $config_target_mak
    fi
3969 3970 3971
  ;;
esac

3972 3973 3974 3975
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
3976
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3977
target_arch_name="`upper $TARGET_ARCH`"
3978 3979
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
3980
echo "TARGET_TYPE=TARGET_TYPE_`upper $target_arch2`" >> $config_target_mak
3981
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3982 3983 3984
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
3985
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
J
Juan Quintela 已提交
3986 3987 3988
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3989
      echo "CONFIG_XEN=y" >> $config_target_mak
3990 3991 3992
      if test "$xen_pci_passthrough" = yes; then
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
      fi
3993 3994
    else
      echo "CONFIG_NO_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
3995
    fi
3996 3997 3998
    ;;
  *)
    echo "CONFIG_NO_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
3999
esac
J
Juan Quintela 已提交
4000
case "$target_arch2" in
A
Alexander Graf 已提交
4001
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
4002 4003 4004 4005
    # 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 已提交
4006
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
R
René Rebe 已提交
4007 4008
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
J
Juan Quintela 已提交
4009 4010
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
4011
      echo "CONFIG_KVM=y" >> $config_target_mak
4012
      if test "$vhost_net" = "yes" ; then
M
Michael S. Tsirkin 已提交
4013 4014
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
4015 4016
    fi
esac
4017 4018 4019 4020
case "$target_arch2" in
  i386|x86_64)
    echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
esac
4021
if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then
4022 4023
  echo "CONFIG_PSERIES=y" >> $config_target_mak
fi
B
bellard 已提交
4024
if test "$target_bigendian" = "yes" ; then
4025
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
4026
fi
4027
if test "$target_softmmu" = "yes" ; then
4028
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
4029
  echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
P
Paul Brook 已提交
4030 4031 4032
  if test "$smartcard_nss" = "yes" ; then
    echo "subdir-$target: subdir-libcacard" >> $config_host_mak
  fi
4033 4034 4035 4036
  case "$target_arch2" in
    i386|x86_64)
      echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak
  esac
B
bellard 已提交
4037
fi
B
bellard 已提交
4038
if test "$target_user_only" = "yes" ; then
4039
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
4040
  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
B
bellard 已提交
4041
fi
4042
if test "$target_linux_user" = "yes" ; then
4043
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
4044
fi
P
pbrook 已提交
4045 4046 4047 4048 4049
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
4050
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
4051
fi
4052

P
pbrook 已提交
4053
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
4054
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
4055
fi
4056 4057
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
4058
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
4059
fi
P
Paul Brook 已提交
4060
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
4061
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
4062
fi
B
blueswir1 已提交
4063
if test "$target_bsd_user" = "yes" ; then
4064
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
4065
fi
4066

4067 4068 4069 4070 4071
# 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

4072
# generate QEMU_CFLAGS/LDFLAGS for targets
4073

4074
cflags=""
4075
includes=""
4076
ldflags=""
4077

4078 4079 4080
if test "$tcg_interpreter" = "yes"; then
  includes="-I\$(SRC_PATH)/tcg/tci $includes"
elif test "$ARCH" = "sparc64" ; then
4081
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
4082
elif test "$ARCH" = "s390x" ; then
4083
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
4084
elif test "$ARCH" = "x86_64" ; then
4085
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
J
Juan Quintela 已提交
4086
else
4087
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
J
Juan Quintela 已提交
4088
fi
4089
includes="-I\$(SRC_PATH)/tcg $includes"
J
Juan Quintela 已提交
4090

4091 4092 4093 4094
if test "$linux" = "yes" ; then
  includes="-I\$(SRC_PATH)/linux-headers $includes"
fi

4095 4096 4097
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
4098
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
4099
    echo "CONFIG_ALPHA_DIS=y"  >> config-all-disas.mak
4100 4101
  ;;
  arm)
4102
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
4103
    echo "CONFIG_ARM_DIS=y"  >> config-all-disas.mak
4104 4105
  ;;
  cris)
4106
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
4107
    echo "CONFIG_CRIS_DIS=y"  >> config-all-disas.mak
4108 4109
  ;;
  hppa)
4110
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
4111
    echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
4112 4113
  ;;
  i386|x86_64)
4114
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
4115
    echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak
4116
  ;;
A
Aurelien Jarno 已提交
4117 4118
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
4119
    echo "CONFIG_IA64_DIS=y"  >> config-all-disas.mak
A
Aurelien Jarno 已提交
4120
  ;;
4121 4122
  lm32)
    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
4123
    echo "CONFIG_LM32_DIS=y"  >> config-all-disas.mak
4124
  ;;
4125
  m68k)
4126
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
4127
    echo "CONFIG_M68K_DIS=y"  >> config-all-disas.mak
4128
  ;;
4129
  microblaze*)
4130
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
4131
    echo "CONFIG_MICROBLAZE_DIS=y"  >> config-all-disas.mak
4132 4133
  ;;
  mips*)
4134
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
4135
    echo "CONFIG_MIPS_DIS=y"  >> config-all-disas.mak
4136
  ;;
4137 4138
  or32)
    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
4139
    echo "CONFIG_OPENRISC_DIS=y"  >> config-all-disas.mak
4140
  ;;
4141
  ppc*)
4142
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
4143
    echo "CONFIG_PPC_DIS=y"  >> config-all-disas.mak
4144
  ;;
4145
  s390*)
4146
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
4147
    echo "CONFIG_S390_DIS=y"  >> config-all-disas.mak
4148 4149
  ;;
  sh4)
4150
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
4151
    echo "CONFIG_SH4_DIS=y"  >> config-all-disas.mak
4152 4153
  ;;
  sparc*)
4154
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
4155
    echo "CONFIG_SPARC_DIS=y"  >> config-all-disas.mak
4156
  ;;
4157 4158
  xtensa*)
    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
4159
    echo "CONFIG_XTENSA_DIS=y"  >> config-all-disas.mak
4160
  ;;
4161 4162
  esac
done
4163 4164
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
4165
  echo "CONFIG_TCI_DIS=y"  >> config-all-disas.mak
4166
fi
4167

4168 4169 4170 4171 4172 4173 4174
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

4175 4176 4177 4178
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
M
Michael Walle 已提交
4179 4180 4181
  ;;
  lm32)
    cflags="-DHAS_AUDIO $cflags"
4182 4183 4184 4185 4186 4187 4188
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

4189
if test "$gprof" = "yes" ; then
4190
  echo "TARGET_GPROF=yes" >> $config_target_mak
4191 4192 4193 4194 4195 4196
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
4197
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
4198 4199 4200
  fi
fi

4201 4202 4203
if test "$ARCH" = "tci"; then
  linker_script=""
else
P
Paolo Bonzini 已提交
4204
  linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/ldscripts/\$(ARCH).ld"
4205 4206
fi

4207
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
4208
  case "$ARCH" in
4209 4210 4211
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
4212
  *)
4213
    ldflags="$linker_script $ldflags"
4214 4215 4216 4217
    ;;
  esac
fi

4218 4219
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
4220
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
4221

4222
done # for target in $targets
B
bellard 已提交
4223

4224 4225 4226 4227
if [ "$pixman" = "internal" ]; then
  echo "config-host.h: subdir-pixman" >> $config_host_mak
fi

P
Paolo Bonzini 已提交
4228
# build tree in object directory in case the source is not in the current directory
4229
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32"
4230
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas"
P
Paolo Bonzini 已提交
4231
DIRS="$DIRS roms/seabios roms/vgabios"
4232
DIRS="$DIRS qapi-generated"
4233
DIRS="$DIRS libcacard libcacard/libcacard libcacard/trace"
A
Anthony Liguori 已提交
4234 4235
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
4236
FILES="$FILES tests/tcg/lm32/Makefile libcacard/Makefile"
P
Paolo Bonzini 已提交
4237
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
A
Andreas Färber 已提交
4238
FILES="$FILES pc-bios/spapr-rtas/Makefile"
P
Paolo Bonzini 已提交
4239
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
4240 4241
for bios_file in \
    $source_path/pc-bios/*.bin \
4242
    $source_path/pc-bios/*.aml \
4243 4244 4245 4246 4247
    $source_path/pc-bios/*.rom \
    $source_path/pc-bios/*.dtb \
    $source_path/pc-bios/openbios-* \
    $source_path/pc-bios/palcode-*
do
P
Paolo Bonzini 已提交
4248 4249 4250 4251
    FILES="$FILES pc-bios/`basename $bios_file`"
done
mkdir -p $DIRS
for f in $FILES ; do
4252
    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
4253 4254
        symlink "$source_path/$f" "$f"
    fi
P
Paolo Bonzini 已提交
4255
done
P
Paul Brook 已提交
4256

4257
# temporary config to build submodules
4258
for rom in seabios vgabios ; do
4259
    config_mak=roms/$rom/config.mak
4260
    echo "# Automatically generated by configure - do not modify" > $config_mak
4261 4262 4263 4264 4265 4266 4267 4268 4269
    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

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