configure 85.4 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
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
2464 2465 2466
if test "$cpu" = "ppc64" ; then
  roms="$roms spapr-rtas"
fi
2467

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

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

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

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

2558
echo all: >> $config_host_mak
2559 2560 2561 2562 2563 2564
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
2565
echo "confdir=$confdir" >> $config_host_mak
2566

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

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

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

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

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

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

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

2832
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2833

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

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

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

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

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

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

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

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

2977

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

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

2990
TARGET_ARCH="$target_arch2"
2991
TARGET_BASE_ARCH=""
2992
TARGET_ABI_DIR=""
2993

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

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

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

3206
# generate QEMU_CFLAGS/LDFLAGS for targets
3207

3208
cflags=""
3209
includes=""
3210
ldflags=""
3211

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

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

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

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

3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304
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

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

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

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

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

3345 3346
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3347
echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
3348

3349
done # for target in $targets
B
bellard 已提交
3350

P
Paolo Bonzini 已提交
3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363
# 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 已提交
3364
    test -e $f || symlink $source_path/$f $f
P
Paolo Bonzini 已提交
3365
done
P
Paul Brook 已提交
3366

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

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

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