configure 135.1 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
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15 16
TMPB="qemu-conf-${RANDOM}-$$-${RANDOM}"
TMPO="${TMPDIR1}/${TMPB}.o"
17
TMPCXX="${TMPDIR1}/${TMPB}.cxx"
18 19
TMPL="${TMPDIR1}/${TMPB}.lo"
TMPA="${TMPDIR1}/lib${TMPB}.la"
20
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
B
bellard 已提交
21

22 23
# 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>
24
trap "rm -f $TMPC $TMPO $TMPCXX $TMPE" EXIT INT QUIT TERM
G
Gerd Hoffmann 已提交
25
rm -f config.log
26

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

34 35 36 37 38 39 40 41 42 43 44
error_exit() {
    echo
    echo "ERROR: $1"
    while test -n "$2"; do
        echo "       $2"
        shift
    done
    echo
    exit 1
}

45 46 47 48 49 50 51
do_compiler() {
    # Run the compiler, capturing its output to the log. First argument
    # is compiler binary to execute.
    local compiler="$1"
    shift
    echo $compiler "$@" >> config.log
    $compiler "$@" >> config.log 2>&1 || return $?
52 53 54 55 56 57 58 59 60 61 62 63 64
    # 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
65 66
    echo $compiler -Werror "$@" >> config.log
    $compiler -Werror "$@" >> config.log 2>&1 && return $?
67 68 69 70
    error_exit "configure test passed without -Werror but failed with -Werror." \
        "This is probably a bug in the configure script. The failing command" \
        "will be at the bottom of config.log." \
        "You can run configure with --disable-werror to bypass this check."
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
do_cc() {
    do_compiler "$cc" "$@"
}

do_cxx() {
    do_compiler "$cxx" "$@"
}

update_cxxflags() {
    # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
    # options which some versions of GCC's C++ compiler complain about
    # because they only make sense for C programs.
    QEMU_CXXFLAGS=
    for arg in $QEMU_CFLAGS; do
        case $arg in
            -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
            -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
                ;;
            *)
                QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
                ;;
        esac
    done
}

98
compile_object() {
99
  do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC
100 101 102 103 104
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
105
  do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
106 107
}

108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
do_libtool() {
    local mode=$1
    shift
    # Run the compiler, capturing its output to the log.
    echo $libtool $mode --tag=CC $cc "$@" >> config.log
    $libtool $mode --tag=CC $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 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
    $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
    error_exit "configure test passed without -Werror but failed with -Werror." \
        "This is probably a bug in the configure script. The failing command" \
        "will be at the bottom of config.log." \
        "You can run configure with --disable-werror to bypass this check."
}

libtool_prog() {
    do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
    do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
}

140 141
# symbolically link $1 to $2.  Portable version of "ln -sf".
symlink() {
142
  rm -rf "$2"
143
  mkdir -p "$(dirname "$2")"
144
  ln -s "$1" "$2"
145 146
}

147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
# 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 已提交
183
# default parameters
P
Paolo Bonzini 已提交
184
source_path=`dirname "$0"`
185
cpu=""
186
iasl="iasl"
187
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
188
static="no"
B
bellard 已提交
189
cross_prefix=""
M
malc 已提交
190
audio_drv_list=""
191 192
block_drv_rw_whitelist=""
block_drv_ro_whitelist=""
193
host_cc="cc"
J
Juan Quintela 已提交
194
libs_softmmu=""
J
Juan Quintela 已提交
195
libs_tools=""
196
audio_pt_int=""
197
audio_win_int=""
P
Paolo Bonzini 已提交
198
cc_i386=i386-pc-linux-gnu-gcc
199
libs_qga=""
200
debug_info="yes"
201

202 203
# Don't accept a target_list environment variable.
unset target_list
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222

# 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=""
223
netmap="no"
224
pixman=""
225
sdl=""
226
sdlabi="1.2"
227
virtfs=""
J
Jes Sorensen 已提交
228
vnc="yes"
229 230 231 232 233 234 235
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
236
vnc_ws=""
237
xen=""
238
xen_ctrl_version=""
239
xen_pci_passthrough=""
240
linux_aio=""
241
cap_ng=""
242
attr=""
243
libattr=""
244 245
xfs=""

246
vhost_net="no"
247
vhost_scsi="no"
248
kvm="no"
M
Michael R. Hines 已提交
249
rdma=""
250 251 252 253
gprof="no"
debug_tcg="no"
debug="no"
strip_opt="yes"
254
tcg_interpreter="no"
255 256
bigendian="no"
mingw32="no"
B
Blue Swirl 已提交
257 258
gcov="no"
gcov_tool="gcov"
259
EXESUF=""
F
Fam Zheng 已提交
260 261 262
DSOSUF=".so"
LDFLAGS_SHARED="-shared"
modules="no"
263 264
prefix="/usr/local"
mandir="\${prefix}/share/man"
265
datadir="\${prefix}/share"
266
qemu_docdir="\${prefix}/share/doc/qemu"
267
bindir="\${prefix}/bin"
A
Alon Levy 已提交
268
libdir="\${prefix}/lib"
269
libexecdir="\${prefix}/libexec"
270
includedir="\${prefix}/include"
271
sysconfdir="\${prefix}/etc"
L
Luiz Capitulino 已提交
272
local_statedir="\${prefix}/var"
273 274 275 276 277 278 279 280 281 282 283 284 285
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"
286
guest_base="yes"
287 288 289 290
uname_release=""
aix="no"
blobs="yes"
pkgversion=""
291
pie=""
292
zero_malloc=""
293
qom_cast_debug="yes"
294 295 296 297
trace_backend="nop"
trace_file="trace"
spice=""
rbd=""
R
Robert Relyea 已提交
298
smartcard_nss=""
G
Gerd Hoffmann 已提交
299
libusb=""
300
usb_redir=""
301
glx=""
A
Alon Levy 已提交
302
zlib="yes"
Q
qiaonuohan 已提交
303 304
lzo="no"
snappy="no"
305
guest_agent=""
306 307 308
guest_agent_with_vss="no"
vss_win32_sdk=""
win_sdk="no"
309
want_tools="yes"
R
Ronnie Sahlberg 已提交
310
libiscsi=""
P
Peter Lieven 已提交
311
libnfs=""
312
coroutine=""
313
coroutine_pool=""
314
seccomp=""
315
glusterfs=""
316
glusterfs_discard="no"
317
glusterfs_zerofill="no"
318
virtio_blk_data_plane=""
A
Anthony Liguori 已提交
319
gtk=""
320
gtkabi="2.0"
S
Stefan Berger 已提交
321
tpm="no"
322
libssh2=""
323
vhdx=""
B
Benoît Canet 已提交
324
quorum="no"
325

326 327 328 329 330 331
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
332
  --cc=*) CC="$optarg"
333
  ;;
334 335
  --cxx=*) CXX="$optarg"
  ;;
P
Paolo Bonzini 已提交
336 337
  --source-path=*) source_path="$optarg"
  ;;
338 339
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
340
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
341
                    EXTRA_CFLAGS="$optarg"
342 343
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
344
                     EXTRA_LDFLAGS="$optarg"
345
  ;;
346 347 348 349
  --enable-debug-info) debug_info="yes"
  ;;
  --disable-debug-info) debug_info="no"
  ;;
350 351 352 353
  esac
done
# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
354
# we can eliminate its usage altogether.
355

356 357 358 359 360 361 362 363 364 365
# 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

366 367 368 369 370 371
if test -z "${CXX}${cross_prefix}"; then
  cxx="c++"
else
  cxx="${CXX-${cross_prefix}g++}"
fi

372
ar="${AR-${cross_prefix}ar}"
373 374
as="${AS-${cross_prefix}as}"
cpp="${CPP-$cc -E}"
375 376
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
ld="${LD-${cross_prefix}ld}"
B
Brad 已提交
377
libtool="${LIBTOOL-${cross_prefix}libtool}"
378 379
strip="${STRIP-${cross_prefix}strip}"
windres="${WINDRES-${cross_prefix}windres}"
380 381 382 383 384
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
query_pkg_config() {
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
}
pkg_config=query_pkg_config
385
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
386
sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
387

388 389 390
# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
ARFLAGS="${ARFLAGS-rv}"

391
# default flags for all hosts
392
QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
393
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
K
Kevin Wolf 已提交
394
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
395
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
396
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
397 398 399 400
if test "$debug_info" = "yes"; then
    CFLAGS="-g $CFLAGS"
    LDFLAGS="-g $LDFLAGS"
fi
401

P
Paolo Bonzini 已提交
402 403 404
# make source path absolute
source_path=`cd "$source_path"; pwd`

405 406 407
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
408
#error $1 not defined
409 410 411
#endif
int main(void) { return 0; }
EOF
412
  compile_object
413 414
}

415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
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

450 451 452 453
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
454 455
  cpu="i386"
elif check_define __x86_64__ ; then
456 457 458 459 460
  if check_define __ILP32__ ; then
    cpu="x32"
  else
    cpu="x86_64"
  fi
B
blueswir1 已提交
461 462 463 464 465 466
elif check_define __sparc__ ; then
  if check_define __arch64__ ; then
    cpu="sparc64"
  else
    cpu="sparc"
  fi
M
malc 已提交
467 468 469 470 471 472
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
473 474
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
475 476
elif check_define __ia64__ ; then
  cpu="ia64"
477 478 479 480 481 482
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
483 484
elif check_define __arm__ ; then
  cpu="arm"
485 486
elif check_define __aarch64__ ; then
  cpu="aarch64"
487 488
elif check_define __hppa__ ; then
  cpu="hppa"
489
else
M
malc 已提交
490
  cpu=`uname -m`
491 492
fi

493 494 495
ARCH=
# Normalise host CPU name and set ARCH.
# Note that this case should only have supported host CPUs, not guests.
B
bellard 已提交
496
case "$cpu" in
497
  ia64|ppc|ppc64|s390|s390x|sparc64|x32)
498 499
    cpu="$cpu"
  ;;
B
bellard 已提交
500
  i386|i486|i586|i686|i86pc|BePC)
501
    cpu="i386"
B
bellard 已提交
502
  ;;
A
aurel32 已提交
503 504 505
  x86_64|amd64)
    cpu="x86_64"
  ;;
506 507
  armv*b|armv*l|arm)
    cpu="arm"
B
bellard 已提交
508
  ;;
509 510 511
  aarch64)
    cpu="aarch64"
  ;;
A
Aurelien Jarno 已提交
512 513 514
  mips*)
    cpu="mips"
  ;;
515
  sparc|sun4[cdmuv])
B
bellard 已提交
516 517
    cpu="sparc"
  ;;
B
bellard 已提交
518
  *)
519 520
    # This will result in either an error or falling back to TCI later
    ARCH=unknown
B
bellard 已提交
521 522
  ;;
esac
523 524 525
if test -z "$ARCH"; then
  ARCH="$cpu"
fi
J
Juan Quintela 已提交
526

B
bellard 已提交
527
# OS specific
528

B
bellard 已提交
529
case $targetos in
B
bellard 已提交
530
CYGWIN*)
531
  mingw32="yes"
J
Juan Quintela 已提交
532
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
533 534
  audio_possible_drivers="winwave sdl"
  audio_drv_list="winwave"
B
bellard 已提交
535
;;
B
bellard 已提交
536
MINGW32*)
537
  mingw32="yes"
538 539
  audio_possible_drivers="winwave dsound sdl fmod"
  audio_drv_list="winwave"
B
bellard 已提交
540
;;
T
ths 已提交
541
GNU/kFreeBSD)
A
Aurelien Jarno 已提交
542
  bsd="yes"
543 544
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
545
;;
B
bellard 已提交
546
FreeBSD)
547
  bsd="yes"
548
  make="${MAKE-gmake}"
549 550
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
551 552
  # needed for kinfo_getvmmap(3) in libutil.h
  LIBS="-lutil $LIBS"
553
  netmap=""  # enable netmap autodetect
B
bellard 已提交
554
;;
555
DragonFly)
556
  bsd="yes"
557
  make="${MAKE-gmake}"
558 559
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
560
;;
B
bellard 已提交
561
NetBSD)
562
  bsd="yes"
563
  make="${MAKE-gmake}"
564 565 566
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
567 568
;;
OpenBSD)
569
  bsd="yes"
570
  make="${MAKE-gmake}"
B
Brad Smith 已提交
571 572
  audio_drv_list="sdl"
  audio_possible_drivers="sdl esd"
B
bellard 已提交
573
;;
574
Darwin)
575 576
  bsd="yes"
  darwin="yes"
F
Fam Zheng 已提交
577
  LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
578
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
579
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
580
    LDFLAGS="-arch x86_64 $LDFLAGS"
581 582 583 584 585
  fi
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
586
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
587 588 589
  # 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"
590
;;
B
bellard 已提交
591
SunOS)
592
  solaris="yes"
593 594
  make="${MAKE-gmake}"
  install="${INSTALL-ginstall}"
595
  ld="gld"
596
  smbd="${SMBD-/usr/sfw/sbin/smbd}"
597 598 599 600 601 602
  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"
603 604 605
        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"
606
      else
607 608 609 610
        error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
            "libsunmath from the Sun Studio compilers tools, due to a lack of" \
            "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
            "Studio 11 can be downloaded from www.sun.com."
611
      fi
T
ths 已提交
612
    fi
613 614 615 616 617
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
618 619 620 621
# 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 已提交
622
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
623 624 625
  solarisnetlibs="-lsocket -lnsl -lresolv"
  LIBS="$solarisnetlibs $LIBS"
  libs_qga="$solarisnetlibs $libs_qga"
T
ths 已提交
626
;;
M
malc 已提交
627
AIX)
628
  aix="yes"
629
  make="${MAKE-gmake}"
M
malc 已提交
630
;;
631 632 633 634 635
Haiku)
  haiku="yes"
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
;;
636
*)
637 638 639 640
  audio_drv_list="oss"
  audio_possible_drivers="oss alsa sdl esd pa"
  linux="yes"
  linux_user="yes"
641 642
  kvm="yes"
  vhost_net="yes"
643
  vhost_scsi="yes"
644
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
645
    audio_possible_drivers="$audio_possible_drivers fmod"
646
  fi
647
  QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
B
bellard 已提交
648
;;
B
bellard 已提交
649 650
esac

B
bellard 已提交
651
if [ "$bsd" = "yes" ] ; then
652
  if [ "$darwin" != "yes" ] ; then
653
    bsd_user="yes"
654
  fi
B
bellard 已提交
655 656
fi

657 658
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}
659
: ${python=${PYTHON-python}}
660
: ${smbd=${SMBD-/usr/sbin/smbd}}
661

662 663 664 665 666 667 668
# Default objcc to clang if available, otherwise use CC
if has clang; then
  objcc=clang
else
  objcc="$cc"
fi

669 670
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
F
Fam Zheng 已提交
671
  DSOSUF=".dll"
J
Juan Quintela 已提交
672
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
673 674
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
675 676 677 678 679 680 681
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
  if compile_prog "" "-liberty" ; then
    LIBS="-liberty $LIBS"
  fi
682
  prefix="c:/Program Files/QEMU"
683
  mandir="\${prefix}"
684
  datadir="\${prefix}"
685
  qemu_docdir="\${prefix}"
686 687
  bindir="\${prefix}"
  sysconfdir="\${prefix}"
688
  local_statedir=
689
  confsuffix=""
690
  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
691 692
fi

693
werror=""
694

B
bellard 已提交
695
for opt do
P
pbrook 已提交
696
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
B
bellard 已提交
697
  case "$opt" in
698 699
  --help|-h) show_help=yes
  ;;
M
Mike Frysinger 已提交
700 701
  --version|-V) exec cat $source_path/VERSION
  ;;
702
  --prefix=*) prefix="$optarg"
B
bellard 已提交
703
  ;;
704
  --interp-prefix=*) interp_prefix="$optarg"
B
bellard 已提交
705
  ;;
P
Paolo Bonzini 已提交
706
  --source-path=*)
B
bellard 已提交
707
  ;;
708
  --cross-prefix=*)
B
bellard 已提交
709
  ;;
710
  --cc=*)
B
bellard 已提交
711
  ;;
712
  --host-cc=*) host_cc="$optarg"
B
bellard 已提交
713
  ;;
714 715
  --cxx=*)
  ;;
716 717
  --iasl=*) iasl="$optarg"
  ;;
718 719
  --objcc=*) objcc="$optarg"
  ;;
720
  --make=*) make="$optarg"
B
bellard 已提交
721
  ;;
722 723
  --install=*) install="$optarg"
  ;;
B
Blue Swirl 已提交
724 725
  --python=*) python="$optarg"
  ;;
B
Blue Swirl 已提交
726 727
  --gcov=*) gcov_tool="$optarg"
  ;;
728 729
  --smbd=*) smbd="$optarg"
  ;;
730
  --extra-cflags=*)
B
bellard 已提交
731
  ;;
732
  --extra-ldflags=*)
B
bellard 已提交
733
  ;;
734 735 736 737
  --enable-debug-info)
  ;;
  --disable-debug-info)
  ;;
F
Fam Zheng 已提交
738 739 740
  --enable-modules)
      modules="yes"
  ;;
741
  --cpu=*)
B
bellard 已提交
742
  ;;
743
  --target-list=*) target_list="$optarg"
B
bellard 已提交
744
  ;;
745
  --enable-trace-backend=*) trace_backend="$optarg"
746
  ;;
747
  --with-trace-file=*) trace_file="$optarg"
P
Prerna Saxena 已提交
748
  ;;
B
bellard 已提交
749 750
  --enable-gprof) gprof="yes"
  ;;
B
Blue Swirl 已提交
751 752
  --enable-gcov) gcov="yes"
  ;;
753 754 755
  --static)
    static="yes"
    LDFLAGS="-static $LDFLAGS"
756
    QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
B
bellard 已提交
757
  ;;
758 759 760 761
  --mandir=*) mandir="$optarg"
  ;;
  --bindir=*) bindir="$optarg"
  ;;
A
Alon Levy 已提交
762 763
  --libdir=*) libdir="$optarg"
  ;;
764 765
  --libexecdir=*) libexecdir="$optarg"
  ;;
766 767
  --includedir=*) includedir="$optarg"
  ;;
768
  --datadir=*) datadir="$optarg"
769
  ;;
770 771
  --with-confsuffix=*) confsuffix="$optarg"
  ;;
772
  --docdir=*) qemu_docdir="$optarg"
773
  ;;
774
  --sysconfdir=*) sysconfdir="$optarg"
775
  ;;
L
Luiz Capitulino 已提交
776 777 778
  --localstatedir=*) local_statedir="$optarg"
  ;;
  --sbindir=*|--sharedstatedir=*|\
779 780 781 782 783 784 785
  --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.
  ;;
786 787 788 789
  --with-system-pixman) pixman="system"
  ;;
  --without-system-pixman) pixman="internal"
  ;;
790 791
  --without-pixman) pixman="none"
  ;;
792 793
  --disable-sdl) sdl="no"
  ;;
794 795
  --enable-sdl) sdl="yes"
  ;;
796 797
  --with-sdlabi=*) sdlabi="$optarg"
  ;;
798 799 800 801
  --disable-qom-cast-debug) qom_cast_debug="no"
  ;;
  --enable-qom-cast-debug) qom_cast_debug="yes"
  ;;
802 803 804 805
  --disable-virtfs) virtfs="no"
  ;;
  --enable-virtfs) virtfs="yes"
  ;;
J
Jes Sorensen 已提交
806 807 808 809
  --disable-vnc) vnc="no"
  ;;
  --enable-vnc) vnc="yes"
  ;;
M
malc 已提交
810
  --fmod-lib=*) fmod_lib="$optarg"
811
  ;;
812 813
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
B
blueswir1 已提交
814 815
  --oss-lib=*) oss_lib="$optarg"
  ;;
M
malc 已提交
816
  --audio-drv-list=*) audio_drv_list="$optarg"
B
bellard 已提交
817
  ;;
818 819 820
  --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
  ;;
  --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
821
  ;;
822 823 824 825
  --enable-debug-tcg) debug_tcg="yes"
  ;;
  --disable-debug-tcg) debug_tcg="no"
  ;;
P
Paul Brook 已提交
826 827 828 829 830 831
  --enable-debug)
      # Enable debugging options that aren't excessively noisy
      debug_tcg="yes"
      debug="yes"
      strip_opt="no"
  ;;
832 833 834 835
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
836 837
  --disable-strip) strip_opt="no"
  ;;
838 839
  --disable-vnc-tls) vnc_tls="no"
  ;;
840 841
  --enable-vnc-tls) vnc_tls="yes"
  ;;
842 843
  --disable-vnc-sasl) vnc_sasl="no"
  ;;
844 845
  --enable-vnc-sasl) vnc_sasl="yes"
  ;;
846 847 848 849
  --disable-vnc-jpeg) vnc_jpeg="no"
  ;;
  --enable-vnc-jpeg) vnc_jpeg="yes"
  ;;
C
Corentin Chary 已提交
850 851 852 853
  --disable-vnc-png) vnc_png="no"
  ;;
  --enable-vnc-png) vnc_png="yes"
  ;;
854 855 856 857
  --disable-vnc-ws) vnc_ws="no"
  ;;
  --enable-vnc-ws) vnc_ws="yes"
  ;;
B
bellard 已提交
858
  --disable-slirp) slirp="no"
859
  ;;
860 861 862 863
  --disable-uuid) uuid="no"
  ;;
  --enable-uuid) uuid="yes"
  ;;
864
  --disable-vde) vde="no"
865
  ;;
866 867
  --enable-vde) vde="yes"
  ;;
868 869 870 871
  --disable-netmap) netmap="no"
  ;;
  --enable-netmap) netmap="yes"
  ;;
872 873
  --disable-xen) xen="no"
  ;;
874 875
  --enable-xen) xen="yes"
  ;;
876 877 878 879
  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
  ;;
  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
  ;;
A
aurel32 已提交
880 881
  --disable-brlapi) brlapi="no"
  ;;
882 883
  --enable-brlapi) brlapi="yes"
  ;;
B
balrog 已提交
884 885
  --disable-bluez) bluez="no"
  ;;
886 887
  --enable-bluez) bluez="yes"
  ;;
A
aliguori 已提交
888 889
  --disable-kvm) kvm="no"
  ;;
890 891
  --enable-kvm) kvm="yes"
  ;;
892 893 894 895
  --disable-tcg-interpreter) tcg_interpreter="no"
  ;;
  --enable-tcg-interpreter) tcg_interpreter="yes"
  ;;
896 897 898 899
  --disable-cap-ng)  cap_ng="no"
  ;;
  --enable-cap-ng) cap_ng="yes"
  ;;
900 901 902 903
  --disable-spice) spice="no"
  ;;
  --enable-spice) spice="yes"
  ;;
R
Ronnie Sahlberg 已提交
904 905 906 907
  --disable-libiscsi) libiscsi="no"
  ;;
  --enable-libiscsi) libiscsi="yes"
  ;;
P
Peter Lieven 已提交
908 909 910 911
  --disable-libnfs) libnfs="no"
  ;;
  --enable-libnfs) libnfs="yes"
  ;;
912 913
  --enable-profiler) profiler="yes"
  ;;
914 915
  --disable-cocoa) cocoa="no"
  ;;
916 917 918 919
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
920
  ;;
P
pbrook 已提交
921
  --disable-system) softmmu="no"
922
  ;;
P
pbrook 已提交
923
  --enable-system) softmmu="yes"
924
  ;;
925 926 927 928 929
  --disable-user)
      linux_user="no" ;
      bsd_user="no" ;
  ;;
  --enable-user) ;;
930
  --disable-linux-user) linux_user="no"
931
  ;;
932 933
  --enable-linux-user) linux_user="yes"
  ;;
B
blueswir1 已提交
934 935 936 937
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
P
Paul Brook 已提交
938 939 940 941
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
942
  --enable-pie) pie="yes"
943
  ;;
944
  --disable-pie) pie="no"
945
  ;;
946 947
  --enable-uname-release=*) uname_release="$optarg"
  ;;
948 949 950 951
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
B
balrog 已提交
952 953
  --disable-curses) curses="no"
  ;;
954 955
  --enable-curses) curses="yes"
  ;;
A
Alexander Graf 已提交
956 957
  --disable-curl) curl="no"
  ;;
958 959
  --enable-curl) curl="yes"
  ;;
960 961 962 963
  --disable-fdt) fdt="no"
  ;;
  --enable-fdt) fdt="yes"
  ;;
964 965 966 967
  --disable-linux-aio) linux_aio="no"
  ;;
  --enable-linux-aio) linux_aio="yes"
  ;;
968 969 970 971
  --disable-attr) attr="no"
  ;;
  --enable-attr) attr="yes"
  ;;
T
ths 已提交
972 973
  --disable-blobs) blobs="no"
  ;;
P
pbrook 已提交
974 975
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
976 977
  --with-coroutine=*) coroutine="$optarg"
  ;;
978 979 980 981
  --disable-coroutine-pool) coroutine_pool="no"
  ;;
  --enable-coroutine-pool) coroutine_pool="yes"
  ;;
J
Juan Quintela 已提交
982
  --disable-docs) docs="no"
983
  ;;
J
Juan Quintela 已提交
984
  --enable-docs) docs="yes"
985
  ;;
M
Michael S. Tsirkin 已提交
986 987 988 989
  --disable-vhost-net) vhost_net="no"
  ;;
  --enable-vhost-net) vhost_net="yes"
  ;;
990 991 992 993
  --disable-vhost-scsi) vhost_scsi="no"
  ;;
  --enable-vhost-scsi) vhost_scsi="yes"
  ;;
994
  --disable-glx) glx="no"
M
Michael Walle 已提交
995
  ;;
996
  --enable-glx) glx="yes"
M
Michael Walle 已提交
997
  ;;
998 999 1000 1001
  --disable-rbd) rbd="no"
  ;;
  --enable-rbd) rbd="yes"
  ;;
1002 1003 1004 1005
  --disable-xfsctl) xfs="no"
  ;;
  --enable-xfsctl) xfs="yes"
  ;;
R
Robert Relyea 已提交
1006 1007 1008 1009
  --disable-smartcard-nss) smartcard_nss="no"
  ;;
  --enable-smartcard-nss) smartcard_nss="yes"
  ;;
G
Gerd Hoffmann 已提交
1010 1011 1012 1013
  --disable-libusb) libusb="no"
  ;;
  --enable-libusb) libusb="yes"
  ;;
1014 1015 1016 1017
  --disable-usb-redir) usb_redir="no"
  ;;
  --enable-usb-redir) usb_redir="yes"
  ;;
A
Alon Levy 已提交
1018 1019
  --disable-zlib-test) zlib="no"
  ;;
Q
qiaonuohan 已提交
1020 1021 1022 1023
  --enable-lzo) lzo="yes"
  ;;
  --enable-snappy) snappy="yes"
  ;;
1024 1025 1026 1027
  --enable-guest-agent) guest_agent="yes"
  ;;
  --disable-guest-agent) guest_agent="no"
  ;;
1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039
  --with-vss-sdk) vss_win32_sdk=""
  ;;
  --with-vss-sdk=*) vss_win32_sdk="$optarg"
  ;;
  --without-vss-sdk) vss_win32_sdk="no"
  ;;
  --with-win-sdk) win_sdk=""
  ;;
  --with-win-sdk=*) win_sdk="$optarg"
  ;;
  --without-win-sdk) win_sdk="no"
  ;;
1040 1041 1042 1043
  --enable-tools) want_tools="yes"
  ;;
  --disable-tools) want_tools="no"
  ;;
1044 1045 1046 1047
  --enable-seccomp) seccomp="yes"
  ;;
  --disable-seccomp) seccomp="no"
  ;;
1048 1049 1050 1051
  --disable-glusterfs) glusterfs="no"
  ;;
  --enable-glusterfs) glusterfs="yes"
  ;;
1052 1053 1054 1055
  --disable-virtio-blk-data-plane) virtio_blk_data_plane="no"
  ;;
  --enable-virtio-blk-data-plane) virtio_blk_data_plane="yes"
  ;;
A
Anthony Liguori 已提交
1056 1057 1058 1059
  --disable-gtk) gtk="no"
  ;;
  --enable-gtk) gtk="yes"
  ;;
M
Michael R. Hines 已提交
1060 1061 1062 1063
  --enable-rdma) rdma="yes"
  ;;
  --disable-rdma) rdma="no"
  ;;
1064 1065
  --with-gtkabi=*) gtkabi="$optarg"
  ;;
S
Stefan Berger 已提交
1066 1067
  --enable-tpm) tpm="yes"
  ;;
1068 1069 1070 1071
  --disable-libssh2) libssh2="no"
  ;;
  --enable-libssh2) libssh2="yes"
  ;;
1072 1073 1074 1075
  --enable-vhdx) vhdx="yes"
  ;;
  --disable-vhdx) vhdx="no"
  ;;
B
Benoît Canet 已提交
1076 1077 1078 1079
  --disable-quorum) quorum="no"
  ;;
  --enable-quorum) quorum="yes"
  ;;
1080 1081
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
B
bellard 已提交
1082 1083 1084
  esac
done

1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103
if ! has $python; then
  error_exit "Python not found. Use --python=/path/to/python"
fi

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

# The -B switch was added in Python 2.6.
# If it is supplied, compiled files are not written.
# Use it for Python versions which support it.
if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
  python="$python -B"
fi

1104
case "$cpu" in
1105 1106 1107 1108 1109 1110 1111 1112
    ppc)
           CPU_CFLAGS="-m32"
           LDFLAGS="-m32 $LDFLAGS"
           ;;
    ppc64)
           CPU_CFLAGS="-m64"
           LDFLAGS="-m64 $LDFLAGS"
           ;;
1113
    sparc)
1114
           LDFLAGS="-m32 $LDFLAGS"
1115
           CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1116
           ;;
1117 1118
    sparc64)
           LDFLAGS="-m64 $LDFLAGS"
1119
           CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1120
           ;;
1121
    s390)
1122
           CPU_CFLAGS="-m31 -march=z990"
1123 1124 1125
           LDFLAGS="-m31 $LDFLAGS"
           ;;
    s390x)
1126
           CPU_CFLAGS="-m64 -march=z990"
1127
           LDFLAGS="-m64 $LDFLAGS"
1128
           ;;
1129
    i386)
1130
           CPU_CFLAGS="-m32"
1131
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
1132
           cc_i386='$(CC) -m32'
1133 1134
           ;;
    x86_64)
1135
           CPU_CFLAGS="-m64"
1136
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
1137
           cc_i386='$(CC) -m32'
1138
           ;;
1139 1140 1141 1142 1143
    x32)
           CPU_CFLAGS="-mx32"
           LDFLAGS="-mx32 $LDFLAGS"
           cc_i386='$(CC) -m32'
           ;;
1144
    # No special flags required for other host CPUs
1145 1146
esac

1147 1148 1149
QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"

1150 1151
default_target_list=""

1152 1153 1154 1155
mak_wilds=""

if [ "$softmmu" = "yes" ]; then
    mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1156
fi
1157 1158
if [ "$linux_user" = "yes" ]; then
    mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1159
fi
1160 1161
if [ "$bsd_user" = "yes" ]; then
    mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1162 1163
fi

1164 1165 1166 1167
for config in $mak_wilds; do
    default_target_list="${default_target_list} $(basename "$config" .mak)"
done

1168 1169 1170 1171 1172 1173
if test x"$show_help" = x"yes" ; then
cat << EOF

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

1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205
Standard options:
  --help                   print this message
  --prefix=PREFIX          install in PREFIX [$prefix]
  --interp-prefix=PREFIX   where to find shared libraries, etc.
                           use %M for cpu name [$interp_prefix]
  --target-list=LIST       set target list (default: build everything)
$(echo Available targets: $default_target_list | \
  fold -s -w 53 | sed -e 's/^/                           /')

Advanced options (experts only):
  --source-path=PATH       path of source code [$source_path]
  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]
  --cc=CC                  use C compiler CC [$cc]
  --iasl=IASL              use ACPI compiler IASL [$iasl]
  --host-cc=CC             use C compiler CC [$host_cc] for code run at
                           build time
  --cxx=CXX                use C++ compiler CXX [$cxx]
  --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]
  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS
  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS
  --make=MAKE              use specified make [$make]
  --install=INSTALL        use specified install [$install]
  --python=PYTHON          use specified python [$python]
  --smbd=SMBD              use specified smbd [$smbd]
  --static                 enable static build [$static]
  --mandir=PATH            install man pages in PATH
  --datadir=PATH           install firmware in PATH$confsuffix
  --docdir=PATH            install documentation in PATH$confsuffix
  --bindir=PATH            install binaries in PATH
  --libdir=PATH            install libraries in PATH
  --sysconfdir=PATH        install config in PATH$confsuffix
  --localstatedir=PATH     install local state in PATH (set at runtime on win32)
F
Fam Zheng 已提交
1206
  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
F
Fam Zheng 已提交
1207
  --enable-modules         enable modules support
1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218
  --enable-debug-tcg       enable TCG debugging
  --disable-debug-tcg      disable TCG debugging (default)
  --enable-debug-info       enable debugging information (default)
  --disable-debug-info      disable debugging information
  --enable-debug           enable common debug build options
  --enable-sparse          enable sparse checker
  --disable-sparse         disable sparse checker (default)
  --disable-strip          disable stripping binaries
  --disable-werror         disable compilation abort on warning
  --disable-sdl            disable SDL
  --enable-sdl             enable SDL
1219
  --with-sdlabi            select preferred SDL ABI 1.2 or 2.0
1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310
  --disable-gtk            disable gtk UI
  --enable-gtk             enable gtk UI
  --disable-virtfs         disable VirtFS
  --enable-virtfs          enable VirtFS
  --disable-vnc            disable VNC
  --enable-vnc             enable VNC
  --disable-cocoa          disable Cocoa (Mac OS X only)
  --enable-cocoa           enable Cocoa (default on Mac OS X)
  --audio-drv-list=LIST    set audio drivers list:
                           Available drivers: $audio_possible_drivers
  --block-drv-whitelist=L  Same as --block-drv-rw-whitelist=L
  --block-drv-rw-whitelist=L
                           set block driver read-write whitelist
                           (affects only QEMU, not qemu-img)
  --block-drv-ro-whitelist=L
                           set block driver read-only whitelist
                           (affects only QEMU, not qemu-img)
  --disable-xen            disable xen backend driver support
  --enable-xen             enable xen backend driver support
  --disable-xen-pci-passthrough
  --enable-xen-pci-passthrough
  --disable-brlapi         disable BrlAPI
  --enable-brlapi          enable BrlAPI
  --disable-vnc-tls        disable TLS encryption for VNC server
  --enable-vnc-tls         enable TLS encryption for VNC server
  --disable-vnc-sasl       disable SASL encryption for VNC server
  --enable-vnc-sasl        enable SASL encryption for VNC server
  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server
  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server
  --disable-vnc-png        disable PNG compression for VNC server (default)
  --enable-vnc-png         enable PNG compression for VNC server
  --disable-vnc-ws         disable Websockets support for VNC server
  --enable-vnc-ws          enable Websockets support for VNC server
  --disable-curses         disable curses output
  --enable-curses          enable curses output
  --disable-curl           disable curl connectivity
  --enable-curl            enable curl connectivity
  --disable-fdt            disable fdt device tree
  --enable-fdt             enable fdt device tree
  --disable-bluez          disable bluez stack connectivity
  --enable-bluez           enable bluez stack connectivity
  --disable-slirp          disable SLIRP userspace network connectivity
  --disable-kvm            disable KVM acceleration support
  --enable-kvm             enable KVM acceleration support
  --disable-rdma           disable RDMA-based migration support
  --enable-rdma            enable RDMA-based migration support
  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
  --enable-system          enable all system emulation targets
  --disable-system         disable all system emulation targets
  --enable-user            enable supported user emulation targets
  --disable-user           disable all user emulation targets
  --enable-linux-user      enable all linux usermode emulation targets
  --disable-linux-user     disable all linux usermode emulation targets
  --enable-bsd-user        enable all BSD usermode emulation targets
  --disable-bsd-user       disable all BSD usermode emulation targets
  --enable-guest-base      enable GUEST_BASE support for usermode
                           emulation targets
  --disable-guest-base     disable GUEST_BASE support
  --enable-pie             build Position Independent Executables
  --disable-pie            do not build Position Independent Executables
  --fmod-lib               path to FMOD library
  --fmod-inc               path to FMOD includes
  --oss-lib                path to OSS library
  --enable-uname-release=R Return R for uname -r in usermode emulation
  --cpu=CPU                Build for host CPU [$cpu]
  --disable-uuid           disable uuid support
  --enable-uuid            enable uuid support
  --disable-vde            disable support for vde network
  --enable-vde             enable support for vde network
  --disable-netmap         disable support for netmap network
  --enable-netmap          enable support for netmap network
  --disable-linux-aio      disable Linux AIO support
  --enable-linux-aio       enable Linux AIO support
  --disable-cap-ng         disable libcap-ng support
  --enable-cap-ng          enable libcap-ng support
  --disable-attr           disables attr and xattr support
  --enable-attr            enable attr and xattr support
  --disable-blobs          disable installing provided firmware blobs
  --enable-docs            enable documentation build
  --disable-docs           disable documentation build
  --disable-vhost-net      disable vhost-net acceleration support
  --enable-vhost-net       enable vhost-net acceleration support
  --enable-trace-backend=B Set trace backend
                           Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
  --with-trace-file=NAME   Full PATH,NAME of file to store traces
                           Default:trace-<pid>
  --disable-spice          disable spice
  --enable-spice           enable spice
  --enable-rbd             enable building the rados block device (rbd)
  --disable-libiscsi       disable iscsi support
  --enable-libiscsi        enable iscsi support
P
Peter Lieven 已提交
1311 1312
  --disable-libnfs         disable nfs support
  --enable-libnfs          enable nfs support
1313 1314 1315 1316 1317 1318
  --disable-smartcard-nss  disable smartcard nss support
  --enable-smartcard-nss   enable smartcard nss support
  --disable-libusb         disable libusb (for usb passthrough)
  --enable-libusb          enable libusb (for usb passthrough)
  --disable-usb-redir      disable usb network redirection support
  --enable-usb-redir       enable usb network redirection support
Q
qiaonuohan 已提交
1319 1320
  --enable-lzo             enable the support of lzo compression library
  --enable-snappy          enable the support of snappy compression library
1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339
  --disable-guest-agent    disable building of the QEMU Guest Agent
  --enable-guest-agent     enable building of the QEMU Guest Agent
  --with-vss-sdk=SDK-path  enable Windows VSS support in QEMU Guest Agent
  --with-win-sdk=SDK-path  path to Windows Platform SDK (to build VSS .tlb)
  --disable-seccomp        disable seccomp support
  --enable-seccomp         enables seccomp support
  --with-coroutine=BACKEND coroutine backend. Supported options:
                           gthread, ucontext, sigaltstack, windows
  --disable-coroutine-pool disable coroutine freelist (worse performance)
  --enable-coroutine-pool  enable coroutine freelist (better performance)
  --enable-glusterfs       enable GlusterFS backend
  --disable-glusterfs      disable GlusterFS backend
  --enable-gcov            enable test coverage analysis with gcov
  --gcov=GCOV              use specified gcov [$gcov_tool]
  --enable-tpm             enable TPM support
  --disable-libssh2        disable ssh block device support
  --enable-libssh2         enable ssh block device support
  --disable-vhdx           disables support for the Microsoft VHDX image format
  --enable-vhdx            enable support for the Microsoft VHDX image format
B
Benoît Canet 已提交
1340 1341
  --disable-quorum         disable quorum block filter support
  --enable-quorum          enable quorum block filter support
1342 1343

NOTE: The object files are built at the place where configure is launched
1344 1345 1346 1347
EOF
exit 1
fi

1348 1349 1350 1351 1352 1353 1354
# 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
1355
        error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1356 1357 1358
    fi
fi

1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371
# 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 -d "$source_path/.git" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

1372 1373
# check that the C compiler works.
cat > $TMPC <<EOF
1374
int main(void) { return 0; }
1375 1376 1377 1378 1379
EOF

if compile_object ; then
  : C compiler works ok
else
1380
    error_exit "\"$cc\" either does not exist or does not work"
1381 1382
fi

1383 1384 1385 1386 1387 1388 1389 1390 1391
# Check that the C++ compiler exists and works with the C compiler
if has $cxx; then
    cat > $TMPC <<EOF
int c_function(void);
int main(void) { return c_function(); }
EOF

    compile_object

1392
    cat > $TMPCXX <<EOF
1393 1394 1395 1396 1397 1398
extern "C" {
   int c_function(void);
}
int c_function(void) { return 42; }
EOF

1399 1400 1401
    update_cxxflags

    if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413
        # C++ compiler $cxx works ok with C compiler $cc
        :
    else
        echo "C++ compiler $cxx does not work with C compiler $cc"
        echo "Disabling C++ specific optional code"
        cxx=
    fi
else
    echo "No C++ compiler available; disabling C++ specific optional code"
    cxx=
fi

1414 1415 1416
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"
1417
gcc_flags="-Wendif-labels $gcc_flags"
1418
gcc_flags="-Wno-initializer-overrides $gcc_flags"
1419
gcc_flags="-Wno-string-plus-int $gcc_flags"
1420 1421 1422 1423
# 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.
1424 1425 1426 1427
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
for flag in $gcc_flags; do
1428 1429 1430 1431 1432
    # 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
1433 1434 1435 1436
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

1437 1438 1439 1440 1441
if compile_prog "-Werror -fstack-protector-all" "" ; then
    QEMU_CFLAGS="$QEMU_CFLAGS -fstack-protector-all"
    LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,-fstack-protector-all"
fi

1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456
# 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

1457
if test "$static" = "yes" ; then
1458 1459 1460
  if test "$modules" = "yes" ; then
    error_exit "static and modules are mutually incompatible"
  fi
1461
  if test "$pie" = "yes" ; then
1462
    error_exit "static and pie are mutually incompatible"
1463 1464 1465 1466 1467 1468 1469
  else
    pie="no"
  fi
fi

if test "$pie" = ""; then
  case "$cpu-$targetos" in
1470
    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1471 1472 1473 1474 1475 1476 1477 1478 1479
      ;;
    *)
      pie="no"
      ;;
  esac
fi

if test "$pie" != "no" ; then
  cat > $TMPC << EOF
1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490

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

static THREAD int tls_var;

int main(void) { return tls_var; }

1491 1492 1493 1494 1495 1496 1497 1498 1499 1500
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
1501
      error_exit "PIE not available due to missing toolchain support"
1502 1503 1504 1505 1506
    else
      echo "Disabling PIE due to missing toolchain support"
      pie="no"
    fi
  fi
B
Brad 已提交
1507 1508 1509 1510 1511

  if compile_prog "-fno-pie" "-nopie"; then
    CFLAGS_NOPIE="-fno-pie"
    LDFLAGS_NOPIE="-nopie"
  fi
1512 1513
fi

1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539
# check for broken gcc and libtool in RHEL5
if test -n "$libtool" -a "$pie" != "no" ; then
  cat > $TMPC <<EOF

void *f(unsigned char *buf, int len);
void *g(unsigned char *buf, int len);

void *
f(unsigned char *buf, int len)
{
    return (void*)0L;
}

void *
g(unsigned char *buf, int len)
{
    return f(buf, len);
}

EOF
  if ! libtool_prog; then
    echo "Disabling libtool due to broken toolchain support"
    libtool=
  fi
fi

P
Paolo Bonzini 已提交
1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554
##########################################
# __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

if test "$cpu" = "i386"; then
  cat > $TMPC << EOF
static int sfaa(int *ptr)
{
  return __sync_fetch_and_and(ptr, 0);
}

int main(void)
{
  int val = 42;
1555
  val = __sync_val_compare_and_swap(&val, 0, 1);
P
Paolo Bonzini 已提交
1556 1557 1558 1559 1560 1561 1562 1563 1564 1565
  sfaa(&val);
  return val;
}
EOF
  if ! compile_prog "" "" ; then
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
  fi
fi

#########################################
B
bellard 已提交
1566
# Solaris specific configure tool chain decisions
P
Paolo Bonzini 已提交
1567

B
bellard 已提交
1568
if test "$solaris" = "yes" ; then
1569 1570 1571
  if has $install; then
    :
  else
1572 1573 1574
    error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
        "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
        "to get ginstall which is used by default (which lives in /opt/csw/bin)"
B
bellard 已提交
1575
  fi
1576
  if test "`path_of $install`" = "/usr/sbin/install" ; then
1577 1578 1579
    error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
        "try ginstall from the GNU fileutils available from www.blastwave.org" \
        "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
B
bellard 已提交
1580
  fi
1581 1582 1583
  if has ar; then
    :
  else
B
bellard 已提交
1584
    if test -f /usr/ccs/bin/ar ; then
1585 1586
      error_exit "No path includes ar" \
          "Add /usr/ccs/bin to your path and rerun configure"
B
bellard 已提交
1587
    fi
1588
    error_exit "No path includes ar"
B
bellard 已提交
1589
  fi
1590
fi
B
bellard 已提交
1591

1592
if test -z "${target_list+xxx}" ; then
1593 1594 1595 1596
    target_list="$default_target_list"
else
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
fi
1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609

# Check that we recognised the target name; this allows a more
# friendly error message than if we let it fall through.
for target in $target_list; do
    case " $default_target_list " in
        *" $target "*)
            ;;
        *)
            error_exit "Unknown target name '$target'"
            ;;
    esac
done

P
Paolo Bonzini 已提交
1610 1611 1612 1613 1614 1615 1616
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1617

1618 1619
feature_not_found() {
  feature=$1
1620
  remedy=$2
1621

1622
  error_exit "User requested feature $feature" \
1623 1624
      "configure was not able to find it." \
      "$remedy"
1625 1626
}

B
bellard 已提交
1627 1628 1629
# ---
# big/little endian test
cat > $TMPC << EOF
1630 1631 1632 1633 1634
short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
extern int foo(short *, short *);
int main(int argc, char *argv[]) {
    return foo(big_endian, little_endian);
B
bellard 已提交
1635 1636 1637
}
EOF

1638 1639 1640 1641 1642 1643 1644
if compile_object ; then
    if grep -q BiGeNdIaN $TMPO ; then
        bigendian="yes"
    elif grep -q LiTtLeEnDiAn $TMPO ; then
        bigendian="no"
    else
        echo big/little test failed
1645
    fi
1646 1647
else
    echo big/little test failed
B
bellard 已提交
1648 1649
fi

S
Stefan Weil 已提交
1650 1651 1652 1653
##########################################
# pkg-config probe

if ! has "$pkg_config_exe"; then
1654
  error_exit "pkg-config binary '$pkg_config_exe' not found"
S
Stefan Weil 已提交
1655 1656
fi

1657 1658 1659
##########################################
# NPTL probe

1660
if test "$linux_user" = "yes"; then
1661
  cat > $TMPC <<EOF
1662
#include <sched.h>
P
pbrook 已提交
1663
#include <linux/futex.h>
1664
int main(void) {
1665 1666 1667
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
1668
  return 0;
1669 1670
}
EOF
1671
  if ! compile_object ; then
1672
    feature_not_found "nptl" "Install glibc and linux kernel headers."
1673
  fi
1674 1675
fi

1676 1677 1678
##########################################
# zlib check

A
Alon Levy 已提交
1679 1680
if test "$zlib" != "no" ; then
    cat > $TMPC << EOF
1681 1682 1683
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
A
Alon Levy 已提交
1684 1685 1686
    if compile_prog "" "-lz" ; then
        :
    else
1687 1688
        error_exit "zlib check failed" \
            "Make sure to have the zlib libs and headers installed."
A
Alon Levy 已提交
1689
    fi
1690
fi
1691
LIBS="$LIBS -lz"
1692

Q
qiaonuohan 已提交
1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728
##########################################
# lzo check

if test "$lzo" != "no" ; then
    cat > $TMPC << EOF
#include <lzo/lzo1x.h>
int main(void) { lzo_version(); return 0; }
EOF
    if compile_prog "" "-llzo2" ; then
        :
    else
        error_exit "lzo check failed" \
            "Make sure to have the lzo libs and headers installed."
    fi

    libs_softmmu="$libs_softmmu -llzo2"
fi

##########################################
# snappy check

if test "$snappy" != "no" ; then
    cat > $TMPC << EOF
#include <snappy-c.h>
int main(void) { snappy_max_compressed_length(4096); return 0; }
EOF
    if compile_prog "" "-lsnappy" ; then
        :
    else
        error_exit "snappy check failed" \
            "Make sure to have the snappy libs and headers installed."
    fi

    libs_softmmu="$libs_softmmu -lsnappy"
fi

1729 1730 1731 1732
##########################################
# libseccomp check

if test "$seccomp" != "no" ; then
1733
    if $pkg_config --atleast-version=2.1.0 libseccomp; then
1734
        libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1735
        QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1736 1737 1738
	seccomp="yes"
    else
	if test "$seccomp" = "yes"; then
1739
            feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.0"
1740
	fi
Y
Yann E. MORIN 已提交
1741
	seccomp="no"
1742 1743
    fi
fi
1744 1745 1746
##########################################
# xen probe

1747
if test "$xen" != "no" ; then
1748
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1749

1750 1751 1752 1753 1754
  # 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)
1755
  cat > $TMPC <<EOF
1756
#include <xenctrl.h>
1757 1758 1759 1760 1761 1762 1763
int main(void) {
  return 0;
}
EOF
  if ! compile_prog "" "$xen_libs" ; then
    # Xen not found
    if test "$xen" = "yes" ; then
1764
      feature_not_found "xen" "Install xen devel"
1765 1766 1767 1768
    fi
    xen=no

  # Xen unstable
1769 1770
  elif
      cat > $TMPC <<EOF &&
1771
#include <xenctrl.h>
A
Anthony PERARD 已提交
1772
#include <xenstore.h>
1773 1774 1775 1776 1777
#include <stdint.h>
#include <xen/hvm/hvm_info_table.h>
#if !defined(HVM_MAX_VCPUS)
# error HVM_MAX_VCPUS not defined
#endif
1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789
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"
1790
    then
1791 1792 1793
    xen_ctrl_version=420
    xen=yes

1794 1795
  elif
      cat > $TMPC <<EOF &&
1796 1797 1798 1799 1800 1801 1802
#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
1803 1804
int main(void) {
  xs_daemon_open();
1805
  xc_interface_open(0, 0, 0);
1806 1807
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_gnttab_open(NULL, 0);
1808
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1809 1810
  return 0;
}
1811
EOF
1812
      compile_prog "" "$xen_libs"
1813
    then
1814
    xen_ctrl_version=410
1815
    xen=yes
1816 1817

  # Xen 4.0.0
1818 1819
  elif
      cat > $TMPC <<EOF &&
1820 1821 1822 1823 1824 1825 1826 1827
#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) {
1828 1829 1830
  struct xen_add_to_physmap xatp = {
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
  };
1831 1832 1833 1834
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1835
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1836 1837 1838 1839
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
1840
    then
1841 1842 1843
    xen_ctrl_version=400
    xen=yes

1844
  # Xen 3.4.0
1845 1846
  elif
      cat > $TMPC <<EOF &&
1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861
#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"
1862
    then
1863 1864 1865 1866
    xen_ctrl_version=340
    xen=yes

  # Xen 3.3.0
1867 1868
  elif
      cat > $TMPC <<EOF &&
1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879
#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"
1880
    then
1881 1882 1883
    xen_ctrl_version=330
    xen=yes

1884
  # Xen version unsupported
1885
  else
1886
    if test "$xen" = "yes" ; then
1887
      feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
1888 1889
    fi
    xen=no
1890
  fi
1891 1892 1893 1894

  if test "$xen" = yes; then
    libs_softmmu="$xen_libs $libs_softmmu"
  fi
1895 1896
fi

1897 1898 1899 1900 1901 1902 1903
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
      if test "$xen_ctrl_version" -lt 340; then
1904 1905
        error_exit "User requested feature Xen PCI Passthrough" \
            "This feature does not work with Xen 3.3"
1906
      fi
1907 1908
      error_exit "User requested feature Xen PCI Passthrough" \
          " but this feature requires /sys from Linux"
1909 1910 1911 1912 1913
    fi
    xen_pci_passthrough=no
  fi
fi

A
Alon Levy 已提交
1914 1915 1916
##########################################
# libtool probe

B
Brad 已提交
1917
if ! has $libtool; then
A
Alon Levy 已提交
1918 1919 1920
    libtool=
fi

1921 1922 1923 1924 1925 1926 1927 1928
# MacOSX ships with a libtool which isn't the GNU one; weed this
# out by checking whether libtool supports the --version switch
if test -n "$libtool"; then
  if ! "$libtool" --version >/dev/null 2>&1; then
    libtool=
  fi
fi

1929 1930 1931
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1932
  if has cgcc; then
1933 1934 1935
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
1936
      feature_not_found "sparse" "Install sparse binary"
1937 1938 1939 1940 1941
    fi
    sparse=no
  fi
fi

A
Anthony Liguori 已提交
1942 1943 1944 1945
##########################################
# GTK probe

if test "$gtk" != "no"; then
1946 1947 1948 1949 1950 1951 1952 1953 1954 1955
    gtkpackage="gtk+-$gtkabi"
    if test "$gtkabi" = "3.0" ; then
      gtkversion="3.0.0"
      vtepackage="vte-2.90"
      vteversion="0.32.0"
    else
      gtkversion="2.18.0"
      vtepackage="vte"
      vteversion="0.24.0"
    fi
1956 1957
    if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then
        if test "$gtk" = "yes" ; then
1958
            feature_not_found "gtk" "Install gtk2 or gtk3 (requires --with-gtkabi=3.0 option to configure) devel"
1959 1960 1961 1962 1963 1964 1965 1966
        fi
        gtk="no"
    elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then
        if test "$gtk" = "yes" ; then
            error_exit "libvte not found (required for gtk support)"
        fi
        gtk="no"
    else
1967 1968 1969 1970
	gtk_cflags=`$pkg_config --cflags $gtkpackage`
	gtk_libs=`$pkg_config --libs $gtkpackage`
	vte_cflags=`$pkg_config --cflags $vtepackage`
	vte_libs=`$pkg_config --libs $vtepackage`
A
Anthony Liguori 已提交
1971 1972 1973 1974 1975
	libs_softmmu="$gtk_libs $vte_libs $libs_softmmu"
	gtk="yes"
    fi
fi

B
bellard 已提交
1976 1977 1978
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1979 1980
# Look for sdl configuration program (pkg-config or sdl-config).  Try
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992

if test $sdlabi = "2.0"; then
    sdl_config=$sdl2_config
    sdlname=sdl2
    sdlconfigname=sdl2_config
else
    sdlname=sdl
    sdlconfigname=sdl_config
fi

if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
  sdl_config=$sdlconfigname
P
Paolo Bonzini 已提交
1993 1994
fi

1995 1996
if $pkg_config $sdlname --exists; then
  sdlconfig="$pkg_config $sdlname"
1997
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
1998 1999
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
2000
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2001 2002
else
  if test "$sdl" = "yes" ; then
2003
    feature_not_found "sdl" "Install SDL devel"
2004 2005
  fi
  sdl=no
2006
fi
2007
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
P
Paolo Bonzini 已提交
2008 2009
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
2010

2011
sdl_too_old=no
2012
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
2013
  cat > $TMPC << EOF
B
bellard 已提交
2014 2015 2016 2017
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
2018
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2019 2020 2021 2022 2023
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
2024
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
2025 2026 2027 2028 2029 2030 2031
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
2032

2033
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
2034
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
2035
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2036 2037
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
2038
      fi
2039
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
2040 2041 2042 2043 2044
	:
      else
        sdl=no
      fi
    fi # static link
2045 2046
  else # sdl not found
    if test "$sdl" = "yes" ; then
2047
      feature_not_found "sdl" "Install SDL devel"
2048 2049
    fi
    sdl=no
J
Juan Quintela 已提交
2050
  fi # sdl compile test
2051
fi
B
bellard 已提交
2052

2053
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
2054
  cat > $TMPC <<EOF
2055 2056 2057 2058 2059 2060 2061 2062
#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
2063
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
2064 2065
    sdl_libs="$sdl_libs -lX11"
  fi
J
Juan Quintela 已提交
2066
  libs_softmmu="$sdl_libs $libs_softmmu"
2067 2068
fi

M
Michael R. Hines 已提交
2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092
##########################################
# RDMA needs OpenFabrics libraries
if test "$rdma" != "no" ; then
  cat > $TMPC <<EOF
#include <rdma/rdma_cma.h>
int main(void) { return 0; }
EOF
  rdma_libs="-lrdmacm -libverbs"
  if compile_prog "" "$rdma_libs" ; then
    rdma="yes"
    libs_softmmu="$libs_softmmu $rdma_libs"
  else
    if test "$rdma" = "yes" ; then
        error_exit \
            " OpenFabrics librdmacm/libibverbs not present." \
            " Your options:" \
            "  (1) Fast: Install infiniband packages from your distro." \
            "  (2) Cleanest: Install libraries from www.openfabrics.org" \
            "  (3) Also: Install softiwarp if you don't have RDMA hardware"
    fi
    rdma="no"
  fi
fi

2093
##########################################
2094 2095
# VNC TLS/WS detection
if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
2096
  cat > $TMPC <<EOF
2097 2098 2099
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
2100 2101
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
2102
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
2103 2104 2105 2106 2107 2108
    if test "$vnc_tls" != "no" ; then
      vnc_tls=yes
    fi
    if test "$vnc_ws" != "no" ; then
      vnc_ws=yes
    fi
2109
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
P
Paolo Bonzini 已提交
2110
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2111 2112
  else
    if test "$vnc_tls" = "yes" ; then
2113
      feature_not_found "vnc-tls" "Install gnutls devel"
2114
    fi
2115
    if test "$vnc_ws" = "yes" ; then
2116
      feature_not_found "vnc-ws" "Install gnutls devel"
2117
    fi
2118
    vnc_tls=no
2119
    vnc_ws=no
2120
  fi
2121 2122
fi

B
Benoît Canet 已提交
2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146
##########################################
# Quorum probe (check for gnutls)
if test "$quorum" != "no" ; then
cat > $TMPC <<EOF
#include <gnutls/gnutls.h>
#include <gnutls/crypto.h>
int main(void) {char data[4096], digest[32];
gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
return 0;
}
EOF
quorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
quorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
if compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then
  qcow_tls=yes
  libs_softmmu="$quorum_tls_libs $libs_softmmu"
  libs_tools="$quorum_tls_libs $libs_softmmu"
  QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags"
else
  echo "gnutls > 2.10.0 required to compile Quorum"
  exit 1
fi
fi

2147 2148
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
2149
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2150
  cat > $TMPC <<EOF
2151 2152 2153 2154
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
2155 2156 2157 2158 2159 2160
  # 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 已提交
2161
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2162 2163
  else
    if test "$vnc_sasl" = "yes" ; then
2164
      feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2165
    fi
2166 2167
    vnc_sasl=no
  fi
2168 2169
fi

2170 2171
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
2172
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2173 2174 2175 2176 2177 2178 2179 2180 2181 2182
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 已提交
2183
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2184 2185
  else
    if test "$vnc_jpeg" = "yes" ; then
2186
      feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2187 2188 2189 2190 2191
    fi
    vnc_jpeg=no
  fi
fi

C
Corentin Chary 已提交
2192 2193
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
2194
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
2195 2196 2197
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
2198
#include <stddef.h>
C
Corentin Chary 已提交
2199 2200 2201
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2202
    return png_ptr != 0;
C
Corentin Chary 已提交
2203 2204
}
EOF
2205
  if $pkg_config libpng --exists; then
2206 2207
    vnc_png_cflags=`$pkg_config libpng --cflags`
    vnc_png_libs=`$pkg_config libpng --libs`
2208
  else
C
Corentin Chary 已提交
2209 2210
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
2211
  fi
C
Corentin Chary 已提交
2212 2213 2214
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
2215
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
C
Corentin Chary 已提交
2216 2217
  else
    if test "$vnc_png" = "yes" ; then
2218
      feature_not_found "vnc-png" "Install libpng devel"
C
Corentin Chary 已提交
2219 2220 2221 2222 2223
    fi
    vnc_png=no
  fi
fi

2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
2235
if compile_prog "" "" ; then
2236 2237 2238
   fnmatch="yes"
fi

2239 2240
##########################################
# uuid_generate() probe, used for vdi block driver
2241 2242
# Note that on some systems (notably MacOSX) no extra library
# need be linked to get the uuid functions.
2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253
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
2254 2255 2256
  if compile_prog "" "" ; then
    uuid="yes"
  elif compile_prog "" "$uuid_libs" ; then
2257 2258 2259 2260 2261
    uuid="yes"
    libs_softmmu="$uuid_libs $libs_softmmu"
    libs_tools="$uuid_libs $libs_tools"
  else
    if test "$uuid" = "yes" ; then
2262
      feature_not_found "uuid" "Install libuuid devel"
2263 2264 2265 2266 2267
    fi
    uuid=no
  fi
fi

2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279
if test "$vhdx" = "yes" ; then
    if test "$uuid" = "no" ; then
        error_exit "uuid required for VHDX support"
    fi
elif test "$vhdx" != "no" ; then
    if test "$uuid" = "yes" ; then
        vhdx=yes
    else
        vhdx=no
    fi
fi

C
Christoph Hellwig 已提交
2280 2281 2282 2283
##########################################
# xfsctl() probe, used for raw-posix
if test "$xfs" != "no" ; then
  cat > $TMPC << EOF
2284
#include <stddef.h>  /* NULL */
C
Christoph Hellwig 已提交
2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295
#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
2296
      feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
C
Christoph Hellwig 已提交
2297 2298 2299 2300 2301
    fi
    xfs=no
  fi
fi

2302 2303
##########################################
# vde libraries probe
2304
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
2305
  vde_libs="-lvdeplug"
2306 2307
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
2308 2309 2310
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
2311 2312
    char s[] = "";
    vde_open(s, s, &a);
P
pbrook 已提交
2313 2314
    return 0;
}
2315
EOF
2316
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
2317
    vde=yes
2318 2319
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
2320 2321
  else
    if test "$vde" = "yes" ; then
2322
      feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2323 2324
    fi
    vde=no
J
Juan Quintela 已提交
2325
  fi
2326 2327
fi

2328
##########################################
2329 2330 2331 2332 2333 2334
# netmap support probe
# Apart from looking for netmap headers, we make sure that the host API version
# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
# a minor/major version number. Minor new features will be marked with values up
# to 15, and if something happens that requires a change to the backend we will
# move above 15, submit the backend fixes and modify this two bounds.
2335 2336 2337 2338 2339 2340
if test "$netmap" != "no" ; then
  cat > $TMPC << EOF
#include <inttypes.h>
#include <net/if.h>
#include <net/netmap.h>
#include <net/netmap_user.h>
2341 2342 2343
#if (NETMAP_API < 11) || (NETMAP_API > 15)
#error
#endif
2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355
int main(void) { return 0; }
EOF
  if compile_prog "" "" ; then
    netmap=yes
  else
    if test "$netmap" = "yes" ; then
      feature_not_found "netmap"
    fi
    netmap=no
  fi
fi

2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372
##########################################
# 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
2373
      feature_not_found "cap_ng" "Install libcap-ng devel"
2374 2375 2376 2377 2378
    fi
    cap_ng=no
  fi
fi

2379
##########################################
2380
# Sound support libraries probe
2381

2382 2383 2384 2385 2386 2387 2388 2389 2390 2391
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
2392
EOF
2393
    if compile_prog "$cfl" "$lib" ; then
2394 2395
        :
    else
2396 2397
        error_exit "$drv check failed" \
            "Make sure to have the $drv libs and headers installed."
2398 2399 2400
    fi
}

2401
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2402 2403 2404 2405
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
2406
        "return snd_pcm_close((snd_pcm_t *)0);"
2407
    libs_softmmu="-lasound $libs_softmmu"
2408 2409 2410 2411
    ;;

    fmod)
    if test -z $fmod_lib || test -z $fmod_inc; then
2412 2413
        error_exit "You must specify path to FMOD library and headers" \
            "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
2414 2415
    fi
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
2416
    libs_softmmu="$fmod_lib $libs_softmmu"
2417 2418 2419 2420
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
2421
    libs_softmmu="-lesd $libs_softmmu"
2422
    audio_pt_int="yes"
2423
    ;;
M
malc 已提交
2424 2425

    pa)
2426 2427 2428
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
    libs_softmmu="-lpulse $libs_softmmu"
2429
    audio_pt_int="yes"
M
malc 已提交
2430 2431
    ;;

2432 2433 2434 2435
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

2436 2437
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2438
      audio_win_int="yes"
2439 2440 2441 2442 2443 2444 2445
    ;;

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

    sdl|wav)
B
blueswir1 已提交
2446 2447 2448
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

2449 2450 2451 2452 2453
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
2454
    *)
M
malc 已提交
2455
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2456 2457
        error_exit "Unknown driver '$drv' selected" \
            "Possible drivers are: $audio_possible_drivers"
M
malc 已提交
2458 2459
    }
    ;;
2460 2461
    esac
done
2462

A
aurel32 已提交
2463 2464 2465
##########################################
# BrlAPI probe

2466
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
2467 2468
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
2469
#include <brlapi.h>
S
Scott Wood 已提交
2470
#include <stddef.h>
A
aurel32 已提交
2471 2472
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
2473
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
2474
    brlapi=yes
2475
    libs_softmmu="$brlapi_libs $libs_softmmu"
2476 2477
  else
    if test "$brlapi" = "yes" ; then
2478
      feature_not_found "brlapi" "Install brlapi devel"
2479 2480
    fi
    brlapi=no
J
Juan Quintela 已提交
2481 2482
  fi
fi
A
aurel32 已提交
2483

B
balrog 已提交
2484 2485
##########################################
# curses probe
2486 2487
if test "$curses" != "no" ; then
  if test "$mingw32" = "yes" ; then
S
Stefan Weil 已提交
2488
    curses_list="-lpdcurses"
2489
  else
2490
    curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2491
  fi
2492
  curses_found=no
B
balrog 已提交
2493 2494
  cat > $TMPC << EOF
#include <curses.h>
2495 2496 2497 2498 2499
int main(void) {
  const char *s = curses_version();
  resize_term(0, 0);
  return s != 0;
}
B
balrog 已提交
2500
EOF
2501
  IFS=:
2502
  for curses_lib in $curses_list; do
2503
    unset IFS
2504
    if compile_prog "" "$curses_lib" ; then
2505
      curses_found=yes
2506 2507 2508 2509
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
2510
  unset IFS
2511 2512 2513 2514
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
2515
      feature_not_found "curses" "Install ncurses devel"
2516 2517 2518
    fi
    curses=no
  fi
2519
fi
B
balrog 已提交
2520

A
Alexander Graf 已提交
2521 2522
##########################################
# curl probe
2523
if test "$curl" != "no" ; then
2524
  if $pkg_config libcurl --exists; then
2525 2526 2527 2528
    curlconfig="$pkg_config libcurl"
  else
    curlconfig=curl-config
  fi
A
Alexander Graf 已提交
2529 2530
  cat > $TMPC << EOF
#include <curl/curl.h>
2531
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
A
Alexander Graf 已提交
2532
EOF
2533 2534
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
2535
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
2536
    curl=yes
2537 2538
  else
    if test "$curl" = "yes" ; then
2539
      feature_not_found "curl" "Install libcurl devel"
2540 2541
    fi
    curl=no
A
Alexander Graf 已提交
2542 2543 2544
  fi
fi # test "$curl"

B
balrog 已提交
2545 2546
##########################################
# bluez support probe
2547
if test "$bluez" != "no" ; then
2548 2549 2550 2551
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
2552 2553
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2554
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2555
    bluez=yes
2556
    libs_softmmu="$bluez_libs $libs_softmmu"
2557
  else
2558
    if test "$bluez" = "yes" ; then
2559
      feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2560
    fi
2561 2562
    bluez="no"
  fi
B
balrog 已提交
2563 2564
fi

2565 2566
##########################################
# glib support probe
2567 2568 2569 2570 2571 2572 2573

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
2574 2575 2576 2577
glib_modules=gthread-2.0
if test "$modules" = yes; then
    glib_modules="$glib_modules gmodule-2.0"
fi
F
Fam Zheng 已提交
2578

2579
for i in $glib_modules; do
F
Fam Zheng 已提交
2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603
    if $pkg_config --atleast-version=$glib_req_ver $i; then
        glib_cflags=`$pkg_config --cflags $i`
        glib_libs=`$pkg_config --libs $i`
        CFLAGS="$glib_cflags $CFLAGS"
        LIBS="$glib_libs $LIBS"
        libs_qga="$glib_libs $libs_qga"
    else
        error_exit "glib-$glib_req_ver $i is required to compile QEMU"
    fi
done

##########################################
# SHA command probe for modules
if test "$modules" = yes; then
    shacmd_probe="sha1sum sha1 shasum"
    for c in $shacmd_probe; do
        if which $c &>/dev/null; then
            shacmd="$c"
            break
        fi
    done
    if test "$shacmd" = ""; then
        error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
    fi
2604 2605
fi

2606 2607 2608 2609
##########################################
# pixman support probe

if test "$pixman" = ""; then
2610 2611 2612
  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
    pixman="none"
  elif $pkg_config pixman-1 > /dev/null 2>&1; then
2613 2614 2615 2616 2617
    pixman="system"
  else
    pixman="internal"
  fi
fi
2618 2619
if test "$pixman" = "none"; then
  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2620 2621 2622 2623
    error_exit "pixman disabled but system emulation or tools build" \
        "enabled.  You can turn off pixman only if you also" \
        "disable all system emulation targets and the tools" \
        "build with '--disable-tools --disable-system'."
2624 2625 2626 2627
  fi
  pixman_cflags=
  pixman_libs=
elif test "$pixman" = "system"; then
2628 2629
  pixman_cflags=`$pkg_config --cflags pixman-1`
  pixman_libs=`$pkg_config --libs pixman-1`
2630 2631
else
  if test ! -d ${source_path}/pixman/pixman; then
2632 2633 2634 2635 2636
    error_exit "pixman not present. Your options:" \
        "  (1) Preferred: Install the pixman devel package (any recent" \
        "      distro should have packages as Xorg needs pixman too)." \
        "  (2) Fetch the pixman submodule, using:" \
        "      git submodule update --init pixman"
2637
  fi
2638 2639 2640
  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"
2641 2642
fi

2643 2644 2645 2646 2647 2648 2649
##########################################
# libcap probe

if test "$cap" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/capability.h>
2650
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2651 2652 2653 2654 2655 2656 2657 2658
EOF
  if compile_prog "" "-lcap" ; then
    cap=yes
  else
    cap=no
  fi
fi

2659
##########################################
2660
# pthread probe
2661
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2662

C
Christoph Hellwig 已提交
2663
pthread=no
2664
cat > $TMPC << EOF
2665
#include <pthread.h>
2666 2667 2668 2669 2670 2671
static void *f(void *p) { return NULL; }
int main(void) {
  pthread_t thread;
  pthread_create(&thread, 0, f, 0);
  return 0;
}
2672
EOF
2673 2674 2675 2676 2677 2678
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 已提交
2679 2680 2681 2682 2683 2684 2685 2686 2687 2688
      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
2689 2690 2691 2692
      break
    fi
  done
fi
2693

2694
if test "$mingw32" != yes -a "$pthread" = no; then
2695 2696
  error_exit "pthread check failed" \
      "Make sure to have the pthread libs and headers installed."
2697 2698
fi

2699 2700 2701 2702 2703
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
2704
#include <rbd/librbd.h>
2705
int main(void) {
2706 2707
    rados_t cluster;
    rados_create(&cluster, NULL);
2708 2709 2710
    return 0;
}
EOF
2711 2712 2713
  rbd_libs="-lrbd -lrados"
  if compile_prog "" "$rbd_libs" ; then
    rbd=yes
2714 2715
  else
    if test "$rbd" = "yes" ; then
2716
      feature_not_found "rados block device" "Install librbd/ceph devel"
2717 2718 2719 2720 2721
    fi
    rbd=no
  fi
fi

2722 2723
##########################################
# libssh2 probe
2724
min_libssh2_version=1.2.8
2725
if test "$libssh2" != "no" ; then
2726
  if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
2727 2728 2729 2730 2731
    libssh2_cflags=`$pkg_config libssh2 --cflags`
    libssh2_libs=`$pkg_config libssh2 --libs`
    libssh2=yes
  else
    if test "$libssh2" = "yes" ; then
2732
      error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
2733 2734 2735 2736 2737
    fi
    libssh2=no
  fi
fi

2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762
##########################################
# libssh2_sftp_fsync probe

if test "$libssh2" = "yes"; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <libssh2.h>
#include <libssh2_sftp.h>
int main(void) {
    LIBSSH2_SESSION *session;
    LIBSSH2_SFTP *sftp;
    LIBSSH2_SFTP_HANDLE *sftp_handle;
    session = libssh2_session_init ();
    sftp = libssh2_sftp_init (session);
    sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
    libssh2_sftp_fsync (sftp_handle);
    return 0;
}
EOF
  # libssh2_cflags/libssh2_libs defined in previous test.
  if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
    QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
  fi
fi

2763 2764 2765 2766 2767 2768 2769
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
2770
#include <stddef.h>
2771 2772 2773 2774 2775 2776
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
  else
    if test "$linux_aio" = "yes" ; then
2777
      feature_not_found "linux AIO" "Install libaio devel"
2778
    fi
2779
    linux_aio=no
2780 2781 2782
  fi
fi

P
Paolo Bonzini 已提交
2783 2784 2785 2786 2787 2788 2789 2790 2791
##########################################
# TPM passthrough is only on x86 Linux

if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
  tpm_passthrough=$tpm
else
  tpm_passthrough=no
fi

2792 2793 2794 2795 2796
##########################################
# adjust virtio-blk-data-plane based on linux-aio

if test "$virtio_blk_data_plane" = "yes" -a \
	"$linux_aio" != "yes" ; then
2797
  error_exit "virtio-blk-data-plane requires Linux AIO, please try --enable-linux-aio"
2798 2799 2800 2801
elif test -z "$virtio_blk_data_plane" ; then
  virtio_blk_data_plane=$linux_aio
fi

2802 2803 2804 2805 2806 2807 2808
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
P
Pavel Borzenkov 已提交
2809 2810 2811
#ifdef CONFIG_LIBATTR
#include <attr/xattr.h>
#else
2812
#include <sys/xattr.h>
P
Pavel Borzenkov 已提交
2813
#endif
2814 2815
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
2816 2817 2818
  if compile_prog "" "" ; then
    attr=yes
  # Older distros have <attr/xattr.h>, and need -lattr:
P
Pavel Borzenkov 已提交
2819
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
2820 2821
    attr=yes
    LIBS="-lattr $LIBS"
2822
    libattr=yes
2823 2824
  else
    if test "$attr" = "yes" ; then
2825
      feature_not_found "ATTR" "Install libc6 or libattr devel"
2826 2827 2828 2829 2830
    fi
    attr=no
  fi
fi

A
aliguori 已提交
2831 2832 2833
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
2834
#include <sys/types.h>
A
aliguori 已提交
2835
#include <sys/uio.h>
B
blueswir1 已提交
2836
#include <unistd.h>
2837
int main(void) { return sizeof(struct iovec); }
A
aliguori 已提交
2838 2839
EOF
iovec=no
2840
if compile_prog "" "" ; then
A
aliguori 已提交
2841 2842 2843
  iovec=yes
fi

2844 2845 2846 2847 2848 2849
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
2850
int main(void) { return preadv(0, 0, 0, 0); }
2851 2852
EOF
preadv=no
2853
if compile_prog "" "" ; then
2854 2855 2856
  preadv=yes
fi

2857 2858
##########################################
# fdt probe
2859 2860 2861 2862 2863
# fdt support is mandatory for at least some target architectures,
# so insist on it if we're building those system emulators.
fdt_required=no
for target in $target_list; do
  case $target in
2864
    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878
      fdt_required=yes
    ;;
  esac
done

if test "$fdt_required" = "yes"; then
  if test "$fdt" = "no"; then
    error_exit "fdt disabled but some requested targets require it." \
      "You can turn off fdt only if you also disable all the system emulation" \
      "targets which need it (by specifying a cut down --target-list)."
  fi
  fdt=yes
fi

2879
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
2880
  fdt_libs="-lfdt"
2881
  # explicitly check for libfdt_env.h as it is missing in some stable installs
J
Juan Quintela 已提交
2882
  cat > $TMPC << EOF
2883
#include <libfdt_env.h>
2884 2885
int main(void) { return 0; }
EOF
2886
  if compile_prog "" "$fdt_libs" ; then
2887
    # system DTC is good - use it
2888
    fdt=yes
2889 2890 2891 2892 2893 2894 2895 2896
  elif test -d ${source_path}/dtc/libfdt ; then
    # have submodule DTC - use it
    fdt=yes
    dtc_internal="yes"
    mkdir -p dtc
    if [ "$source_path" != `pwd` ] ; then
       symlink "$source_path/dtc/Makefile" "dtc/Makefile"
       symlink "$source_path/dtc/scripts" "dtc/scripts"
2897
    fi
2898 2899 2900 2901
    fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
    fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
  elif test "$fdt" = "yes" ; then
    # have neither and want - prompt for system/submodule install
2902 2903
    error_exit "DTC (libfdt) not present. Your options:" \
        "  (1) Preferred: Install the DTC (libfdt) devel package" \
2904 2905 2906 2907
        "  (2) Fetch the DTC submodule, using:" \
        "      git submodule update --init dtc"
  else
    # don't have and don't want
2908
    fdt_libs=
2909
    fdt=no
2910 2911 2912
  fi
fi

2913 2914
libs_softmmu="$libs_softmmu $fdt_libs"

M
Michael Walle 已提交
2915
##########################################
2916 2917 2918
# GLX probe, used by milkymist-tmu2
if test "$glx" != "no" ; then
  glx_libs="-lGL -lX11"
M
Michael Walle 已提交
2919 2920 2921 2922
  cat > $TMPC << EOF
#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
2923
int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
M
Michael Walle 已提交
2924
EOF
2925
  if compile_prog "" "-lGL -lX11" ; then
2926
    glx=yes
M
Michael Walle 已提交
2927
  else
2928
    if test "$glx" = "yes" ; then
2929
      feature_not_found "glx" "Install GL devel (e.g. MESA)"
M
Michael Walle 已提交
2930
    fi
2931 2932
    glx_libs=
    glx=no
M
Michael Walle 已提交
2933 2934 2935
  fi
fi

2936 2937 2938
##########################################
# glusterfs probe
if test "$glusterfs" != "no" ; then
2939
  if $pkg_config --atleast-version=3 glusterfs-api; then
2940
    glusterfs="yes"
2941 2942
    glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
    glusterfs_libs=`$pkg_config --libs glusterfs-api`
2943
    if $pkg_config --atleast-version=5 glusterfs-api; then
2944 2945
      glusterfs_discard="yes"
    fi
2946 2947 2948
    if $pkg_config --atleast-version=6 glusterfs-api; then
      glusterfs_zerofill="yes"
    fi
2949 2950
  else
    if test "$glusterfs" = "yes" ; then
2951
      feature_not_found "GlusterFS backend support" "Install glusterfs-api devel"
2952
    fi
2953
    glusterfs="no"
2954 2955 2956
  fi
fi

A
aurel32 已提交
2957
# Check for inotify functions when we are building linux-user
2958 2959 2960 2961 2962
# 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
2963
cat > $TMPC << EOF
2964 2965 2966 2967 2968 2969
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
2970
	return inotify_init();
2971 2972
}
EOF
2973
if compile_prog "" "" ; then
2974
  inotify=yes
2975 2976
fi

2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991
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 已提交
2992 2993 2994 2995 2996 2997
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>
2998
#include <sys/stat.h>
R
Riku Voipio 已提交
2999 3000 3001 3002 3003 3004 3005 3006

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
3007
if compile_prog "" "" ; then
R
Riku Voipio 已提交
3008 3009 3010
  utimens=yes
fi

R
Riku Voipio 已提交
3011 3012 3013 3014 3015 3016 3017 3018 3019
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
3020
    return pipe2(pipefd, O_CLOEXEC);
R
Riku Voipio 已提交
3021 3022
}
EOF
3023
if compile_prog "" "" ; then
R
Riku Voipio 已提交
3024 3025 3026
  pipe2=yes
fi

K
Kevin Wolf 已提交
3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042
# 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

3043 3044 3045 3046 3047 3048 3049 3050 3051
# 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)
{
3052
    int len, fd = 0;
3053 3054 3055 3056 3057
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
3058
if compile_prog "" "" ; then
3059 3060 3061
  splice=yes
fi

M
Marcelo Tosatti 已提交
3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075
##########################################
# 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 已提交
3076 3077 3078 3079 3080 3081 3082
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

int main(void)
{
3083
    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
R
Riku Voipio 已提交
3084 3085 3086 3087 3088 3089
}
EOF
if compile_prog "" "" ; then
  eventfd=yes
fi

3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
3101
if compile_prog "" "" ; then
3102 3103 3104
  fallocate=yes
fi

3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120
# check for fallocate hole punching
fallocate_punch_hole=no
cat > $TMPC << EOF
#include <fcntl.h>
#include <linux/falloc.h>

int main(void)
{
    fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
    return 0;
}
EOF
if compile_prog "" "" ; then
  fallocate_punch_hole=yes
fi

3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131
# 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
3132
if compile_prog "" "" ; then
3133 3134 3135
  sync_file_range=yes
fi

3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148
# 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
3149
if compile_prog "" "" ; then
3150 3151 3152
  fiemap=yes
fi

3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
3164
if compile_prog "" "" ; then
3165 3166 3167
  dup3=yes
fi

3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183
# check for ppoll support
ppoll=no
cat > $TMPC << EOF
#include <poll.h>

int main(void)
{
    struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
    ppoll(&pfd, 1, 0, 0);
    return 0;
}
EOF
if compile_prog "" "" ; then
  ppoll=yes
fi

3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198
# check for prctl(PR_SET_TIMERSLACK , ... ) support
prctl_pr_set_timerslack=no
cat > $TMPC << EOF
#include <sys/prctl.h>

int main(void)
{
    prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
    return 0;
}
EOF
if compile_prog "" "" ; then
  prctl_pr_set_timerslack=yes
fi

3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209
# check for epoll support
epoll=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
    epoll_create(0);
    return 0;
}
EOF
3210
if compile_prog "" "" ; then
3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221
  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)
{
3222 3223 3224 3225 3226 3227 3228 3229
    /* 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.)
     */
3230
    return (int)(uintptr_t)&epoll_create1;
3231 3232
}
EOF
3233
if compile_prog "" "" ; then
3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246
  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
3247
if compile_prog "" "" ; then
3248 3249 3250
  epoll_pwait=yes
fi

3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264
# check for sendfile support
sendfile=no
cat > $TMPC << EOF
#include <sys/sendfile.h>

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

3265
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
3266
if test "$docs" != "no" ; then
3267
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
3268
    docs=yes
3269
  else
J
Juan Quintela 已提交
3270
    if test "$docs" = "yes" ; then
3271
      feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3272
    fi
J
Juan Quintela 已提交
3273
    docs=no
3274
  fi
3275 3276
fi

S
Stefan Weil 已提交
3277
# Search for bswap_32 function
3278 3279 3280 3281 3282
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
3283
if compile_prog "" "" ; then
3284 3285 3286
  byteswap_h=yes
fi

3287
# Search for bswap32 function
3288 3289 3290 3291 3292 3293 3294
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
3295
if compile_prog "" "" ; then
3296 3297 3298
  bswap_h=yes
fi

R
Ronnie Sahlberg 已提交
3299 3300
##########################################
# Do we have libiscsi
3301 3302
# We check for iscsi_write16_sync() to make sure we have a
# at least version 1.4.0 of libiscsi.
R
Ronnie Sahlberg 已提交
3303 3304
if test "$libiscsi" != "no" ; then
  cat > $TMPC << EOF
3305
#include <stdio.h>
R
Ronnie Sahlberg 已提交
3306
#include <iscsi/iscsi.h>
3307
int main(void) { iscsi_write16_sync(NULL,0,0,NULL,0,0,0,0,0,0,0); return 0; }
R
Ronnie Sahlberg 已提交
3308
EOF
3309
  if $pkg_config --atleast-version=1.7.0 libiscsi; then
3310
    libiscsi="yes"
3311 3312
    libiscsi_cflags=$($pkg_config --cflags libiscsi)
    libiscsi_libs=$($pkg_config --libs libiscsi)
3313
  elif compile_prog "" "-liscsi" ; then
R
Ronnie Sahlberg 已提交
3314
    libiscsi="yes"
3315
    libiscsi_libs="-liscsi"
R
Ronnie Sahlberg 已提交
3316 3317
  else
    if test "$libiscsi" = "yes" ; then
3318
      feature_not_found "libiscsi" "Install libiscsi devel"
R
Ronnie Sahlberg 已提交
3319 3320 3321 3322 3323
    fi
    libiscsi="no"
  fi
fi

3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338
# We also need to know the API version because there was an
# API change from 1.4.0 to 1.5.0.
if test "$libiscsi" = "yes"; then
  cat >$TMPC <<EOF
#include <iscsi/iscsi.h>
int main(void)
{
  iscsi_read10_task(0, 0, 0, 0, 0, 0, 0);
  return 0;
}
EOF
  if compile_prog "" "-liscsi"; then
    libiscsi_version="1.4.0"
  fi
fi
R
Ronnie Sahlberg 已提交
3339

3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351
##########################################
# 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
3352
  error_exit "libm check failed"
3353 3354
fi

A
aliguori 已提交
3355 3356
##########################################
# Do we need librt
3357 3358 3359 3360
# 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 已提交
3361 3362 3363
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
3364 3365 3366 3367
int main(void) {
  timer_create(CLOCK_REALTIME, NULL, NULL);
  return clock_gettime(CLOCK_REALTIME, NULL);
}
A
aliguori 已提交
3368 3369
EOF

3370
if compile_prog "" "" ; then
3371
  :
3372 3373
# we need pthread for static linking. use previous pthread test result
elif compile_prog "" "-lrt $pthread_lib" ; then
3374
  LIBS="-lrt $LIBS"
3375
  libs_qga="-lrt $libs_qga"
A
aliguori 已提交
3376 3377
fi

3378
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3379
        "$aix" != "yes" -a "$haiku" != "yes" ; then
3380 3381 3382
    libs_softmmu="-lutil $libs_softmmu"
fi

3383
##########################################
3384 3385 3386 3387 3388 3389
# 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 已提交
3390 3391
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3392 3393
  if $pkg_config --atleast-version=0.12.0 spice-server && \
     $pkg_config --atleast-version=0.12.3 spice-protocol && \
3394 3395 3396 3397
     compile_prog "$spice_cflags" "$spice_libs" ; then
    spice="yes"
    libs_softmmu="$libs_softmmu $spice_libs"
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3398 3399
    spice_protocol_version=$($pkg_config --modversion spice-protocol)
    spice_server_version=$($pkg_config --modversion spice-server)
3400 3401
  else
    if test "$spice" = "yes" ; then
3402
      feature_not_found "spice" "Install spice-server and spice-protocol devel"
3403 3404 3405 3406 3407
    fi
    spice="no"
  fi
fi

R
Robert Relyea 已提交
3408
# check for libcacard for smartcard support
P
Paolo Bonzini 已提交
3409 3410 3411 3412
smartcard_cflags=""
# TODO - what's the minimal nss version we support?
if test "$smartcard_nss" != "no"; then
  cat > $TMPC << EOF
3413 3414 3415
#include <pk11pub.h>
int main(void) { PK11_FreeSlot(0); return 0; }
EOF
P
Paolo Bonzini 已提交
3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426
    smartcard_includes="-I\$(SRC_PATH)/libcacard"
    libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
    libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
    test_cflags="$libcacard_cflags"
    # The header files in nss < 3.13.3 have a bug which causes them to
    # emit a warning. If we're going to compile QEMU with -Werror, then
    # test that the headers don't have this bug. Otherwise we would pass
    # the configure test but fail to compile QEMU later.
    if test "$werror" = "yes"; then
        test_cflags="-Werror $test_cflags"
    fi
3427
    if test -n "$libtool" &&
3428
       $pkg_config --atleast-version=3.12.8 nss && \
P
Paolo Bonzini 已提交
3429 3430 3431 3432 3433 3434 3435 3436
      compile_prog "$test_cflags" "$libcacard_libs"; then
        smartcard_nss="yes"
        QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
        QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes"
        libs_softmmu="$libcacard_libs $libs_softmmu"
    else
        if test "$smartcard_nss" = "yes"; then
            feature_not_found "nss"
R
Robert Relyea 已提交
3437
        fi
P
Paolo Bonzini 已提交
3438
        smartcard_nss="no"
R
Robert Relyea 已提交
3439 3440 3441
    fi
fi

G
Gerd Hoffmann 已提交
3442 3443
# check for libusb
if test "$libusb" != "no" ; then
3444
    if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
G
Gerd Hoffmann 已提交
3445
        libusb="yes"
3446 3447
        libusb_cflags=$($pkg_config --cflags libusb-1.0)
        libusb_libs=$($pkg_config --libs libusb-1.0)
G
Gerd Hoffmann 已提交
3448 3449 3450 3451
        QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
        libs_softmmu="$libs_softmmu $libusb_libs"
    else
        if test "$libusb" = "yes"; then
3452
            feature_not_found "libusb" "Install libusb devel"
G
Gerd Hoffmann 已提交
3453 3454 3455 3456 3457
        fi
        libusb="no"
    fi
fi

3458 3459
# check for usbredirparser for usb network redirection support
if test "$usb_redir" != "no" ; then
3460
    if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3461
        usb_redir="yes"
3462 3463
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3464
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
A
Aurelien Jarno 已提交
3465
        libs_softmmu="$libs_softmmu $usb_redir_libs"
3466 3467
    else
        if test "$usb_redir" = "yes"; then
3468
            feature_not_found "usb-redir" "Install usbredir devel"
3469 3470 3471 3472 3473
        fi
        usb_redir="no"
    fi
fi

3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528
##########################################
# check if we have VSS SDK headers for win

if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
  case "$vss_win32_sdk" in
    "")   vss_win32_include="-I$source_path" ;;
    *\ *) # The SDK is installed in "Program Files" by default, but we cannot
          # handle path with spaces. So we symlink the headers into ".sdk/vss".
          vss_win32_include="-I$source_path/.sdk/vss"
	  symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
	  ;;
    *)    vss_win32_include="-I$vss_win32_sdk"
  esac
  cat > $TMPC << EOF
#define __MIDL_user_allocate_free_DEFINED__
#include <inc/win2003/vss.h>
int main(void) { return VSS_CTX_BACKUP; }
EOF
  if compile_prog "$vss_win32_include" "" ; then
    guest_agent_with_vss="yes"
    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
    libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
  else
    if test "$vss_win32_sdk" != "" ; then
      echo "ERROR: Please download and install Microsoft VSS SDK:"
      echo "ERROR:   http://www.microsoft.com/en-us/download/details.aspx?id=23490"
      echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
      echo "ERROR:   scripts/extract-vsssdk-headers setup.exe"
      echo "ERROR: The headers are extracted in the directory \`inc'."
      feature_not_found "VSS support"
    fi
    guest_agent_with_vss="no"
  fi
fi

##########################################
# lookup Windows platform SDK (if not specified)
# The SDK is needed only to build .tlb (type library) file of guest agent
# VSS provider from the source. It is usually unnecessary because the
# pre-compiled .tlb file is included.

if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
  if test -z "$win_sdk"; then
    programfiles="$PROGRAMFILES"
    test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
    if test -n "$programfiles"; then
      win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
    else
      feature_not_found "Windows SDK"
    fi
  elif test "$win_sdk" = "no"; then
    win_sdk=""
  fi
fi

3529 3530
##########################################

B
Blue Swirl 已提交
3531 3532 3533 3534 3535 3536
##########################################
# check if we have fdatasync

fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
3537 3538 3539 3540
int main(void) {
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
return fdatasync(0);
#else
3541
#error Not supported
3542 3543
#endif
}
B
Blue Swirl 已提交
3544 3545 3546 3547 3548
EOF
if compile_prog "" "" ; then
    fdatasync=yes
fi

A
Andreas Färber 已提交
3549 3550 3551 3552 3553 3554 3555
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
3556
#include <stddef.h>
A
Andreas Färber 已提交
3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568
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 已提交
3569
#include <stddef.h>
A
Andreas Färber 已提交
3570 3571 3572 3573 3574 3575
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593
##########################################
# 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

3594 3595 3596
##########################################
# check if trace backend exists

3597
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
3598
if test "$?" -ne 0 ; then
3599 3600
  error_exit "invalid trace backend" \
      "Please choose a supported trace backend."
3601 3602
fi

3603 3604 3605 3606
##########################################
# For 'ust' backend, test if ust headers are present
if test "$trace_backend" = "ust"; then
  cat > $TMPC << EOF
3607
#include <lttng/tracepoint.h>
3608 3609 3610
int main(void) { return 0; }
EOF
  if compile_prog "" "" ; then
3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623
    if $pkg_config lttng-ust --exists; then
      lttng_ust_libs=`$pkg_config --libs lttng-ust`
    else
      lttng_ust_libs="-llttng-ust"
    fi
    if $pkg_config liburcu-bp --exists; then
      urcu_bp_libs=`$pkg_config --libs liburcu-bp`
    else
      urcu_bp_libs="-lurcu-bp"
    fi

    LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
    libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
3624
  else
3625
    error_exit "Trace backend 'ust' missing lttng-ust header files"
3626 3627
  fi
fi
3628 3629 3630 3631 3632

##########################################
# For 'dtrace' backend, test if 'dtrace' command is present
if test "$trace_backend" = "dtrace"; then
  if ! has 'dtrace' ; then
3633
    error_exit "dtrace command is not found in PATH $PATH"
3634
  fi
3635 3636 3637 3638
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
3639 3640
fi

W
Wolfgang Mauerer 已提交
3641
##########################################
3642
# check and set a backend for coroutine
3643

3644 3645 3646 3647 3648 3649 3650 3651 3652
# We prefer ucontext, but it's not always possible. The fallback
# is sigcontext. gthread is not selectable except explicitly, because
# it is not functional enough to run QEMU proper. (It is occasionally
# useful for debugging purposes.)  On Windows the only valid backend
# is the Windows-specific one.

ucontext_works=no
if test "$darwin" != "yes"; then
  cat > $TMPC << EOF
3653
#include <ucontext.h>
3654 3655 3656
#ifdef __stub_makecontext
#error Ignoring glibc stub makecontext which will always fail
#endif
3657
int main(void) { makecontext(0, 0, 0); return 0; }
3658
EOF
3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670
  if compile_prog "" "" ; then
    ucontext_works=yes
  fi
fi

if test "$coroutine" = ""; then
  if test "$mingw32" = "yes"; then
    coroutine=win32
  elif test "$ucontext_works" = "yes"; then
    coroutine=ucontext
  else
    coroutine=sigaltstack
3671
  fi
3672
else
3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695
  case $coroutine in
  windows)
    if test "$mingw32" != "yes"; then
      error_exit "'windows' coroutine backend only valid for Windows"
    fi
    # Unfortunately the user visible backend name doesn't match the
    # coroutine-*.c filename for this case, so we have to adjust it here.
    coroutine=win32
    ;;
  ucontext)
    if test "$ucontext_works" != "yes"; then
      feature_not_found "ucontext"
    fi
    ;;
  gthread|sigaltstack)
    if test "$mingw32" = "yes"; then
      error_exit "only the 'windows' coroutine backend is valid for Windows"
    fi
    ;;
  *)
    error_exit "unknown coroutine backend $coroutine"
    ;;
  esac
3696 3697
fi

3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708
if test "$coroutine_pool" = ""; then
  if test "$coroutine" = "gthread"; then
    coroutine_pool=no
  else
    coroutine_pool=yes
  fi
fi
if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
  error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
fi

3709 3710 3711
##########################################
# check if we have open_by_handle_at

S
Stefan Weil 已提交
3712
open_by_handle_at=no
3713 3714
cat > $TMPC << EOF
#include <fcntl.h>
3715 3716 3717
#if !defined(AT_EMPTY_PATH)
# error missing definition
#else
3718
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
3719
#endif
3720 3721 3722 3723 3724
EOF
if compile_prog "" "" ; then
    open_by_handle_at=yes
fi

3725 3726 3727 3728 3729 3730 3731
########################################
# check if we have linux/magic.h

linux_magic_h=no
cat > $TMPC << EOF
#include <linux/magic.h>
int main(void) {
3732
  return 0;
3733 3734 3735 3736 3737 3738
}
EOF
if compile_prog "" "" ; then
    linux_magic_h=yes
fi

3739
########################################
K
Kevin Wolf 已提交
3740 3741 3742 3743 3744 3745 3746 3747
# check whether we can disable warning option with a pragma (this is needed
# to silence warnings in the headers of some versions of external libraries).
# This test has to be compiled with -Werror as otherwise an unknown pragma is
# only a warning.
#
# If we can't selectively disable warning in the code, disable -Werror so that
# the build doesn't fail anyway.

3748 3749
pragma_disable_unused_but_set=no
cat > $TMPC << EOF
3750
#pragma GCC diagnostic push
3751
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
K
Kevin Wolf 已提交
3752
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
3753
#pragma GCC diagnostic pop
K
Kevin Wolf 已提交
3754

3755 3756 3757 3758 3759
int main(void) {
    return 0;
}
EOF
if compile_prog "-Werror" "" ; then
3760
    pragma_diagnostic_available=yes
K
Kevin Wolf 已提交
3761 3762
else
    werror=no
3763 3764
fi

3765
########################################
3766
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
3767 3768 3769 3770

valgrind_h=no
cat > $TMPC << EOF
#include <valgrind/valgrind.h>
3771
#include <valgrind/memcheck.h>
3772 3773 3774 3775 3776 3777 3778 3779
int main(void) {
  return 0;
}
EOF
if compile_prog "" "" ; then
    valgrind_h=yes
fi

3780 3781 3782 3783 3784 3785 3786
########################################
# check if environ is declared

has_environ=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) {
3787
    environ = 0;
3788 3789 3790 3791 3792 3793 3794
    return 0;
}
EOF
if compile_prog "" "" ; then
    has_environ=yes
fi

3795 3796 3797 3798 3799 3800 3801
########################################
# check if cpuid.h is usable.

cpuid_h=no
cat > $TMPC << EOF
#include <cpuid.h>
int main(void) {
3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813
    unsigned a, b, c, d;
    int max = __get_cpuid_max(0, 0);

    if (max >= 1) {
        __cpuid(1, a, b, c, d);
    }

    if (max >= 7) {
        __cpuid_count(7, 0, a, b, c, d);
    }

    return 0;
3814 3815 3816 3817 3818 3819
}
EOF
if compile_prog "" "" ; then
    cpuid_h=yes
fi

3820 3821 3822 3823 3824 3825 3826 3827 3828 3829
########################################
# check if __[u]int128_t is usable.

int128=no
cat > $TMPC << EOF
__int128_t a;
__uint128_t b;
int main (void) {
  a = a + b;
  b = a * b;
3830
  a = a * a;
3831 3832 3833 3834 3835 3836
  return 0;
}
EOF
if compile_prog "" "" ; then
    int128=yes
fi
3837

3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851
########################################
# check if getauxval is available.

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

3852
##########################################
3853 3854 3855
# End of CC checks
# After here, no more $cc or $ld runs

B
Blue Swirl 已提交
3856 3857 3858 3859
if test "$gcov" = "yes" ; then
  CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
  LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
elif test "$debug" = "no" ; then
3860
  CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
3861
fi
J
Juan Quintela 已提交
3862

P
Peter Lieven 已提交
3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876
##########################################
# Do we have libnfs
if test "$libnfs" != "no" ; then
  if $pkg_config --atleast-version=1.9.2 libnfs; then
    libnfs="yes"
    libnfs_libs=$($pkg_config --libs libnfs)
    LIBS="$LIBS $libnfs_libs"
  else
    if test "$libnfs" = "yes" ; then
      feature_not_found "libnfs"
    fi
    libnfs="no"
  fi
fi
B
Blue Swirl 已提交
3877

3878 3879 3880 3881 3882 3883 3884 3885 3886 3887
# 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

3888 3889 3890 3891 3892
# 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

3893 3894
if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
3895
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
3896 3897 3898
    fi
fi

3899 3900 3901 3902 3903 3904 3905
# test if pod2man has --utf8 option
if pod2man --help | grep -q utf8; then
    POD2MAN="pod2man --utf8"
else
    POD2MAN="pod2man"
fi

3906 3907 3908 3909 3910 3911 3912 3913 3914
# 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

3915
qemu_confdir=$sysconfdir$confsuffix
F
Fam Zheng 已提交
3916
qemu_moddir=$libdir$confsuffix
3917
qemu_datadir=$datadir$confsuffix
3918
qemu_localedir="$datadir/locale"
3919

3920 3921
tools=""
if test "$want_tools" = "yes" ; then
3922
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
3923 3924 3925 3926 3927
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
    tools="qemu-nbd\$(EXESUF) $tools"
  fi
fi
if test "$softmmu" = yes ; then
3928
  if test "$virtfs" != no ; then
3929 3930 3931 3932 3933
    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
3934
        error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
3935
      fi
3936
      virtfs=no
3937
    fi
3938
  fi
3939 3940
fi
if [ "$guest_agent" != "no" ]; then
3941
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
M
Michael Roth 已提交
3942
      tools="qemu-ga\$(EXESUF) $tools"
3943 3944 3945
      if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
        tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
      fi
3946 3947 3948 3949 3950
      guest_agent=yes
  elif [ "$guest_agent" != yes ]; then
      guest_agent=no
  else
      error_exit "Guest agent is not supported on this platform"
3951
  fi
3952
fi
3953 3954 3955 3956 3957 3958 3959 3960

# 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
3961
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
3962 3963
  roms="$roms spapr-rtas"
fi
3964

3965 3966 3967 3968
if test "$cpu" = "s390x" ; then
  roms="$roms s390-ccw"
fi

3969 3970 3971 3972
# Probe for the need for relocating the user-only binary.
if test "$pie" = "no" ; then
  textseg_addr=
  case "$cpu" in
3973
    arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64 | x32)
3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998
      textseg_addr=0x60000000
      ;;
    mips)
      textseg_addr=0x400000
      ;;
  esac
  if [ -n "$textseg_addr" ]; then
    cat > $TMPC <<EOF
    int main(void) { return 0; }
EOF
    textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
    if ! compile_prog "" "$textseg_ldflags"; then
      # In case ld does not support -Ttext-segment, edit the default linker
      # script via sed to set the .text start addr.  This is needed on FreeBSD
      # at least.
      $ld --verbose | sed \
        -e '1,/==================================================/d' \
        -e '/==================================================/,$d' \
        -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
        -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
      textseg_ldflags="-Wl,-T../config-host.ld"
    fi
  fi
fi

3999
# add pixman flags after all config tests are done
4000
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags $fdt_cflags"
4001 4002
libs_softmmu="$libs_softmmu $pixman_libs"

B
bellard 已提交
4003
echo "Install prefix    $prefix"
4004
echo "BIOS directory    `eval echo $qemu_datadir`"
4005
echo "binary directory  `eval echo $bindir`"
A
Alon Levy 已提交
4006
echo "library directory `eval echo $libdir`"
F
Fam Zheng 已提交
4007
echo "module directory  `eval echo $qemu_moddir`"
4008
echo "libexec directory `eval echo $libexecdir`"
4009
echo "include directory `eval echo $includedir`"
4010
echo "config directory  `eval echo $sysconfdir`"
B
bellard 已提交
4011
if test "$mingw32" = "no" ; then
4012
echo "local state directory   `eval echo $local_statedir`"
4013
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
4014
echo "ELF interp prefix $interp_prefix"
4015 4016
else
echo "local state directory   queried at runtime"
4017
echo "Windows SDK       $win_sdk"
B
bellard 已提交
4018
fi
4019
echo "Source path       $source_path"
B
bellard 已提交
4020
echo "C compiler        $cc"
B
bellard 已提交
4021
echo "Host C compiler   $host_cc"
4022
echo "C++ compiler      $cxx"
4023
echo "Objective-C compiler $objcc"
4024
echo "ARFLAGS           $ARFLAGS"
4025
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
4026
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
4027
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
4028
echo "make              $make"
4029
echo "install           $install"
B
Blue Swirl 已提交
4030
echo "python            $python"
4031 4032 4033
if test "$slirp" = "yes" ; then
    echo "smbd              $smbd"
fi
F
Fam Zheng 已提交
4034
echo "module support    $modules"
B
bellard 已提交
4035
echo "host CPU          $cpu"
B
bellard 已提交
4036
echo "host big endian   $bigendian"
4037
echo "target list       $target_list"
4038
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
4039
echo "gprof enabled     $gprof"
4040
echo "sparse enabled    $sparse"
4041
echo "strip binaries    $strip_opt"
4042
echo "profiler          $profiler"
B
bellard 已提交
4043
echo "static build      $static"
4044
echo "-Werror enabled   $werror"
4045 4046 4047
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
4048
echo "pixman            $pixman"
4049
echo "SDL support       $sdl"
A
Anthony Liguori 已提交
4050
echo "GTK support       $gtk"
B
balrog 已提交
4051
echo "curses support    $curses"
A
Alexander Graf 已提交
4052
echo "curl support      $curl"
B
bellard 已提交
4053
echo "mingw32 support   $mingw32"
M
malc 已提交
4054
echo "Audio drivers     $audio_drv_list"
4055 4056
echo "Block whitelist (rw) $block_drv_rw_whitelist"
echo "Block whitelist (ro) $block_drv_ro_whitelist"
4057
echo "VirtFS support    $virtfs"
J
Jes Sorensen 已提交
4058 4059 4060 4061 4062 4063
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"
4064
    echo "VNC WS support    $vnc_ws"
J
Jes Sorensen 已提交
4065
fi
4066 4067 4068
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
4069
echo "xen support       $xen"
A
aurel32 已提交
4070
echo "brlapi support    $brlapi"
4071
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
4072
echo "Documentation     $docs"
4073 4074
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
P
Paul Brook 已提交
4075
echo "GUEST_BASE        $guest_base"
4076
echo "PIE               $pie"
4077
echo "vde support       $vde"
4078
echo "netmap support    $netmap"
4079
echo "Linux AIO support $linux_aio"
4080
echo "ATTR/XATTR support $attr"
T
ths 已提交
4081
echo "Install blobs     $blobs"
4082
echo "KVM support       $kvm"
M
Michael R. Hines 已提交
4083
echo "RDMA support      $rdma"
4084
echo "TCG interpreter   $tcg_interpreter"
4085
echo "fdt support       $fdt"
4086
echo "preadv support    $preadv"
B
Blue Swirl 已提交
4087
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
4088 4089
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
4090
echo "sigev_thread_id   $sigev_thread_id"
4091
echo "uuid support      $uuid"
4092
echo "libcap-ng support $cap_ng"
M
Michael S. Tsirkin 已提交
4093
echo "vhost-net support $vhost_net"
4094
echo "vhost-scsi support $vhost_scsi"
4095
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
4096
echo "Trace output file $trace_file-<pid>"
4097
if test "$spice" = "yes"; then
4098
echo "spice support     $spice ($spice_protocol_version/$spice_server_version)"
4099 4100 4101
else
echo "spice support     $spice"
fi
4102
echo "rbd support       $rbd"
C
Christoph Hellwig 已提交
4103
echo "xfsctl support    $xfs"
R
Robert Relyea 已提交
4104
echo "nss used          $smartcard_nss"
G
Gerd Hoffmann 已提交
4105
echo "libusb            $libusb"
4106
echo "usb net redir     $usb_redir"
4107
echo "GLX support       $glx"
4108 4109 4110
if test "$libiscsi_version" = "1.4.0"; then
echo "libiscsi support  $libiscsi (1.4.0)"
else
R
Ronnie Sahlberg 已提交
4111
echo "libiscsi support  $libiscsi"
4112
fi
P
Peter Lieven 已提交
4113
echo "libnfs support    $libnfs"
4114
echo "build guest agent $guest_agent"
4115
echo "QGA VSS support   $guest_agent_with_vss"
4116
echo "seccomp support   $seccomp"
4117
echo "coroutine backend $coroutine"
4118
echo "coroutine pool    $coroutine_pool"
4119
echo "GlusterFS support $glusterfs"
4120
echo "virtio-blk-data-plane $virtio_blk_data_plane"
B
Blue Swirl 已提交
4121 4122
echo "gcov              $gcov_tool"
echo "gcov enabled      $gcov"
S
Stefan Berger 已提交
4123
echo "TPM support       $tpm"
4124
echo "libssh2 support   $libssh2"
P
Paolo Bonzini 已提交
4125
echo "TPM passthrough   $tpm_passthrough"
4126
echo "QOM debugging     $qom_cast_debug"
4127
echo "vhdx              $vhdx"
B
Benoît Canet 已提交
4128
echo "Quorum            $quorum"
Q
qiaonuohan 已提交
4129 4130
echo "lzo support       $lzo"
echo "snappy support    $snappy"
B
bellard 已提交
4131

4132
if test "$sdl_too_old" = "yes"; then
B
bellard 已提交
4133
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
4134
fi
B
bellard 已提交
4135

4136 4137
config_host_mak="config-host.mak"

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

4140 4141 4142
echo "# Automatically generated by configure - do not modify" > $config_host_mak
echo >> $config_host_mak

4143
echo all: >> $config_host_mak
4144 4145
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
A
Alon Levy 已提交
4146
echo "libdir=$libdir" >> $config_host_mak
4147
echo "libexecdir=$libexecdir" >> $config_host_mak
4148
echo "includedir=$includedir" >> $config_host_mak
4149 4150
echo "mandir=$mandir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
4151
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4152 4153
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
F
Fam Zheng 已提交
4154
echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4155 4156 4157
if test "$mingw32" = "no" ; then
  echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
fi
4158
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4159 4160
echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4161
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4162
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4163

4164
echo "ARCH=$ARCH" >> $config_host_mak
4165

4166
if test "$debug_tcg" = "yes" ; then
4167
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4168
fi
4169
if test "$strip_opt" = "yes" ; then
4170
  echo "STRIP=${strip}" >> $config_host_mak
4171
fi
B
bellard 已提交
4172
if test "$bigendian" = "yes" ; then
4173
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4174
fi
B
bellard 已提交
4175
if test "$mingw32" = "yes" ; then
4176
  echo "CONFIG_WIN32=y" >> $config_host_mak
4177 4178 4179 4180 4181 4182 4183 4184 4185
  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
4186 4187 4188 4189
  if test "$guest_agent_with_vss" = "yes" ; then
    echo "CONFIG_QGA_VSS=y" >> $config_host_mak
    echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
  fi
4190
else
J
Juan Quintela 已提交
4191
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
4192 4193 4194 4195
fi

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

4198
if test "$darwin" = "yes" ; then
4199
  echo "CONFIG_DARWIN=y" >> $config_host_mak
4200
fi
M
malc 已提交
4201 4202

if test "$aix" = "yes" ; then
4203
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
4204 4205
fi

B
bellard 已提交
4206
if test "$solaris" = "yes" ; then
4207
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
4208
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
4209
  if test "$needs_libsunmath" = "yes" ; then
4210
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
4211
  fi
B
bellard 已提交
4212
fi
4213 4214 4215
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
4216
if test "$static" = "yes" ; then
4217
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
4218
fi
4219
if test "$profiler" = "yes" ; then
4220
  echo "CONFIG_PROFILER=y" >> $config_host_mak
4221
fi
B
bellard 已提交
4222
if test "$slirp" = "yes" ; then
4223
  echo "CONFIG_SLIRP=y" >> $config_host_mak
4224
  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
B
bellard 已提交
4225
fi
4226
if test "$vde" = "yes" ; then
4227
  echo "CONFIG_VDE=y" >> $config_host_mak
4228
fi
4229 4230 4231
if test "$netmap" = "yes" ; then
  echo "CONFIG_NETMAP=y" >> $config_host_mak
fi
4232 4233 4234
if test "$cap_ng" = "yes" ; then
  echo "CONFIG_LIBCAP=y" >> $config_host_mak
fi
4235
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
4236
for drv in $audio_drv_list; do
4237
    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4238
    echo "$def=y" >> $config_host_mak
M
malc 已提交
4239
    if test "$drv" = "fmod"; then
4240
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
4241 4242
    fi
done
4243 4244 4245
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
4246 4247 4248
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
4249 4250
echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
J
Jes Sorensen 已提交
4251 4252 4253
if test "$vnc" = "yes" ; then
  echo "CONFIG_VNC=y" >> $config_host_mak
fi
4254
if test "$vnc_tls" = "yes" ; then
4255
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4256
fi
4257
if test "$vnc_sasl" = "yes" ; then
4258
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4259
fi
J
Jes Sorensen 已提交
4260
if test "$vnc_jpeg" = "yes" ; then
4261 4262
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
fi
J
Jes Sorensen 已提交
4263
if test "$vnc_png" = "yes" ; then
C
Corentin Chary 已提交
4264 4265
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
fi
4266 4267 4268 4269
if test "$vnc_ws" = "yes" ; then
  echo "CONFIG_VNC_WS=y" >> $config_host_mak
  echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
fi
4270
if test "$fnmatch" = "yes" ; then
4271
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
4272
fi
4273 4274 4275
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
C
Christoph Hellwig 已提交
4276 4277 4278
if test "$xfs" = "yes" ; then
  echo "CONFIG_XFS=y" >> $config_host_mak
fi
4279
qemu_version=`head $source_path/VERSION`
4280
echo "VERSION=$qemu_version" >>$config_host_mak
4281
echo "PKGVERSION=$pkgversion" >>$config_host_mak
4282 4283
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
4284
if [ "$docs" = "yes" ] ; then
4285
  echo "BUILD_DOCS=yes" >> $config_host_mak
4286
fi
F
Fam Zheng 已提交
4287
if test "$modules" = "yes"; then
F
Fam Zheng 已提交
4288 4289 4290
  # $shacmd can generate a hash started with digit, which the compiler doesn't
  # like as an symbol. So prefix it with an underscore
  echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
F
Fam Zheng 已提交
4291 4292
  echo "CONFIG_MODULES=y" >> $config_host_mak
fi
4293
if test "$sdl" = "yes" ; then
4294
  echo "CONFIG_SDL=y" >> $config_host_mak
4295
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4296 4297
fi
if test "$cocoa" = "yes" ; then
4298
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
4299 4300
fi
if test "$curses" = "yes" ; then
4301
  echo "CONFIG_CURSES=y" >> $config_host_mak
4302
fi
R
Riku Voipio 已提交
4303
if test "$utimens" = "yes" ; then
4304
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
4305
fi
R
Riku Voipio 已提交
4306
if test "$pipe2" = "yes" ; then
4307
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
4308
fi
K
Kevin Wolf 已提交
4309 4310 4311
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
4312
if test "$splice" = "yes" ; then
4313
  echo "CONFIG_SPLICE=y" >> $config_host_mak
4314
fi
R
Riku Voipio 已提交
4315 4316 4317
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
4318 4319 4320
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
4321 4322 4323
if test "$fallocate_punch_hole" = "yes" ; then
  echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
fi
4324 4325 4326
if test "$sync_file_range" = "yes" ; then
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
4327 4328 4329
if test "$fiemap" = "yes" ; then
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
fi
4330 4331 4332
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
4333 4334 4335
if test "$ppoll" = "yes" ; then
  echo "CONFIG_PPOLL=y" >> $config_host_mak
fi
4336 4337 4338
if test "$prctl_pr_set_timerslack" = "yes" ; then
  echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
fi
4339 4340 4341 4342 4343 4344 4345 4346 4347
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
4348 4349 4350
if test "$sendfile" = "yes" ; then
  echo "CONFIG_SENDFILE=y" >> $config_host_mak
fi
4351
if test "$inotify" = "yes" ; then
4352
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
4353
fi
4354 4355 4356
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
4357 4358 4359 4360 4361 4362
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 已提交
4363
if test "$curl" = "yes" ; then
4364
  echo "CONFIG_CURL=m" >> $config_host_mak
J
Juan Quintela 已提交
4365
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4366
  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
A
Alexander Graf 已提交
4367
fi
A
aurel32 已提交
4368
if test "$brlapi" = "yes" ; then
4369
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
4370
fi
B
balrog 已提交
4371
if test "$bluez" = "yes" ; then
4372
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
4373
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
4374
fi
4375
echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
A
Anthony Liguori 已提交
4376 4377 4378 4379 4380
if test "$gtk" = "yes" ; then
  echo "CONFIG_GTK=y" >> $config_host_mak
  echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
fi
4381
if test "$xen" = "yes" ; then
J
Jan Kiszka 已提交
4382
  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4383
  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4384
fi
4385 4386 4387
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
4388 4389 4390
if test "$attr" = "yes" ; then
  echo "CONFIG_ATTR=y" >> $config_host_mak
fi
4391 4392 4393
if test "$libattr" = "yes" ; then
  echo "CONFIG_LIBATTR=y" >> $config_host_mak
fi
4394 4395
if test "$virtfs" = "yes" ; then
  echo "CONFIG_VIRTFS=y" >> $config_host_mak
4396
fi
4397 4398 4399
if test "$vhost_scsi" = "yes" ; then
  echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
fi
T
ths 已提交
4400
if test "$blobs" = "yes" ; then
4401
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
4402
fi
A
aliguori 已提交
4403
if test "$iovec" = "yes" ; then
4404
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
4405
fi
4406
if test "$preadv" = "yes" ; then
4407
  echo "CONFIG_PREADV=y" >> $config_host_mak
4408
fi
4409
if test "$fdt" = "yes" ; then
4410
  echo "CONFIG_FDT=y" >> $config_host_mak
4411
fi
M
Marcelo Tosatti 已提交
4412 4413 4414
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
4415 4416 4417
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
4418 4419 4420
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
4421 4422 4423 4424 4425 4426
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
4427 4428 4429
if test "$sigev_thread_id" = "yes" ; then
  echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
fi
4430

4431 4432 4433
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi
A
Alon Levy 已提交
4434

R
Robert Relyea 已提交
4435 4436
if test "$smartcard_nss" = "yes" ; then
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
P
Paul Brook 已提交
4437 4438
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
R
Robert Relyea 已提交
4439 4440
fi

G
Gerd Hoffmann 已提交
4441 4442 4443 4444
if test "$libusb" = "yes" ; then
  echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
fi

4445 4446 4447 4448
if test "$usb_redir" = "yes" ; then
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
fi

4449 4450
if test "$glx" = "yes" ; then
  echo "CONFIG_GLX=y" >> $config_host_mak
4451
  echo "GLX_LIBS=$glx_libs" >> $config_host_mak
M
Michael Walle 已提交
4452 4453
fi

Q
qiaonuohan 已提交
4454 4455 4456 4457 4458 4459 4460 4461
if test "$lzo" = "yes" ; then
  echo "CONFIG_LZO=y" >> $config_host_mak
fi

if test "$snappy" = "yes" ; then
  echo "CONFIG_SNAPPY=y" >> $config_host_mak
fi

R
Ronnie Sahlberg 已提交
4462
if test "$libiscsi" = "yes" ; then
4463
  echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4464 4465 4466
  if test "$libiscsi_version" = "1.4.0"; then
    echo "CONFIG_LIBISCSI_1_4=y" >> $config_host_mak
  fi
4467 4468
  echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
  echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
R
Ronnie Sahlberg 已提交
4469 4470
fi

P
Peter Lieven 已提交
4471 4472 4473 4474
if test "$libnfs" = "yes" ; then
  echo "CONFIG_LIBNFS=y" >> $config_host_mak
fi

4475 4476 4477 4478
if test "$seccomp" = "yes"; then
  echo "CONFIG_SECCOMP=y" >> $config_host_mak
fi

4479
# XXX: suppress that
B
bellard 已提交
4480
if [ "$bsd" = "yes" ] ; then
4481
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
4482 4483
fi

4484
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
4485

4486 4487 4488
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
4489 4490 4491
if test "$qom_cast_debug" = "yes" ; then
  echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
fi
4492
if test "$rbd" = "yes" ; then
4493
  echo "CONFIG_RBD=m" >> $config_host_mak
4494 4495
  echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4496 4497
fi

4498
echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4499 4500 4501 4502 4503
if test "$coroutine_pool" = "yes" ; then
  echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
else
  echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
fi
4504

4505 4506 4507 4508
if test "$open_by_handle_at" = "yes" ; then
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
fi

4509 4510
if test "$linux_magic_h" = "yes" ; then
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4511 4512
fi

4513 4514
if test "$pragma_diagnostic_available" = "yes" ; then
  echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
4515 4516
fi

4517 4518 4519 4520
if test "$valgrind_h" = "yes" ; then
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
fi

4521 4522
if test "$has_environ" = "yes" ; then
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4523 4524
fi

4525 4526 4527 4528
if test "$cpuid_h" = "yes" ; then
  echo "CONFIG_CPUID_H=y" >> $config_host_mak
fi

4529 4530 4531 4532
if test "$int128" = "yes" ; then
  echo "CONFIG_INT128=y" >> $config_host_mak
fi

4533 4534 4535 4536
if test "$getauxval" = "yes" ; then
  echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
fi

4537
if test "$glusterfs" = "yes" ; then
4538
  echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
4539 4540
  echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
  echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
4541 4542 4543 4544
fi

if test "$glusterfs_discard" = "yes" ; then
  echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
4545
fi
4546

4547 4548 4549 4550
if test "$glusterfs_zerofill" = "yes" ; then
  echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
fi

4551
if test "$libssh2" = "yes" ; then
4552
  echo "CONFIG_LIBSSH2=m" >> $config_host_mak
4553 4554
  echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
  echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
4555 4556
fi

B
Benoît Canet 已提交
4557 4558 4559 4560
if test "$quorum" = "yes" ; then
  echo "CONFIG_QUORUM=y" >> $config_host_mak
fi

4561
if test "$virtio_blk_data_plane" = "yes" ; then
4562
  echo 'CONFIG_VIRTIO_BLK_DATA_PLANE=$(CONFIG_VIRTIO)' >> $config_host_mak
4563 4564
fi

4565 4566 4567 4568
if test "$vhdx" = "yes" ; then
  echo "CONFIG_VHDX=y" >> $config_host_mak
fi

4569
# USB host support
G
Gerd Hoffmann 已提交
4570 4571 4572
if test "$libusb" = "yes"; then
  echo "HOST_USB=libusb legacy" >> $config_host_mak
else
4573
  echo "HOST_USB=stub" >> $config_host_mak
G
Gerd Hoffmann 已提交
4574
fi
4575

P
Paolo Bonzini 已提交
4576 4577 4578 4579 4580 4581 4582 4583
# TPM passthrough support?
if test "$tpm" = "yes"; then
  echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
  if test "$tpm_passthrough" = "yes"; then
    echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
  fi
fi

4584 4585
# use default implementation for tracing backend-specific routines
trace_default=yes
4586
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
4587 4588
if test "$trace_backend" = "nop"; then
  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
4589
fi
P
Prerna Saxena 已提交
4590
if test "$trace_backend" = "simple"; then
4591
  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
4592
  trace_default=no
4593
  # Set the appropriate trace file.
4594
  trace_file="\"$trace_file-\" FMT_pid"
P
Prerna Saxena 已提交
4595
fi
4596 4597
if test "$trace_backend" = "stderr"; then
  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
4598
  trace_default=no
4599 4600 4601 4602 4603 4604 4605 4606 4607
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
4608
fi
4609 4610 4611 4612 4613
if test "$trace_backend" = "ftrace"; then
  if test "$linux" = "yes" ; then
    echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
    trace_default=no
  else
4614
    feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
4615 4616
  fi
fi
P
Prerna Saxena 已提交
4617
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
4618 4619 4620
if test "$trace_default" = "yes"; then
  echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
4621

M
Michael R. Hines 已提交
4622 4623 4624 4625
if test "$rdma" = "yes" ; then
  echo "CONFIG_RDMA=y" >> $config_host_mak
fi

4626 4627 4628 4629 4630 4631
if test "$tcg_interpreter" = "yes"; then
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
elif test "$ARCH" = "sparc64" ; then
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
elif test "$ARCH" = "s390x" ; then
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
4632
elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
4633 4634 4635 4636 4637 4638
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
else
  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
fi
QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"

4639 4640
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
4641 4642
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
4643 4644
echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
4645 4646 4647 4648 4649 4650 4651
if test -n "$libtool"; then
  echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
  echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
else
  echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
  echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
fi
B
Blue Swirl 已提交
4652
echo "PYTHON=$python" >> $config_host_mak
4653
echo "CC=$cc" >> $config_host_mak
4654 4655 4656
if $iasl -h > /dev/null 2>&1; then
  echo "IASL=$iasl" >> $config_host_mak
fi
P
Paolo Bonzini 已提交
4657
echo "CC_I386=$cc_i386" >> $config_host_mak
4658
echo "HOST_CC=$host_cc" >> $config_host_mak
4659
echo "CXX=$cxx" >> $config_host_mak
4660
echo "OBJCC=$objcc" >> $config_host_mak
4661
echo "AR=$ar" >> $config_host_mak
4662
echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
4663 4664
echo "AS=$as" >> $config_host_mak
echo "CPP=$cpp" >> $config_host_mak
4665 4666
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
4667
echo "WINDRES=$windres" >> $config_host_mak
A
Alon Levy 已提交
4668
echo "LIBTOOL=$libtool" >> $config_host_mak
4669
echo "CFLAGS=$CFLAGS" >> $config_host_mak
B
Brad 已提交
4670
echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
J
Juan Quintela 已提交
4671
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
4672
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
4673 4674 4675 4676 4677
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
4678 4679 4680 4681 4682
if test "$cross_prefix" != ""; then
  echo "AUTOCONF_HOST := --host=${cross_prefix%-}"     >> $config_host_mak
else
  echo "AUTOCONF_HOST := "                             >> $config_host_mak
fi
4683
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
B
Brad 已提交
4684
echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
4685
echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
4686
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
4687
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
4688
echo "EXESUF=$EXESUF" >> $config_host_mak
F
Fam Zheng 已提交
4689 4690
echo "DSOSUF=$DSOSUF" >> $config_host_mak
echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
4691
echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
4692
echo "POD2MAN=$POD2MAN" >> $config_host_mak
4693
echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
B
Blue Swirl 已提交
4694 4695 4696 4697
if test "$gcov" = "yes" ; then
  echo "CONFIG_GCOV=y" >> $config_host_mak
  echo "GCOV=$gcov_tool" >> $config_host_mak
fi
4698

4699 4700
# use included Linux headers
if test "$linux" = "yes" ; then
4701
  mkdir -p linux-headers
4702
  case "$cpu" in
4703
  i386|x86_64|x32)
4704
    linux_arch=x86
4705 4706
    ;;
  ppcemb|ppc|ppc64)
4707
    linux_arch=powerpc
4708 4709
    ;;
  s390x)
4710 4711
    linux_arch=s390
    ;;
4712 4713 4714
  aarch64)
    linux_arch=arm64
    ;;
4715 4716 4717
  *)
    # For most CPUs the kernel architecture name and QEMU CPU name match.
    linux_arch="$cpu"
4718 4719
    ;;
  esac
4720 4721 4722 4723
    # 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
4724 4725
fi

4726
for target in $target_list; do
4727
target_dir="$target"
4728
config_target_mak=$target_dir/config-target.mak
4729
target_name=`echo $target | cut -d '-' -f 1`
4730
target_bigendian="no"
4731

4732
case "$target_name" in
A
Anthony Green 已提交
4733
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
4734 4735 4736
  target_bigendian=yes
  ;;
esac
4737
target_softmmu="no"
B
bellard 已提交
4738
target_user_only="no"
4739
target_linux_user="no"
B
blueswir1 已提交
4740
target_bsd_user="no"
P
pbrook 已提交
4741
case "$target" in
4742
  ${target_name}-softmmu)
P
pbrook 已提交
4743 4744
    target_softmmu="yes"
    ;;
4745
  ${target_name}-linux-user)
4746
    if test "$linux" != "yes" ; then
4747
      error_exit "Target '$target' is only available on a Linux host"
4748
    fi
P
pbrook 已提交
4749 4750 4751
    target_user_only="yes"
    target_linux_user="yes"
    ;;
4752
  ${target_name}-bsd-user)
B
Blue Swirl 已提交
4753
    if test "$bsd" != "yes" ; then
4754
      error_exit "Target '$target' is only available on a BSD host"
4755
    fi
B
blueswir1 已提交
4756 4757 4758
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
4759
  *)
4760
    error_exit "Target '$target' not recognised"
P
pbrook 已提交
4761 4762 4763
    exit 1
    ;;
esac
4764

4765
mkdir -p $target_dir
4766
echo "# Automatically generated by configure - do not modify" > $config_target_mak
B
bellard 已提交
4767

P
pbrook 已提交
4768
bflt="no"
4769
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
P
pbrook 已提交
4770
gdb_xml_files=""
A
aliguori 已提交
4771

4772
TARGET_ARCH="$target_name"
4773
TARGET_BASE_ARCH=""
4774
TARGET_ABI_DIR=""
4775

4776
case "$target_name" in
A
aurel32 已提交
4777 4778 4779
  i386)
  ;;
  x86_64)
4780
    TARGET_BASE_ARCH=i386
A
aurel32 已提交
4781 4782 4783 4784
  ;;
  alpha)
  ;;
  arm|armeb)
J
Juan Quintela 已提交
4785
    TARGET_ARCH=arm
A
aurel32 已提交
4786
    bflt="yes"
P
pbrook 已提交
4787
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
A
aurel32 已提交
4788
  ;;
4789 4790 4791
  aarch64)
    TARGET_BASE_ARCH=arm
    bflt="yes"
4792
    gdb_xml_files="aarch64-core.xml aarch64-fpu.xml"
4793
  ;;
A
aurel32 已提交
4794 4795
  cris)
  ;;
M
Michael Walle 已提交
4796 4797
  lm32)
  ;;
A
aurel32 已提交
4798 4799
  m68k)
    bflt="yes"
P
pbrook 已提交
4800
    gdb_xml_files="cf-core.xml cf-fp.xml"
A
aurel32 已提交
4801
  ;;
4802 4803
  microblaze|microblazeel)
    TARGET_ARCH=microblaze
4804 4805
    bflt="yes"
  ;;
J
Juan Quintela 已提交
4806
  mips|mipsel)
J
Juan Quintela 已提交
4807
    TARGET_ARCH=mips
4808
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
A
aurel32 已提交
4809 4810
  ;;
  mipsn32|mipsn32el)
4811
    TARGET_ARCH=mips64
4812
    TARGET_BASE_ARCH=mips
4813
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
4814
    echo "TARGET_ABI32=y" >> $config_target_mak
A
aurel32 已提交
4815 4816
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
4817
    TARGET_ARCH=mips64
4818
    TARGET_BASE_ARCH=mips
4819
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
A
aurel32 已提交
4820
  ;;
A
Anthony Green 已提交
4821 4822
  moxie)
  ;;
4823 4824 4825 4826
  or32)
    TARGET_ARCH=openrisc
    TARGET_BASE_ARCH=openrisc
  ;;
A
aurel32 已提交
4827
  ppc)
4828
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
A
aurel32 已提交
4829 4830
  ;;
  ppcemb)
4831
    TARGET_BASE_ARCH=ppc
4832
    TARGET_ABI_DIR=ppc
4833
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
A
aurel32 已提交
4834 4835
  ;;
  ppc64)
4836
    TARGET_BASE_ARCH=ppc
4837
    TARGET_ABI_DIR=ppc
4838
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
A
aurel32 已提交
4839 4840
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
4841
    TARGET_ARCH=ppc64
4842
    TARGET_BASE_ARCH=ppc
4843
    TARGET_ABI_DIR=ppc
4844
    echo "TARGET_ABI32=y" >> $config_target_mak
4845
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
A
aurel32 已提交
4846 4847
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
4848
    TARGET_ARCH=sh4
A
aurel32 已提交
4849 4850 4851 4852 4853
    bflt="yes"
  ;;
  sparc)
  ;;
  sparc64)
4854
    TARGET_BASE_ARCH=sparc
A
aurel32 已提交
4855 4856
  ;;
  sparc32plus)
J
Juan Quintela 已提交
4857
    TARGET_ARCH=sparc64
4858
    TARGET_BASE_ARCH=sparc
4859
    TARGET_ABI_DIR=sparc
4860
    echo "TARGET_ABI32=y" >> $config_target_mak
A
aurel32 已提交
4861
  ;;
4862 4863
  s390x)
  ;;
4864 4865
  unicore32)
  ;;
4866 4867 4868
  xtensa|xtensaeb)
    TARGET_ARCH=xtensa
  ;;
A
aurel32 已提交
4869
  *)
4870
    error_exit "Unsupported target CPU"
A
aurel32 已提交
4871 4872
  ;;
esac
4873 4874 4875 4876 4877 4878 4879
# 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"

4880 4881 4882 4883 4884
upper() {
    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
}

target_arch_name="`upper $TARGET_ARCH`"
4885
echo "TARGET_$target_arch_name=y" >> $config_target_mak
4886
echo "TARGET_NAME=$target_name" >> $config_target_mak
4887
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
4888 4889 4890
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
4891
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
4892
case "$target_name" in
J
Juan Quintela 已提交
4893 4894
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
4895
      echo "CONFIG_XEN=y" >> $config_target_mak
4896 4897 4898
      if test "$xen_pci_passthrough" = yes; then
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
      fi
J
Juan Quintela 已提交
4899
    fi
4900 4901
    ;;
  *)
J
Juan Quintela 已提交
4902
esac
4903
case "$target_name" in
4904
  aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
4905 4906
    # Make sure the target and host cpus are compatible
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
4907 4908 4909 4910 4911 4912 4913
      \( "$target_name" = "$cpu" -o \
      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
      \( "$target_name" = "ppc64"  -a "$cpu" = "ppc" \) -o \
      \( "$target_name" = "ppc"    -a "$cpu" = "ppc64" \) -o \
      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
      \( "$target_name" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_name" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
4914
      echo "CONFIG_KVM=y" >> $config_target_mak
4915
      if test "$vhost_net" = "yes" ; then
M
Michael S. Tsirkin 已提交
4916 4917
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
4918 4919
    fi
esac
B
bellard 已提交
4920
if test "$target_bigendian" = "yes" ; then
4921
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
4922
fi
4923
if test "$target_softmmu" = "yes" ; then
4924
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
B
bellard 已提交
4925
fi
B
bellard 已提交
4926
if test "$target_user_only" = "yes" ; then
4927
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
4928
  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
B
bellard 已提交
4929
fi
4930
if test "$target_linux_user" = "yes" ; then
4931
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
4932
fi
P
pbrook 已提交
4933 4934 4935 4936 4937
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
4938
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
4939
fi
4940

P
pbrook 已提交
4941
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
4942
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
4943
fi
P
Paul Brook 已提交
4944
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
4945
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
4946
fi
B
blueswir1 已提交
4947
if test "$target_bsd_user" = "yes" ; then
4948
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
4949
fi
4950

4951
# generate QEMU_CFLAGS/LDFLAGS for targets
4952

4953
cflags=""
4954
ldflags=""
4955

4956 4957 4958
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
4959
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
4960
    echo "CONFIG_ALPHA_DIS=y"  >> config-all-disas.mak
4961
  ;;
4962 4963 4964 4965 4966 4967
  aarch64)
    if test -n "${cxx}"; then
      echo "CONFIG_ARM_A64_DIS=y"  >> $config_target_mak
      echo "CONFIG_ARM_A64_DIS=y"  >> config-all-disas.mak
    fi
  ;;
4968
  arm)
4969
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
4970
    echo "CONFIG_ARM_DIS=y"  >> config-all-disas.mak
4971 4972 4973 4974
    if test -n "${cxx}"; then
      echo "CONFIG_ARM_A64_DIS=y"  >> $config_target_mak
      echo "CONFIG_ARM_A64_DIS=y"  >> config-all-disas.mak
    fi
4975 4976
  ;;
  cris)
4977
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
4978
    echo "CONFIG_CRIS_DIS=y"  >> config-all-disas.mak
4979 4980
  ;;
  hppa)
4981
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
4982
    echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
4983
  ;;
4984
  i386|x86_64|x32)
4985
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
4986
    echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak
4987
  ;;
A
Aurelien Jarno 已提交
4988 4989
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
4990
    echo "CONFIG_IA64_DIS=y"  >> config-all-disas.mak
A
Aurelien Jarno 已提交
4991
  ;;
4992 4993
  lm32)
    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
4994
    echo "CONFIG_LM32_DIS=y"  >> config-all-disas.mak
4995
  ;;
4996
  m68k)
4997
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
4998
    echo "CONFIG_M68K_DIS=y"  >> config-all-disas.mak
4999
  ;;
5000
  microblaze*)
5001
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
5002
    echo "CONFIG_MICROBLAZE_DIS=y"  >> config-all-disas.mak
5003 5004
  ;;
  mips*)
5005
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
5006
    echo "CONFIG_MIPS_DIS=y"  >> config-all-disas.mak
5007
  ;;
A
Anthony Green 已提交
5008 5009 5010 5011
  moxie*)
    echo "CONFIG_MOXIE_DIS=y"  >> $config_target_mak
    echo "CONFIG_MOXIE_DIS=y"  >> config-all-disas.mak
  ;;
5012 5013
  or32)
    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
5014
    echo "CONFIG_OPENRISC_DIS=y"  >> config-all-disas.mak
5015
  ;;
5016
  ppc*)
5017
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
5018
    echo "CONFIG_PPC_DIS=y"  >> config-all-disas.mak
5019
  ;;
5020
  s390*)
5021
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
5022
    echo "CONFIG_S390_DIS=y"  >> config-all-disas.mak
5023 5024
  ;;
  sh4)
5025
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
5026
    echo "CONFIG_SH4_DIS=y"  >> config-all-disas.mak
5027 5028
  ;;
  sparc*)
5029
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
5030
    echo "CONFIG_SPARC_DIS=y"  >> config-all-disas.mak
5031
  ;;
5032 5033
  xtensa*)
    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
5034
    echo "CONFIG_XTENSA_DIS=y"  >> config-all-disas.mak
5035
  ;;
5036 5037
  esac
done
5038 5039
if test "$tcg_interpreter" = "yes" ; then
  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
5040
  echo "CONFIG_TCI_DIS=y"  >> config-all-disas.mak
5041
fi
5042

5043 5044 5045 5046 5047 5048 5049
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

5050
if test "$gprof" = "yes" ; then
5051
  echo "TARGET_GPROF=yes" >> $config_target_mak
5052 5053 5054 5055 5056 5057
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
5058
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
5059 5060 5061
  fi
fi

5062
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5063
  ldflags="$ldflags $textseg_ldflags"
5064 5065
fi

5066 5067
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5068

5069
done # for target in $targets
B
bellard 已提交
5070

5071 5072 5073 5074
if [ "$pixman" = "internal" ]; then
  echo "config-host.h: subdir-pixman" >> $config_host_mak
fi

M
Michael R. Hines 已提交
5075 5076 5077 5078
if test "$rdma" = "yes" ; then
echo "CONFIG_RDMA=y" >> $config_host_mak
fi

5079 5080 5081 5082
if [ "$dtc_internal" = "yes" ]; then
  echo "config-host.h: subdir-dtc" >> $config_host_mak
fi

P
Paolo Bonzini 已提交
5083
# build tree in object directory in case the source is not in the current directory
5084
DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5085
DIRS="$DIRS fsdev"
5086
DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
P
Paolo Bonzini 已提交
5087
DIRS="$DIRS roms/seabios roms/vgabios"
5088
DIRS="$DIRS qapi-generated"
A
Anthony Liguori 已提交
5089 5090
FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5091
FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
P
Paolo Bonzini 已提交
5092
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
A
Andreas Färber 已提交
5093
FILES="$FILES pc-bios/spapr-rtas/Makefile"
5094
FILES="$FILES pc-bios/s390-ccw/Makefile"
P
Paolo Bonzini 已提交
5095
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5096
FILES="$FILES pc-bios/qemu-icon.bmp"
5097 5098
for bios_file in \
    $source_path/pc-bios/*.bin \
5099
    $source_path/pc-bios/*.aml \
5100 5101
    $source_path/pc-bios/*.rom \
    $source_path/pc-bios/*.dtb \
5102
    $source_path/pc-bios/*.img \
5103 5104 5105
    $source_path/pc-bios/openbios-* \
    $source_path/pc-bios/palcode-*
do
P
Paolo Bonzini 已提交
5106 5107
    FILES="$FILES pc-bios/`basename $bios_file`"
done
5108 5109 5110 5111
for test_file in `find $source_path/tests/acpi-test-data -type f`
do
    FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
done
P
Paolo Bonzini 已提交
5112 5113
mkdir -p $DIRS
for f in $FILES ; do
5114
    if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then
5115 5116
        symlink "$source_path/$f" "$f"
    fi
P
Paolo Bonzini 已提交
5117
done
P
Paul Brook 已提交
5118

5119
# temporary config to build submodules
5120
for rom in seabios vgabios ; do
5121
    config_mak=roms/$rom/config.mak
5122
    echo "# Automatically generated by configure - do not modify" > $config_mak
5123
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5124
    echo "AS=$as" >> $config_mak
5125 5126
    echo "CC=$cc" >> $config_mak
    echo "BCC=bcc" >> $config_mak
5127
    echo "CPP=$cpp" >> $config_mak
5128
    echo "OBJCOPY=objcopy" >> $config_mak
5129
    echo "IASL=$iasl" >> $config_mak
5130 5131 5132
    echo "LD=$ld" >> $config_mak
done

5133 5134 5135
if test "$docs" = "yes" ; then
  mkdir -p QMP
fi
5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149

# Save the configure command line for later reuse.
cat <<EOD >config.status
#!/bin/sh
# Generated by configure.
# Run this file to recreate the current configuration.
# Compiler output produced by configure, useful for debugging
# configure, is in config.log if it exists.
EOD
printf "exec" >>config.status
printf " '%s'" "$0" "$@" >>config.status
echo >>config.status
chmod +x config.status