configure 85.3 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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
sparse="no"
uuid=""
vde=""
vnc_tls=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
vnc_thread="no"
xen=""
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"
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=""

179 180 181 182 183 184
# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
185
  --cc=*) CC="$optarg"
186
  ;;
P
Paolo Bonzini 已提交
187 188
  --source-path=*) source_path="$optarg"
  ;;
189 190
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
191
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
192 193 194
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
195 196 197
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
198
    v7|v8|v8plus|v8plusa)
199 200 201 202 203 204 205 206 207 208 209
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
210 211 212 213 214 215
  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

216 217 218 219 220 221
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}"
222
pkg_config="${cross_prefix}${PKG_CONFIG-pkg-config}"
P
Paolo Bonzini 已提交
223
sdl_config="${cross_prefix}${SDL_CONFIG-sdl-config}"
224

225 226 227 228 229 230
# 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 已提交
231
QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
232
QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
233 234
LDFLAGS="-g $LDFLAGS"

P
Paolo Bonzini 已提交
235 236 237
# make source path absolute
source_path=`cd "$source_path"; pwd`

238 239 240 241 242 243 244
check_define() {
cat > $TMPC <<EOF
#if !defined($1)
#error Not defined
#endif
int main(void) { return 0; }
EOF
245
  compile_object
246 247
}

248 249 250 251
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
252 253 254
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
255 256 257 258 259 260 261 262
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 已提交
263 264 265 266 267 268
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
A
Aurelien Jarno 已提交
269 270
elif check_define __mips__ ; then
  cpu="mips"
A
Aurelien Jarno 已提交
271 272
elif check_define __ia64__ ; then
  cpu="ia64"
273 274 275 276 277 278
elif check_define __s390__ ; then
  if check_define __s390x__ ; then
    cpu="s390x"
  else
    cpu="s390"
  fi
279
else
M
malc 已提交
280
  cpu=`uname -m`
281 282
fi

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

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

B
bellard 已提交
335
case $targetos in
B
bellard 已提交
336
CYGWIN*)
337
  mingw32="yes"
J
Juan Quintela 已提交
338
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
339 340
  audio_possible_drivers="winwave sdl"
  audio_drv_list="winwave"
B
bellard 已提交
341
;;
B
bellard 已提交
342
MINGW32*)
343
  mingw32="yes"
344 345
  audio_possible_drivers="winwave dsound sdl fmod"
  audio_drv_list="winwave"
B
bellard 已提交
346
;;
T
ths 已提交
347
GNU/kFreeBSD)
A
Aurelien Jarno 已提交
348
  bsd="yes"
349 350
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
351
;;
B
bellard 已提交
352
FreeBSD)
353
  bsd="yes"
354
  make="${MAKE-gmake}"
355 356
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
357 358
  # needed for kinfo_getvmmap(3) in libutil.h
  LIBS="-lutil $LIBS"
B
bellard 已提交
359
;;
360
DragonFly)
361
  bsd="yes"
362
  make="${MAKE-gmake}"
363 364
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
365
;;
B
bellard 已提交
366
NetBSD)
367
  bsd="yes"
368
  make="${MAKE-gmake}"
369 370 371
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
372 373
;;
OpenBSD)
374
  bsd="yes"
375
  make="${MAKE-gmake}"
376 377 378
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
379
;;
380
Darwin)
381 382 383 384 385
  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 已提交
386 387
    is_x86_64=`sysctl -n hw.optional.x86_64`
    [ "$is_x86_64" = "1" ] && cpu=x86_64
388 389
  fi
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
390
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
391
    LDFLAGS="-arch x86_64 $LDFLAGS"
392
  else
J
Juan Quintela 已提交
393
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
394 395 396 397 398 399
  fi
  darwin_user="yes"
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
400
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
401
;;
B
bellard 已提交
402
SunOS)
403
  solaris="yes"
404 405
  make="${MAKE-gmake}"
  install="${INSTALL-ginstall}"
406
  ld="gld"
407 408 409 410 411 412 413 414 415 416 417 418
  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"
419 420 421
        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"
422 423 424 425 426 427 428
      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 已提交
429
    fi
430 431 432 433 434
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
435 436 437 438
# 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 已提交
439
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
440
  LIBS="-lsocket -lnsl -lresolv $LIBS"
T
ths 已提交
441
;;
M
malc 已提交
442
AIX)
443
  aix="yes"
444
  make="${MAKE-gmake}"
M
malc 已提交
445
;;
446 447 448 449 450
Haiku)
  haiku="yes"
  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
  LIBS="-lposix_error_mapper -lnetwork $LIBS"
;;
451
*)
452 453 454 455 456 457
  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
458
    audio_possible_drivers="$audio_possible_drivers fmod"
459
  fi
B
bellard 已提交
460
;;
B
bellard 已提交
461 462
esac

B
bellard 已提交
463
if [ "$bsd" = "yes" ] ; then
464
  if [ "$darwin" != "yes" ] ; then
465
    usb="bsd"
466
  fi
B
blueswir1 已提交
467
  bsd_user="yes"
B
bellard 已提交
468 469
fi

470 471 472
: ${make=${MAKE-make}}
: ${install=${INSTALL-install}}

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

488
werror=""
489

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

732 733
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
734
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
735
#
P
Paul Brook 已提交
736
host_guest_base="no"
737
case "$cpu" in
738 739
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
740
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
741 742
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
743
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
744 745
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
746
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
747 748
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
749
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
750
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
751
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
752
             helper_cflags="-ffixed-i0"
753
           fi
754
           ;;
755
    sparc64)
J
Juan Quintela 已提交
756
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
757
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
758
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
759
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
760
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
761
           fi
762
           ;;
763
    s390)
764 765
           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m31 $LDFLAGS"
R
Richard Henderson 已提交
766
           host_guest_base="yes"
767 768 769 770
           ;;
    s390x)
           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
           LDFLAGS="-m64 $LDFLAGS"
R
Richard Henderson 已提交
771
           host_guest_base="yes"
772
           ;;
773
    i386)
J
Juan Quintela 已提交
774
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
775
           LDFLAGS="-m32 $LDFLAGS"
P
Paolo Bonzini 已提交
776
           cc_i386='$(CC) -m32'
J
Juan Quintela 已提交
777
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
778
           host_guest_base="yes"
779 780
           ;;
    x86_64)
J
Juan Quintela 已提交
781
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
782
           LDFLAGS="-m64 $LDFLAGS"
P
Paolo Bonzini 已提交
783
           cc_i386='$(CC) -m32'
P
Paul Brook 已提交
784 785 786 787
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
788
           ;;
M
malc 已提交
789 790 791
    ppc*)
           host_guest_base="yes"
           ;;
792 793 794
    mips*)
           host_guest_base="yes"
           ;;
A
Aurelien Jarno 已提交
795 796 797
    ia64*)
           host_guest_base="yes"
           ;;
R
Richard Henderson 已提交
798 799 800
    hppa*)
           host_guest_base="yes"
           ;;
801 802
esac

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

805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822
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]"
echo "  --target-list=LIST       set target list [$target_list]"
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]"
823 824
echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
echo "                           build time"
J
Juan Quintela 已提交
825
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
826
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
827
echo "  --make=MAKE              use specified make [$make]"
828
echo "  --install=INSTALL        use specified install [$install]"
829
echo "  --static                 enable static build [$static]"
830 831 832 833 834
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"
835 836
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
837
echo "  --enable-debug           enable common debug build options"
838 839
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
840
echo "  --disable-strip          disable stripping binaries"
841
echo "  --disable-werror         disable compilation abort on warning"
842
echo "  --disable-sdl            disable SDL"
843
echo "  --enable-sdl             enable SDL"
J
Jes Sorensen 已提交
844 845
echo "  --disable-vnc            disable VNC"
echo "  --enable-vnc             enable VNC"
846
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
847 848
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
M
malc 已提交
849 850
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
851 852
echo "  --block-drv-whitelist=L  set block driver whitelist"
echo "                           (affects only QEMU, not qemu-img)"
853
echo "  --enable-mixemu          enable mixer emulation"
854
echo "  --disable-xen            disable xen backend driver support"
855
echo "  --enable-xen             enable xen backend driver support"
A
aurel32 已提交
856
echo "  --disable-brlapi         disable BrlAPI"
857
echo "  --enable-brlapi          enable BrlAPI"
858
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
859
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
860
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
861
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
862 863
echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
864
echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
C
Corentin Chary 已提交
865
echo "  --enable-vnc-png         enable PNG compression for VNC server"
C
Corentin Chary 已提交
866 867
echo "  --disable-vnc-thread     disable threaded VNC server"
echo "  --enable-vnc-thread      enable threaded VNC server"
P
pbrook 已提交
868
echo "  --disable-curses         disable curses output"
869
echo "  --enable-curses          enable curses output"
A
Alexander Graf 已提交
870
echo "  --disable-curl           disable curl connectivity"
871
echo "  --enable-curl            enable curl connectivity"
872 873
echo "  --disable-fdt            disable fdt device tree"
echo "  --enable-fdt             enable fdt device tree"
L
Luiz Capitulino 已提交
874 875
echo "  --disable-check-utests   disable check unit-tests"
echo "  --enable-check-utests    enable check unit-tests"
B
balrog 已提交
876
echo "  --disable-bluez          disable bluez stack connectivity"
877
echo "  --enable-bluez           enable bluez stack connectivity"
A
aliguori 已提交
878
echo "  --disable-kvm            disable KVM acceleration support"
879
echo "  --enable-kvm             enable KVM acceleration support"
880
echo "  --disable-nptl           disable usermode NPTL support"
A
Andre Przywara 已提交
881
echo "  --enable-nptl            enable usermode NPTL support"
882 883
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
884 885
echo "  --enable-user            enable supported user emulation targets"
echo "  --disable-user           disable all user emulation targets"
886 887 888 889
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 已提交
890 891
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
P
Paul Brook 已提交
892 893 894
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
895 896
echo "  --enable-user-pie        build usermode emulation targets as PIE"
echo "  --disable-user-pie       do not build usermode emulation targets as PIE"
897 898
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
B
blueswir1 已提交
899
echo "  --oss-lib                path to OSS library"
900
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
901
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
902 903
echo "  --disable-uuid           disable uuid support"
echo "  --enable-uuid            enable uuid support"
904
echo "  --disable-vde            disable support for vde network"
905
echo "  --enable-vde             enable support for vde network"
906 907
echo "  --disable-linux-aio      disable Linux AIO support"
echo "  --enable-linux-aio       enable Linux AIO support"
908 909
echo "  --disable-attr           disables attr and xattr support"
echo "  --enable-attr            enable attr and xattr support"
910
echo "  --enable-io-thread       enable IO thread"
T
ths 已提交
911
echo "  --disable-blobs          disable installing provided firmware blobs"
A
aliguori 已提交
912
echo "  --kerneldir=PATH         look for kernel includes in PATH"
913 914
echo "  --enable-docs            enable documentation build"
echo "  --disable-docs           disable documentation build"
M
Michael S. Tsirkin 已提交
915 916
echo "  --disable-vhost-net      disable vhost-net acceleration support"
echo "  --enable-vhost-net       enable vhost-net acceleration support"
917 918
echo "  --enable-trace-backend=B Set trace backend"
echo "                           Available backends:" $("$source_path"/scripts/tracetool --list-backends)
919
echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
P
Prerna Saxena 已提交
920
echo "                           Default:trace-<pid>"
921 922
echo "  --disable-spice          disable spice"
echo "  --enable-spice           enable spice"
923
echo "  --enable-rbd             enable building the rados block device (rbd)"
924
echo ""
T
ths 已提交
925
echo "NOTE: The object files are built at the place where configure is launched"
926 927 928
exit 1
fi

929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953
# 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 已提交
954 955 956 957
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
958 959 960
  if has $install; then
    :
  else
B
bellard 已提交
961 962 963 964 965
    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
966
  if test "`path_of $install`" = "/usr/sbin/install" ; then
B
bellard 已提交
967 968 969 970 971
    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
972 973 974
  if has ar; then
    :
  else
B
bellard 已提交
975 976 977 978 979 980
    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
981
fi
B
bellard 已提交
982 983


B
bellard 已提交
984 985
if test -z "$target_list" ; then
# these targets are portable
986
    if [ "$softmmu" = "yes" ] ; then
A
aurel32 已提交
987 988 989 990 991
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
M
Michael Walle 已提交
992
lm32-softmmu \
A
aurel32 已提交
993
m68k-softmmu \
994
microblaze-softmmu \
995
microblazeel-softmmu \
A
aurel32 已提交
996 997 998 999 1000 1001 1002 1003 1004 1005
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
1006
sparc64-softmmu \
A
aurel32 已提交
1007
"
1008
    fi
B
bellard 已提交
1009
# the following are Linux specific
1010
    if [ "$linux_user" = "yes" ] ; then
A
aurel32 已提交
1011 1012 1013 1014 1015 1016 1017 1018
        target_list="${target_list}\
i386-linux-user \
x86_64-linux-user \
alpha-linux-user \
arm-linux-user \
armeb-linux-user \
cris-linux-user \
m68k-linux-user \
1019
microblaze-linux-user \
1020
microblazeel-linux-user \
A
aurel32 已提交
1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031
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 \
"
1032 1033 1034
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
M
malc 已提交
1035
        target_list="$target_list i386-darwin-user ppc-darwin-user "
B
bellard 已提交
1036
    fi
B
blueswir1 已提交
1037 1038 1039
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
1040 1041 1042
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
B
blueswir1 已提交
1043 1044 1045
sparc64-bsd-user \
"
    fi
1046
else
1047
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
1048
fi
1049 1050 1051 1052
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
P
Paolo Bonzini 已提交
1053 1054 1055 1056 1057 1058 1059
# see if system emulation was really requested
case " $target_list " in
  *"-softmmu "*) softmmu=yes
  ;;
  *) softmmu=no
  ;;
esac
B
bellard 已提交
1060

1061 1062 1063 1064 1065
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
1066
  echo "ERROR: configure was not able to find it"
1067 1068 1069 1070
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
1071 1072 1073 1074 1075 1076 1077
if test -z "$cross_prefix" ; then

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

1083
if compile_prog "" "" ; then
B
bellard 已提交
1084 1085 1086 1087 1088 1089 1090 1091
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
1092
case "$cpu" in
1093
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1094 1095 1096
    bigendian=yes
  ;;
esac
B
bellard 已提交
1097 1098 1099

fi

1100 1101 1102 1103 1104 1105 1106 1107 1108
# 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 已提交
1109

1110 1111 1112 1113 1114 1115

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

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
1116
#include <sched.h>
P
pbrook 已提交
1117
#include <linux/futex.h>
1118 1119 1120 1121 1122 1123 1124 1125
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

1126 1127 1128 1129 1130 1131 1132 1133
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
1134 1135
fi

1136 1137 1138 1139 1140 1141 1142
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
1143
if compile_prog "" "-lz" ; then
1144 1145 1146 1147 1148 1149 1150 1151 1152
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

1153 1154 1155
##########################################
# xen probe

1156
if test "$xen" != "no" ; then
1157 1158
  xen_libs="-lxenstore -lxenctrl -lxenguest"
  cat > $TMPC <<EOF
1159 1160
#include <xenctrl.h>
#include <xs.h>
1161
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
1162
EOF
1163
  if compile_prog "" "$xen_libs" ; then
1164
    xen=yes
J
Juan Quintela 已提交
1165
    libs_softmmu="$xen_libs $libs_softmmu"
1166
  else
1167 1168 1169 1170
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no
1171
  fi
1172 1173
fi

P
Paolo Bonzini 已提交
1174
##########################################
1175
# pkg-config probe
P
Paolo Bonzini 已提交
1176

1177
if ! has $pkg_config; then
1178 1179
  echo warning: proceeding without "$pkg_config" >&2
  pkg_config=/bin/false
P
Paolo Bonzini 已提交
1180 1181
fi

1182 1183 1184
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
1185
  if has cgcc; then
1186 1187 1188 1189 1190 1191 1192 1193 1194
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
1195 1196 1197
##########################################
# SDL probe

P
Paolo Bonzini 已提交
1198 1199 1200 1201 1202 1203 1204
# 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
1205
  sdlconfig="$pkg_config sdl"
1206
  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
P
Paolo Bonzini 已提交
1207 1208
elif has ${sdl_config}; then
  sdlconfig="$sdl_config"
1209
  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1210 1211 1212 1213 1214
else
  if test "$sdl" = "yes" ; then
    feature_not_found "sdl"
  fi
  sdl=no
1215
fi
P
Paolo Bonzini 已提交
1216 1217 1218
if test -n "$cross_prefix" && test "`basename $sdlconfig`" = sdl-config; then
  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
fi
B
bellard 已提交
1219

1220
sdl_too_old=no
1221
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
1222
  cat > $TMPC << EOF
B
bellard 已提交
1223 1224 1225 1226
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
1227
  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1228 1229 1230 1231 1232
  if test "$static" = "yes" ; then
    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
  else
    sdl_libs=`$sdlconfig --libs 2> /dev/null`
  fi
1233
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1234 1235 1236 1237 1238 1239 1240
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
1241

1242
    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
J
Juan Quintela 已提交
1243
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
1244
      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1245 1246
         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
J
Juan Quintela 已提交
1247
      fi
1248
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1249 1250 1251 1252 1253
	:
      else
        sdl=no
      fi
    fi # static link
1254 1255 1256 1257 1258
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
1259
  fi # sdl compile test
1260
fi
B
bellard 已提交
1261

1262
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
1263
  cat > $TMPC <<EOF
1264 1265 1266 1267 1268 1269 1270 1271
#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
1272
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
1273 1274
    sdl_libs="$sdl_libs -lX11"
  fi
1275 1276 1277
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
1278
  libs_softmmu="$sdl_libs $libs_softmmu"
1279 1280
fi

1281 1282
##########################################
# VNC TLS detection
J
Jes Sorensen 已提交
1283
if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1284
  cat > $TMPC <<EOF
1285 1286 1287
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1288 1289
  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1290 1291 1292 1293 1294 1295
  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"
1296
    fi
1297 1298
    vnc_tls=no
  fi
1299 1300
fi

1301 1302
##########################################
# VNC SASL detection
J
Jes Sorensen 已提交
1303
if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1304
  cat > $TMPC <<EOF
1305 1306 1307 1308
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1309 1310 1311 1312 1313 1314 1315 1316 1317
  # 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"
1318
    fi
1319 1320
    vnc_sasl=no
  fi
1321 1322
fi

1323 1324
##########################################
# VNC JPEG detection
J
Jes Sorensen 已提交
1325
if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343
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 已提交
1344 1345
##########################################
# VNC PNG detection
J
Jes Sorensen 已提交
1346
if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
C
Corentin Chary 已提交
1347 1348 1349
cat > $TMPC <<EOF
//#include <stdio.h>
#include <png.h>
S
Scott Wood 已提交
1350
#include <stddef.h>
C
Corentin Chary 已提交
1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369
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

1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1381
if compile_prog "" "" ; then
1382 1383 1384
   fnmatch="yes"
fi

1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409
##########################################
# 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 已提交
1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430
##########################################
# 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

1431 1432
##########################################
# vde libraries probe
1433
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1434
  vde_libs="-lvdeplug"
1435 1436
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1437 1438 1439 1440 1441 1442
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1443
EOF
1444
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1445
    vde=yes
1446 1447
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1448 1449 1450 1451 1452
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1453
  fi
1454 1455
fi

1456
##########################################
1457
# Sound support libraries probe
1458

1459 1460 1461 1462 1463 1464 1465 1466 1467 1468
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1469
EOF
1470
    if compile_prog "$cfl" "$lib" ; then
1471 1472 1473 1474 1475 1476 1477 1478 1479 1480
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1481
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1482 1483 1484 1485 1486
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);"
1487
    libs_softmmu="-lasound $libs_softmmu"
1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498
    ;;

    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"
1499
    libs_softmmu="$fmod_lib $libs_softmmu"
1500 1501 1502 1503
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1504
    libs_softmmu="-lesd $libs_softmmu"
1505
    audio_pt_int="yes"
1506
    ;;
M
malc 已提交
1507 1508

    pa)
1509
    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
M
malc 已提交
1510
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1511
    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1512
    audio_pt_int="yes"
M
malc 已提交
1513 1514
    ;;

1515 1516 1517 1518
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1519 1520
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1521
      audio_win_int="yes"
1522 1523 1524 1525 1526 1527 1528
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1529 1530 1531
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1532 1533 1534 1535 1536
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1537
    *)
M
malc 已提交
1538
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1539 1540 1541 1542 1543 1544 1545
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1546 1547
    esac
done
1548

A
aurel32 已提交
1549 1550 1551
##########################################
# BrlAPI probe

1552
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1553 1554
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1555
#include <brlapi.h>
S
Scott Wood 已提交
1556
#include <stddef.h>
A
aurel32 已提交
1557 1558
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1559
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1560
    brlapi=yes
1561
    libs_softmmu="$brlapi_libs $libs_softmmu"
1562 1563 1564 1565 1566
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1567 1568
  fi
fi
A
aurel32 已提交
1569

B
balrog 已提交
1570 1571
##########################################
# curses probe
S
Stefan Weil 已提交
1572 1573 1574 1575 1576
if test "$mingw32" = "yes" ; then
    curses_list="-lpdcurses"
else
    curses_list="-lncurses -lcurses"
fi
B
balrog 已提交
1577

1578 1579
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1580 1581
  cat > $TMPC << EOF
#include <curses.h>
1582 1583 1584 1585
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1586
EOF
1587 1588
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1589
      curses_found=yes
1590 1591 1592 1593
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1594 1595 1596 1597 1598 1599 1600 1601
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1602
fi
B
balrog 已提交
1603

A
Alexander Graf 已提交
1604 1605 1606
##########################################
# curl probe

1607 1608
if $pkg_config libcurl --modversion >/dev/null 2>&1; then
  curlconfig="$pkg_config libcurl"
1609 1610 1611 1612
else
  curlconfig=curl-config
fi

1613
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1614 1615 1616 1617
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
1618 1619
  curl_cflags=`$curlconfig --cflags 2>/dev/null`
  curl_libs=`$curlconfig --libs 2>/dev/null`
J
Juan Quintela 已提交
1620
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1621
    curl=yes
1622 1623
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1624 1625 1626 1627 1628
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1629 1630 1631
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1632 1633 1634 1635 1636 1637 1638 1639
##########################################
# 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
1640
  check_libs=`$pkg_config --libs check`
L
Luiz Capitulino 已提交
1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651
  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 已提交
1652 1653
##########################################
# bluez support probe
1654
if test "$bluez" != "no" ; then
1655 1656 1657 1658
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1659 1660
  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
1661
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1662
    bluez=yes
1663
    libs_softmmu="$bluez_libs $libs_softmmu"
1664
  else
1665 1666 1667
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1668 1669
    bluez="no"
  fi
B
balrog 已提交
1670 1671
fi

A
aliguori 已提交
1672 1673
##########################################
# kvm probe
1674
if test "$kvm" != "no" ; then
A
aliguori 已提交
1675 1676
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1677
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1678 1679
#error Invalid KVM version
#endif
1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700
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
1701
#endif
1702 1703 1704
EOF
    done
    cat >> $TMPC <<EOF
A
aliguori 已提交
1705 1706
int main(void) { return 0; }
EOF
A
aliguori 已提交
1707 1708
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1709 1710 1711
      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 已提交
1712 1713
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
A
Alexander Graf 已提交
1714 1715
	elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
1716 1717 1718
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1719
  else
1720
    kvm_cflags=`$pkg_config --cflags kvm-kmod 2>/dev/null`
A
aliguori 已提交
1721
  fi
1722
  if compile_prog "$kvm_cflags" "" ; then
1723
    kvm=yes
1724 1725 1726 1727 1728 1729 1730
    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 已提交
1731
  else
1732
    if test "$kvm" = "yes" ; then
1733
      if has awk && has grep; then
1734
        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1735 1736
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1737 1738
        if test "$kvmerr" != "" ; then
          echo -e "${kvmerr}\n\
1739 1740
NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
recent kvm-kmod from http://sourceforge.net/projects/kvm."
1741
        fi
1742
      fi
1743
      feature_not_found "kvm"
1744
    fi
1745
    kvm=no
A
aliguori 已提交
1746 1747 1748
  fi
fi

M
Michael S. Tsirkin 已提交
1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767
##########################################
# 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 已提交
1768
                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
M
Michael S. Tsirkin 已提交
1769 1770 1771 1772 1773 1774
                feature_not_found "vhost-net"
            fi
            vhost_net=no
    fi
fi

1775
##########################################
1776
# pthread probe
1777
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1778

C
Christoph Hellwig 已提交
1779
pthread=no
1780
cat > $TMPC << EOF
1781
#include <pthread.h>
1782
int main(void) { pthread_create(0,0,0,0); return 0; }
1783
EOF
1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794
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
1795

1796
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1797 1798 1799 1800 1801
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1802 1803
fi

1804 1805 1806 1807 1808 1809 1810 1811
##########################################
# 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 已提交
1812
  rbd_libs="-lrados"
1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845
  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

1846 1847 1848 1849 1850 1851 1852
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
S
Scott Wood 已提交
1853
#include <stddef.h>
1854 1855 1856 1857
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 已提交
1858 1859
    libs_softmmu="$libs_softmmu -laio"
    libs_tools="$libs_tools -laio"
1860 1861 1862 1863
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
1864
    linux_aio=no
1865 1866 1867
  fi
fi

1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888
##########################################
# 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 已提交
1889 1890 1891
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
1892
#include <sys/types.h>
A
aliguori 已提交
1893
#include <sys/uio.h>
B
blueswir1 已提交
1894
#include <unistd.h>
A
aliguori 已提交
1895 1896 1897
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1898
if compile_prog "" "" ; then
A
aliguori 已提交
1899 1900 1901
  iovec=yes
fi

1902 1903 1904 1905 1906 1907 1908 1909 1910
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1911
if compile_prog "" "" ; then
1912 1913 1914
  preadv=yes
fi

1915 1916
##########################################
# fdt probe
1917
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
1918 1919
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1920 1921
int main(void) { return 0; }
EOF
1922
  if compile_prog "" "$fdt_libs" ; then
1923
    fdt=yes
J
Juan Quintela 已提交
1924
    libs_softmmu="$fdt_libs $libs_softmmu"
1925 1926 1927 1928 1929
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
    fdt=no
1930 1931 1932
  fi
fi

1933 1934 1935 1936 1937 1938
#
# 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
1939
cat > $TMPC << EOF
1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951
#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
1952
if compile_prog "" "" ; then
1953
  atfile=yes
1954 1955
fi

A
aurel32 已提交
1956
# Check for inotify functions when we are building linux-user
1957 1958 1959 1960 1961
# 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
1962
cat > $TMPC << EOF
1963 1964 1965 1966 1967 1968
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1969
	return inotify_init();
1970 1971
}
EOF
1972
if compile_prog "" "" ; then
1973
  inotify=yes
1974 1975
fi

1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990
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 已提交
1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
# 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
2005
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2006 2007 2008
  utimens=yes
fi

R
Riku Voipio 已提交
2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
# 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
2022
if compile_prog "" "" ; then
R
Riku Voipio 已提交
2023 2024 2025
  pipe2=yes
fi

K
Kevin Wolf 已提交
2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041
# 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

2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056
# 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
2057
if compile_prog "" "" ; then
2058 2059 2060
  splice=yes
fi

M
Marcelo Tosatti 已提交
2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073
##########################################
# 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
2074 2075 2076 2077 2078 2079
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 已提交
2080 2081
fi

R
Riku Voipio 已提交
2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096
# 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

2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
2108
if compile_prog "$ARCH_CFLAGS" "" ; then
2109 2110 2111
  fallocate=yes
fi

2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126
# 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

2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143
# 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

2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154
# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
2155
if compile_prog "" "" ; then
2156 2157 2158
  dup3=yes
fi

2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203
# 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)
{
    epoll_create1(0);
    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

2204
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
2205
if test "$docs" != "no" ; then
2206
  if has makeinfo && has pod2man; then
J
Juan Quintela 已提交
2207
    docs=yes
2208
  else
J
Juan Quintela 已提交
2209 2210
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
2211
    fi
J
Juan Quintela 已提交
2212
    docs=no
2213
  fi
2214 2215
fi

S
Stefan Weil 已提交
2216
# Search for bswap_32 function
2217 2218 2219 2220 2221
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
2222
if compile_prog "" "" ; then
2223 2224 2225
  byteswap_h=yes
fi

S
Stefan Weil 已提交
2226
# Search for bswap_32 function
2227 2228 2229 2230 2231 2232 2233
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
2234
if compile_prog "" "" ; then
2235 2236 2237
  bswap_h=yes
fi

A
aliguori 已提交
2238 2239 2240 2241 2242 2243 2244 2245
##########################################
# 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

2246
if compile_prog "" "" ; then
2247
  :
2248
elif compile_prog "" "-lrt" ; then
2249
  LIBS="-lrt $LIBS"
A
aliguori 已提交
2250 2251
fi

2252
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2253
        "$aix" != "yes" -a "$haiku" != "yes" ; then
2254 2255 2256
    libs_softmmu="-lutil $libs_softmmu"
fi

2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268
##########################################
# 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

2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285
##########################################
# 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

2286 2287 2288 2289 2290 2291
# 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 已提交
2292 2293 2294
  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 && \
2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308
     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

##########################################

B
Blue Swirl 已提交
2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320
##########################################
# 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 已提交
2321 2322 2323 2324 2325 2326 2327
##########################################
# check if we have madvise

madvise=no
cat > $TMPC << EOF
#include <sys/types.h>
#include <sys/mman.h>
S
Scott Wood 已提交
2328
#include <stddef.h>
A
Andreas Färber 已提交
2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340
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 已提交
2341
#include <stddef.h>
A
Andreas Färber 已提交
2342 2343 2344 2345 2346 2347
int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
EOF
if compile_prog "" "" ; then
    posix_madvise=yes
fi

2348 2349 2350
##########################################
# check if trace backend exists

B
Blue Swirl 已提交
2351
sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
2352 2353 2354 2355 2356 2357 2358 2359
if test "$?" -ne 0 ; then
  echo
  echo "Error: invalid trace backend"
  echo "Please choose a supported trace backend."
  echo
  exit 1
fi

2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376
##########################################
# 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
2377 2378 2379 2380 2381 2382 2383 2384 2385 2386

##########################################
# 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
2387 2388 2389 2390
  trace_backend_stap="no"
  if has 'stap' ; then
    trace_backend_stap="yes"
  fi
2391 2392
fi

2393
##########################################
2394 2395 2396 2397
# End of CC checks
# After here, no more $cc or $ld runs

if test "$debug" = "no" ; then
2398
  CFLAGS="-O2 $CFLAGS"
2399
fi
J
Juan Quintela 已提交
2400

2401 2402
# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
2403 2404
z_version=`cut -f3 -d. $source_path/VERSION`

2405 2406 2407 2408 2409 2410 2411 2412 2413
if test -z "$werror" ; then
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

2414 2415 2416 2417 2418 2419 2420 2421 2422 2423
# 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

2424
if test "$werror" = "yes" ; then
J
Juan Quintela 已提交
2425
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2426 2427 2428 2429
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2430
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2431 2432 2433
    fi
fi

2434 2435 2436 2437 2438 2439 2440 2441 2442
# 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

2443
confdir=$sysconfdir$confsuffix
2444

2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465
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


B
bellard 已提交
2466
echo "Install prefix    $prefix"
2467 2468
echo "BIOS directory    `eval echo $datadir`"
echo "binary directory  `eval echo $bindir`"
2469
echo "config directory  `eval echo $sysconfdir`"
B
bellard 已提交
2470
if test "$mingw32" = "no" ; then
2471
echo "Manual directory  `eval echo $mandir`"
B
bellard 已提交
2472
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
2473
fi
2474
echo "Source path       $source_path"
B
bellard 已提交
2475
echo "C compiler        $cc"
B
bellard 已提交
2476
echo "Host C compiler   $host_cc"
2477
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
2478
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
2479
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
2480
echo "make              $make"
2481
echo "install           $install"
B
bellard 已提交
2482
echo "host CPU          $cpu"
B
bellard 已提交
2483
echo "host big endian   $bigendian"
2484
echo "target list       $target_list"
2485
echo "tcg debug enabled $debug_tcg"
L
Luiz Capitulino 已提交
2486
echo "Mon debug enabled $debug_mon"
B
bellard 已提交
2487
echo "gprof enabled     $gprof"
2488
echo "sparse enabled    $sparse"
2489
echo "strip binaries    $strip_opt"
2490
echo "profiler          $profiler"
B
bellard 已提交
2491
echo "static build      $static"
2492
echo "-Werror enabled   $werror"
2493 2494 2495
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
2496
echo "SDL support       $sdl"
B
balrog 已提交
2497
echo "curses support    $curses"
A
Alexander Graf 已提交
2498
echo "curl support      $curl"
L
Luiz Capitulino 已提交
2499
echo "check support     $check_utests"
B
bellard 已提交
2500
echo "mingw32 support   $mingw32"
M
malc 已提交
2501 2502
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
2503
echo "Block whitelist   $block_drv_whitelist"
2504
echo "Mixer emulation   $mixemu"
J
Jes Sorensen 已提交
2505 2506 2507 2508 2509 2510 2511 2512
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
2513 2514 2515
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
2516
echo "xen support       $xen"
A
aurel32 已提交
2517
echo "brlapi support    $brlapi"
2518
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
2519
echo "Documentation     $docs"
2520 2521
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
2522
echo "NPTL support      $nptl"
P
Paul Brook 已提交
2523
echo "GUEST_BASE        $guest_base"
2524
echo "PIE user targets  $user_pie"
2525
echo "vde support       $vde"
2526
echo "IO thread         $io_thread"
2527
echo "Linux AIO support $linux_aio"
2528
echo "ATTR/XATTR support $attr"
T
ths 已提交
2529
echo "Install blobs     $blobs"
2530
echo "KVM support       $kvm"
2531
echo "fdt support       $fdt"
2532
echo "preadv support    $preadv"
B
Blue Swirl 已提交
2533
echo "fdatasync         $fdatasync"
A
Andreas Färber 已提交
2534 2535
echo "madvise           $madvise"
echo "posix_madvise     $posix_madvise"
2536
echo "uuid support      $uuid"
M
Michael S. Tsirkin 已提交
2537
echo "vhost-net support $vhost_net"
2538
echo "Trace backend     $trace_backend"
P
Prerna Saxena 已提交
2539
echo "Trace output file $trace_file-<pid>"
2540
echo "spice support     $spice"
2541
echo "rbd support       $rbd"
C
Christoph Hellwig 已提交
2542
echo "xfsctl support    $xfs"
B
bellard 已提交
2543

2544
if test $sdl_too_old = "yes"; then
B
bellard 已提交
2545
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
2546
fi
B
bellard 已提交
2547

2548
config_host_mak="config-host.mak"
2549
config_host_ld="config-host.ld"
2550 2551 2552 2553 2554 2555

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

2556
echo all: >> $config_host_mak
2557 2558 2559 2560 2561 2562
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=$bindir" >> $config_host_mak
echo "mandir=$mandir" >> $config_host_mak
echo "datadir=$datadir" >> $config_host_mak
echo "sysconfdir=$sysconfdir" >> $config_host_mak
echo "docdir=$docdir" >> $config_host_mak
2563
echo "confdir=$confdir" >> $config_host_mak
2564

A
aurel32 已提交
2565
case "$cpu" in
M
Michael Walle 已提交
2566
  i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
2567
    ARCH=$cpu
A
aurel32 已提交
2568
  ;;
2569
  armv4b|armv4l)
2570
    ARCH=arm
A
aurel32 已提交
2571 2572
  ;;
esac
2573
echo "ARCH=$ARCH" >> $config_host_mak
2574
if test "$debug_tcg" = "yes" ; then
2575
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2576
fi
L
Luiz Capitulino 已提交
2577 2578 2579
if test "$debug_mon" = "yes" ; then
  echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
fi
P
Paul Brook 已提交
2580
if test "$debug" = "yes" ; then
2581
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
2582
fi
2583
if test "$strip_opt" = "yes" ; then
2584
  echo "STRIP=${strip}" >> $config_host_mak
2585
fi
B
bellard 已提交
2586
if test "$bigendian" = "yes" ; then
2587
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
2588
fi
2589
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
2590
if test "$mingw32" = "yes" ; then
2591
  echo "CONFIG_WIN32=y" >> $config_host_mak
2592 2593 2594 2595 2596 2597 2598 2599 2600
  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
2601
else
J
Juan Quintela 已提交
2602
  echo "CONFIG_POSIX=y" >> $config_host_mak
M
Mark McLoughlin 已提交
2603 2604 2605 2606
fi

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

2609
if test "$darwin" = "yes" ; then
2610
  echo "CONFIG_DARWIN=y" >> $config_host_mak
2611
fi
M
malc 已提交
2612 2613

if test "$aix" = "yes" ; then
2614
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
2615 2616
fi

B
bellard 已提交
2617
if test "$solaris" = "yes" ; then
2618
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
2619
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
2620
  if test "$needs_libsunmath" = "yes" ; then
2621
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
2622
  fi
B
bellard 已提交
2623
fi
2624 2625 2626
if test "$haiku" = "yes" ; then
  echo "CONFIG_HAIKU=y" >> $config_host_mak
fi
2627
if test "$static" = "yes" ; then
2628
  echo "CONFIG_STATIC=y" >> $config_host_mak
B
bellard 已提交
2629
fi
2630
if test $profiler = "yes" ; then
2631
  echo "CONFIG_PROFILER=y" >> $config_host_mak
2632
fi
B
bellard 已提交
2633
if test "$slirp" = "yes" ; then
2634
  echo "CONFIG_SLIRP=y" >> $config_host_mak
2635
  QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
B
bellard 已提交
2636
fi
2637
if test "$vde" = "yes" ; then
2638
  echo "CONFIG_VDE=y" >> $config_host_mak
2639
fi
M
malc 已提交
2640
for card in $audio_card_list; do
P
pbrook 已提交
2641
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
2642
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2643
done
2644
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
2645
for drv in $audio_drv_list; do
P
pbrook 已提交
2646
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
2647
    echo "$def=y" >> $config_host_mak
M
malc 已提交
2648
    if test "$drv" = "fmod"; then
2649
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
2650 2651
    fi
done
2652 2653 2654
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
2655 2656 2657
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
2658
echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
2659
if test "$mixemu" = "yes" ; then
2660
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
2661
fi
J
Jes Sorensen 已提交
2662 2663 2664
if test "$vnc" = "yes" ; then
  echo "CONFIG_VNC=y" >> $config_host_mak
fi
2665
if test "$vnc_tls" = "yes" ; then
2666
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2667
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
2668
fi
2669
if test "$vnc_sasl" = "yes" ; then
2670
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
2671
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
2672
fi
J
Jes Sorensen 已提交
2673
if test "$vnc_jpeg" = "yes" ; then
2674 2675 2676
  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
fi
J
Jes Sorensen 已提交
2677
if test "$vnc_png" = "yes" ; then
C
Corentin Chary 已提交
2678 2679 2680
  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
fi
J
Jes Sorensen 已提交
2681
if test "$vnc_thread" = "yes" ; then
C
Corentin Chary 已提交
2682 2683
  echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
fi
2684
if test "$fnmatch" = "yes" ; then
2685
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
2686
fi
2687 2688 2689
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
C
Christoph Hellwig 已提交
2690 2691 2692
if test "$xfs" = "yes" ; then
  echo "CONFIG_XFS=y" >> $config_host_mak
fi
2693
qemu_version=`head $source_path/VERSION`
2694
echo "VERSION=$qemu_version" >>$config_host_mak
2695
echo "PKGVERSION=$pkgversion" >>$config_host_mak
2696 2697
echo "SRC_PATH=$source_path" >> $config_host_mak
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
2698
if [ "$docs" = "yes" ] ; then
2699
  echo "BUILD_DOCS=yes" >> $config_host_mak
2700
fi
2701
if test "$sdl" = "yes" ; then
2702
  echo "CONFIG_SDL=y" >> $config_host_mak
2703
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
2704 2705
fi
if test "$cocoa" = "yes" ; then
2706
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
2707 2708
fi
if test "$curses" = "yes" ; then
2709
  echo "CONFIG_CURSES=y" >> $config_host_mak
2710
fi
2711
if test "$atfile" = "yes" ; then
2712
  echo "CONFIG_ATFILE=y" >> $config_host_mak
2713
fi
R
Riku Voipio 已提交
2714
if test "$utimens" = "yes" ; then
2715
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
2716
fi
R
Riku Voipio 已提交
2717
if test "$pipe2" = "yes" ; then
2718
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
2719
fi
K
Kevin Wolf 已提交
2720 2721 2722
if test "$accept4" = "yes" ; then
  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
fi
2723
if test "$splice" = "yes" ; then
2724
  echo "CONFIG_SPLICE=y" >> $config_host_mak
2725
fi
R
Riku Voipio 已提交
2726 2727 2728
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
2729 2730 2731
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
2732 2733 2734
if test "$sync_file_range" = "yes" ; then
  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
fi
2735 2736 2737
if test "$fiemap" = "yes" ; then
  echo "CONFIG_FIEMAP=y" >> $config_host_mak
fi
2738 2739 2740
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
2741 2742 2743 2744 2745 2746 2747 2748 2749
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
2750
if test "$inotify" = "yes" ; then
2751
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
2752
fi
2753 2754 2755
if test "$inotify1" = "yes" ; then
  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
fi
2756 2757 2758 2759 2760 2761
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 已提交
2762
if test "$curl" = "yes" ; then
2763
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
2764
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
2765
fi
A
aurel32 已提交
2766
if test "$brlapi" = "yes" ; then
2767
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
2768
fi
B
balrog 已提交
2769
if test "$bluez" = "yes" ; then
2770
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2771
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
2772
fi
2773
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
2774
  echo "CONFIG_XEN=y" >> $config_host_mak
2775
fi
2776
if test "$io_thread" = "yes" ; then
2777
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2778
fi
2779 2780 2781
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
2782 2783 2784 2785 2786 2787 2788 2789
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 已提交
2790
if test "$blobs" = "yes" ; then
2791
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
2792
fi
A
aliguori 已提交
2793
if test "$iovec" = "yes" ; then
2794
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
2795
fi
2796
if test "$preadv" = "yes" ; then
2797
  echo "CONFIG_PREADV=y" >> $config_host_mak
2798
fi
2799
if test "$fdt" = "yes" ; then
2800
  echo "CONFIG_FDT=y" >> $config_host_mak
2801
fi
M
Marcelo Tosatti 已提交
2802 2803 2804
if test "$signalfd" = "yes" ; then
  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
fi
2805 2806 2807
if test "$need_offsetof" = "yes" ; then
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
fi
2808 2809 2810
if test "$gcc_attribute_warn_unused_result" = "yes" ; then
  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
2811 2812 2813
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
A
Andreas Färber 已提交
2814 2815 2816 2817 2818 2819
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
2820

2821 2822 2823 2824
if test "$spice" = "yes" ; then
  echo "CONFIG_SPICE=y" >> $config_host_mak
fi

2825
# XXX: suppress that
B
bellard 已提交
2826
if [ "$bsd" = "yes" ] ; then
2827
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
2828 2829
fi

2830
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2831

2832 2833 2834
if test "$zero_malloc" = "yes" ; then
  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
fi
2835 2836 2837
if test "$rbd" = "yes" ; then
  echo "CONFIG_RBD=y" >> $config_host_mak
fi
2838

2839 2840 2841
# USB host support
case "$usb" in
linux)
2842
  echo "HOST_USB=linux" >> $config_host_mak
2843 2844
;;
bsd)
2845
  echo "HOST_USB=bsd" >> $config_host_mak
2846 2847
;;
*)
2848
  echo "HOST_USB=stub" >> $config_host_mak
2849 2850 2851
;;
esac

2852
echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
2853 2854 2855
if test "$trace_backend" = "simple"; then
  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
2856 2857 2858 2859
# Set the appropriate trace file.
if test "$trace_backend" = "simple"; then
  trace_file="\"$trace_file-%u\""
fi
2860 2861 2862
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
  echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
fi
P
Prerna Saxena 已提交
2863 2864
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak

2865 2866
echo "TOOLS=$tools" >> $config_host_mak
echo "ROMS=$roms" >> $config_host_mak
2867 2868 2869 2870 2871 2872
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 已提交
2873
echo "CC_I386=$cc_i386" >> $config_host_mak
2874 2875 2876 2877
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
2878
echo "WINDRES=$windres" >> $config_host_mak
2879
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2880
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
2881
echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
P
Paolo Bonzini 已提交
2882 2883 2884 2885 2886
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 已提交
2887
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2888
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2889 2890
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
2891
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
2892
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2893 2894
echo "EXESUF=$EXESUF" >> $config_host_mak

2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906
# 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 已提交
2907 2908
for d in libdis libdis-user; do
    mkdir -p $d
2909
    symlink $source_path/Makefile.dis $d/Makefile
B
Blue Swirl 已提交
2910 2911
    echo > $d/config.mak
done
2912 2913 2914
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
fi
B
Blue Swirl 已提交
2915

2916
for target in $target_list; do
2917
target_dir="$target"
2918
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
2919
target_arch2=`echo $target | cut -d '-' -f 1`
2920
target_bigendian="no"
2921

2922
case "$target_arch2" in
M
Michael Walle 已提交
2923
  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
2924 2925 2926
  target_bigendian=yes
  ;;
esac
2927
target_softmmu="no"
B
bellard 已提交
2928
target_user_only="no"
2929 2930
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
2931
target_bsd_user="no"
P
pbrook 已提交
2932
case "$target" in
B
Blue Swirl 已提交
2933
  ${target_arch2}-softmmu)
P
pbrook 已提交
2934 2935
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
2936
  ${target_arch2}-linux-user)
2937 2938 2939 2940
    if test "$linux" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Linux host"
      exit 1
    fi
P
pbrook 已提交
2941 2942 2943
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
2944
  ${target_arch2}-darwin-user)
2945 2946 2947 2948
    if test "$darwin" != "yes" ; then
      echo "ERROR: Target '$target' is only available on a Darwin host"
      exit 1
    fi
P
pbrook 已提交
2949 2950 2951
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
2952
  ${target_arch2}-bsd-user)
B
Blue Swirl 已提交
2953
    if test "$bsd" != "yes" ; then
2954 2955 2956
      echo "ERROR: Target '$target' is only available on a BSD host"
      exit 1
    fi
B
blueswir1 已提交
2957 2958 2959
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
2960 2961 2962 2963 2964
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
2965

2966
mkdir -p $target_dir
B
bellard 已提交
2967
mkdir -p $target_dir/fpu
B
bellard 已提交
2968
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
2969
mkdir -p $target_dir/ide
B
blueswir1 已提交
2970
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
2971 2972
  mkdir -p $target_dir/nwfpe
fi
2973
symlink $source_path/Makefile.target $target_dir/Makefile
B
bellard 已提交
2974

2975

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

P
pbrook 已提交
2978
bflt="no"
2979
target_nptl="no"
B
Blue Swirl 已提交
2980
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
P
Paolo Bonzini 已提交
2981
echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
P
pbrook 已提交
2982
gdb_xml_files=""
2983 2984 2985 2986
target_short_alignment=2
target_int_alignment=4
target_long_alignment=4
target_llong_alignment=8
A
aliguori 已提交
2987

2988
TARGET_ARCH="$target_arch2"
2989
TARGET_BASE_ARCH=""
2990
TARGET_ABI_DIR=""
2991

B
Blue Swirl 已提交
2992
case "$target_arch2" in
A
aurel32 已提交
2993
  i386)
2994
    target_phys_bits=64
A
aurel32 已提交
2995 2996
  ;;
  x86_64)
2997
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
2998
    target_phys_bits=64
2999
    target_long_alignment=8
A
aurel32 已提交
3000 3001
  ;;
  alpha)
P
Paul Brook 已提交
3002
    target_phys_bits=64
3003
    target_long_alignment=8
R
Richard Henderson 已提交
3004
    target_nptl="yes"
A
aurel32 已提交
3005 3006
  ;;
  arm|armeb)
J
Juan Quintela 已提交
3007
    TARGET_ARCH=arm
A
aurel32 已提交
3008
    bflt="yes"
3009
    target_nptl="yes"
P
pbrook 已提交
3010
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
3011
    target_phys_bits=32
3012
    target_llong_alignment=4
A
aurel32 已提交
3013 3014
  ;;
  cris)
E
edgar_igl 已提交
3015
    target_nptl="yes"
P
Paul Brook 已提交
3016
    target_phys_bits=32
A
aurel32 已提交
3017
  ;;
M
Michael Walle 已提交
3018 3019 3020
  lm32)
    target_phys_bits=32
  ;;
A
aurel32 已提交
3021 3022
  m68k)
    bflt="yes"
P
pbrook 已提交
3023
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
3024
    target_phys_bits=32
3025 3026 3027
    target_int_alignment=2
    target_long_alignment=2
    target_llong_alignment=2
A
aurel32 已提交
3028
  ;;
3029 3030
  microblaze|microblazeel)
    TARGET_ARCH=microblaze
3031 3032 3033 3034
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
J
Juan Quintela 已提交
3035
  mips|mipsel)
J
Juan Quintela 已提交
3036
    TARGET_ARCH=mips
3037
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
3038
    target_nptl="yes"
P
Paul Brook 已提交
3039
    target_phys_bits=64
A
aurel32 已提交
3040 3041
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
3042
    TARGET_ARCH=mipsn32
3043
    TARGET_BASE_ARCH=mips
3044
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
P
Paul Brook 已提交
3045
    target_phys_bits=64
A
aurel32 已提交
3046 3047
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
3048
    TARGET_ARCH=mips64
3049
    TARGET_BASE_ARCH=mips
3050
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
P
Paul Brook 已提交
3051
    target_phys_bits=64
3052
    target_long_alignment=8
A
aurel32 已提交
3053 3054
  ;;
  ppc)
3055
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3056
    target_phys_bits=32
3057
    target_nptl="yes"
A
aurel32 已提交
3058 3059
  ;;
  ppcemb)
3060
    TARGET_BASE_ARCH=ppc
3061
    TARGET_ABI_DIR=ppc
3062
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3063
    target_phys_bits=64
3064
    target_nptl="yes"
A
aurel32 已提交
3065 3066
  ;;
  ppc64)
3067
    TARGET_BASE_ARCH=ppc
3068
    TARGET_ABI_DIR=ppc
3069
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3070
    target_phys_bits=64
3071
    target_long_alignment=8
A
aurel32 已提交
3072 3073
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
3074
    TARGET_ARCH=ppc64
3075
    TARGET_BASE_ARCH=ppc
3076
    TARGET_ABI_DIR=ppc
3077
    echo "TARGET_ABI32=y" >> $config_target_mak
3078
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
3079
    target_phys_bits=64
A
aurel32 已提交
3080 3081
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
3082
    TARGET_ARCH=sh4
A
aurel32 已提交
3083
    bflt="yes"
A
aurel32 已提交
3084
    target_nptl="yes"
P
Paul Brook 已提交
3085
    target_phys_bits=32
A
aurel32 已提交
3086 3087
  ;;
  sparc)
P
Paul Brook 已提交
3088
    target_phys_bits=64
A
aurel32 已提交
3089 3090
  ;;
  sparc64)
3091
    TARGET_BASE_ARCH=sparc
P
Paul Brook 已提交
3092
    target_phys_bits=64
3093
    target_long_alignment=8
A
aurel32 已提交
3094 3095
  ;;
  sparc32plus)
J
Juan Quintela 已提交
3096
    TARGET_ARCH=sparc64
3097
    TARGET_BASE_ARCH=sparc
3098
    TARGET_ABI_DIR=sparc
3099
    echo "TARGET_ABI32=y" >> $config_target_mak
P
Paul Brook 已提交
3100
    target_phys_bits=64
A
aurel32 已提交
3101
  ;;
3102 3103 3104
  s390x)
    target_phys_bits=64
  ;;
A
aurel32 已提交
3105 3106 3107 3108 3109
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
3110 3111 3112 3113
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
3114
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3115
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
3116 3117
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
3118
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
3119 3120 3121
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
3122
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3123 3124 3125
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
3126
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
J
Juan Quintela 已提交
3127 3128 3129
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3130
      echo "CONFIG_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
3131 3132
    fi
esac
J
Juan Quintela 已提交
3133
case "$target_arch2" in
A
Alexander Graf 已提交
3134
  i386|x86_64|ppcemb|ppc|ppc64|s390x)
J
Juan Quintela 已提交
3135 3136 3137 3138
    # 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 已提交
3139
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
R
René Rebe 已提交
3140 3141
      \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
J
Juan Quintela 已提交
3142 3143
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
3144 3145
      echo "CONFIG_KVM=y" >> $config_target_mak
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
3146 3147 3148
      if test "$kvm_para" = "yes"; then
        echo "CONFIG_KVM_PARA=y" >> $config_target_mak
      fi
M
Michael S. Tsirkin 已提交
3149 3150 3151
      if test $vhost_net = "yes" ; then
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
      fi
J
Juan Quintela 已提交
3152 3153
    fi
esac
B
bellard 已提交
3154
if test "$target_bigendian" = "yes" ; then
3155
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
3156
fi
3157
if test "$target_softmmu" = "yes" ; then
P
Paul Brook 已提交
3158
  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
3159 3160
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
  echo "LIBS+=$libs_softmmu" >> $config_target_mak
3161
  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
3162
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
3163
fi
B
bellard 已提交
3164
if test "$target_user_only" = "yes" ; then
3165
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
B
bellard 已提交
3166
fi
3167
if test "$target_linux_user" = "yes" ; then
3168
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
3169 3170
fi
if test "$target_darwin_user" = "yes" ; then
3171
  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
3172
fi
P
pbrook 已提交
3173 3174 3175 3176 3177
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
3178
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
3179
fi
3180

3181
case "$target_arch2" in
3182 3183
  i386|x86_64)
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
3184
    ;;
3185
  *)
3186
    echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
3187
    ;;
3188 3189
esac

P
pbrook 已提交
3190
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3191
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
3192
fi
3193 3194
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3195
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3196
fi
P
Paul Brook 已提交
3197
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3198
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
3199
fi
B
blueswir1 已提交
3200
if test "$target_bsd_user" = "yes" ; then
3201
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
3202
fi
3203

3204
# generate QEMU_CFLAGS/LDFLAGS for targets
3205

3206
cflags=""
3207
includes=""
3208
ldflags=""
3209

J
Juan Quintela 已提交
3210
if test "$ARCH" = "sparc64" ; then
3211
  includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3212
elif test "$ARCH" = "s390x" ; then
3213
  includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3214
elif test "$ARCH" = "x86_64" ; then
3215
  includes="-I\$(SRC_PATH)/tcg/i386 $includes"
J
Juan Quintela 已提交
3216
else
3217
  includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
J
Juan Quintela 已提交
3218
fi
3219 3220
includes="-I\$(SRC_PATH)/tcg $includes"
includes="-I\$(SRC_PATH)/fpu $includes"
J
Juan Quintela 已提交
3221

B
Blue Swirl 已提交
3222 3223 3224 3225 3226 3227
if test "$target_user_only" = "yes" ; then
    libdis_config_mak=libdis-user/config.mak
else
    libdis_config_mak=libdis/config.mak
fi

3228 3229 3230
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
3231
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3232
    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
3233 3234
  ;;
  arm)
3235
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3236
    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
3237 3238
  ;;
  cris)
3239
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3240
    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
3241 3242
  ;;
  hppa)
3243
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3244
    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
3245 3246
  ;;
  i386|x86_64)
3247
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3248
    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
3249
  ;;
A
Aurelien Jarno 已提交
3250 3251 3252 3253
  ia64*)
    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
  ;;
3254
  m68k)
3255
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3256
    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
3257
  ;;
3258
  microblaze*)
3259
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3260
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
3261 3262
  ;;
  mips*)
3263
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3264
    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
3265 3266
  ;;
  ppc*)
3267
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3268
    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
3269
  ;;
3270
  s390*)
3271
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3272
    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
3273 3274
  ;;
  sh4)
3275
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3276
    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
3277 3278
  ;;
  sparc*)
3279
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
B
Blue Swirl 已提交
3280
    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
3281 3282 3283 3284
  ;;
  esac
done

3285 3286 3287 3288 3289 3290 3291
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
esac

3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302
if test "$target_softmmu" = "yes" ; then
  case "$TARGET_BASE_ARCH" in
  arm)
    cflags="-DHAS_AUDIO $cflags"
  ;;
  i386|mips|ppc)
    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
  ;;
  esac
fi

3303
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3304
	"$user_pie" = "yes" ; then
3305 3306 3307 3308
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

3309 3310 3311
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
3312
  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3313 3314
fi

3315
if test "$gprof" = "yes" ; then
3316
  echo "TARGET_GPROF=yes" >> $config_target_mak
3317 3318 3319 3320 3321 3322
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
3323
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
3324 3325 3326
  fi
fi

3327
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3328
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3329 3330 3331
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
3332
    ldflags="$linker_script -static $ldflags"
3333
    ;;
3334 3335 3336
  alpha | s390x)
    # The default placement of the application is fine.
    ;;
R
Richard Henderson 已提交
3337
  *)
3338
    ldflags="$linker_script $ldflags"
3339 3340 3341 3342
    ;;
  esac
fi

3343 3344
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3345
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
3346

3347
done # for target in $targets
B
bellard 已提交
3348

P
Paolo Bonzini 已提交
3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361
# 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"
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"
FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
    FILES="$FILES pc-bios/`basename $bios_file`"
done
mkdir -p $DIRS
for f in $FILES ; do
A
Aurelien Jarno 已提交
3362
    test -e $f || symlink $source_path/$f $f
P
Paolo Bonzini 已提交
3363
done
P
Paul Brook 已提交
3364

3365
# temporary config to build submodules
3366
for rom in seabios vgabios ; do
3367
    config_mak=roms/$rom/config.mak
3368
    echo "# Automatically generated by configure - do not modify" > $config_mak
3369 3370 3371 3372 3373 3374 3375 3376 3377
    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 已提交
3378 3379 3380
for hwlib in 32 64; do
  d=libhw$hwlib
  mkdir -p $d
B
Blue Swirl 已提交
3381
  mkdir -p $d/ide
3382
  symlink $source_path/Makefile.hw $d/Makefile
3383
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
P
Paul Brook 已提交
3384
done
3385 3386 3387

d=libuser
mkdir -p $d
3388
symlink $source_path/Makefile.user $d/Makefile
3389 3390 3391
if test "$static" = "no" -a "$user_pie" = "yes" ; then
  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
fi
3392 3393 3394 3395

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