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

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

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

23
compile_object() {
G
Gerd Hoffmann 已提交
24 25
  echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
26 27 28 29 30
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
G
Gerd Hoffmann 已提交
31 32
  echo $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log
  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log 2>&1
33 34
}

35 36 37 38 39 40
# symbolically link $1 to $2.  Portable version of "ln -sf".
symlink() {
  rm -f $2
  ln -s $1 $2
}

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
# check whether a command is available to this shell (may be either an
# executable or a builtin)
has() {
    type "$1" >/dev/null 2>&1
}

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

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

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

B
bellard 已提交
77
# default parameters
P
Paolo Bonzini 已提交
78
source_path=`dirname "$0"`
79
cpu=""
80
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
81
static="no"
82
sparc_cpu=""
B
bellard 已提交
83
cross_prefix=""
M
malc 已提交
84
audio_drv_list=""
85 86
audio_card_list="ac97 es1370 sb16 hda"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
87
block_drv_whitelist=""
B
bellard 已提交
88
host_cc="gcc"
J
Juan Quintela 已提交
89
helper_cflags=""
J
Juan Quintela 已提交
90
libs_softmmu=""
J
Juan Quintela 已提交
91
libs_tools=""
92
audio_pt_int=""
93
audio_win_int=""
P
Paolo Bonzini 已提交
94
cc_i386=i386-pc-linux-gnu-gcc
95

96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
target_list=""

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

bluez=""
brlapi=""
curl=""
curses=""
docs=""
fdt=""
kvm=""
kvm_para=""
nptl=""
sdl=""
J
Jes Sorensen 已提交
120
vnc="yes"
121 122 123 124 125 126 127 128 129
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
vnc_thread="no"
xen=""
130
xen_ctrl_version=""
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
linux_aio=""
attr=""
vhost_net=""
xfs=""

gprof="no"
debug_tcg="no"
debug_mon="no"
debug="no"
strip_opt="yes"
bigendian="no"
mingw32="no"
EXESUF=""
prefix="/usr/local"
mandir="\${prefix}/share/man"
datadir="\${prefix}/share/qemu"
docdir="\${prefix}/share/doc/qemu"
bindir="\${prefix}/bin"
A
Alon Levy 已提交
149
libdir="\${prefix}/lib"
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
sysconfdir="\${prefix}/etc"
confsuffix="/qemu"
slirp="yes"
fmod_lib=""
fmod_inc=""
oss_lib=""
bsd="no"
linux="no"
solaris="no"
profiler="no"
cocoa="no"
softmmu="yes"
linux_user="no"
darwin_user="no"
bsd_user="no"
guest_base=""
uname_release=""
io_thread="no"
mixemu="no"
kerneldir=""
aix="no"
blobs="yes"
pkgversion=""
check_utests="no"
user_pie="no"
zero_malloc=""
trace_backend="nop"
trace_file="trace"
spice=""
rbd=""
A
Alon Levy 已提交
180
smartcard=""
R
Robert Relyea 已提交
181
smartcard_nss=""
182
opengl=""
183

184 185 186 187 188 189
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
190
  --cc=*) CC="$optarg"
191
  ;;
P
Paolo Bonzini 已提交
192 193
  --source-path=*) source_path="$optarg"
  ;;
194 195
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
196
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
197 198 199
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
200 201 202
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
203
    v7|v8|v8plus|v8plusa)
204 205 206 207 208 209 210 211 212 213 214
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
215 216 217 218 219 220
  esac
done
# OS specific
# Using uname is really, really broken.  Once we have the right set of checks
# we can eliminate it's usage altogether

221 222 223 224 225 226
cc="${cross_prefix}${CC-gcc}"
ar="${cross_prefix}${AR-ar}"
objcopy="${cross_prefix}${OBJCOPY-objcopy}"
ld="${cross_prefix}${LD-ld}"
strip="${cross_prefix}${STRIP-strip}"
windres="${cross_prefix}${WINDRES-windres}"
227
pkg_config="${cross_prefix}${PKG_CONFIG-pkg-config}"
P
Paolo Bonzini 已提交
228
sdl_config="${cross_prefix}${SDL_CONFIG-sdl-config}"
229

230 231 232 233 234 235
# default flags for all hosts
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
K
Kirill A. Shutemov 已提交
236
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
237
QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
238 239
LDFLAGS="-g $LDFLAGS"

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

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

253 254 255 256
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
257 258 259
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
260 261 262 263 264 265 266 267
elif check_define __sparc__ ; then
  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
  # They must be specified using --sparc_cpu
  if check_define __arch64__ ; then
    cpu="sparc64"
  else
    cpu="sparc"
  fi
M
malc 已提交
268 269 270 271 272 273
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
274 275
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
276 277
elif check_define __ia64__ ; then
  cpu="ia64"
278 279 280 281 282 283
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
284
else
M
malc 已提交
285
  cpu=`uname -m`
286 287
fi

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

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

B
bellard 已提交
340
case $targetos in
B
bellard 已提交
341
CYGWIN*)
342
  mingw32="yes"
J
Juan Quintela 已提交
343
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
344 345
  audio_possible_drivers="winwave sdl"
  audio_drv_list="winwave"
B
bellard 已提交
346
;;
B
bellard 已提交
347
MINGW32*)
348
  mingw32="yes"
349 350
  audio_possible_drivers="winwave dsound sdl fmod"
  audio_drv_list="winwave"
B
bellard 已提交
351
;;
T
ths 已提交
352
GNU/kFreeBSD)
A
Aurelien Jarno 已提交
353
  bsd="yes"
354 355
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
356
;;
B
bellard 已提交
357
FreeBSD)
358
  bsd="yes"
359
  make="${MAKE-gmake}"
360 361
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
362 363
  # needed for kinfo_getvmmap(3) in libutil.h
  LIBS="-lutil $LIBS"
B
bellard 已提交
364
;;
365
DragonFly)
366
  bsd="yes"
367
  make="${MAKE-gmake}"
368 369
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
370
;;
B
bellard 已提交
371
NetBSD)
372
  bsd="yes"
373
  make="${MAKE-gmake}"
374 375 376
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
377 378
;;
OpenBSD)
379
  bsd="yes"
380
  make="${MAKE-gmake}"
381 382 383
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
384
;;
385
Darwin)
386 387 388 389 390
  bsd="yes"
  darwin="yes"
  # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
  # run 64-bit userspace code
  if [ "$cpu" = "i386" ] ; then
M
malc 已提交
391 392
    is_x86_64=`sysctl -n hw.optional.x86_64`
    [ "$is_x86_64" = "1" ] && cpu=x86_64
393 394
  fi
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
395
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
396
    LDFLAGS="-arch x86_64 $LDFLAGS"
397
  else
J
Juan Quintela 已提交
398
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
399 400 401 402 403 404
  fi
  darwin_user="yes"
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
405
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
406
;;
B
bellard 已提交
407
SunOS)
408
  solaris="yes"
409 410
  make="${MAKE-gmake}"
  install="${INSTALL-ginstall}"
411
  ld="gld"
412 413 414 415 416 417 418 419 420 421 422 423
  needs_libsunmath="no"
  solarisrev=`uname -r | cut -f2 -d.`
  # have to select again, because `uname -m` returns i86pc
  # even on an x86_64 box.
  solariscpu=`isainfo -k`
  if test "${solariscpu}" = "amd64" ; then
    cpu="x86_64"
  fi
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
    if test "$solarisrev" -le 9 ; then
      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
        needs_libsunmath="yes"
424 425 426
        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
        LIBS="-lsunmath $LIBS"
427 428 429 430 431 432 433
      else
        echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
        echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
        echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
        echo "Studio 11 can be downloaded from www.sun.com."
        exit 1
      fi
T
ths 已提交
434
    fi
435 436 437 438 439
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
440 441 442 443
# needed for CMSG_ macros in sys/socket.h
  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
# needed for TIOCWIN* defines in termios.h
  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
J
Juan Quintela 已提交
444
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
445
  LIBS="-lsocket -lnsl -lresolv $LIBS"
T
ths 已提交
446
;;
M
malc 已提交
447
AIX)
448
  aix="yes"
449
  make="${MAKE-gmake}"
M
malc 已提交
450
;;
451 452 453 454 455
Haiku)
  haiku="yes"
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
;;
456
*)
457 458 459 460 461 462
  audio_drv_list="oss"
  audio_possible_drivers="oss alsa sdl esd pa"
  linux="yes"
  linux_user="yes"
  usb="linux"
  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
463
    audio_possible_drivers="$audio_possible_drivers fmod"
464
  fi
B
bellard 已提交
465
;;
B
bellard 已提交
466 467
esac

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

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

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

493
werror=""
494

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

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

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

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

default_target_list=""

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

897 898 899 900 901 902 903 904 905 906 907 908
if test x"$show_help" = x"yes" ; then
cat << EOF

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

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

1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052
# check that the C compiler works.
cat > $TMPC <<EOF
int main(void) {}
EOF

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

gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
gcc_flags="-fstack-protector-all $gcc_flags"
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
for flag in $gcc_flags; do
    if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
	QEMU_CFLAGS="$QEMU_CFLAGS $flag"
    fi
done

B
bellard 已提交
1053 1054 1055 1056
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
1057 1058 1059
  if has $install; then
    :
  else
B
bellard 已提交
1060 1061 1062 1063 1064
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
    exit 1
  fi
1065
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
1066 1067 1068 1069 1070
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
    exit 1
  fi
1071 1072 1073
  if has ar; then
    :
  else
B
bellard 已提交
1074 1075 1076 1077 1078 1079
    echo "Error: No path includes ar"
    if test -f /usr/ccs/bin/ar ; then
      echo "Add /usr/ccs/bin to your path and rerun configure"
    fi
    exit 1
  fi
1080
fi
B
bellard 已提交
1081

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

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

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

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

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

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

else

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

fi

1138 1139 1140 1141 1142 1143 1144 1145 1146
# host long bits test, actually a pointer size test
cat > $TMPC << EOF
int sizeof_pointer_is_8[sizeof(void *) == 8 ? 1 : -1];
EOF
if compile_object; then
hostlongbits=64
else
hostlongbits=32
fi
B
bellard 已提交
1147

1148 1149 1150 1151 1152 1153

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1281 1282 1283
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1284
  if has cgcc; then
1285 1286 1287 1288 1289 1290 1291 1292 1293
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
1294 1295 1296
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1297 1298 1299 1300 1301 1302 1303
# Look for sdl configuration program (pkg-config or sdl-config).  Try
# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
  sdl_config=sdl-config
fi

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

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

1341
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1342
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1343
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1344 1345
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1346
      fi
1347
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1348 1349 1350 1351 1352
	:
      else
        sdl=no
      fi
    fi # static link
1353 1354 1355 1356 1357
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1358
  fi # sdl compile test
1359
fi
B
bellard 已提交
1360

1361
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1362
  cat > $TMPC <<EOF
1363 1364 1365 1366 1367 1368 1369 1370
#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
1371
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1372 1373
    sdl_libs="$sdl_libs -lX11"
  fi
1374 1375 1376
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
1377
  libs_softmmu="$sdl_libs $libs_softmmu"
1378 1379
fi

1380 1381
##########################################
# VNC TLS detection
J
Jes Sorensen 已提交
1382
if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1383
  cat > $TMPC <<EOF
1384 1385 1386
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1387 1388
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1389 1390 1391 1392 1393 1394
  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
    vnc_tls=yes
    libs_softmmu="$vnc_tls_libs $libs_softmmu"
  else
    if test "$vnc_tls" = "yes" ; then
      feature_not_found "vnc-tls"
1395
    fi
1396 1397
    vnc_tls=no
  fi
1398 1399
fi

1400 1401
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
1402
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1403
  cat > $TMPC <<EOF
1404 1405 1406 1407
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1408 1409 1410 1411 1412 1413 1414 1415 1416
  # Assuming Cyrus-SASL installed in /usr prefix
  vnc_sasl_cflags=""
  vnc_sasl_libs="-lsasl2"
  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
    vnc_sasl=yes
    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
  else
    if test "$vnc_sasl" = "yes" ; then
      feature_not_found "vnc-sasl"
1417
    fi
1418 1419
    vnc_sasl=no
  fi
1420 1421
fi

1422 1423
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
1424
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442
cat > $TMPC <<EOF
#include <stdio.h>
#include <jpeglib.h>
int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
EOF
    vnc_jpeg_cflags=""
    vnc_jpeg_libs="-ljpeg"
  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
    vnc_jpeg=yes
    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
  else
    if test "$vnc_jpeg" = "yes" ; then
      feature_not_found "vnc-jpeg"
    fi
    vnc_jpeg=no
  fi
fi

C
Corentin Chary 已提交
1443 1444
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
1445
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1446 1447 1448
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1449
#include <stddef.h>
C
Corentin Chary 已提交
1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468
int main(void) {
    png_structp png_ptr;
    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
    return 0;
}
EOF
    vnc_png_cflags=""
    vnc_png_libs="-lpng"
  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
    vnc_png=yes
    libs_softmmu="$vnc_png_libs $libs_softmmu"
  else
    if test "$vnc_png" = "yes" ; then
      feature_not_found "vnc-png"
    fi
    vnc_png=no
  fi
fi

1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1480
if compile_prog "" "" ; then
1481 1482 1483
   fnmatch="yes"
fi

1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508
##########################################
# uuid_generate() probe, used for vdi block driver
if test "$uuid" != "no" ; then
  uuid_libs="-luuid"
  cat > $TMPC << EOF
#include <uuid/uuid.h>
int main(void)
{
    uuid_t my_uuid;
    uuid_generate(my_uuid);
    return 0;
}
EOF
  if compile_prog "" "$uuid_libs" ; then
    uuid="yes"
    libs_softmmu="$uuid_libs $libs_softmmu"
    libs_tools="$uuid_libs $libs_tools"
  else
    if test "$uuid" = "yes" ; then
      feature_not_found "uuid"
    fi
    uuid=no
  fi
fi

C
Christoph Hellwig 已提交
1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529
##########################################
# xfsctl() probe, used for raw-posix
if test "$xfs" != "no" ; then
  cat > $TMPC << EOF
#include <xfs/xfs.h>
int main(void)
{
    xfsctl(NULL, 0, 0, NULL);
    return 0;
}
EOF
  if compile_prog "" "" ; then
    xfs="yes"
  else
    if test "$xfs" = "yes" ; then
      feature_not_found "xfs"
    fi
    xfs=no
  fi
fi

1530 1531
##########################################
# vde libraries probe
1532
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1533
  vde_libs="-lvdeplug"
1534 1535
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1536 1537 1538 1539 1540 1541
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1542
EOF
1543
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1544
    vde=yes
1545 1546
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1547 1548 1549 1550 1551
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1552
  fi
1553 1554
fi

1555
##########################################
1556
# Sound support libraries probe
1557

1558 1559 1560 1561 1562 1563 1564 1565 1566 1567
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1568
EOF
1569
    if compile_prog "$cfl" "$lib" ; then
1570 1571 1572 1573 1574 1575 1576 1577 1578 1579
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1580
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1581 1582 1583 1584 1585
for drv in $audio_drv_list; do
    case $drv in
    alsa)
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1586
    libs_softmmu="-lasound $libs_softmmu"
1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597
    ;;

    fmod)
    if test -z $fmod_lib || test -z $fmod_inc; then
        echo
        echo "Error: You must specify path to FMOD library and headers"
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
        echo
        exit 1
    fi
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1598
    libs_softmmu="$fmod_lib $libs_softmmu"
1599 1600 1601 1602
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1603
    libs_softmmu="-lesd $libs_softmmu"
1604
    audio_pt_int="yes"
1605
    ;;
M
malc 已提交
1606 1607

    pa)
1608
    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
M
malc 已提交
1609
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1610
    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1611
    audio_pt_int="yes"
M
malc 已提交
1612 1613
    ;;

1614 1615 1616 1617
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1618 1619
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1620
      audio_win_int="yes"
1621 1622 1623 1624 1625 1626 1627
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1628 1629 1630
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1631 1632 1633 1634 1635
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1636
    *)
M
malc 已提交
1637
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1638 1639 1640 1641 1642 1643 1644
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1645 1646
    esac
done
1647

A
aurel32 已提交
1648 1649 1650
##########################################
# BrlAPI probe

1651
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1652 1653
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1654
#include <brlapi.h>
S
Scott Wood 已提交
1655
#include <stddef.h>
A
aurel32 已提交
1656 1657
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1658
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1659
    brlapi=yes
1660
    libs_softmmu="$brlapi_libs $libs_softmmu"
1661 1662 1663 1664 1665
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1666 1667
  fi
fi
A
aurel32 已提交
1668

B
balrog 已提交
1669 1670
##########################################
# curses probe
S
Stefan Weil 已提交
1671 1672 1673 1674 1675
if test "$mingw32" = "yes" ; then
    curses_list="-lpdcurses"
else
    curses_list="-lncurses -lcurses"
fi
B
balrog 已提交
1676

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

A
Alexander Graf 已提交
1703 1704 1705
##########################################
# curl probe

1706 1707
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkg_config libcurl"
1708 1709 1710 1711
else
  curlconfig=curl-config
fi

1712
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1713 1714 1715 1716
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
1717 1718
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
1719
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1720
    curl=yes
1721 1722
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1723 1724 1725 1726 1727
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1728 1729 1730
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1731 1732 1733 1734 1735 1736 1737 1738
##########################################
# check framework probe

if test "$check_utests" != "no" ; then
  cat > $TMPC << EOF
#include <check.h>
int main(void) { suite_create("qemu test"); return 0; }
EOF
1739
  check_libs=`$pkg_config --libs check`
L
Luiz Capitulino 已提交
1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750
  if compile_prog "" $check_libs ; then
    check_utests=yes
    libs_tools="$check_libs $libs_tools"
  else
    if test "$check_utests" = "yes" ; then
      feature_not_found "check"
    fi
    check_utests=no
  fi
fi # test "$check_utests"

B
balrog 已提交
1751 1752
##########################################
# bluez support probe
1753
if test "$bluez" != "no" ; then
1754 1755 1756 1757
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1758 1759
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
1760
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1761
    bluez=yes
1762
    libs_softmmu="$bluez_libs $libs_softmmu"
1763
  else
1764 1765 1766
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1767 1768
    bluez="no"
  fi
B
balrog 已提交
1769 1770
fi

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

A
Alexander Graf 已提交
1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862
##########################################
# test for ppc kvm pvr setting

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

M
Michael S. Tsirkin 已提交
1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881
##########################################
# test for vhost net

if test "$vhost_net" != "no"; then
    if test "$kvm" != "no"; then
            cat > $TMPC <<EOF
    #include <linux/vhost.h>
    int main(void) { return 0; }
EOF
            if compile_prog "$kvm_cflags" "" ; then
                vhost_net=yes
            else
                if test "$vhost_net" = "yes" ; then
                    feature_not_found "vhost-net"
                fi
                vhost_net=no
            fi
    else
            if test "$vhost_net" = "yes" ; then
A
Aurelien Jarno 已提交
1882
                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
M
Michael S. Tsirkin 已提交
1883 1884 1885 1886 1887 1888
                feature_not_found "vhost-net"
            fi
            vhost_net=no
    fi
fi

1889
##########################################
1890
# pthread probe
1891
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1892

C
Christoph Hellwig 已提交
1893
pthread=no
1894
cat > $TMPC << EOF
1895
#include <pthread.h>
1896
int main(void) { pthread_create(0,0,0,0); return 0; }
1897
EOF
1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908
if compile_prog "" "" ; then
  pthread=yes
else
  for pthread_lib in $PTHREADLIBS_LIST; do
    if compile_prog "" "$pthread_lib" ; then
      pthread=yes
      LIBS="$pthread_lib $LIBS"
      break
    fi
  done
fi
1909

1910
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1911 1912 1913 1914 1915
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1916 1917
fi

1918 1919 1920 1921 1922 1923 1924 1925
##########################################
# rbd probe
if test "$rbd" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <rados/librados.h>
int main(void) { rados_initialize(0, NULL); return 0; }
EOF
A
Aurelien Jarno 已提交
1926
  rbd_libs="-lrados"
1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959
  if compile_prog "" "$rbd_libs" ; then
    librados_too_old=no
    cat > $TMPC <<EOF
#include <stdio.h>
#include <rados/librados.h>
#ifndef CEPH_OSD_TMAP_SET
#error missing CEPH_OSD_TMAP_SET
#endif
int main(void) {
    int (*func)(const rados_pool_t pool, uint64_t *snapid) = rados_selfmanaged_snap_create;
    rados_initialize(0, NULL);
    return 0;
}
EOF
    if compile_prog "" "$rbd_libs" ; then
      rbd=yes
      libs_tools="$rbd_libs $libs_tools"
      libs_softmmu="$rbd_libs $libs_softmmu"
    else
      rbd=no
      librados_too_old=yes
    fi
  else
    if test "$rbd" = "yes" ; then
      feature_not_found "rados block device"
    fi
    rbd=no
  fi
  if test "$librados_too_old" = "yes" ; then
    echo "-> Your librados version is too old - upgrade needed to have rbd support"
  fi
fi

1960 1961 1962 1963 1964 1965 1966
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
1967
#include <stddef.h>
1968 1969 1970 1971
int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
EOF
  if compile_prog "" "-laio" ; then
    linux_aio=yes
P
Paul Brook 已提交
1972 1973
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
1974 1975 1976 1977
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
1978
    linux_aio=no
1979 1980 1981
  fi
fi

1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002
##########################################
# attr probe

if test "$attr" != "no" ; then
  cat > $TMPC <<EOF
#include <stdio.h>
#include <sys/types.h>
#include <attr/xattr.h>
int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
EOF
  if compile_prog "" "-lattr" ; then
    attr=yes
    LIBS="-lattr $LIBS"
  else
    if test "$attr" = "yes" ; then
      feature_not_found "ATTR"
    fi
    attr=no
  fi
fi

A
aliguori 已提交
2003 2004 2005
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
2006
#include <sys/types.h>
A
aliguori 已提交
2007
#include <sys/uio.h>
B
blueswir1 已提交
2008
#include <unistd.h>
A
aliguori 已提交
2009 2010 2011
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
2012
if compile_prog "" "" ; then
A
aliguori 已提交
2013 2014 2015
  iovec=yes
fi

2016 2017 2018 2019 2020 2021 2022 2023 2024
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
2025
if compile_prog "" "" ; then
2026 2027 2028
  preadv=yes
fi

2029 2030
##########################################
# fdt probe
2031
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
2032 2033
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
2034 2035
int main(void) { return 0; }
EOF
2036
  if compile_prog "" "$fdt_libs" ; then
2037
    fdt=yes
2038 2039 2040 2041
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
2042
    fdt_libs=
2043
    fdt=no
2044 2045 2046
  fi
fi

M
Michael Walle 已提交
2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062
##########################################
# opengl probe, used by milkymist-tmu2
if test "$opengl" != "no" ; then
  opengl_libs="-lGL"
  cat > $TMPC << EOF
#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
int main(void) { GL_VERSION; return 0; }
EOF
  if compile_prog "" "-lGL" ; then
    opengl=yes
  else
    if test "$opengl" = "yes" ; then
      feature_not_found "opengl"
    fi
2063
    opengl_libs=
M
Michael Walle 已提交
2064 2065 2066 2067
    opengl=no
  fi
fi

2068 2069 2070 2071 2072 2073
#
# Check for xxxat() functions when we are building linux-user
# emulator.  This is done because older glibc versions don't
# have syscall stubs for these implemented.
#
atfile=no
2074
cat > $TMPC << EOF
2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086
#define _ATFILE_SOURCE
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>

int
main(void)
{
	/* try to unlink nonexisting file */
	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
}
EOF
2087
if compile_prog "" "" ; then
2088
  atfile=yes
2089 2090
fi

A
aurel32 已提交
2091
# Check for inotify functions when we are building linux-user
2092 2093 2094 2095 2096
# 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
2097
cat > $TMPC << EOF
2098 2099 2100 2101 2102 2103
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
2104
	return inotify_init();
2105 2106
}
EOF
2107
if compile_prog "" "" ; then
2108
  inotify=yes
2109 2110
fi

2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125
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 已提交
2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#include <stddef.h>
#include <fcntl.h>

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
2140
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2141 2142 2143
  utimens=yes
fi

R
Riku Voipio 已提交
2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
    pipe2(pipefd, O_CLOEXEC);
    return 0;
}
EOF
2157
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2158 2159 2160
  pipe2=yes
fi

K
Kevin Wolf 已提交
2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176
# 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

2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191
# check if tee/splice is there. vmsplice was added same time.
splice=no
cat > $TMPC << EOF
#include <unistd.h>
#include <fcntl.h>
#include <limits.h>

int main(void)
{
    int len, fd;
    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
    return 0;
}
EOF
2192
if compile_prog "" "" ; then
2193 2194 2195
  splice=yes
fi

M
Marcelo Tosatti 已提交
2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208
##########################################
# signalfd probe
signalfd="no"
cat > $TMPC << EOF
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <signal.h>
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
EOF

if compile_prog "" "" ; then
  signalfd=yes
2209 2210 2211 2212 2213 2214
elif test "$kvm" = "yes" -a "$io_thread" != "yes"; then
  echo
  echo "ERROR: Host kernel lacks signalfd() support,"
  echo "but KVM depends on it when the IO thread is disabled."
  echo
  exit 1
M
Marcelo Tosatti 已提交
2215 2216
fi

R
Riku Voipio 已提交
2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231
# check if eventfd is supported
eventfd=no
cat > $TMPC << EOF
#include <sys/eventfd.h>

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

2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2243
if compile_prog "$ARCH_CFLAGS" "" ; then
2244 2245 2246
  fallocate=yes
fi

2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261
# check for sync_file_range
sync_file_range=no
cat > $TMPC << EOF
#include <fcntl.h>

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

2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278
# check for linux/fiemap.h and FS_IOC_FIEMAP
fiemap=no
cat > $TMPC << EOF
#include <sys/ioctl.h>
#include <linux/fs.h>
#include <linux/fiemap.h>

int main(void)
{
    ioctl(0, FS_IOC_FIEMAP, 0);
    return 0;
}
EOF
if compile_prog "$ARCH_CFLAGS" "" ; then
  fiemap=yes
fi

2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2290
if compile_prog "" "" ; then
2291 2292 2293
  dup3=yes
fi

2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316
# check for epoll support
epoll=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
    epoll_create(0);
    return 0;
}
EOF
if compile_prog "$ARCH_CFLAGS" "" ; then
  epoll=yes
fi

# epoll_create1 and epoll_pwait are later additions
# so we must check separately for their presence
epoll_create1=no
cat > $TMPC << EOF
#include <sys/epoll.h>

int main(void)
{
2317 2318 2319 2320 2321 2322 2323 2324 2325
    /* Note that we use epoll_create1 as a value, not as
     * a function being called. This is necessary so that on
     * old SPARC glibc versions where the function was present in
     * the library but not declared in the header file we will
     * fail the configure check. (Otherwise we will get a compiler
     * warning but not an error, and will proceed to fail the
     * qemu compile where we compile with -Werror.)
     */
    epoll_create1;
2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346
    return 0;
}
EOF
if compile_prog "$ARCH_CFLAGS" "" ; then
  epoll_create1=yes
fi

epoll_pwait=no
cat > $TMPC << EOF
#include <sys/epoll.h>

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

2347
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2348
if test "$docs" != "no" ; then
2349
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2350
    docs=yes
2351
  else
J
Juan Quintela 已提交
2352 2353
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2354
    fi
J
Juan Quintela 已提交
2355
    docs=no
2356
  fi
2357 2358
fi

S
Stefan Weil 已提交
2359
# Search for bswap_32 function
2360 2361 2362 2363 2364
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2365
if compile_prog "" "" ; then
2366 2367 2368
  byteswap_h=yes
fi

S
Stefan Weil 已提交
2369
# Search for bswap_32 function
2370 2371 2372 2373 2374 2375 2376
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
2377
if compile_prog "" "" ; then
2378 2379 2380
  bswap_h=yes
fi

A
aliguori 已提交
2381 2382 2383 2384 2385 2386 2387 2388
##########################################
# Do we need librt
cat > $TMPC <<EOF
#include <signal.h>
#include <time.h>
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
EOF

2389
if compile_prog "" "" ; then
2390
  :
2391
elif compile_prog "" "-lrt" ; then
2392
  LIBS="-lrt $LIBS"
A
aliguori 已提交
2393 2394
fi

2395
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2396
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2397 2398 2399
    libs_softmmu="-lutil $libs_softmmu"
fi

2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411
##########################################
# check if the compiler defines offsetof

need_offsetof=yes
cat > $TMPC << EOF
#include <stddef.h>
int main(void) { struct s { int f; }; return offsetof(struct s, f); }
EOF
if compile_prog "" "" ; then
    need_offsetof=no
fi

2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428
##########################################
# check if the compiler understands attribute warn_unused_result
#
# This could be smarter, but gcc -Werror does not error out even when warning
# about attribute warn_unused_result

gcc_attribute_warn_unused_result=no
cat > $TMPC << EOF
#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
#error gcc 3.3 or older
#endif
int main(void) { return 0;}
EOF
if compile_prog "" ""; then
    gcc_attribute_warn_unused_result=yes
fi

2429 2430 2431 2432 2433 2434
# 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 已提交
2435 2436 2437
  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
  if $pkg_config --atleast-version=0.5.3 spice-server >/dev/null 2>&1 && \
2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449
     compile_prog "$spice_cflags" "$spice_libs" ; then
    spice="yes"
    libs_softmmu="$libs_softmmu $spice_libs"
    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
  else
    if test "$spice" = "yes" ; then
      feature_not_found "spice"
    fi
    spice="no"
  fi
fi

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

2475 2476
##########################################

B
Blue Swirl 已提交
2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488
##########################################
# check if we have fdatasync

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

A
Andreas Färber 已提交
2489 2490 2491 2492 2493 2494 2495
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2496
#include <stddef.h>
A
Andreas Färber 已提交
2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508
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 已提交
2509
#include <stddef.h>
A
Andreas Färber 已提交
2510 2511 2512 2513 2514 2515
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2516 2517 2518
##########################################
# check if trace backend exists

B
Blue Swirl 已提交
2519
sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
2520 2521 2522 2523 2524 2525 2526 2527
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544
##########################################
# For 'ust' backend, test if ust headers are present
if test "$trace_backend" = "ust"; then
  cat > $TMPC << EOF
#include <ust/tracepoint.h>
#include <ust/marker.h>
int main(void) { return 0; }
EOF
  if compile_prog "" "" ; then
    LIBS="-lust $LIBS"
  else
    echo
    echo "Error: Trace backend 'ust' missing libust header files"
    echo
    exit 1
  fi
fi
2545 2546 2547 2548 2549 2550 2551 2552 2553 2554

##########################################
# For 'dtrace' backend, test if 'dtrace' command is present
if test "$trace_backend" = "dtrace"; then
  if ! has 'dtrace' ; then
    echo
    echo "Error: dtrace command is not found in PATH $PATH"
    echo
    exit 1
  fi
2555 2556 2557 2558
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
2559 2560
fi

2561
##########################################
2562 2563 2564 2565
# End of CC checks
# After here, no more $cc or $ld runs

if test "$debug" = "no" ; then
2566
  CFLAGS="-O2 $CFLAGS"
2567
fi
J
Juan Quintela 已提交
2568

2569 2570
# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
2571 2572
z_version=`cut -f3 -d. $source_path/VERSION`

2573 2574 2575 2576 2577 2578 2579 2580 2581
if test -z "$werror" ; then
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

2582 2583 2584 2585 2586 2587 2588 2589 2590 2591
# 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

2592
if test "$werror" = "yes" ; then
J
Juan Quintela 已提交
2593
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2594 2595 2596 2597
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2598
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2599 2600 2601
    fi
fi

2602 2603 2604 2605 2606 2607 2608 2609 2610
# 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

2611
confdir=$sysconfdir$confsuffix
2612

2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631
tools=
if test "$softmmu" = yes ; then
  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
      tools="qemu-nbd\$(EXESUF) $tools"
    if [ "$check_utests" = "yes" ]; then
      tools="check-qint check-qstring check-qdict check-qlist $tools"
      tools="check-qfloat check-qjson $tools"
    fi
  fi
fi

# Mac OS X ships with a broken assembler
roms=
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
        "$softmmu" = yes ; then
  roms="optionrom"
fi
2632
if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
2633 2634
  roms="$roms spapr-rtas"
fi
2635

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

2717
if test $sdl_too_old = "yes"; then
B
bellard 已提交
2718
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
2719
fi
B
bellard 已提交
2720

2721
config_host_mak="config-host.mak"
2722
config_host_ld="config-host.ld"
2723 2724 2725 2726 2727 2728

echo "# Automatically generated by configure - do not modify" > $config_host_mak
printf "# Configured with:" >> $config_host_mak
printf " '%s'" "$0" "$@" >> $config_host_mak
echo >> $config_host_mak

2729
echo all: >> $config_host_mak
2730 2731
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
A
Alon Levy 已提交
2732
echo "libdir=$libdir" >> $config_host_mak
2733 2734 2735 2736
echo "mandir=$mandir" >> $config_host_mak
echo "datadir=$datadir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
echo "docdir=$docdir" >> $config_host_mak
2737
echo "confdir=$confdir" >> $config_host_mak
2738

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

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

2783
if test "$darwin" = "yes" ; then
2784
  echo "CONFIG_DARWIN=y" >> $config_host_mak
2785
fi
M
malc 已提交
2786 2787

if test "$aix" = "yes" ; then
2788
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
2789 2790
fi

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

2996 2997 2998
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi
A
Alon Levy 已提交
2999 3000 3001 3002

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

R
Robert Relyea 已提交
3004 3005 3006 3007
if test "$smartcard_nss" = "yes" ; then
  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
fi

M
Michael Walle 已提交
3008 3009 3010 3011
if test "$opengl" = "yes" ; then
  echo "CONFIG_OPENGL=y" >> $config_host_mak
fi

3012
# XXX: suppress that
B
bellard 已提交
3013
if [ "$bsd" = "yes" ] ; then
3014
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
3015 3016
fi

3017
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3018

3019 3020 3021
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
3022 3023 3024
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
fi
3025

3026 3027 3028
# USB host support
case "$usb" in
linux)
3029
  echo "HOST_USB=linux" >> $config_host_mak
3030 3031
;;
bsd)
3032
  echo "HOST_USB=bsd" >> $config_host_mak
3033 3034
;;
*)
3035
  echo "HOST_USB=stub" >> $config_host_mak
3036 3037 3038
;;
esac

3039
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3040 3041 3042
if test "$trace_backend" = "simple"; then
  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
3043 3044 3045 3046
# Set the appropriate trace file.
if test "$trace_backend" = "simple"; then
  trace_file="\"$trace_file-%u\""
fi
3047 3048 3049
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
  echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
3050 3051
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak

3052 3053
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
3054 3055 3056 3057 3058 3059
echo "MAKE=$make" >> $config_host_mak
echo "INSTALL=$install" >> $config_host_mak
echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
echo "CC=$cc" >> $config_host_mak
P
Paolo Bonzini 已提交
3060
echo "CC_I386=$cc_i386" >> $config_host_mak
3061 3062 3063 3064
echo "HOST_CC=$host_cc" >> $config_host_mak
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
3065
echo "WINDRES=$windres" >> $config_host_mak
3066
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
3067
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3068
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
3069 3070 3071 3072 3073
if test "$sparse" = "yes" ; then
  echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
  echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
fi
J
Juan Quintela 已提交
3074
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
3075
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3076 3077
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
3078
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
3079
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3080 3081
echo "EXESUF=$EXESUF" >> $config_host_mak

3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093
# generate list of library paths for linker script

$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}

if test -f ${config_host_ld}~ ; then
  if cmp -s $config_host_ld ${config_host_ld}~ ; then
    mv ${config_host_ld}~ $config_host_ld
  else
    rm ${config_host_ld}~
  fi
fi

B
Blue Swirl 已提交
3094 3095
for d in libdis libdis-user; do
    mkdir -p $d
3096
    symlink $source_path/Makefile.dis $d/Makefile
B
Blue Swirl 已提交
3097 3098
    echo > $d/config.mak
done
3099 3100 3101
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
fi
B
Blue Swirl 已提交
3102

3103
for target in $target_list; do
3104
target_dir="$target"
3105
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
3106
target_arch2=`echo $target | cut -d '-' -f 1`
3107
target_bigendian="no"
3108

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

3153
mkdir -p $target_dir
B
bellard 已提交
3154
mkdir -p $target_dir/fpu
B
bellard 已提交
3155
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
3156
mkdir -p $target_dir/ide
3157
mkdir -p $target_dir/9pfs
B
blueswir1 已提交
3158
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
3159 3160
  mkdir -p $target_dir/nwfpe
fi
3161
symlink $source_path/Makefile.target $target_dir/Makefile
B
bellard 已提交
3162

3163

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

P
pbrook 已提交
3166
bflt="no"
3167
target_nptl="no"
B
Blue Swirl 已提交
3168
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
Paolo Bonzini 已提交
3169
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
P
pbrook 已提交
3170
gdb_xml_files=""
3171 3172 3173 3174
target_short_alignment=2
target_int_alignment=4
target_long_alignment=4
target_llong_alignment=8
3175
target_libs_softmmu=
A
aliguori 已提交
3176

3177
TARGET_ARCH="$target_arch2"
3178
TARGET_BASE_ARCH=""
3179
TARGET_ABI_DIR=""
3180

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

3393
echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
3394

P
pbrook 已提交
3395
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3396
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
3397
fi
3398 3399
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3400
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3401
fi
P
Paul Brook 已提交
3402
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3403
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
3404
fi
B
blueswir1 已提交
3405
if test "$target_bsd_user" = "yes" ; then
3406
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
3407
fi
3408

3409
# generate QEMU_CFLAGS/LDFLAGS for targets
3410

3411
cflags=""
3412
includes=""
3413
ldflags=""
3414

J
Juan Quintela 已提交
3415
if test "$ARCH" = "sparc64" ; then
3416
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3417
elif test "$ARCH" = "s390x" ; then
3418
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3419
elif test "$ARCH" = "x86_64" ; then
3420
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
J
Juan Quintela 已提交
3421
else
3422
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
J
Juan Quintela 已提交
3423
fi
3424 3425
includes="-I\$(SRC_PATH)/tcg $includes"
includes="-I\$(SRC_PATH)/fpu $includes"
J
Juan Quintela 已提交
3426

B
Blue Swirl 已提交
3427 3428 3429 3430 3431 3432
if test "$target_user_only" = "yes" ; then
    libdis_config_mak=libdis-user/config.mak
else
    libdis_config_mak=libdis/config.mak
fi

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

3490 3491 3492 3493 3494 3495 3496
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

3497 3498 3499 3500
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
M
Michael Walle 已提交
3501 3502 3503
  ;;
  lm32)
    cflags="-DHAS_AUDIO $cflags"
3504 3505 3506 3507 3508 3509 3510
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

3511
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3512
	"$user_pie" = "yes" ; then
3513 3514 3515 3516
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

3517 3518 3519
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
3520
  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3521 3522
fi

3523
if test "$gprof" = "yes" ; then
3524
  echo "TARGET_GPROF=yes" >> $config_target_mak
3525 3526 3527 3528 3529 3530
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
3531
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
3532 3533 3534
  fi
fi

3535
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3536
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3537 3538 3539
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
3540
    ldflags="$linker_script -static $ldflags"
3541
    ;;
3542 3543 3544
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
3545
  *)
3546
    ldflags="$linker_script $ldflags"
3547 3548 3549 3550
    ;;
  esac
fi

3551 3552
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3553
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
3554

3555
done # for target in $targets
B
bellard 已提交
3556

P
Paolo Bonzini 已提交
3557 3558
# build tree in object directory in case the source is not in the current directory
DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
A
Andreas Färber 已提交
3559
DIRS="$DIRS pc-bios/spapr-rtas"
P
Paolo Bonzini 已提交
3560 3561 3562 3563 3564
DIRS="$DIRS roms/seabios roms/vgabios"
DIRS="$DIRS fsdev ui"
FILES="Makefile tests/Makefile"
FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
A
Andreas Färber 已提交
3565
FILES="$FILES pc-bios/spapr-rtas/Makefile"
P
Paolo Bonzini 已提交
3566
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
3567
for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.rom $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
P
Paolo Bonzini 已提交
3568 3569 3570 3571
    FILES="$FILES pc-bios/`basename $bios_file`"
done
mkdir -p $DIRS
for f in $FILES ; do
A
Aurelien Jarno 已提交
3572
    test -e $f || symlink $source_path/$f $f
P
Paolo Bonzini 已提交
3573
done
P
Paul Brook 已提交
3574

3575
# temporary config to build submodules
3576
for rom in seabios vgabios ; do
3577
    config_mak=roms/$rom/config.mak
3578
    echo "# Automatically generated by configure - do not modify" > $config_mak
3579 3580 3581 3582 3583 3584 3585 3586 3587
    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
    echo "CC=$cc" >> $config_mak
    echo "BCC=bcc" >> $config_mak
    echo "CPP=${cross_prefix}cpp" >> $config_mak
    echo "OBJCOPY=objcopy" >> $config_mak
    echo "IASL=iasl" >> $config_mak
    echo "LD=$ld" >> $config_mak
done

P
Paul Brook 已提交
3588 3589 3590
for hwlib in 32 64; do
  d=libhw$hwlib
  mkdir -p $d
B
Blue Swirl 已提交
3591
  mkdir -p $d/ide
3592
  symlink $source_path/Makefile.hw $d/Makefile
3593
  mkdir -p $d/9pfs
3594
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
P
Paul Brook 已提交
3595
done
3596

R
Robert Relyea 已提交
3597 3598 3599 3600 3601 3602 3603
if [ "$source_path" != `pwd` ]; then
    # out of tree build
    mkdir -p libcacard
    rm -f libcacard/Makefile
    ln -s "$source_path/libcacard/Makefile" libcacard/Makefile
fi

3604 3605
d=libuser
mkdir -p $d
3606
symlink $source_path/Makefile.user $d/Makefile
3607 3608 3609
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
fi
3610 3611 3612 3613

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