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

B
bellard 已提交
14
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 45 46
# 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

47 48 49 50 51 52 53 54 55 56 57
error_exit() {
    echo
    echo "ERROR: $1"
    while test -n "$2"; do
        echo "       $2"
        shift
    done
    echo
    exit 1
}

58 59 60 61 62 63 64
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 $?
65 66 67 68 69 70 71 72 73 74 75 76 77
    # 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
78 79
    echo $compiler -Werror "$@" >> config.log
    $compiler -Werror "$@" >> config.log 2>&1 && return $?
80 81 82 83
    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."
84 85
}

86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
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
}

111
compile_object() {
112
  do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC
113 114 115 116 117
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
118
  do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 120
}

121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
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
}

153 154
# symbolically link $1 to $2.  Portable version of "ln -sf".
symlink() {
155
  rm -rf "$2"
156
  mkdir -p "$(dirname "$2")"
157
  ln -s "$1" "$2"
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 183 184 185 186 187 188 189 190 191 192 193 194 195
# 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 已提交
196
# default parameters
P
Paolo Bonzini 已提交
197
source_path=`dirname "$0"`
198
cpu=""
199
iasl="iasl"
200
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
201
static="no"
B
bellard 已提交
202
cross_prefix=""
M
malc 已提交
203
audio_drv_list=""
204 205
block_drv_rw_whitelist=""
block_drv_ro_whitelist=""
206
host_cc="cc"
J
Juan Quintela 已提交
207
libs_softmmu=""
J
Juan Quintela 已提交
208
libs_tools=""
209
audio_pt_int=""
210
audio_win_int=""
P
Paolo Bonzini 已提交
211
cc_i386=i386-pc-linux-gnu-gcc
212
libs_qga=""
213
debug_info="yes"
214

215 216
# Don't accept a target_list environment variable.
unset target_list
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235

# 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=""
236
netmap="no"
237
pixman=""
238
sdl=""
239
sdlabi="1.2"
240
virtfs=""
J
Jes Sorensen 已提交
241
vnc="yes"
242 243 244 245 246 247 248
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
249
vnc_ws=""
250
xen=""
251
xen_ctrl_version=""
252
xen_pci_passthrough=""
253
linux_aio=""
254
cap_ng=""
255
attr=""
256
libattr=""
257 258
xfs=""

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

339 340 341 342 343 344
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
345
  --cc=*) CC="$optarg"
346
  ;;
347 348
  --cxx=*) CXX="$optarg"
  ;;
P
Paolo Bonzini 已提交
349 350
  --source-path=*) source_path="$optarg"
  ;;
351 352
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
353
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
354
                    EXTRA_CFLAGS="$optarg"
355 356
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
357
                     EXTRA_LDFLAGS="$optarg"
358
  ;;
359 360 361 362
  --enable-debug-info) debug_info="yes"
  ;;
  --disable-debug-info) debug_info="no"
  ;;
363 364 365 366
  esac
done
# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
367
# we can eliminate its usage altogether.
368

369 370 371 372 373 374 375 376 377 378
# 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

379 380 381 382 383 384
if test -z "${CXX}${cross_prefix}"; then
  cxx="c++"
else
  cxx="${CXX-${cross_prefix}g++}"
fi

385
ar="${AR-${cross_prefix}ar}"
386 387
as="${AS-${cross_prefix}as}"
cpp="${CPP-$cc -E}"
388 389
objcopy="${OBJCOPY-${cross_prefix}objcopy}"
ld="${LD-${cross_prefix}ld}"
B
Brad 已提交
390
libtool="${LIBTOOL-${cross_prefix}libtool}"
391 392
strip="${STRIP-${cross_prefix}strip}"
windres="${WINDRES-${cross_prefix}windres}"
393 394 395 396 397
pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
query_pkg_config() {
    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
}
pkg_config=query_pkg_config
398
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
399
sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
400

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

404
# default flags for all hosts
405
QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
406
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
K
Kevin Wolf 已提交
407
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
408
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
409
QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
410 411 412 413
if test "$debug_info" = "yes"; then
    CFLAGS="-g $CFLAGS"
    LDFLAGS="-g $LDFLAGS"
fi
414

P
Paolo Bonzini 已提交
415 416 417
# make source path absolute
source_path=`cd "$source_path"; pwd`

418 419 420
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
421
#error $1 not defined
422 423 424
#endif
int main(void) { return 0; }
EOF
425
  compile_object
426 427
}

428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462
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

463 464 465 466
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
467 468
  cpu="i386"
elif check_define __x86_64__ ; then
469 470 471 472 473
  if check_define __ILP32__ ; then
    cpu="x32"
  else
    cpu="x86_64"
  fi
B
blueswir1 已提交
474 475 476 477 478 479
elif check_define __sparc__ ; then
  if check_define __arch64__ ; then
    cpu="sparc64"
  else
    cpu="sparc"
  fi
M
malc 已提交
480 481 482 483 484 485
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
486 487
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
488 489
elif check_define __ia64__ ; then
  cpu="ia64"
490 491 492 493 494 495
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
496 497
elif check_define __arm__ ; then
  cpu="arm"
498 499
elif check_define __aarch64__ ; then
  cpu="aarch64"
500 501
elif check_define __hppa__ ; then
  cpu="hppa"
502
else
M
malc 已提交
503
  cpu=`uname -m`
504 505
fi

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

B
bellard 已提交
540
# OS specific
541

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

B
bellard 已提交
664
if [ "$bsd" = "yes" ] ; then
665
  if [ "$darwin" != "yes" ] ; then
666
    bsd_user="yes"
667
  fi
B
bellard 已提交
668 669
fi

670 671
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}
672
: ${python=${PYTHON-python}}
673
: ${smbd=${SMBD-/usr/sbin/smbd}}
674

675 676 677 678 679 680 681
# Default objcc to clang if available, otherwise use CC
if has clang; then
  objcc=clang
else
  objcc="$cc"
fi

682 683
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
F
Fam Zheng 已提交
684
  DSOSUF=".dll"
J
Juan Quintela 已提交
685
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
686 687
  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
688 689 690 691 692 693 694
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
  if compile_prog "" "-liberty" ; then
    LIBS="-liberty $LIBS"
  fi
695
  prefix="c:/Program Files/QEMU"
696
  mandir="\${prefix}"
697
  datadir="\${prefix}"
698
  qemu_docdir="\${prefix}"
699 700
  bindir="\${prefix}"
  sysconfdir="\${prefix}"
701
  local_statedir=
702
  confsuffix=""
703
  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
704 705
fi

706
werror=""
707

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

1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116
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

1117
case "$cpu" in
1118 1119 1120 1121 1122 1123 1124 1125
    ppc)
           CPU_CFLAGS="-m32"
           LDFLAGS="-m32 $LDFLAGS"
           ;;
    ppc64)
           CPU_CFLAGS="-m64"
           LDFLAGS="-m64 $LDFLAGS"
           ;;
1126
    sparc)
1127
           LDFLAGS="-m32 $LDFLAGS"
1128
           CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1129
           ;;
1130 1131
    sparc64)
           LDFLAGS="-m64 $LDFLAGS"
1132
           CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1133
           ;;
1134
    s390)
1135
           CPU_CFLAGS="-m31 -march=z990"
1136 1137 1138
           LDFLAGS="-m31 $LDFLAGS"
           ;;
    s390x)
1139
           CPU_CFLAGS="-m64 -march=z990"
1140
           LDFLAGS="-m64 $LDFLAGS"
1141
           ;;
1142
    i386)
1143
           CPU_CFLAGS="-m32"
1144
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
1145
           cc_i386='$(CC) -m32'
1146 1147
           ;;
    x86_64)
1148
           CPU_CFLAGS="-m64"
1149
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
1150
           cc_i386='$(CC) -m32'
1151
           ;;
1152 1153 1154 1155 1156
    x32)
           CPU_CFLAGS="-mx32"
           LDFLAGS="-mx32 $LDFLAGS"
           cc_i386='$(CC) -m32'
           ;;
1157
    # No special flags required for other host CPUs
1158 1159
esac

1160 1161 1162
QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"

1163 1164
default_target_list=""

1165 1166 1167 1168
mak_wilds=""

if [ "$softmmu" = "yes" ]; then
    mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1169
fi
1170 1171
if [ "$linux_user" = "yes" ]; then
    mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1172
fi
1173 1174
if [ "$bsd_user" = "yes" ]; then
    mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1175 1176
fi

1177 1178 1179 1180
for config in $mak_wilds; do
    default_target_list="${default_target_list} $(basename "$config" .mak)"
done

1181 1182 1183 1184 1185 1186
if test x"$show_help" = x"yes" ; then
cat << EOF

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

1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218
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 已提交
1219
  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
F
Fam Zheng 已提交
1220
  --enable-modules         enable modules support
1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231
  --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
1232
  --with-sdlabi            select preferred SDL ABI 1.2 or 2.0
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 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323
  --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 已提交
1324 1325
  --disable-libnfs         disable nfs support
  --enable-libnfs          enable nfs support
1326 1327 1328 1329 1330 1331
  --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 已提交
1332 1333
  --enable-lzo             enable the support of lzo compression library
  --enable-snappy          enable the support of snappy compression library
1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352
  --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 已提交
1353 1354
  --disable-quorum         disable quorum block filter support
  --enable-quorum          enable quorum block filter support
1355 1356

NOTE: The object files are built at the place where configure is launched
1357 1358 1359 1360
EOF
exit 1
fi

1361 1362 1363 1364 1365 1366 1367
# 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
1368
        error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1369 1370 1371
    fi
fi

1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384
# 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

1385 1386
# check that the C compiler works.
cat > $TMPC <<EOF
1387
int main(void) { return 0; }
1388 1389 1390 1391 1392
EOF

if compile_object ; then
  : C compiler works ok
else
1393
    error_exit "\"$cc\" either does not exist or does not work"
1394 1395
fi

1396 1397 1398 1399 1400 1401 1402 1403 1404
# 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

1405
    cat > $TMPCXX <<EOF
1406 1407 1408 1409 1410 1411
extern "C" {
   int c_function(void);
}
int c_function(void) { return 42; }
EOF

1412 1413 1414
    update_cxxflags

    if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426
        # 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

1427 1428 1429
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"
1430
gcc_flags="-Wendif-labels $gcc_flags"
1431
gcc_flags="-Wno-initializer-overrides $gcc_flags"
1432
gcc_flags="-Wno-string-plus-int $gcc_flags"
1433 1434 1435 1436
# 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.
1437 1438 1439 1440
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
for flag in $gcc_flags; do
1441 1442 1443 1444 1445
    # 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
1446 1447 1448 1449
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

1450 1451 1452 1453 1454
if compile_prog "-Werror -fstack-protector-all" "" ; then
    QEMU_CFLAGS="$QEMU_CFLAGS -fstack-protector-all"
    LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,-fstack-protector-all"
fi

1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469
# 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

1470
if test "$static" = "yes" ; then
1471 1472 1473
  if test "$modules" = "yes" ; then
    error_exit "static and modules are mutually incompatible"
  fi
1474
  if test "$pie" = "yes" ; then
1475
    error_exit "static and pie are mutually incompatible"
1476 1477 1478 1479 1480 1481 1482
  else
    pie="no"
  fi
fi

if test "$pie" = ""; then
  case "$cpu-$targetos" in
1483
    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1484 1485 1486 1487 1488 1489 1490 1491 1492
      ;;
    *)
      pie="no"
      ;;
  esac
fi

if test "$pie" != "no" ; then
  cat > $TMPC << EOF
1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503

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

static THREAD int tls_var;

int main(void) { return tls_var; }

1504 1505 1506 1507 1508 1509 1510 1511 1512 1513
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
1514
      error_exit "PIE not available due to missing toolchain support"
1515 1516 1517 1518 1519
    else
      echo "Disabling PIE due to missing toolchain support"
      pie="no"
    fi
  fi
B
Brad 已提交
1520 1521 1522 1523 1524

  if compile_prog "-fno-pie" "-nopie"; then
    CFLAGS_NOPIE="-fno-pie"
    LDFLAGS_NOPIE="-nopie"
  fi
1525 1526
fi

1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552
# 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 已提交
1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567
##########################################
# __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;
1568
  val = __sync_val_compare_and_swap(&val, 0, 1);
P
Paolo Bonzini 已提交
1569 1570 1571 1572 1573 1574 1575 1576 1577 1578
  sfaa(&val);
  return val;
}
EOF
  if ! compile_prog "" "" ; then
    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
  fi
fi

#########################################
B
bellard 已提交
1579
# Solaris specific configure tool chain decisions
P
Paolo Bonzini 已提交
1580

B
bellard 已提交
1581
if test "$solaris" = "yes" ; then
1582 1583 1584
  if has $install; then
    :
  else
1585 1586 1587
    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 已提交
1588
  fi
1589
  if test "`path_of $install`" = "/usr/sbin/install" ; then
1590 1591 1592
    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 已提交
1593
  fi
1594 1595 1596
  if has ar; then
    :
  else
B
bellard 已提交
1597
    if test -f /usr/ccs/bin/ar ; then
1598 1599
      error_exit "No path includes ar" \
          "Add /usr/ccs/bin to your path and rerun configure"
B
bellard 已提交
1600
    fi
1601
    error_exit "No path includes ar"
B
bellard 已提交
1602
  fi
1603
fi
B
bellard 已提交
1604

1605
if test -z "${target_list+xxx}" ; then
1606 1607 1608 1609
    target_list="$default_target_list"
else
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
fi
1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622

# 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 已提交
1623 1624 1625 1626 1627 1628 1629
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1630

1631 1632
feature_not_found() {
  feature=$1
1633
  remedy=$2
1634

1635
  error_exit "User requested feature $feature" \
1636 1637
      "configure was not able to find it." \
      "$remedy"
1638 1639
}

B
bellard 已提交
1640 1641 1642
# ---
# big/little endian test
cat > $TMPC << EOF
1643 1644 1645 1646 1647
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 已提交
1648 1649 1650
}
EOF

1651 1652 1653 1654 1655 1656 1657
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
1658
    fi
1659 1660
else
    echo big/little test failed
B
bellard 已提交
1661 1662
fi

S
Stefan Weil 已提交
1663 1664 1665 1666
##########################################
# pkg-config probe

if ! has "$pkg_config_exe"; then
1667
  error_exit "pkg-config binary '$pkg_config_exe' not found"
S
Stefan Weil 已提交
1668 1669
fi

1670 1671 1672
##########################################
# NPTL probe

1673
if test "$linux_user" = "yes"; then
1674
  cat > $TMPC <<EOF
1675
#include <sched.h>
P
pbrook 已提交
1676
#include <linux/futex.h>
1677
int main(void) {
1678 1679 1680
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
1681
  return 0;
1682 1683
}
EOF
1684
  if ! compile_object ; then
1685
    feature_not_found "nptl" "Install glibc and linux kernel headers."
1686
  fi
1687 1688
fi

1689 1690 1691
##########################################
# zlib check

A
Alon Levy 已提交
1692 1693
if test "$zlib" != "no" ; then
    cat > $TMPC << EOF
1694 1695 1696
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
A
Alon Levy 已提交
1697 1698 1699
    if compile_prog "" "-lz" ; then
        :
    else
1700 1701
        error_exit "zlib check failed" \
            "Make sure to have the zlib libs and headers installed."
A
Alon Levy 已提交
1702
    fi
1703
fi
1704
LIBS="$LIBS -lz"
1705

Q
qiaonuohan 已提交
1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741
##########################################
# 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

1742 1743 1744 1745
##########################################
# libseccomp check

if test "$seccomp" != "no" ; then
1746
    if $pkg_config --atleast-version=2.1.0 libseccomp; then
1747
        libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1748
        QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1749 1750 1751
	seccomp="yes"
    else
	if test "$seccomp" = "yes"; then
1752
            feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.0"
1753
	fi
Y
Yann E. MORIN 已提交
1754
	seccomp="no"
1755 1756
    fi
fi
1757 1758 1759
##########################################
# xen probe

1760
if test "$xen" != "no" ; then
1761
  xen_libs="-lxenstore -lxenctrl -lxenguest"
1762

1763 1764 1765 1766 1767
  # 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)
1768
  cat > $TMPC <<EOF
1769
#include <xenctrl.h>
1770 1771 1772 1773 1774 1775 1776
int main(void) {
  return 0;
}
EOF
  if ! compile_prog "" "$xen_libs" ; then
    # Xen not found
    if test "$xen" = "yes" ; then
1777
      feature_not_found "xen" "Install xen devel"
1778 1779 1780 1781
    fi
    xen=no

  # Xen unstable
1782 1783
  elif
      cat > $TMPC <<EOF &&
1784
#include <xenctrl.h>
A
Anthony PERARD 已提交
1785
#include <xenstore.h>
1786 1787 1788 1789 1790
#include <stdint.h>
#include <xen/hvm/hvm_info_table.h>
#if !defined(HVM_MAX_VCPUS)
# error HVM_MAX_VCPUS not defined
#endif
1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802
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"
1803
    then
1804 1805 1806
    xen_ctrl_version=420
    xen=yes

1807 1808
  elif
      cat > $TMPC <<EOF &&
1809 1810 1811 1812 1813 1814 1815
#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
1816 1817
int main(void) {
  xs_daemon_open();
1818
  xc_interface_open(0, 0, 0);
1819 1820
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
  xc_gnttab_open(NULL, 0);
1821
  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1822 1823
  return 0;
}
1824
EOF
1825
      compile_prog "" "$xen_libs"
1826
    then
1827
    xen_ctrl_version=410
1828
    xen=yes
1829 1830

  # Xen 4.0.0
1831 1832
  elif
      cat > $TMPC <<EOF &&
1833 1834 1835 1836 1837 1838 1839 1840
#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) {
1841 1842 1843
  struct xen_add_to_physmap xatp = {
    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
  };
1844 1845 1846 1847
  xs_daemon_open();
  xc_interface_open();
  xc_gnttab_open();
  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1848
  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1849 1850 1851 1852
  return 0;
}
EOF
      compile_prog "" "$xen_libs"
1853
    then
1854 1855 1856
    xen_ctrl_version=400
    xen=yes

1857
  # Xen 3.4.0
1858 1859
  elif
      cat > $TMPC <<EOF &&
1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874
#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"
1875
    then
1876 1877 1878 1879
    xen_ctrl_version=340
    xen=yes

  # Xen 3.3.0
1880 1881
  elif
      cat > $TMPC <<EOF &&
1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892
#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"
1893
    then
1894 1895 1896
    xen_ctrl_version=330
    xen=yes

1897
  # Xen version unsupported
1898
  else
1899
    if test "$xen" = "yes" ; then
1900
      feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
1901 1902
    fi
    xen=no
1903
  fi
1904 1905 1906 1907

  if test "$xen" = yes; then
    libs_softmmu="$xen_libs $libs_softmmu"
  fi
1908 1909
fi

1910 1911 1912 1913 1914 1915 1916
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
1917 1918
        error_exit "User requested feature Xen PCI Passthrough" \
            "This feature does not work with Xen 3.3"
1919
      fi
1920 1921
      error_exit "User requested feature Xen PCI Passthrough" \
          " but this feature requires /sys from Linux"
1922 1923 1924 1925 1926
    fi
    xen_pci_passthrough=no
  fi
fi

A
Alon Levy 已提交
1927 1928 1929
##########################################
# libtool probe

B
Brad 已提交
1930
if ! has $libtool; then
A
Alon Levy 已提交
1931 1932 1933
    libtool=
fi

1934 1935 1936 1937 1938 1939 1940 1941
# 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

1942 1943 1944
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1945
  if has cgcc; then
1946 1947 1948
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
1949
      feature_not_found "sparse" "Install sparse binary"
1950 1951 1952 1953 1954
    fi
    sparse=no
  fi
fi

A
Anthony Liguori 已提交
1955 1956 1957 1958
##########################################
# GTK probe

if test "$gtk" != "no"; then
1959 1960 1961 1962 1963 1964 1965 1966 1967 1968
    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
1969 1970
    if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then
        if test "$gtk" = "yes" ; then
1971
            feature_not_found "gtk" "Install gtk2 or gtk3 (requires --with-gtkabi=3.0 option to configure) devel"
1972 1973 1974 1975 1976 1977 1978 1979
        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
1980 1981 1982 1983
	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 已提交
1984 1985 1986 1987 1988
	libs_softmmu="$gtk_libs $vte_libs $libs_softmmu"
	gtk="yes"
    fi
fi

B
bellard 已提交
1989 1990 1991
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1992 1993
# Look for sdl configuration program (pkg-config or sdl-config).  Try
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005

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 已提交
2006 2007
fi

2008 2009
if $pkg_config $sdlname --exists; then
  sdlconfig="$pkg_config $sdlname"
2010
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
2011 2012
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
2013
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2014 2015
else
  if test "$sdl" = "yes" ; then
2016
    feature_not_found "sdl" "Install SDL devel"
2017 2018
  fi
  sdl=no
2019
fi
2020
if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
P
Paolo Bonzini 已提交
2021 2022
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
2023

2024
sdl_too_old=no
2025
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
2026
  cat > $TMPC << EOF
B
bellard 已提交
2027 2028 2029 2030
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
2031
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2032 2033 2034 2035 2036
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
2037
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
2038 2039 2040 2041 2042 2043 2044
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
2045

2046
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
2047
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
2048
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2049 2050
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
2051
      fi
2052
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
2053 2054 2055 2056 2057
	:
      else
        sdl=no
      fi
    fi # static link
2058 2059
  else # sdl not found
    if test "$sdl" = "yes" ; then
2060
      feature_not_found "sdl" "Install SDL devel"
2061 2062
    fi
    sdl=no
J
Juan Quintela 已提交
2063
  fi # sdl compile test
2064
fi
B
bellard 已提交
2065

2066
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
2067
  cat > $TMPC <<EOF
2068 2069 2070 2071 2072 2073 2074 2075
#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
2076
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
2077 2078
    sdl_libs="$sdl_libs -lX11"
  fi
J
Juan Quintela 已提交
2079
  libs_softmmu="$sdl_libs $libs_softmmu"
2080 2081
fi

M
Michael R. Hines 已提交
2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105
##########################################
# 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

2106
##########################################
2107 2108
# VNC TLS/WS detection
if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
2109
  cat > $TMPC <<EOF
2110 2111 2112
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
2113 2114
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
2115
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
2116 2117 2118 2119 2120 2121
    if test "$vnc_tls" != "no" ; then
      vnc_tls=yes
    fi
    if test "$vnc_ws" != "no" ; then
      vnc_ws=yes
    fi
2122
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
P
Paolo Bonzini 已提交
2123
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2124 2125
  else
    if test "$vnc_tls" = "yes" ; then
2126
      feature_not_found "vnc-tls" "Install gnutls devel"
2127
    fi
2128
    if test "$vnc_ws" = "yes" ; then
2129
      feature_not_found "vnc-ws" "Install gnutls devel"
2130
    fi
2131
    vnc_tls=no
2132
    vnc_ws=no
2133
  fi
2134 2135
fi

B
Benoît Canet 已提交
2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159
##########################################
# 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

2160 2161
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
2162
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2163
  cat > $TMPC <<EOF
2164 2165 2166 2167
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
2168 2169 2170 2171 2172 2173
  # 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 已提交
2174
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2175 2176
  else
    if test "$vnc_sasl" = "yes" ; then
2177
      feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2178
    fi
2179 2180
    vnc_sasl=no
  fi
2181 2182
fi

2183 2184
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
2185
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2186 2187 2188 2189 2190 2191 2192 2193 2194 2195
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 已提交
2196
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2197 2198
  else
    if test "$vnc_jpeg" = "yes" ; then
2199
      feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2200 2201 2202 2203 2204
    fi
    vnc_jpeg=no
  fi
fi

C
Corentin Chary 已提交
2205 2206
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
2207
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
2208 2209 2210
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
2211
#include <stddef.h>
C
Corentin Chary 已提交
2212 2213 2214
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2215
    return png_ptr != 0;
C
Corentin Chary 已提交
2216 2217
}
EOF
2218
  if $pkg_config libpng --exists; then
2219 2220
    vnc_png_cflags=`$pkg_config libpng --cflags`
    vnc_png_libs=`$pkg_config libpng --libs`
2221
  else
C
Corentin Chary 已提交
2222 2223
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
2224
  fi
C
Corentin Chary 已提交
2225 2226 2227
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
2228
    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
C
Corentin Chary 已提交
2229 2230
  else
    if test "$vnc_png" = "yes" ; then
2231
      feature_not_found "vnc-png" "Install libpng devel"
C
Corentin Chary 已提交
2232 2233 2234 2235 2236
    fi
    vnc_png=no
  fi
fi

2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
2248
if compile_prog "" "" ; then
2249 2250 2251
   fnmatch="yes"
fi

2252 2253
##########################################
# uuid_generate() probe, used for vdi block driver
2254 2255
# Note that on some systems (notably MacOSX) no extra library
# need be linked to get the uuid functions.
2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266
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
2267 2268 2269
  if compile_prog "" "" ; then
    uuid="yes"
  elif compile_prog "" "$uuid_libs" ; then
2270 2271 2272 2273 2274
    uuid="yes"
    libs_softmmu="$uuid_libs $libs_softmmu"
    libs_tools="$uuid_libs $libs_tools"
  else
    if test "$uuid" = "yes" ; then
2275
      feature_not_found "uuid" "Install libuuid devel"
2276 2277 2278 2279 2280
    fi
    uuid=no
  fi
fi

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

2315 2316
##########################################
# vde libraries probe
2317
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
2318
  vde_libs="-lvdeplug"
2319 2320
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
2321 2322 2323
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
2324 2325
    char s[] = "";
    vde_open(s, s, &a);
P
pbrook 已提交
2326 2327
    return 0;
}
2328
EOF
2329
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
2330
    vde=yes
2331 2332
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
2333 2334
  else
    if test "$vde" = "yes" ; then
2335
      feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2336 2337
    fi
    vde=no
J
Juan Quintela 已提交
2338
  fi
2339 2340
fi

2341
##########################################
2342 2343 2344 2345 2346 2347
# 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.
2348 2349 2350 2351 2352 2353
if test "$netmap" != "no" ; then
  cat > $TMPC << EOF
#include <inttypes.h>
#include <net/if.h>
#include <net/netmap.h>
#include <net/netmap_user.h>
2354 2355 2356
#if (NETMAP_API < 11) || (NETMAP_API > 15)
#error
#endif
2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368
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

2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385
##########################################
# 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
2386
      feature_not_found "cap_ng" "Install libcap-ng devel"
2387 2388 2389 2390 2391
    fi
    cap_ng=no
  fi
fi

2392
##########################################
2393
# Sound support libraries probe
2394

2395 2396 2397 2398 2399 2400 2401 2402 2403 2404
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
2405
EOF
2406
    if compile_prog "$cfl" "$lib" ; then
2407 2408
        :
    else
2409 2410
        error_exit "$drv check failed" \
            "Make sure to have the $drv libs and headers installed."
2411 2412 2413
    fi
}

2414
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2415 2416 2417 2418
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
2419
        "return snd_pcm_close((snd_pcm_t *)0);"
2420
    libs_softmmu="-lasound $libs_softmmu"
2421 2422 2423 2424
    ;;

    fmod)
    if test -z $fmod_lib || test -z $fmod_inc; then
2425 2426
        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"
2427 2428
    fi
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
2429
    libs_softmmu="$fmod_lib $libs_softmmu"
2430 2431 2432 2433
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
2434
    libs_softmmu="-lesd $libs_softmmu"
2435
    audio_pt_int="yes"
2436
    ;;
M
malc 已提交
2437 2438

    pa)
2439 2440 2441
    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
    libs_softmmu="-lpulse $libs_softmmu"
2442
    audio_pt_int="yes"
M
malc 已提交
2443 2444
    ;;

2445 2446 2447 2448
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

2449 2450
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2451
      audio_win_int="yes"
2452 2453 2454 2455 2456 2457 2458
    ;;

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

    sdl|wav)
B
blueswir1 已提交
2459 2460 2461
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

2462 2463 2464 2465 2466
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
2467
    *)
M
malc 已提交
2468
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2469 2470
        error_exit "Unknown driver '$drv' selected" \
            "Possible drivers are: $audio_possible_drivers"
M
malc 已提交
2471 2472
    }
    ;;
2473 2474
    esac
done
2475

A
aurel32 已提交
2476 2477 2478
##########################################
# BrlAPI probe

2479
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
2480 2481
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
2482
#include <brlapi.h>
S
Scott Wood 已提交
2483
#include <stddef.h>
A
aurel32 已提交
2484 2485
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
2486
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
2487
    brlapi=yes
2488
    libs_softmmu="$brlapi_libs $libs_softmmu"
2489 2490
  else
    if test "$brlapi" = "yes" ; then
2491
      feature_not_found "brlapi" "Install brlapi devel"
2492 2493
    fi
    brlapi=no
J
Juan Quintela 已提交
2494 2495
  fi
fi
A
aurel32 已提交
2496

B
balrog 已提交
2497 2498
##########################################
# curses probe
2499 2500
if test "$curses" != "no" ; then
  if test "$mingw32" = "yes" ; then
S
Stefan Weil 已提交
2501
    curses_list="-lpdcurses"
2502
  else
2503
    curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2504
  fi
2505
  curses_found=no
B
balrog 已提交
2506 2507
  cat > $TMPC << EOF
#include <curses.h>
2508 2509 2510 2511 2512
int main(void) {
  const char *s = curses_version();
  resize_term(0, 0);
  return s != 0;
}
B
balrog 已提交
2513
EOF
2514
  IFS=:
2515
  for curses_lib in $curses_list; do
2516
    unset IFS
2517
    if compile_prog "" "$curses_lib" ; then
2518
      curses_found=yes
2519 2520 2521 2522
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
2523
  unset IFS
2524 2525 2526 2527
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
2528
      feature_not_found "curses" "Install ncurses devel"
2529 2530 2531
    fi
    curses=no
  fi
2532
fi
B
balrog 已提交
2533

A
Alexander Graf 已提交
2534 2535
##########################################
# curl probe
2536
if test "$curl" != "no" ; then
2537
  if $pkg_config libcurl --exists; then
2538 2539 2540 2541
    curlconfig="$pkg_config libcurl"
  else
    curlconfig=curl-config
  fi
A
Alexander Graf 已提交
2542 2543
  cat > $TMPC << EOF
#include <curl/curl.h>
2544
int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
A
Alexander Graf 已提交
2545
EOF
2546 2547
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
2548
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
2549
    curl=yes
2550 2551
  else
    if test "$curl" = "yes" ; then
2552
      feature_not_found "curl" "Install libcurl devel"
2553 2554
    fi
    curl=no
A
Alexander Graf 已提交
2555 2556 2557
  fi
fi # test "$curl"

B
balrog 已提交
2558 2559
##########################################
# bluez support probe
2560
if test "$bluez" != "no" ; then
2561 2562 2563 2564
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
2565 2566
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2567
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2568
    bluez=yes
2569
    libs_softmmu="$bluez_libs $libs_softmmu"
2570
  else
2571
    if test "$bluez" = "yes" ; then
2572
      feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2573
    fi
2574 2575
    bluez="no"
  fi
B
balrog 已提交
2576 2577
fi

2578 2579
##########################################
# glib support probe
2580 2581 2582 2583 2584 2585 2586

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
2587 2588 2589 2590
glib_modules=gthread-2.0
if test "$modules" = yes; then
    glib_modules="$glib_modules gmodule-2.0"
fi
F
Fam Zheng 已提交
2591

2592
for i in $glib_modules; do
F
Fam Zheng 已提交
2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616
    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
2617 2618
fi

2619 2620 2621 2622
##########################################
# pixman support probe

if test "$pixman" = ""; then
2623 2624 2625
  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
    pixman="none"
  elif $pkg_config pixman-1 > /dev/null 2>&1; then
2626 2627 2628 2629 2630
    pixman="system"
  else
    pixman="internal"
  fi
fi
2631 2632
if test "$pixman" = "none"; then
  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2633 2634 2635 2636
    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'."
2637 2638 2639 2640
  fi
  pixman_cflags=
  pixman_libs=
elif test "$pixman" = "system"; then
2641 2642
  pixman_cflags=`$pkg_config --cflags pixman-1`
  pixman_libs=`$pkg_config --libs pixman-1`
2643 2644
else
  if test ! -d ${source_path}/pixman/pixman; then
2645 2646 2647 2648 2649
    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"
2650
  fi
2651 2652 2653
  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"
2654 2655
fi

2656 2657 2658 2659 2660 2661 2662
##########################################
# libcap probe

if test "$cap" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/capability.h>
2663
int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2664 2665 2666 2667 2668 2669 2670 2671
EOF
  if compile_prog "" "-lcap" ; then
    cap=yes
  else
    cap=no
  fi
fi

2672
##########################################
2673
# pthread probe
2674
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2675

C
Christoph Hellwig 已提交
2676
pthread=no
2677
cat > $TMPC << EOF
2678
#include <pthread.h>
2679 2680 2681 2682 2683 2684
static void *f(void *p) { return NULL; }
int main(void) {
  pthread_t thread;
  pthread_create(&thread, 0, f, 0);
  return 0;
}
2685
EOF
2686 2687 2688 2689 2690 2691
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 已提交
2692 2693 2694 2695 2696 2697 2698 2699 2700 2701
      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
2702 2703 2704 2705
      break
    fi
  done
fi
2706

2707
if test "$mingw32" != yes -a "$pthread" = no; then
2708 2709
  error_exit "pthread check failed" \
      "Make sure to have the pthread libs and headers installed."
2710 2711
fi

2712 2713 2714 2715 2716
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
2717
#include <rbd/librbd.h>
2718
int main(void) {
2719 2720
    rados_t cluster;
    rados_create(&cluster, NULL);
2721 2722 2723
    return 0;
}
EOF
2724 2725 2726
  rbd_libs="-lrbd -lrados"
  if compile_prog "" "$rbd_libs" ; then
    rbd=yes
2727 2728
  else
    if test "$rbd" = "yes" ; then
2729
      feature_not_found "rados block device" "Install librbd/ceph devel"
2730 2731 2732 2733 2734
    fi
    rbd=no
  fi
fi

2735 2736
##########################################
# libssh2 probe
2737
min_libssh2_version=1.2.8
2738
if test "$libssh2" != "no" ; then
2739
  if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
2740 2741 2742 2743 2744
    libssh2_cflags=`$pkg_config libssh2 --cflags`
    libssh2_libs=`$pkg_config libssh2 --libs`
    libssh2=yes
  else
    if test "$libssh2" = "yes" ; then
2745
      error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
2746 2747 2748 2749 2750
    fi
    libssh2=no
  fi
fi

2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775
##########################################
# 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

2776 2777 2778 2779 2780 2781 2782
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
2783
#include <stddef.h>
2784 2785 2786 2787 2788 2789
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
2790
      feature_not_found "linux AIO" "Install libaio devel"
2791
    fi
2792
    linux_aio=no
2793 2794 2795
  fi
fi

P
Paolo Bonzini 已提交
2796 2797 2798 2799 2800 2801 2802 2803 2804
##########################################
# 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

2805 2806 2807 2808 2809
##########################################
# adjust virtio-blk-data-plane based on linux-aio

if test "$virtio_blk_data_plane" = "yes" -a \
	"$linux_aio" != "yes" ; then
2810
  error_exit "virtio-blk-data-plane requires Linux AIO, please try --enable-linux-aio"
2811 2812 2813 2814
elif test -z "$virtio_blk_data_plane" ; then
  virtio_blk_data_plane=$linux_aio
fi

2815 2816 2817 2818 2819 2820 2821
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
P
Pavel Borzenkov 已提交
2822 2823 2824
#ifdef CONFIG_LIBATTR
#include <attr/xattr.h>
#else
2825
#include <sys/xattr.h>
P
Pavel Borzenkov 已提交
2826
#endif
2827 2828
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
2829 2830 2831
  if compile_prog "" "" ; then
    attr=yes
  # Older distros have <attr/xattr.h>, and need -lattr:
P
Pavel Borzenkov 已提交
2832
  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
2833 2834
    attr=yes
    LIBS="-lattr $LIBS"
2835
    libattr=yes
2836 2837
  else
    if test "$attr" = "yes" ; then
2838
      feature_not_found "ATTR" "Install libc6 or libattr devel"
2839 2840 2841 2842 2843
    fi
    attr=no
  fi
fi

A
aliguori 已提交
2844 2845 2846
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
2847
#include <sys/types.h>
A
aliguori 已提交
2848
#include <sys/uio.h>
B
blueswir1 已提交
2849
#include <unistd.h>
2850
int main(void) { return sizeof(struct iovec); }
A
aliguori 已提交
2851 2852
EOF
iovec=no
2853
if compile_prog "" "" ; then
A
aliguori 已提交
2854 2855 2856
  iovec=yes
fi

2857 2858 2859 2860 2861 2862
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
2863
int main(void) { return preadv(0, 0, 0, 0); }
2864 2865
EOF
preadv=no
2866
if compile_prog "" "" ; then
2867 2868 2869
  preadv=yes
fi

2870 2871
##########################################
# fdt probe
2872 2873 2874 2875 2876
# 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
2877
    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891
      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

2892
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
2893
  fdt_libs="-lfdt"
2894
  # explicitly check for libfdt_env.h as it is missing in some stable installs
J
Juan Quintela 已提交
2895
  cat > $TMPC << EOF
2896
#include <libfdt_env.h>
2897 2898
int main(void) { return 0; }
EOF
2899
  if compile_prog "" "$fdt_libs" ; then
2900
    # system DTC is good - use it
2901
    fdt=yes
2902 2903 2904 2905 2906 2907 2908 2909
  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"
2910
    fi
2911 2912 2913 2914
    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
2915 2916
    error_exit "DTC (libfdt) not present. Your options:" \
        "  (1) Preferred: Install the DTC (libfdt) devel package" \
2917 2918 2919 2920
        "  (2) Fetch the DTC submodule, using:" \
        "      git submodule update --init dtc"
  else
    # don't have and don't want
2921
    fdt_libs=
2922
    fdt=no
2923 2924 2925
  fi
fi

2926 2927
libs_softmmu="$libs_softmmu $fdt_libs"

M
Michael Walle 已提交
2928
##########################################
2929 2930 2931
# GLX probe, used by milkymist-tmu2
if test "$glx" != "no" ; then
  glx_libs="-lGL -lX11"
M
Michael Walle 已提交
2932 2933 2934 2935
  cat > $TMPC << EOF
#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
2936
int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
M
Michael Walle 已提交
2937
EOF
2938
  if compile_prog "" "-lGL -lX11" ; then
2939
    glx=yes
M
Michael Walle 已提交
2940
  else
2941
    if test "$glx" = "yes" ; then
2942
      feature_not_found "glx" "Install GL devel (e.g. MESA)"
M
Michael Walle 已提交
2943
    fi
2944 2945
    glx_libs=
    glx=no
M
Michael Walle 已提交
2946 2947 2948
  fi
fi

2949 2950 2951
##########################################
# glusterfs probe
if test "$glusterfs" != "no" ; then
2952
  if $pkg_config --atleast-version=3 glusterfs-api; then
2953
    glusterfs="yes"
2954 2955
    glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
    glusterfs_libs=`$pkg_config --libs glusterfs-api`
2956
    if $pkg_config --atleast-version=5 glusterfs-api; then
2957 2958
      glusterfs_discard="yes"
    fi
2959 2960 2961
    if $pkg_config --atleast-version=6 glusterfs-api; then
      glusterfs_zerofill="yes"
    fi
2962 2963
  else
    if test "$glusterfs" = "yes" ; then
2964
      feature_not_found "GlusterFS backend support" "Install glusterfs-api devel"
2965
    fi
2966
    glusterfs="no"
2967 2968 2969
  fi
fi

A
aurel32 已提交
2970
# Check for inotify functions when we are building linux-user
2971 2972 2973 2974 2975
# 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
2976
cat > $TMPC << EOF
2977 2978 2979 2980 2981 2982
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
2983
	return inotify_init();
2984 2985
}
EOF
2986
if compile_prog "" "" ; then
2987
  inotify=yes
2988 2989
fi

2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004
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 已提交
3005 3006 3007 3008 3009 3010
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>
3011
#include <sys/stat.h>
R
Riku Voipio 已提交
3012 3013 3014 3015 3016 3017 3018 3019

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
3020
if compile_prog "" "" ; then
R
Riku Voipio 已提交
3021 3022 3023
  utimens=yes
fi

R
Riku Voipio 已提交
3024 3025 3026 3027 3028 3029 3030 3031 3032
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
3033
    return pipe2(pipefd, O_CLOEXEC);
R
Riku Voipio 已提交
3034 3035
}
EOF
3036
if compile_prog "" "" ; then
R
Riku Voipio 已提交
3037 3038 3039
  pipe2=yes
fi

K
Kevin Wolf 已提交
3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055
# 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

3056 3057 3058 3059 3060 3061 3062 3063 3064
# 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)
{
3065
    int len, fd = 0;
3066 3067 3068 3069 3070
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
3071
if compile_prog "" "" ; then
3072 3073 3074
  splice=yes
fi

M
Marcelo Tosatti 已提交
3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088
##########################################
# 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 已提交
3089 3090 3091 3092 3093 3094 3095
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

int main(void)
{
3096
    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
R
Riku Voipio 已提交
3097 3098 3099 3100 3101 3102
}
EOF
if compile_prog "" "" ; then
  eventfd=yes
fi

3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
3114
if compile_prog "" "" ; then
3115 3116 3117
  fallocate=yes
fi

3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133
# 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

3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144
# 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
3145
if compile_prog "" "" ; then
3146 3147 3148
  sync_file_range=yes
fi

3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161
# 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
3162
if compile_prog "" "" ; then
3163 3164 3165
  fiemap=yes
fi

3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
3177
if compile_prog "" "" ; then
3178 3179 3180
  dup3=yes
fi

3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196
# 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

3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211
# 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

3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222
# check for epoll support
epoll=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
    epoll_create(0);
    return 0;
}
EOF
3223
if compile_prog "" "" ; then
3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234
  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)
{
3235 3236 3237 3238 3239 3240 3241 3242
    /* 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.)
     */
3243
    return (int)(uintptr_t)&epoll_create1;
3244 3245
}
EOF
3246
if compile_prog "" "" ; then
3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259
  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
3260
if compile_prog "" "" ; then
3261 3262 3263
  epoll_pwait=yes
fi

3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277
# 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

3278
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
3279
if test "$docs" != "no" ; then
3280
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
3281
    docs=yes
3282
  else
J
Juan Quintela 已提交
3283
    if test "$docs" = "yes" ; then
3284
      feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3285
    fi
J
Juan Quintela 已提交
3286
    docs=no
3287
  fi
3288 3289
fi

S
Stefan Weil 已提交
3290
# Search for bswap_32 function
3291 3292 3293 3294 3295
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
3296
if compile_prog "" "" ; then
3297 3298 3299
  byteswap_h=yes
fi

3300
# Search for bswap32 function
3301 3302 3303 3304 3305 3306 3307
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
3308
if compile_prog "" "" ; then
3309 3310 3311
  bswap_h=yes
fi

R
Ronnie Sahlberg 已提交
3312 3313
##########################################
# Do we have libiscsi
3314 3315
# We check for iscsi_write16_sync() to make sure we have a
# at least version 1.4.0 of libiscsi.
R
Ronnie Sahlberg 已提交
3316 3317
if test "$libiscsi" != "no" ; then
  cat > $TMPC << EOF
3318
#include <stdio.h>
R
Ronnie Sahlberg 已提交
3319
#include <iscsi/iscsi.h>
3320
int main(void) { iscsi_write16_sync(NULL,0,0,NULL,0,0,0,0,0,0,0); return 0; }
R
Ronnie Sahlberg 已提交
3321
EOF
3322
  if $pkg_config --atleast-version=1.7.0 libiscsi; then
3323
    libiscsi="yes"
3324 3325
    libiscsi_cflags=$($pkg_config --cflags libiscsi)
    libiscsi_libs=$($pkg_config --libs libiscsi)
3326
  elif compile_prog "" "-liscsi" ; then
R
Ronnie Sahlberg 已提交
3327
    libiscsi="yes"
3328
    libiscsi_libs="-liscsi"
R
Ronnie Sahlberg 已提交
3329 3330
  else
    if test "$libiscsi" = "yes" ; then
3331
      feature_not_found "libiscsi" "Install libiscsi devel"
R
Ronnie Sahlberg 已提交
3332 3333 3334 3335 3336
    fi
    libiscsi="no"
  fi
fi

3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351
# 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 已提交
3352

3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364
##########################################
# 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
3365
  error_exit "libm check failed"
3366 3367
fi

A
aliguori 已提交
3368 3369
##########################################
# Do we need librt
3370 3371 3372 3373
# 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 已提交
3374 3375 3376
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
3377 3378 3379 3380
int main(void) {
  timer_create(CLOCK_REALTIME, NULL, NULL);
  return clock_gettime(CLOCK_REALTIME, NULL);
}
A
aliguori 已提交
3381 3382
EOF

3383
if compile_prog "" "" ; then
3384
  :
3385 3386
# we need pthread for static linking. use previous pthread test result
elif compile_prog "" "-lrt $pthread_lib" ; then
3387
  LIBS="-lrt $LIBS"
3388
  libs_qga="-lrt $libs_qga"
A
aliguori 已提交
3389 3390
fi

3391
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3392
        "$aix" != "yes" -a "$haiku" != "yes" ; then
3393 3394 3395
    libs_softmmu="-lutil $libs_softmmu"
fi

3396
##########################################
3397 3398 3399 3400 3401 3402
# 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 已提交
3403 3404
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3405 3406
  if $pkg_config --atleast-version=0.12.0 spice-server && \
     $pkg_config --atleast-version=0.12.3 spice-protocol && \
3407 3408 3409 3410
     compile_prog "$spice_cflags" "$spice_libs" ; then
    spice="yes"
    libs_softmmu="$libs_softmmu $spice_libs"
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3411 3412
    spice_protocol_version=$($pkg_config --modversion spice-protocol)
    spice_server_version=$($pkg_config --modversion spice-server)
3413 3414
  else
    if test "$spice" = "yes" ; then
3415
      feature_not_found "spice" "Install spice-server and spice-protocol devel"
3416 3417 3418 3419 3420
    fi
    spice="no"
  fi
fi

R
Robert Relyea 已提交
3421
# check for libcacard for smartcard support
P
Paolo Bonzini 已提交
3422 3423 3424 3425
smartcard_cflags=""
# TODO - what's the minimal nss version we support?
if test "$smartcard_nss" != "no"; then
  cat > $TMPC << EOF
3426 3427 3428
#include <pk11pub.h>
int main(void) { PK11_FreeSlot(0); return 0; }
EOF
P
Paolo Bonzini 已提交
3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439
    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
3440
    if test -n "$libtool" &&
3441
       $pkg_config --atleast-version=3.12.8 nss && \
P
Paolo Bonzini 已提交
3442 3443 3444 3445 3446 3447 3448 3449
      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 已提交
3450
        fi
P
Paolo Bonzini 已提交
3451
        smartcard_nss="no"
R
Robert Relyea 已提交
3452 3453 3454
    fi
fi

G
Gerd Hoffmann 已提交
3455 3456
# check for libusb
if test "$libusb" != "no" ; then
3457
    if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
G
Gerd Hoffmann 已提交
3458
        libusb="yes"
3459 3460
        libusb_cflags=$($pkg_config --cflags libusb-1.0)
        libusb_libs=$($pkg_config --libs libusb-1.0)
G
Gerd Hoffmann 已提交
3461 3462 3463 3464
        QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
        libs_softmmu="$libs_softmmu $libusb_libs"
    else
        if test "$libusb" = "yes"; then
3465
            feature_not_found "libusb" "Install libusb devel"
G
Gerd Hoffmann 已提交
3466 3467 3468 3469 3470
        fi
        libusb="no"
    fi
fi

3471 3472
# check for usbredirparser for usb network redirection support
if test "$usb_redir" != "no" ; then
3473
    if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3474
        usb_redir="yes"
3475 3476
        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3477
        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
A
Aurelien Jarno 已提交
3478
        libs_softmmu="$libs_softmmu $usb_redir_libs"
3479 3480
    else
        if test "$usb_redir" = "yes"; then
3481
            feature_not_found "usb-redir" "Install usbredir devel"
3482 3483 3484 3485 3486
        fi
        usb_redir="no"
    fi
fi

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 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541
##########################################
# 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

3542 3543
##########################################

B
Blue Swirl 已提交
3544 3545 3546 3547 3548 3549
##########################################
# check if we have fdatasync

fdatasync=no
cat > $TMPC << EOF
#include <unistd.h>
3550 3551 3552 3553
int main(void) {
#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
return fdatasync(0);
#else
3554
#error Not supported
3555 3556
#endif
}
B
Blue Swirl 已提交
3557 3558 3559 3560 3561
EOF
if compile_prog "" "" ; then
    fdatasync=yes
fi

A
Andreas Färber 已提交
3562 3563 3564 3565 3566 3567 3568
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
3569
#include <stddef.h>
A
Andreas Färber 已提交
3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581
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 已提交
3582
#include <stddef.h>
A
Andreas Färber 已提交
3583 3584 3585 3586 3587 3588
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606
##########################################
# 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

3607 3608 3609
##########################################
# check if trace backend exists

3610
$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend  > /dev/null 2> /dev/null
3611
if test "$?" -ne 0 ; then
3612 3613
  error_exit "invalid trace backend" \
      "Please choose a supported trace backend."
3614 3615
fi

3616 3617 3618 3619
##########################################
# For 'ust' backend, test if ust headers are present
if test "$trace_backend" = "ust"; then
  cat > $TMPC << EOF
3620
#include <lttng/tracepoint.h>
3621 3622 3623
int main(void) { return 0; }
EOF
  if compile_prog "" "" ; then
3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636
    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"
3637
  else
3638
    error_exit "Trace backend 'ust' missing lttng-ust header files"
3639 3640
  fi
fi
3641 3642 3643 3644 3645

##########################################
# For 'dtrace' backend, test if 'dtrace' command is present
if test "$trace_backend" = "dtrace"; then
  if ! has 'dtrace' ; then
3646
    error_exit "dtrace command is not found in PATH $PATH"
3647
  fi
3648 3649 3650 3651
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
3652 3653
fi

W
Wolfgang Mauerer 已提交
3654
##########################################
3655
# check and set a backend for coroutine
3656

3657 3658 3659 3660 3661 3662 3663 3664 3665
# 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
3666
#include <ucontext.h>
3667 3668 3669
#ifdef __stub_makecontext
#error Ignoring glibc stub makecontext which will always fail
#endif
3670
int main(void) { makecontext(0, 0, 0); return 0; }
3671
EOF
3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683
  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
3684
  fi
3685
else
3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708
  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
3709 3710
fi

3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721
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

3722 3723 3724
##########################################
# check if we have open_by_handle_at

S
Stefan Weil 已提交
3725
open_by_handle_at=no
3726 3727
cat > $TMPC << EOF
#include <fcntl.h>
3728 3729 3730
#if !defined(AT_EMPTY_PATH)
# error missing definition
#else
3731
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
3732
#endif
3733 3734 3735 3736 3737
EOF
if compile_prog "" "" ; then
    open_by_handle_at=yes
fi

3738 3739 3740 3741 3742 3743 3744
########################################
# check if we have linux/magic.h

linux_magic_h=no
cat > $TMPC << EOF
#include <linux/magic.h>
int main(void) {
3745
  return 0;
3746 3747 3748 3749 3750 3751
}
EOF
if compile_prog "" "" ; then
    linux_magic_h=yes
fi

3752
########################################
K
Kevin Wolf 已提交
3753 3754 3755 3756 3757 3758 3759 3760
# 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.

3761 3762
pragma_disable_unused_but_set=no
cat > $TMPC << EOF
3763
#pragma GCC diagnostic push
3764
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
K
Kevin Wolf 已提交
3765
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
3766
#pragma GCC diagnostic pop
K
Kevin Wolf 已提交
3767

3768 3769 3770 3771 3772
int main(void) {
    return 0;
}
EOF
if compile_prog "-Werror" "" ; then
3773
    pragma_diagnostic_available=yes
K
Kevin Wolf 已提交
3774 3775
else
    werror=no
3776 3777
fi

3778
########################################
3779
# check if we have valgrind/valgrind.h and valgrind/memcheck.h
3780 3781 3782 3783

valgrind_h=no
cat > $TMPC << EOF
#include <valgrind/valgrind.h>
3784
#include <valgrind/memcheck.h>
3785 3786 3787 3788 3789 3790 3791 3792
int main(void) {
  return 0;
}
EOF
if compile_prog "" "" ; then
    valgrind_h=yes
fi

3793 3794 3795 3796 3797 3798 3799
########################################
# check if environ is declared

has_environ=no
cat > $TMPC << EOF
#include <unistd.h>
int main(void) {
3800
    environ = 0;
3801 3802 3803 3804 3805 3806 3807
    return 0;
}
EOF
if compile_prog "" "" ; then
    has_environ=yes
fi

3808 3809 3810 3811 3812 3813 3814
########################################
# check if cpuid.h is usable.

cpuid_h=no
cat > $TMPC << EOF
#include <cpuid.h>
int main(void) {
3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826
    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;
3827 3828 3829 3830 3831 3832
}
EOF
if compile_prog "" "" ; then
    cpuid_h=yes
fi

3833 3834 3835 3836 3837 3838 3839 3840 3841 3842
########################################
# 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;
3843
  a = a * a;
3844 3845 3846 3847 3848 3849
  return 0;
}
EOF
if compile_prog "" "" ; then
    int128=yes
fi
3850

3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864
########################################
# 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

3865
##########################################
3866 3867 3868
# End of CC checks
# After here, no more $cc or $ld runs

B
Blue Swirl 已提交
3869 3870 3871 3872
if test "$gcov" = "yes" ; then
  CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
  LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
elif test "$debug" = "no" ; then
3873
  CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
3874
fi
J
Juan Quintela 已提交
3875

P
Peter Lieven 已提交
3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889
##########################################
# 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 已提交
3890

3891 3892 3893 3894 3895 3896 3897 3898 3899 3900
# 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

3901 3902 3903 3904 3905
# 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

3906 3907
if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
3908
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
3909 3910 3911
    fi
fi

3912 3913 3914 3915 3916 3917 3918
# test if pod2man has --utf8 option
if pod2man --help | grep -q utf8; then
    POD2MAN="pod2man --utf8"
else
    POD2MAN="pod2man"
fi

3919 3920 3921 3922 3923 3924 3925 3926 3927
# 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

3928
qemu_confdir=$sysconfdir$confsuffix
F
Fam Zheng 已提交
3929
qemu_moddir=$libdir$confsuffix
3930
qemu_datadir=$datadir$confsuffix
3931
qemu_localedir="$datadir/locale"
3932

3933 3934
tools=""
if test "$want_tools" = "yes" ; then
3935
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
3936 3937 3938 3939 3940
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
    tools="qemu-nbd\$(EXESUF) $tools"
  fi
fi
if test "$softmmu" = yes ; then
3941
  if test "$virtfs" != no ; then
3942 3943 3944 3945 3946
    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
3947
        error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
3948
      fi
3949
      virtfs=no
3950
    fi
3951
  fi
3952 3953
fi
if [ "$guest_agent" != "no" ]; then
3954
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
M
Michael Roth 已提交
3955
      tools="qemu-ga\$(EXESUF) $tools"
3956 3957 3958
      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
3959 3960 3961 3962 3963
      guest_agent=yes
  elif [ "$guest_agent" != yes ]; then
      guest_agent=no
  else
      error_exit "Guest agent is not supported on this platform"
3964
  fi
3965
fi
3966 3967 3968 3969 3970 3971 3972 3973

# 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
3974
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
3975 3976
  roms="$roms spapr-rtas"
fi
3977

3978 3979 3980 3981
if test "$cpu" = "s390x" ; then
  roms="$roms s390-ccw"
fi

3982 3983 3984 3985
# Probe for the need for relocating the user-only binary.
if test "$pie" = "no" ; then
  textseg_addr=
  case "$cpu" in
3986
    arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64 | x32)
3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011
      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

4012
# add pixman flags after all config tests are done
4013
QEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags $fdt_cflags"
4014 4015
libs_softmmu="$libs_softmmu $pixman_libs"

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

4141
if test "$sdl_too_old" = "yes"; then
B
bellard 已提交
4142
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
4143
fi
B
bellard 已提交
4144

4145 4146
config_host_mak="config-host.mak"

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

4149 4150 4151
echo "# Automatically generated by configure - do not modify" > $config_host_mak
echo >> $config_host_mak

4152
echo all: >> $config_host_mak
4153 4154
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
A
Alon Levy 已提交
4155
echo "libdir=$libdir" >> $config_host_mak
4156
echo "libexecdir=$libexecdir" >> $config_host_mak
4157
echo "includedir=$includedir" >> $config_host_mak
4158 4159
echo "mandir=$mandir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
4160
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4161 4162
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
F
Fam Zheng 已提交
4163
echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4164 4165 4166
if test "$mingw32" = "no" ; then
  echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
fi
4167
echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4168 4169
echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4170
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4171
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4172

4173
echo "ARCH=$ARCH" >> $config_host_mak
4174

4175
if test "$debug_tcg" = "yes" ; then
4176
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4177
fi
4178
if test "$strip_opt" = "yes" ; then
4179
  echo "STRIP=${strip}" >> $config_host_mak
4180
fi
B
bellard 已提交
4181
if test "$bigendian" = "yes" ; then
4182
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4183
fi
B
bellard 已提交
4184
if test "$mingw32" = "yes" ; then
4185
  echo "CONFIG_WIN32=y" >> $config_host_mak
4186 4187 4188 4189 4190 4191 4192 4193 4194
  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
4195 4196 4197 4198
  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
4199
else
J
Juan Quintela 已提交
4200
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
4201 4202 4203 4204
fi

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

4207
if test "$darwin" = "yes" ; then
4208
  echo "CONFIG_DARWIN=y" >> $config_host_mak
4209
fi
M
malc 已提交
4210 4211

if test "$aix" = "yes" ; then
4212
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
4213 4214
fi

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

4440 4441 4442
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi
A
Alon Levy 已提交
4443

R
Robert Relyea 已提交
4444 4445
if test "$smartcard_nss" = "yes" ; then
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
P
Paul Brook 已提交
4446 4447
  echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
  echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
R
Robert Relyea 已提交
4448 4449
fi

G
Gerd Hoffmann 已提交
4450 4451 4452 4453
if test "$libusb" = "yes" ; then
  echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
fi

4454 4455 4456 4457
if test "$usb_redir" = "yes" ; then
  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
fi

4458 4459
if test "$glx" = "yes" ; then
  echo "CONFIG_GLX=y" >> $config_host_mak
4460
  echo "GLX_LIBS=$glx_libs" >> $config_host_mak
M
Michael Walle 已提交
4461 4462
fi

Q
qiaonuohan 已提交
4463 4464 4465 4466 4467 4468 4469 4470
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 已提交
4471
if test "$libiscsi" = "yes" ; then
4472
  echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4473 4474 4475
  if test "$libiscsi_version" = "1.4.0"; then
    echo "CONFIG_LIBISCSI_1_4=y" >> $config_host_mak
  fi
4476 4477
  echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
  echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
R
Ronnie Sahlberg 已提交
4478 4479
fi

P
Peter Lieven 已提交
4480 4481 4482 4483
if test "$libnfs" = "yes" ; then
  echo "CONFIG_LIBNFS=y" >> $config_host_mak
fi

4484 4485 4486 4487
if test "$seccomp" = "yes"; then
  echo "CONFIG_SECCOMP=y" >> $config_host_mak
fi

4488
# XXX: suppress that
B
bellard 已提交
4489
if [ "$bsd" = "yes" ] ; then
4490
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
4491 4492
fi

4493
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
4494

4495 4496 4497
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
4498 4499 4500
if test "$qom_cast_debug" = "yes" ; then
  echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
fi
4501
if test "$rbd" = "yes" ; then
4502
  echo "CONFIG_RBD=m" >> $config_host_mak
4503 4504
  echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4505 4506
fi

4507
echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4508 4509 4510 4511 4512
if test "$coroutine_pool" = "yes" ; then
  echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
else
  echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
fi
4513

4514 4515 4516 4517
if test "$open_by_handle_at" = "yes" ; then
  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
fi

4518 4519
if test "$linux_magic_h" = "yes" ; then
  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4520 4521
fi

4522 4523
if test "$pragma_diagnostic_available" = "yes" ; then
  echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
4524 4525
fi

4526 4527 4528 4529
if test "$valgrind_h" = "yes" ; then
  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
fi

4530 4531
if test "$has_environ" = "yes" ; then
  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4532 4533
fi

4534 4535 4536 4537
if test "$cpuid_h" = "yes" ; then
  echo "CONFIG_CPUID_H=y" >> $config_host_mak
fi

4538 4539 4540 4541
if test "$int128" = "yes" ; then
  echo "CONFIG_INT128=y" >> $config_host_mak
fi

4542 4543 4544 4545
if test "$getauxval" = "yes" ; then
  echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
fi

4546
if test "$glusterfs" = "yes" ; then
4547
  echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
4548 4549
  echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
  echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
4550 4551 4552 4553
fi

if test "$glusterfs_discard" = "yes" ; then
  echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
4554
fi
4555

4556 4557 4558 4559
if test "$glusterfs_zerofill" = "yes" ; then
  echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
fi

4560
if test "$libssh2" = "yes" ; then
4561
  echo "CONFIG_LIBSSH2=m" >> $config_host_mak
4562 4563
  echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
  echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
4564 4565
fi

B
Benoît Canet 已提交
4566 4567 4568 4569
if test "$quorum" = "yes" ; then
  echo "CONFIG_QUORUM=y" >> $config_host_mak
fi

4570
if test "$virtio_blk_data_plane" = "yes" ; then
4571
  echo 'CONFIG_VIRTIO_BLK_DATA_PLANE=$(CONFIG_VIRTIO)' >> $config_host_mak
4572 4573
fi

4574 4575 4576 4577
if test "$vhdx" = "yes" ; then
  echo "CONFIG_VHDX=y" >> $config_host_mak
fi

4578
# USB host support
G
Gerd Hoffmann 已提交
4579 4580 4581
if test "$libusb" = "yes"; then
  echo "HOST_USB=libusb legacy" >> $config_host_mak
else
4582
  echo "HOST_USB=stub" >> $config_host_mak
G
Gerd Hoffmann 已提交
4583
fi
4584

P
Paolo Bonzini 已提交
4585 4586 4587 4588 4589 4590 4591 4592
# 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

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

M
Michael R. Hines 已提交
4631 4632 4633 4634
if test "$rdma" = "yes" ; then
  echo "CONFIG_RDMA=y" >> $config_host_mak
fi

4635 4636 4637 4638 4639 4640
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"
4641
elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
4642 4643 4644 4645 4646 4647
  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"

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

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

4735
for target in $target_list; do
4736
target_dir="$target"
4737
config_target_mak=$target_dir/config-target.mak
4738
target_name=`echo $target | cut -d '-' -f 1`
4739
target_bigendian="no"
4740

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

4774
mkdir -p $target_dir
4775
echo "# Automatically generated by configure - do not modify" > $config_target_mak
B
bellard 已提交
4776

P
pbrook 已提交
4777
bflt="no"
4778
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
P
pbrook 已提交
4779
gdb_xml_files=""
A
aliguori 已提交
4780

4781
TARGET_ARCH="$target_name"
4782
TARGET_BASE_ARCH=""
4783
TARGET_ABI_DIR=""
4784

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

4889 4890 4891 4892 4893
upper() {
    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
}

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

P
pbrook 已提交
4950
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
4951
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
4952
fi
P
Paul Brook 已提交
4953
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
4954
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
4955
fi
B
blueswir1 已提交
4956
if test "$target_bsd_user" = "yes" ; then
4957
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
4958
fi
4959

4960
# generate QEMU_CFLAGS/LDFLAGS for targets
4961

4962
cflags=""
4963
ldflags=""
4964

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

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

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

5065
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5066
  ldflags="$ldflags $textseg_ldflags"
5067 5068
fi

5069 5070
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5071

5072
done # for target in $targets
B
bellard 已提交
5073

5074 5075 5076 5077
if [ "$pixman" = "internal" ]; then
  echo "config-host.h: subdir-pixman" >> $config_host_mak
fi

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

5082 5083 5084 5085
if [ "$dtc_internal" = "yes" ]; then
  echo "config-host.h: subdir-dtc" >> $config_host_mak
fi

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

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

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