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

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

18
trap "rm -f $TMPC $TMPO $TMPE ; exit" 0 2 3 15
19

20
compile_object() {
J
Juan Quintela 已提交
21
  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
22 23 24 25 26
}

compile_prog() {
  local_cflags="$1"
  local_ldflags="$2"
J
Juan Quintela 已提交
27
  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags > /dev/null 2> /dev/null
28 29
}

B
bellard 已提交
30
# default parameters
31
cpu=""
B
bellard 已提交
32
prefix=""
33
interp_prefix="/usr/gnemul/qemu-%M"
B
bellard 已提交
34
static="no"
35
sparc_cpu=""
B
bellard 已提交
36 37
cross_prefix=""
cc="gcc"
M
malc 已提交
38
audio_drv_list=""
M
malc 已提交
39 40
audio_card_list="ac97 es1370 sb16"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
B
bellard 已提交
41 42 43
host_cc="gcc"
ar="ar"
make="make"
44
install="install"
45 46
objcopy="objcopy"
ld="ld"
J
Juan Quintela 已提交
47
helper_cflags=""
J
Juan Quintela 已提交
48
libs_softmmu=""
J
Juan Quintela 已提交
49
libs_tools=""
50
audio_pt_int=""
51
audio_win_int=""
52 53 54 55 56 57 58 59 60

# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
  --cc=*) cc="$optarg"
  ;;
61 62
  --cpu=*) cpu="$optarg"
  ;;
J
Juan Quintela 已提交
63
  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
64 65 66
  ;;
  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
  ;;
67 68 69
  --sparc_cpu=*)
    sparc_cpu="$optarg"
    case $sparc_cpu in
70
    v7|v8|v8plus|v8plusa)
71 72 73 74 75 76 77 78 79 80 81
      cpu="sparc"
    ;;
    v9)
      cpu="sparc64"
    ;;
    *)
      echo "undefined SPARC architecture. Exiting";
      exit 1
    ;;
    esac
  ;;
82 83 84 85 86 87 88 89
  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

cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
90 91
objcopy="${cross_prefix}${objcopy}"
ld="${cross_prefix}${ld}"
92 93 94 95 96 97

# check that the C compiler works.
cat > $TMPC <<EOF
int main(void) {}
EOF

98
if compile_object ; then
99 100 101 102 103 104 105 106 107 108 109 110 111
  : C compiler works ok
else
    echo "ERROR: \"$cc\" either does not exist or does not work"
    exit 1
fi

check_define() {
cat > $TMPC <<EOF
#if !defined($1)
#error Not defined
#endif
int main(void) { return 0; }
EOF
112
  compile_object
113 114
}

115 116 117 118
if test ! -z "$cpu" ; then
  # command line argument
  :
elif check_define __i386__ ; then
119 120 121
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
B
blueswir1 已提交
122 123 124 125 126 127 128 129
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 已提交
130 131 132 133 134 135
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
136
else
M
malc 已提交
137
  cpu=`uname -m`
138 139
fi

B
bellard 已提交
140
target_list=""
B
bellard 已提交
141
case "$cpu" in
142 143 144
  alpha|cris|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|sparc64)
    cpu="$cpu"
  ;;
B
bellard 已提交
145
  i386|i486|i586|i686|i86pc|BePC)
146
    cpu="i386"
B
bellard 已提交
147
  ;;
A
aurel32 已提交
148 149 150
  x86_64|amd64)
    cpu="x86_64"
  ;;
B
bellard 已提交
151
  armv*b)
152 153
    cpu="armv4b"
  ;;
B
bellard 已提交
154
  armv*l)
B
bellard 已提交
155 156
    cpu="armv4l"
  ;;
A
aurel32 已提交
157 158 159
  parisc|parisc64)
    cpu="hppa"
  ;;
T
ths 已提交
160
  s390*)
B
bellard 已提交
161 162
    cpu="s390"
  ;;
163
  sparc|sun4[cdmuv])
B
bellard 已提交
164 165
    cpu="sparc"
  ;;
B
bellard 已提交
166 167 168 169
  *)
    cpu="unknown"
  ;;
esac
J
Juan Quintela 已提交
170 171 172 173 174 175 176 177 178 179 180

# 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
#  * foo="yes", this value vill 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 feature is not found

181
bluez=""
182
brlapi=""
183
curl=""
184
curses=""
J
Juan Quintela 已提交
185
docs=""
186
fdt=""
187
kvm=""
188
nptl=""
189
sdl=""
190
sparse="no"
191
uuid=""
192
vde=""
193
vnc_tls=""
194
vnc_sasl=""
195
xen=""
196
linux_aio=""
197

B
bellard 已提交
198
gprof="no"
199
debug_tcg="no"
P
Paul Brook 已提交
200
debug="no"
201
strip_opt="yes"
B
bellard 已提交
202
bigendian="no"
B
bellard 已提交
203 204
mingw32="no"
EXESUF=""
B
bellard 已提交
205
slirp="yes"
B
bellard 已提交
206 207
fmod_lib=""
fmod_inc=""
B
blueswir1 已提交
208
oss_lib=""
209
bsd="no"
B
bellard 已提交
210
linux="no"
B
blueswir1 已提交
211
solaris="no"
212
profiler="no"
213
cocoa="no"
214
softmmu="yes"
215 216
linux_user="no"
darwin_user="no"
B
blueswir1 已提交
217
bsd_user="no"
P
Paul Brook 已提交
218
guest_base=""
219
uname_release=""
220
io_thread="no"
221
mixemu="no"
A
aliguori 已提交
222
kerneldir=""
M
malc 已提交
223
aix="no"
T
ths 已提交
224
blobs="yes"
P
pbrook 已提交
225
pkgversion=""
L
Luiz Capitulino 已提交
226
check_utests="no"
227
user_pie="no"
B
bellard 已提交
228 229

# OS specific
230 231 232 233
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
234 235 236 237
elif check_define __OpenBSD__ ; then
  targetos='OpenBSD'
elif check_define __sun__ ; then
  targetos='SunOS'
238 239 240
else
  targetos=`uname -s`
fi
241

B
bellard 已提交
242
case $targetos in
B
bellard 已提交
243
CYGWIN*)
244
  mingw32="yes"
J
Juan Quintela 已提交
245
  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
246 247
  audio_possible_drivers="winwave sdl"
  audio_drv_list="winwave"
B
bellard 已提交
248
;;
B
bellard 已提交
249
MINGW32*)
250
  mingw32="yes"
251 252
  audio_possible_drivers="winwave dsound sdl fmod"
  audio_drv_list="winwave"
B
bellard 已提交
253
;;
T
ths 已提交
254
GNU/kFreeBSD)
255 256
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
T
ths 已提交
257
;;
B
bellard 已提交
258
FreeBSD)
259 260 261
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
B
bellard 已提交
262
;;
263
DragonFly)
264 265 266
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd pa"
267
;;
B
bellard 已提交
268
NetBSD)
269 270 271 272
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
273 274
;;
OpenBSD)
275 276 277 278
  bsd="yes"
  audio_drv_list="oss"
  audio_possible_drivers="oss sdl esd"
  oss_lib="-lossaudio"
B
bellard 已提交
279
;;
280
Darwin)
281 282 283 284 285
  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 已提交
286 287
    is_x86_64=`sysctl -n hw.optional.x86_64`
    [ "$is_x86_64" = "1" ] && cpu=x86_64
288 289
  fi
  if [ "$cpu" = "x86_64" ] ; then
J
Juan Quintela 已提交
290
    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
291
    LDFLAGS="-arch x86_64 $LDFLAGS"
292
  else
J
Juan Quintela 已提交
293
    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
294 295 296 297 298 299
  fi
  darwin_user="yes"
  cocoa="yes"
  audio_drv_list="coreaudio"
  audio_possible_drivers="coreaudio sdl fmod"
  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
300
  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
301
;;
B
bellard 已提交
302
SunOS)
303 304 305
  solaris="yes"
  make="gmake"
  install="ginstall"
306
  ld="gld"
307 308 309 310 311 312 313 314 315 316 317 318
  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"
319 320 321
        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"
322 323 324 325 326 327 328
      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 已提交
329
    fi
330 331 332 333 334
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
335 336 337 338
# 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 已提交
339
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
340
  LIBS="-lsocket -lnsl -lresolv $LIBS"
T
ths 已提交
341
;;
M
malc 已提交
342
AIX)
343 344
  aix="yes"
  make="gmake"
M
malc 已提交
345
;;
346
*)
347 348 349 350 351 352
  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
353
    audio_possible_drivers="$audio_possible_drivers fmod"
354
  fi
B
bellard 已提交
355
;;
B
bellard 已提交
356 357
esac

B
bellard 已提交
358
if [ "$bsd" = "yes" ] ; then
359
  if [ "$darwin" != "yes" ] ; then
360
    make="gmake"
361
    usb="bsd"
362
  fi
B
blueswir1 已提交
363
  bsd_user="yes"
B
bellard 已提交
364 365
fi

366 367
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
368
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
369
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
370 371
fi

B
bellard 已提交
372
# find source path
P
pbrook 已提交
373
source_path=`dirname "$0"`
374 375
source_path_used="no"
workdir=`pwd`
P
pbrook 已提交
376
if [ -z "$source_path" ]; then
377
    source_path=$workdir
P
pbrook 已提交
378 379
else
    source_path=`cd "$source_path"; pwd`
B
bellard 已提交
380
fi
P
pbrook 已提交
381
[ -f "$workdir/vl.c" ] || source_path_used="yes"
B
bellard 已提交
382

383
werror=""
384

B
bellard 已提交
385
for opt do
P
pbrook 已提交
386
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
B
bellard 已提交
387
  case "$opt" in
388 389
  --help|-h) show_help=yes
  ;;
390
  --prefix=*) prefix="$optarg"
B
bellard 已提交
391
  ;;
392
  --interp-prefix=*) interp_prefix="$optarg"
B
bellard 已提交
393
  ;;
394
  --source-path=*) source_path="$optarg"
P
pbrook 已提交
395
  source_path_used="yes"
B
bellard 已提交
396
  ;;
397
  --cross-prefix=*)
B
bellard 已提交
398
  ;;
399
  --cc=*)
B
bellard 已提交
400
  ;;
401
  --host-cc=*) host_cc="$optarg"
B
bellard 已提交
402
  ;;
403
  --make=*) make="$optarg"
B
bellard 已提交
404
  ;;
405 406
  --install=*) install="$optarg"
  ;;
407
  --extra-cflags=*)
B
bellard 已提交
408
  ;;
409
  --extra-ldflags=*)
B
bellard 已提交
410
  ;;
411
  --cpu=*)
B
bellard 已提交
412
  ;;
413
  --target-list=*) target_list="$optarg"
B
bellard 已提交
414
  ;;
B
bellard 已提交
415 416
  --enable-gprof) gprof="yes"
  ;;
B
bellard 已提交
417 418
  --static) static="yes"
  ;;
419 420
  --disable-sdl) sdl="no"
  ;;
421 422
  --enable-sdl) sdl="yes"
  ;;
M
malc 已提交
423
  --fmod-lib=*) fmod_lib="$optarg"
424
  ;;
425 426
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
B
blueswir1 已提交
427 428
  --oss-lib=*) oss_lib="$optarg"
  ;;
429
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
B
bellard 已提交
430
  ;;
M
malc 已提交
431
  --audio-drv-list=*) audio_drv_list="$optarg"
B
bellard 已提交
432
  ;;
433 434 435 436
  --enable-debug-tcg) debug_tcg="yes"
  ;;
  --disable-debug-tcg) debug_tcg="no"
  ;;
P
Paul Brook 已提交
437 438 439 440 441 442
  --enable-debug)
      # Enable debugging options that aren't excessively noisy
      debug_tcg="yes"
      debug="yes"
      strip_opt="no"
  ;;
443 444 445 446
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
447 448
  --disable-strip) strip_opt="no"
  ;;
449 450
  --disable-vnc-tls) vnc_tls="no"
  ;;
451 452
  --enable-vnc-tls) vnc_tls="yes"
  ;;
453 454
  --disable-vnc-sasl) vnc_sasl="no"
  ;;
455 456
  --enable-vnc-sasl) vnc_sasl="yes"
  ;;
B
bellard 已提交
457
  --disable-slirp) slirp="no"
458
  ;;
459 460 461 462
  --disable-uuid) uuid="no"
  ;;
  --enable-uuid) uuid="yes"
  ;;
463
  --disable-vde) vde="no"
464
  ;;
465 466
  --enable-vde) vde="yes"
  ;;
467 468
  --disable-xen) xen="no"
  ;;
469 470
  --enable-xen) xen="yes"
  ;;
A
aurel32 已提交
471 472
  --disable-brlapi) brlapi="no"
  ;;
473 474
  --enable-brlapi) brlapi="yes"
  ;;
B
balrog 已提交
475 476
  --disable-bluez) bluez="no"
  ;;
477 478
  --enable-bluez) bluez="yes"
  ;;
A
aliguori 已提交
479 480
  --disable-kvm) kvm="no"
  ;;
481 482
  --enable-kvm) kvm="yes"
  ;;
483 484
  --enable-profiler) profiler="yes"
  ;;
485 486 487 488
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
489
  ;;
P
pbrook 已提交
490
  --disable-system) softmmu="no"
491
  ;;
P
pbrook 已提交
492
  --enable-system) softmmu="yes"
493
  ;;
494 495 496 497 498 499
  --disable-user)
      linux_user="no" ;
      bsd_user="no" ;
      darwin_user="no"
  ;;
  --enable-user) ;;
500
  --disable-linux-user) linux_user="no"
501
  ;;
502 503 504 505 506
  --enable-linux-user) linux_user="yes"
  ;;
  --disable-darwin-user) darwin_user="no"
  ;;
  --enable-darwin-user) darwin_user="yes"
507
  ;;
B
blueswir1 已提交
508 509 510 511
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
P
Paul Brook 已提交
512 513 514 515
  --enable-guest-base) guest_base="yes"
  ;;
  --disable-guest-base) guest_base="no"
  ;;
516 517 518 519
  --enable-user-pie) user_pie="yes"
  ;;
  --disable-user-pie) user_pie="no"
  ;;
520 521
  --enable-uname-release=*) uname_release="$optarg"
  ;;
522 523
  --sparc_cpu=*)
  ;;
524 525 526 527
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
B
balrog 已提交
528 529
  --disable-curses) curses="no"
  ;;
530 531
  --enable-curses) curses="yes"
  ;;
A
Alexander Graf 已提交
532 533
  --disable-curl) curl="no"
  ;;
534 535
  --enable-curl) curl="yes"
  ;;
536 537 538 539
  --disable-fdt) fdt="no"
  ;;
  --enable-fdt) fdt="yes"
  ;;
L
Luiz Capitulino 已提交
540 541 542 543
  --disable-check-utests) check_utests="no"
  ;;
  --enable-check-utests) check_utests="yes"
  ;;
544 545
  --disable-nptl) nptl="no"
  ;;
546 547
  --enable-nptl) nptl="yes"
  ;;
548 549
  --enable-mixemu) mixemu="yes"
  ;;
550 551 552 553
  --disable-linux-aio) linux_aio="no"
  ;;
  --enable-linux-aio) linux_aio="yes"
  ;;
554 555
  --enable-io-thread) io_thread="yes"
  ;;
T
ths 已提交
556 557
  --disable-blobs) blobs="no"
  ;;
A
aliguori 已提交
558 559
  --kerneldir=*) kerneldir="$optarg"
  ;;
P
pbrook 已提交
560 561
  --with-pkgversion=*) pkgversion=" ($optarg)"
  ;;
J
Juan Quintela 已提交
562
  --disable-docs) docs="no"
563
  ;;
J
Juan Quintela 已提交
564
  --enable-docs) docs="yes"
565
  ;;
566 567
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
B
bellard 已提交
568 569 570
  esac
done

571 572
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
J
Juan Quintela 已提交
573
# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
574
#
P
Paul Brook 已提交
575
host_guest_base="no"
576
case "$cpu" in
577 578
    sparc) case $sparc_cpu in
           v7|v8)
J
Juan Quintela 已提交
579
             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
580 581
           ;;
           v8plus|v8plusa)
J
Juan Quintela 已提交
582
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
583 584
           ;;
           *) # sparc_cpu not defined in the command line
J
Juan Quintela 已提交
585
             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
586 587
           esac
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
588
           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
589
           if test "$solaris" = "no" ; then
J
Juan Quintela 已提交
590
             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
J
Juan Quintela 已提交
591
             helper_cflags="-ffixed-i0"
592
           fi
593
           ;;
594
    sparc64)
J
Juan Quintela 已提交
595
           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
596
           LDFLAGS="-m64 $LDFLAGS"
J
Juan Quintela 已提交
597
           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
598
           if test "$solaris" != "no" ; then
J
Juan Quintela 已提交
599
             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
600
           fi
601
           ;;
602
    s390)
J
Juan Quintela 已提交
603
           QEMU_CFLAGS="-march=z900 $QEMU_CFLAGS"
604
           ;;
605
    i386)
J
Juan Quintela 已提交
606
           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
607
           LDFLAGS="-m32 $LDFLAGS"
J
Juan Quintela 已提交
608
           helper_cflags="-fomit-frame-pointer"
P
Paul Brook 已提交
609
           host_guest_base="yes"
610 611
           ;;
    x86_64)
J
Juan Quintela 已提交
612
           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
613
           LDFLAGS="-m64 $LDFLAGS"
P
Paul Brook 已提交
614 615 616 617
           host_guest_base="yes"
           ;;
    arm*)
           host_guest_base="yes"
618
           ;;
M
malc 已提交
619 620 621
    ppc*)
           host_guest_base="yes"
           ;;
622 623
esac

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

626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644
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]"
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
J
Juan Quintela 已提交
645
echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
646
echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
647
echo "  --make=MAKE              use specified make [$make]"
648
echo "  --install=INSTALL        use specified install [$install]"
649
echo "  --static                 enable static build [$static]"
650 651
echo "  --enable-debug-tcg       enable TCG debugging"
echo "  --disable-debug-tcg      disable TCG debugging (default)"
652
echo "  --enable-debug           enable common debug build options"
653 654
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
655
echo "  --disable-strip          disable stripping binaries"
656
echo "  --disable-werror         disable compilation abort on warning"
657
echo "  --disable-sdl            disable SDL"
658
echo "  --enable-sdl             enable SDL"
659
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
660 661
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
M
malc 已提交
662 663
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
664
echo "  --enable-mixemu          enable mixer emulation"
665
echo "  --disable-xen            disable xen backend driver support"
666
echo "  --enable-xen             enable xen backend driver support"
A
aurel32 已提交
667
echo "  --disable-brlapi         disable BrlAPI"
668
echo "  --enable-brlapi          enable BrlAPI"
669
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
670
echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
671
echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
672
echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
P
pbrook 已提交
673
echo "  --disable-curses         disable curses output"
674
echo "  --enable-curses          enable curses output"
A
Alexander Graf 已提交
675
echo "  --disable-curl           disable curl connectivity"
676
echo "  --enable-curl            enable curl connectivity"
677 678
echo "  --disable-fdt            disable fdt device tree"
echo "  --enable-fdt             enable fdt device tree"
L
Luiz Capitulino 已提交
679 680
echo "  --disable-check-utests   disable check unit-tests"
echo "  --enable-check-utests    enable check unit-tests"
B
balrog 已提交
681
echo "  --disable-bluez          disable bluez stack connectivity"
682
echo "  --enable-bluez           enable bluez stack connectivity"
A
aliguori 已提交
683
echo "  --disable-kvm            disable KVM acceleration support"
684
echo "  --enable-kvm             enable KVM acceleration support"
685
echo "  --disable-nptl           disable usermode NPTL support"
A
Andre Przywara 已提交
686
echo "  --enable-nptl            enable usermode NPTL support"
687 688
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
689 690
echo "  --enable-user            enable supported user emulation targets"
echo "  --disable-user           disable all user emulation targets"
691 692 693 694
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 已提交
695 696
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
P
Paul Brook 已提交
697 698 699
echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
echo "                           emulation targets"
echo "  --disable-guest-base     disable GUEST_BASE support"
700 701
echo "  --enable-user-pie        build usermode emulation targets as PIE"
echo "  --disable-user-pie       do not build usermode emulation targets as PIE"
702 703
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
B
blueswir1 已提交
704
echo "  --oss-lib                path to OSS library"
705
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
706
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
707 708
echo "  --disable-uuid           disable uuid support"
echo "  --enable-uuid            enable uuid support"
709
echo "  --disable-vde            disable support for vde network"
710
echo "  --enable-vde             enable support for vde network"
711 712
echo "  --disable-linux-aio      disable Linux AIO support"
echo "  --enable-linux-aio       enable Linux AIO support"
713
echo "  --enable-io-thread       enable IO thread"
T
ths 已提交
714
echo "  --disable-blobs          disable installing provided firmware blobs"
A
aliguori 已提交
715
echo "  --kerneldir=PATH         look for kernel includes in PATH"
716
echo ""
T
ths 已提交
717
echo "NOTE: The object files are built at the place where configure is launched"
718 719 720
exit 1
fi

B
bellard 已提交
721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745
#
# Solaris specific configure tool chain decisions
#
if test "$solaris" = "yes" ; then
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
  if test -z "$solinst" ; then
    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
  if test "$solinst" = "/usr/sbin/install" ; then
    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
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
  if test -z "$sol_ar" ; then
    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
746
fi
B
bellard 已提交
747 748


B
bellard 已提交
749 750
if test -z "$target_list" ; then
# these targets are portable
751
    if [ "$softmmu" = "yes" ] ; then
A
aurel32 已提交
752 753 754 755 756 757
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
m68k-softmmu \
758
microblaze-softmmu \
A
aurel32 已提交
759 760 761 762 763 764 765 766 767 768
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
769
sparc64-softmmu \
A
aurel32 已提交
770
"
771
    fi
B
bellard 已提交
772
# the following are Linux specific
773
    if [ "$linux_user" = "yes" ] ; then
A
aurel32 已提交
774 775 776 777 778 779 780 781
        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 \
782
microblaze-linux-user \
A
aurel32 已提交
783 784 785 786 787 788 789 790 791 792 793
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 \
"
794 795 796
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
M
malc 已提交
797
        target_list="$target_list i386-darwin-user ppc-darwin-user "
B
bellard 已提交
798
    fi
B
blueswir1 已提交
799 800 801
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
802 803 804
i386-bsd-user \
x86_64-bsd-user \
sparc-bsd-user \
B
blueswir1 已提交
805 806 807
sparc64-bsd-user \
"
    fi
808
else
809
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
B
bellard 已提交
810
fi
811 812 813 814
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
B
bellard 已提交
815

816 817 818 819 820
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
821
  echo "ERROR: configure was not able to find it"
822 823 824 825
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
826 827 828 829 830 831 832
if test -z "$cross_prefix" ; then

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

838
if compile_prog "" "" ; then
B
bellard 已提交
839 840 841 842 843 844 845 846
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
847 848 849 850 851
case "$cpu" in
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
    bigendian=yes
  ;;
esac
B
bellard 已提交
852 853 854

fi

B
bellard 已提交
855 856
# host long bits test
hostlongbits="32"
857 858 859 860 861
case "$cpu" in
  x86_64|alpha|ia64|sparc64|ppc64)
    hostlongbits=64
  ;;
esac
B
bellard 已提交
862

863 864 865 866 867 868

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

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
869
#include <sched.h>
P
pbrook 已提交
870
#include <linux/futex.h>
871 872 873 874 875 876 877 878
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

879 880 881 882 883 884 885 886
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
887 888
fi

889 890 891 892 893 894 895
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
896
if compile_prog "" "-lz" ; then
897 898 899 900 901 902 903 904 905
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

906 907 908
##########################################
# xen probe

909
if test "$xen" != "no" ; then
910 911
  xen_libs="-lxenstore -lxenctrl -lxenguest"
  cat > $TMPC <<EOF
912 913
#include <xenctrl.h>
#include <xs.h>
914
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
915
EOF
916
  if compile_prog "" "$xen_libs" ; then
917
    xen=yes
J
Juan Quintela 已提交
918
    libs_softmmu="$xen_libs $libs_softmmu"
919
  else
920 921 922 923
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no
924
  fi
925 926
fi

927 928 929 930 931 932 933 934 935 936 937 938 939
##########################################
# Sparse probe
if test "$sparse" != "no" ; then
  if test -x "$(which cgcc 2>/dev/null)"; then
    sparse=yes
  else
    if test "$sparse" = "yes" ; then
      feature_not_found "sparse"
    fi
    sparse=no
  fi
fi

B
bellard 已提交
940 941 942 943 944
##########################################
# SDL probe

sdl_too_old=no

945
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
946
  cat > $TMPC << EOF
B
bellard 已提交
947 948 949 950
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
J
Juan Quintela 已提交
951 952
  sdl_cflags=`sdl-config --cflags 2> /dev/null`
  sdl_libs=`sdl-config --libs 2> /dev/null`
953
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
954 955 956 957 958 959 960 961
    _sdlversion=`sdl-config --version | sed 's/[^0-9]//g'`
    if test "$_sdlversion" -lt 121 ; then
      sdl_too_old=yes
    else
      if test "$cocoa" = "no" ; then
        sdl=yes
      fi
    fi
A
aliguori 已提交
962

J
Juan Quintela 已提交
963 964 965 966 967 968 969
    # static link with sdl ?
    if test "$sdl" = "yes" -a "$static" = "yes" ; then
      sdl_libs=`sdl-config --static-libs 2>/dev/null`
      if test `sdl-config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` ; then
         sdl_libs="$sdl_libs `aalib-config --static-libs >2 /dev/null`"
         sdl_cflags="$sd_cflags `aalib-config --cflags >2 /dev/null`"
      fi
970
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
971 972 973 974 975
	:
      else
        sdl=no
      fi
    fi # static link
976 977 978 979 980
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
981
  fi # sdl compile test
982
fi
B
bellard 已提交
983

984
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
985
  cat > $TMPC <<EOF
986 987 988 989 990 991 992 993
#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
994
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
995 996
    sdl_libs="$sdl_libs -lX11"
  fi
997 998 999
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
1000
  libs_softmmu="$sdl_libs $libs_softmmu"
1001 1002
fi

1003 1004
##########################################
# VNC TLS detection
1005 1006
if test "$vnc_tls" != "no" ; then
  cat > $TMPC <<EOF
1007 1008 1009
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1010 1011 1012 1013 1014 1015 1016 1017
  vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
  vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
  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"
1018
    fi
1019 1020
    vnc_tls=no
  fi
1021 1022
fi

1023 1024
##########################################
# VNC SASL detection
J
Juan Quintela 已提交
1025
if test "$vnc_sasl" != "no" ; then
1026
  cat > $TMPC <<EOF
1027 1028 1029 1030
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1031 1032 1033 1034 1035 1036 1037 1038 1039
  # 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"
1040
    fi
1041 1042
    vnc_sasl=no
  fi
1043 1044
fi

1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1056
if compile_prog "" "" ; then
1057 1058 1059
   fnmatch="yes"
fi

1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084
##########################################
# 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

1085 1086
##########################################
# vde libraries probe
1087
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1088
  vde_libs="-lvdeplug"
1089 1090
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1091 1092 1093 1094 1095 1096
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1097
EOF
1098
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1099
    vde=yes
1100 1101
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1102 1103 1104 1105 1106
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1107
  fi
1108 1109
fi

1110
##########################################
1111
# Sound support libraries probe
1112

1113 1114 1115 1116 1117 1118 1119 1120 1121 1122
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1123
EOF
1124
    if compile_prog "$cfl" "$lib" ; then
1125 1126 1127 1128 1129 1130 1131 1132 1133 1134
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1135
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1136 1137 1138 1139 1140
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);"
1141
    libs_softmmu="-lasound $libs_softmmu"
1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152
    ;;

    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"
1153
    libs_softmmu="$fmod_lib $libs_softmmu"
1154 1155 1156 1157
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1158
    libs_softmmu="-lesd $libs_softmmu"
1159
    audio_pt_int="yes"
1160
    ;;
M
malc 已提交
1161 1162 1163 1164

    pa)
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1165
    libs_softmmu="-lpulse-simple $libs_softmmu"
1166
    audio_pt_int="yes"
M
malc 已提交
1167 1168
    ;;

1169 1170 1171 1172
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1173 1174
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1175
      audio_win_int="yes"
1176 1177 1178 1179 1180 1181 1182
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1183 1184 1185
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

1186 1187 1188 1189 1190
    winwave)
      libs_softmmu="-lwinmm $libs_softmmu"
      audio_win_int="yes"
    ;;

M
malc 已提交
1191
    *)
M
malc 已提交
1192
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1193 1194 1195 1196 1197 1198 1199
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1200 1201
    esac
done
1202

A
aurel32 已提交
1203 1204 1205
##########################################
# BrlAPI probe

1206
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1207 1208
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1209 1210 1211
#include <brlapi.h>
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1212
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1213
    brlapi=yes
1214
    libs_softmmu="$brlapi_libs $libs_softmmu"
1215 1216 1217 1218 1219
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1220 1221
  fi
fi
A
aurel32 已提交
1222

B
balrog 已提交
1223 1224
##########################################
# curses probe
1225
curses_list="-lncurses -lcurses"
B
balrog 已提交
1226

1227 1228
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1229 1230
  cat > $TMPC << EOF
#include <curses.h>
1231 1232 1233 1234
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1235
EOF
1236 1237
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1238
      curses_found=yes
1239 1240 1241 1242
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1243 1244 1245 1246 1247 1248 1249 1250
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1251
fi
B
balrog 已提交
1252

A
Alexander Graf 已提交
1253 1254 1255
##########################################
# curl probe

1256
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1257 1258 1259 1260
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
J
Juan Quintela 已提交
1261
  curl_cflags=`curl-config --cflags 2>/dev/null`
1262
  curl_libs=`curl-config --libs 2>/dev/null`
J
Juan Quintela 已提交
1263
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1264
    curl=yes
1265 1266
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1267 1268 1269 1270 1271
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1272 1273 1274
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294
##########################################
# 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
  check_libs=`pkg-config --libs check`
  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 已提交
1295 1296
##########################################
# bluez support probe
1297
if test "$bluez" != "no" ; then
1298 1299 1300 1301
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1302 1303
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1304
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1305
    bluez=yes
1306
    libs_softmmu="$bluez_libs $libs_softmmu"
1307
  else
1308 1309 1310
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1311 1312
    bluez="no"
  fi
B
balrog 已提交
1313 1314
fi

A
aliguori 已提交
1315 1316
##########################################
# kvm probe
1317
if test "$kvm" != "no" ; then
A
aliguori 已提交
1318 1319
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1320
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1321 1322
#error Invalid KVM version
#endif
1323 1324 1325 1326 1327 1328 1329 1330 1331
#if !defined(KVM_CAP_USER_MEMORY)
#error Missing KVM capability KVM_CAP_USER_MEMORY
#endif
#if !defined(KVM_CAP_SET_TSS_ADDR)
#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
#endif
#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
#endif
A
aliguori 已提交
1332 1333
int main(void) { return 0; }
EOF
A
aliguori 已提交
1334 1335
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1336 1337 1338
      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 已提交
1339 1340
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1341 1342 1343
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1344 1345 1346
  else
      kvm_cflags=""
  fi
1347
  if compile_prog "$kvm_cflags" "" ; then
1348
    kvm=yes
A
aliguori 已提交
1349
  else
1350 1351 1352 1353
    if test "$kvm" = "yes" ; then
      if [ -x "`which awk 2>/dev/null`" ] && \
         [ -x "`which grep 2>/dev/null`" ]; then
        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1354 1355
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1356 1357 1358 1359 1360
        if test "$kvmerr" != "" ; then
          echo -e "${kvmerr}\n\
      NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
  recent kvm-kmod from http://sourceforge.net/projects/kvm."
        fi
1361
      fi
1362
      feature_not_found "kvm"
1363
    fi
1364
    kvm=no
A
aliguori 已提交
1365 1366 1367
  fi
fi

1368
##########################################
1369
# pthread probe
1370
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1371

C
Christoph Hellwig 已提交
1372
pthread=no
1373
cat > $TMPC << EOF
1374
#include <pthread.h>
1375
int main(void) { pthread_create(0,0,0,0); return 0; }
1376
EOF
C
Christoph Hellwig 已提交
1377 1378 1379 1380 1381 1382 1383
for pthread_lib in $PTHREADLIBS_LIST; do
  if compile_prog "" "$pthread_lib" ; then
    pthread=yes
    LIBS="$pthread_lib $LIBS"
    break
  fi
done
1384

1385
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1386 1387 1388 1389 1390
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1391 1392
fi

1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408
##########################################
# linux-aio probe

if test "$linux_aio" != "no" ; then
  cat > $TMPC <<EOF
#include <libaio.h>
#include <sys/eventfd.h>
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
    LIBS="$LIBS -laio"
  else
    if test "$linux_aio" = "yes" ; then
      feature_not_found "linux AIO"
    fi
1409
    linux_aio=no
1410 1411 1412
  fi
fi

A
aliguori 已提交
1413 1414 1415
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
1416
#include <sys/types.h>
A
aliguori 已提交
1417
#include <sys/uio.h>
B
blueswir1 已提交
1418
#include <unistd.h>
A
aliguori 已提交
1419 1420 1421
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1422
if compile_prog "" "" ; then
A
aliguori 已提交
1423 1424 1425
  iovec=yes
fi

1426 1427 1428 1429 1430 1431 1432 1433 1434
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1435
if compile_prog "" "" ; then
1436 1437 1438
  preadv=yes
fi

1439 1440
##########################################
# fdt probe
1441
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
1442 1443
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1444 1445
int main(void) { return 0; }
EOF
1446
  if compile_prog "" "$fdt_libs" ; then
1447
    fdt=yes
J
Juan Quintela 已提交
1448
    libs_softmmu="$fdt_libs $libs_softmmu"
1449 1450 1451 1452 1453
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
    fdt=no
1454 1455 1456
  fi
fi

1457 1458 1459 1460 1461 1462
#
# 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
1463
cat > $TMPC << EOF
1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475
#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
1476
if compile_prog "" "" ; then
1477
  atfile=yes
1478 1479
fi

A
aurel32 已提交
1480
# Check for inotify functions when we are building linux-user
1481 1482 1483 1484 1485
# 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
1486
cat > $TMPC << EOF
1487 1488 1489 1490 1491 1492
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1493
	return inotify_init();
1494 1495
}
EOF
1496
if compile_prog "" "" ; then
1497
  inotify=yes
1498 1499
fi

R
Riku Voipio 已提交
1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514
# check if utimensat and futimens are supported
utimens=no
cat > $TMPC << EOF
#define _ATFILE_SOURCE
#define _GNU_SOURCE
#include <stddef.h>
#include <fcntl.h>

int main(void)
{
    utimensat(AT_FDCWD, "foo", NULL, 0);
    futimens(0, NULL);
    return 0;
}
EOF
1515
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1516 1517 1518
  utimens=yes
fi

R
Riku Voipio 已提交
1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532
# check if pipe2 is there
pipe2=no
cat > $TMPC << EOF
#define _GNU_SOURCE
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    int pipefd[2];
    pipe2(pipefd, O_CLOEXEC);
    return 0;
}
EOF
1533
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1534 1535 1536
  pipe2=yes
fi

1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552
# check if tee/splice is there. vmsplice was added same time.
splice=no
cat > $TMPC << EOF
#define _GNU_SOURCE
#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
1553
if compile_prog "" "" ; then
1554 1555 1556
  splice=yes
fi

R
Riku Voipio 已提交
1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571
# 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

1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601
# check for fallocate
fallocate=no
cat > $TMPC << EOF
#include <fcntl.h>

int main(void)
{
    fallocate(0, 0, 0, 0);
    return 0;
}
EOF
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
  fallocate=yes
fi

# check for dup3
dup3=no
cat > $TMPC << EOF
#include <unistd.h>

int main(void)
{
    dup3(0, 0, 0);
    return 0;
}
EOF
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
  dup3=yes
fi

1602
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
1603
if test "$docs" != "no" ; then
1604 1605
  if test -x "`which texi2html 2>/dev/null`" -a \
          -x "`which pod2man 2>/dev/null`" ; then
J
Juan Quintela 已提交
1606
    docs=yes
1607
  else
J
Juan Quintela 已提交
1608 1609
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
1610
    fi
J
Juan Quintela 已提交
1611
    docs=no
1612
  fi
1613 1614
fi

S
Stefan Weil 已提交
1615
# Search for bswap_32 function
1616 1617 1618 1619 1620
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1621
if compile_prog "" "" ; then
1622 1623 1624
  byteswap_h=yes
fi

S
Stefan Weil 已提交
1625
# Search for bswap_32 function
1626 1627 1628 1629 1630 1631 1632
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
1633
if compile_prog "" "" ; then
1634 1635 1636
  bswap_h=yes
fi

A
aliguori 已提交
1637 1638 1639 1640 1641 1642 1643 1644
##########################################
# 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

1645
if compile_prog "" "" ; then
1646
  :
1647
elif compile_prog "" "-lrt" ; then
1648
  LIBS="-lrt $LIBS"
A
aliguori 已提交
1649 1650
fi

1651 1652 1653 1654 1655 1656 1657
# Determine what linker flags to use to force archive inclusion
check_linker_flags()
{
    w2=
    if test "$2" ; then
	w2=-Wl,$2
    fi
1658
    compile_prog "" "-Wl,$1 ${w2}"
1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669
}

cat > $TMPC << EOF
int main(void) { }
EOF
if check_linker_flags --whole-archive --no-whole-archive ; then
    # GNU ld
    arlibs_begin="-Wl,--whole-archive"
    arlibs_end="-Wl,--no-whole-archive"
elif check_linker_flags -z,allextract -z,defaultextract ; then
    # Solaris ld
1670
    arlibs_begin="-Wl,-z,allextract"
1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681
    arlibs_end="-Wl,-z,defaultextract"
elif check_linker_flags -all_load ; then
    # Mac OS X
    arlibs_begin="-all_load"
    arlibs_end=""
else
    echo "Error: your linker does not support --whole-archive or -z."
    echo "Please report to qemu-devel@nongnu.org"
    exit 1
fi

1682
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
1683 1684 1685 1686
        "$aix" != "yes" ; then
    libs_softmmu="-lutil $libs_softmmu"
fi

1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698
##########################################
# 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

1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715
##########################################
# 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

B
Blue Swirl 已提交
1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727
##########################################
# 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

1728 1729 1730 1731
# End of CC checks
# After here, no more $cc or $ld runs

# default flags for all hosts
J
Juan Quintela 已提交
1732 1733
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
1734
if test "$debug" = "no" ; then
1735
  CFLAGS="-O2 $CFLAGS"
1736
fi
J
Juan Quintela 已提交
1737 1738
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
1739 1740
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
1741
QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
1742
LDFLAGS="-g $LDFLAGS"
1743

J
Juan Quintela 已提交
1744 1745 1746 1747 1748 1749 1750 1751 1752 1753
gcc_flags="-Wold-style-declaration -Wold-style-definition"
cat > $TMPC << EOF
int main(void) { }
EOF
for flag in $gcc_flags; do
    if compile_prog "$QEMU_CFLAGS" "$flag" ; then
	QEMU_CFLAGS="$flag $QEMU_CFLAGS"
    fi
done

1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766
# Consult white-list to determine whether to enable werror
# by default.  Only enable by default for git builds
if test -z "$werror" ; then
    z_version=`cut -f3 -d. $source_path/VERSION`
    if test "$z_version" = "50" -a \
        "$linux" = "yes" ; then
        werror="yes"
    else
        werror="no"
    fi
fi

if test "$werror" = "yes" ; then
J
Juan Quintela 已提交
1767
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
1768 1769 1770 1771
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
1772
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
1773 1774 1775
    fi
fi

B
bellard 已提交
1776
if test "$mingw32" = "yes" ; then
P
pbrook 已提交
1777
  if test -z "$prefix" ; then
S
Stefan Weil 已提交
1778
      prefix="c:/Program Files/Qemu"
P
pbrook 已提交
1779 1780 1781 1782 1783
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
B
bellard 已提交
1784
else
P
pbrook 已提交
1785 1786 1787 1788 1789 1790 1791
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
B
bellard 已提交
1792
fi
1793

B
bellard 已提交
1794
echo "Install prefix    $prefix"
P
pbrook 已提交
1795 1796
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
B
bellard 已提交
1797
if test "$mingw32" = "no" ; then
P
pbrook 已提交
1798
echo "Manual directory  $prefix$mansuffix"
B
bellard 已提交
1799
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
1800
fi
1801
echo "Source path       $source_path"
B
bellard 已提交
1802
echo "C compiler        $cc"
B
bellard 已提交
1803
echo "Host C compiler   $host_cc"
1804
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
1805
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
1806
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
1807
echo "make              $make"
1808
echo "install           $install"
B
bellard 已提交
1809
echo "host CPU          $cpu"
B
bellard 已提交
1810
echo "host big endian   $bigendian"
1811
echo "target list       $target_list"
1812
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
1813
echo "gprof enabled     $gprof"
1814
echo "sparse enabled    $sparse"
1815
echo "strip binaries    $strip_opt"
1816
echo "profiler          $profiler"
B
bellard 已提交
1817
echo "static build      $static"
1818
echo "-Werror enabled   $werror"
1819 1820 1821
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1822
echo "SDL support       $sdl"
B
balrog 已提交
1823
echo "curses support    $curses"
A
Alexander Graf 已提交
1824
echo "curl support      $curl"
L
Luiz Capitulino 已提交
1825
echo "check support     $check_utests"
B
bellard 已提交
1826
echo "mingw32 support   $mingw32"
M
malc 已提交
1827 1828
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
1829
echo "Mixer emulation   $mixemu"
1830
echo "VNC TLS support   $vnc_tls"
1831
echo "VNC SASL support  $vnc_sasl"
1832 1833 1834
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
1835
echo "xen support       $xen"
A
aurel32 已提交
1836
echo "brlapi support    $brlapi"
1837
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
1838
echo "Documentation     $docs"
1839 1840
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
1841
echo "NPTL support      $nptl"
P
Paul Brook 已提交
1842
echo "GUEST_BASE        $guest_base"
1843
echo "PIE user targets  $user_pie"
1844
echo "vde support       $vde"
1845
echo "IO thread         $io_thread"
1846
echo "Linux AIO support $linux_aio"
T
ths 已提交
1847
echo "Install blobs     $blobs"
1848
echo "KVM support       $kvm"
1849
echo "fdt support       $fdt"
1850
echo "preadv support    $preadv"
B
Blue Swirl 已提交
1851
echo "fdatasync         $fdatasync"
1852
echo "uuid support      $uuid"
B
bellard 已提交
1853

1854
if test $sdl_too_old = "yes"; then
B
bellard 已提交
1855
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
1856
fi
B
bellard 已提交
1857

1858
config_host_mak="config-host.mak"
1859
config_host_ld="config-host.ld"
1860 1861 1862 1863 1864 1865

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

1866
echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak
1867

A
aurel32 已提交
1868
case "$cpu" in
1869
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1870
    ARCH=$cpu
A
aurel32 已提交
1871
  ;;
1872
  armv4b|armv4l)
1873
    ARCH=arm
A
aurel32 已提交
1874 1875 1876 1877 1878 1879
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1880
echo "ARCH=$ARCH" >> $config_host_mak
1881
if test "$debug_tcg" = "yes" ; then
1882
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1883
fi
P
Paul Brook 已提交
1884
if test "$debug" = "yes" ; then
1885
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
1886
fi
1887
if test "$strip_opt" = "yes" ; then
1888
  echo "STRIP_OPT=-s" >> $config_host_mak
1889
fi
B
bellard 已提交
1890
if test "$bigendian" = "yes" ; then
1891
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1892
fi
1893
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
1894
if test "$mingw32" = "yes" ; then
1895
  echo "CONFIG_WIN32=y" >> $config_host_mak
1896
else
J
Juan Quintela 已提交
1897
  echo "CONFIG_POSIX=y" >> $config_host_mak
B
bellard 已提交
1898
fi
1899

1900
if test "$darwin" = "yes" ; then
1901
  echo "CONFIG_DARWIN=y" >> $config_host_mak
1902
fi
M
malc 已提交
1903 1904

if test "$aix" = "yes" ; then
1905
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
1906 1907
fi

B
bellard 已提交
1908
if test "$solaris" = "yes" ; then
1909
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
1910
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
1911
  if test "$needs_libsunmath" = "yes" ; then
1912
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
1913
  fi
B
bellard 已提交
1914
fi
1915
if test "$static" = "yes" ; then
1916
  echo "CONFIG_STATIC=y" >> $config_host_mak
1917
  LDFLAGS="-static $LDFLAGS"
B
bellard 已提交
1918
fi
1919
if test $profiler = "yes" ; then
1920
  echo "CONFIG_PROFILER=y" >> $config_host_mak
1921
fi
B
bellard 已提交
1922
if test "$slirp" = "yes" ; then
1923
  echo "CONFIG_SLIRP=y" >> $config_host_mak
1924
  QEMU_CFLAGS="-I\$(SRC_PATH)/slirp $QEMU_CFLAGS"
B
bellard 已提交
1925
fi
1926
if test "$vde" = "yes" ; then
1927
  echo "CONFIG_VDE=y" >> $config_host_mak
1928
fi
M
malc 已提交
1929
for card in $audio_card_list; do
P
pbrook 已提交
1930
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1931
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1932
done
1933
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
1934
for drv in $audio_drv_list; do
P
pbrook 已提交
1935
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1936
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1937
    if test "$drv" = "fmod"; then
1938
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
1939 1940
    fi
done
1941 1942 1943
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
1944 1945 1946
if test "$audio_win_int" = "yes" ; then
  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
fi
1947
if test "$mixemu" = "yes" ; then
1948
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
1949
fi
1950
if test "$vnc_tls" = "yes" ; then
1951
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1952
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1953
fi
1954
if test "$vnc_sasl" = "yes" ; then
1955
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1956
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1957
fi
1958
if test "$fnmatch" = "yes" ; then
1959
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
1960
fi
1961 1962 1963
if test "$uuid" = "yes" ; then
  echo "CONFIG_UUID=y" >> $config_host_mak
fi
1964
qemu_version=`head $source_path/VERSION`
1965
echo "VERSION=$qemu_version" >>$config_host_mak
1966
echo "PKGVERSION=$pkgversion" >>$config_host_mak
1967
echo "SRC_PATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1968
if [ "$source_path_used" = "yes" ]; then
1969
  echo "VPATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1970
fi
1971
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
1972
if [ "$docs" = "yes" ] ; then
1973
  echo "BUILD_DOCS=yes" >> $config_host_mak
1974
fi
1975
if test "$sdl" = "yes" ; then
1976
  echo "CONFIG_SDL=y" >> $config_host_mak
1977
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
1978 1979
fi
if test "$cocoa" = "yes" ; then
1980
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
1981 1982
fi
if test "$curses" = "yes" ; then
1983
  echo "CONFIG_CURSES=y" >> $config_host_mak
1984
fi
1985
if test "$atfile" = "yes" ; then
1986
  echo "CONFIG_ATFILE=y" >> $config_host_mak
1987
fi
R
Riku Voipio 已提交
1988
if test "$utimens" = "yes" ; then
1989
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
1990
fi
R
Riku Voipio 已提交
1991
if test "$pipe2" = "yes" ; then
1992
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
1993
fi
1994
if test "$splice" = "yes" ; then
1995
  echo "CONFIG_SPLICE=y" >> $config_host_mak
1996
fi
R
Riku Voipio 已提交
1997 1998 1999
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
2000 2001 2002 2003 2004 2005
if test "$fallocate" = "yes" ; then
  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
fi
if test "$dup3" = "yes" ; then
  echo "CONFIG_DUP3=y" >> $config_host_mak
fi
2006
if test "$inotify" = "yes" ; then
2007
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
2008
fi
2009 2010 2011 2012 2013 2014
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 已提交
2015
if test "$curl" = "yes" ; then
2016
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
2017
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
2018
fi
A
aurel32 已提交
2019
if test "$brlapi" = "yes" ; then
2020
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
2021
fi
B
balrog 已提交
2022
if test "$bluez" = "yes" ; then
2023
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2024
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
2025
fi
2026
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
2027
  echo "CONFIG_XEN=y" >> $config_host_mak
2028
fi
2029
if test "$io_thread" = "yes" ; then
2030
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2031
fi
2032 2033 2034
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
T
ths 已提交
2035
if test "$blobs" = "yes" ; then
2036
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
2037
fi
A
aliguori 已提交
2038
if test "$iovec" = "yes" ; then
2039
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
2040
fi
2041
if test "$preadv" = "yes" ; then
2042
  echo "CONFIG_PREADV=y" >> $config_host_mak
2043
fi
2044
if test "$fdt" = "yes" ; then
2045
  echo "CONFIG_FDT=y" >> $config_host_mak
2046
fi
2047 2048 2049
if test "$need_offsetof" = "yes" ; then
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
fi
2050 2051 2052
if test "$gcc_attribute_warn_unused_result" = "yes" ; then
  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
2053 2054 2055
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
2056

2057
# XXX: suppress that
B
bellard 已提交
2058
if [ "$bsd" = "yes" ] ; then
2059
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
2060 2061
fi

2062
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2063

2064 2065 2066
# USB host support
case "$usb" in
linux)
2067
  echo "HOST_USB=linux" >> $config_host_mak
2068 2069
;;
bsd)
2070
  echo "HOST_USB=bsd" >> $config_host_mak
2071 2072
;;
*)
2073
  echo "HOST_USB=stub" >> $config_host_mak
2074 2075 2076
;;
esac

2077 2078
tools=
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
A
aliguori 已提交
2079
  tools="qemu-img\$(EXESUF) $tools"
B
bellard 已提交
2080
  if [ "$linux" = "yes" ] ; then
A
aliguori 已提交
2081
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
L
Luiz Capitulino 已提交
2082
    if [ "$check_utests" = "yes" ]; then
L
Luiz Capitulino 已提交
2083
      tools="check-qint check-qstring check-qdict check-qlist $tools"
L
Luiz Capitulino 已提交
2084
    fi
2085 2086
  elif test "$mingw32" = "yes" ; then
      tools="qemu-io\$(EXESUF) $tools"
B
bellard 已提交
2087
  fi
2088
fi
2089
echo "TOOLS=$tools" >> $config_host_mak
2090

2091
# Mac OS X ships with a broken assembler
A
Alexander Graf 已提交
2092
roms=
2093
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
2094 2095
        "$targetos" != "Darwin" -a \
        `expr "$target_list" : ".*softmmu.*"` != 0 ; then
P
Paul Brook 已提交
2096
  roms="optionrom"
A
Alexander Graf 已提交
2097
fi
2098
echo "ROMS=$roms" >> $config_host_mak
A
Alexander Graf 已提交
2099

2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114
echo "prefix=$prefix" >> $config_host_mak
echo "bindir=\${prefix}$binsuffix" >> $config_host_mak
echo "mandir=\${prefix}$mansuffix" >> $config_host_mak
echo "datadir=\${prefix}$datasuffix" >> $config_host_mak
echo "docdir=\${prefix}$docsuffix" >> $config_host_mak
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
echo "HOST_CC=$host_cc" >> $config_host_mak
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
J
Juan Quintela 已提交
2115
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2116 2117 2118 2119
fi
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
2120
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2121
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2122
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2123
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2124 2125
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
2126
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
2127
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2128 2129
echo "EXESUF=$EXESUF" >> $config_host_mak

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

2142
for target in $target_list; do
2143
target_dir="$target"
2144
config_target_mak=$target_dir/config-target.mak
B
Blue Swirl 已提交
2145
target_arch2=`echo $target | cut -d '-' -f 1`
2146
target_bigendian="no"
2147

2148 2149 2150 2151 2152
case "$target_arch2" in
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
  target_bigendian=yes
  ;;
esac
2153
target_softmmu="no"
B
bellard 已提交
2154
target_user_only="no"
2155 2156
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
2157
target_bsd_user="no"
P
pbrook 已提交
2158
case "$target" in
B
Blue Swirl 已提交
2159
  ${target_arch2}-softmmu)
P
pbrook 已提交
2160 2161
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
2162
  ${target_arch2}-linux-user)
P
pbrook 已提交
2163 2164 2165
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
2166
  ${target_arch2}-darwin-user)
P
pbrook 已提交
2167 2168 2169
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
2170
  ${target_arch2}-bsd-user)
B
blueswir1 已提交
2171 2172 2173
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
2174 2175 2176 2177 2178
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
2179

2180
mkdir -p $target_dir
B
bellard 已提交
2181
mkdir -p $target_dir/fpu
B
bellard 已提交
2182
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
2183
mkdir -p $target_dir/ide
B
blueswir1 已提交
2184
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
2185 2186 2187
  mkdir -p $target_dir/nwfpe
fi

2188 2189 2190 2191
if test ! -f $target_dir/config-devices.mak ; then
  cp $source_path/default-configs/${target}.mak $target_dir/config-devices.mak
fi

B
bellard 已提交
2192 2193 2194 2195 2196 2197
#
# don't use ln -sf as not all "ln -sf" over write the file/link
#
rm -f $target_dir/Makefile
ln -s $source_path/Makefile.target $target_dir/Makefile

2198

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

P
pbrook 已提交
2201
bflt="no"
2202
elfload32="no"
2203
target_nptl="no"
B
Blue Swirl 已提交
2204
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
2205
echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
P
pbrook 已提交
2206
gdb_xml_files=""
A
aliguori 已提交
2207

2208
TARGET_ARCH="$target_arch2"
2209
TARGET_BASE_ARCH=""
2210
TARGET_ABI_DIR=""
2211

B
Blue Swirl 已提交
2212
case "$target_arch2" in
A
aurel32 已提交
2213
  i386)
P
Paul Brook 已提交
2214
    target_phys_bits=32
A
aurel32 已提交
2215 2216
  ;;
  x86_64)
2217
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
2218
    target_phys_bits=64
A
aurel32 已提交
2219 2220
  ;;
  alpha)
P
Paul Brook 已提交
2221
    target_phys_bits=64
A
aurel32 已提交
2222 2223
  ;;
  arm|armeb)
J
Juan Quintela 已提交
2224
    TARGET_ARCH=arm
A
aurel32 已提交
2225
    bflt="yes"
2226
    target_nptl="yes"
P
pbrook 已提交
2227
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
2228
    target_phys_bits=32
A
aurel32 已提交
2229 2230
  ;;
  cris)
E
edgar_igl 已提交
2231
    target_nptl="yes"
P
Paul Brook 已提交
2232
    target_phys_bits=32
A
aurel32 已提交
2233 2234 2235
  ;;
  m68k)
    bflt="yes"
P
pbrook 已提交
2236
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
2237
    target_phys_bits=32
A
aurel32 已提交
2238
  ;;
2239 2240 2241 2242 2243
  microblaze)
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
J
Juan Quintela 已提交
2244
  mips|mipsel)
J
Juan Quintela 已提交
2245
    TARGET_ARCH=mips
2246
    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
P
Paul Brook 已提交
2247
    target_nptl="yes"
P
Paul Brook 已提交
2248
    target_phys_bits=64
A
aurel32 已提交
2249 2250
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
2251
    TARGET_ARCH=mipsn32
2252
    TARGET_BASE_ARCH=mips
2253
    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
P
Paul Brook 已提交
2254
    target_phys_bits=64
A
aurel32 已提交
2255 2256
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
2257
    TARGET_ARCH=mips64
2258
    TARGET_BASE_ARCH=mips
2259
    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
P
Paul Brook 已提交
2260
    target_phys_bits=64
A
aurel32 已提交
2261 2262
  ;;
  ppc)
2263
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2264
    target_phys_bits=32
2265
    target_nptl="yes"
A
aurel32 已提交
2266 2267
  ;;
  ppcemb)
2268
    TARGET_BASE_ARCH=ppc
2269
    TARGET_ABI_DIR=ppc
2270
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2271
    target_phys_bits=64
2272
    target_nptl="yes"
A
aurel32 已提交
2273 2274
  ;;
  ppc64)
2275
    TARGET_BASE_ARCH=ppc
2276
    TARGET_ABI_DIR=ppc
2277
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2278
    target_phys_bits=64
A
aurel32 已提交
2279 2280
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
2281
    TARGET_ARCH=ppc64
2282
    TARGET_BASE_ARCH=ppc
2283
    TARGET_ABI_DIR=ppc
2284
    echo "TARGET_ABI32=y" >> $config_target_mak
2285
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2286
    target_phys_bits=64
A
aurel32 已提交
2287 2288
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
2289
    TARGET_ARCH=sh4
A
aurel32 已提交
2290
    bflt="yes"
A
aurel32 已提交
2291
    target_nptl="yes"
P
Paul Brook 已提交
2292
    target_phys_bits=32
A
aurel32 已提交
2293 2294
  ;;
  sparc)
P
Paul Brook 已提交
2295
    target_phys_bits=64
A
aurel32 已提交
2296 2297
  ;;
  sparc64)
2298
    TARGET_BASE_ARCH=sparc
A
aurel32 已提交
2299
    elfload32="yes"
P
Paul Brook 已提交
2300
    target_phys_bits=64
A
aurel32 已提交
2301 2302
  ;;
  sparc32plus)
J
Juan Quintela 已提交
2303
    TARGET_ARCH=sparc64
2304
    TARGET_BASE_ARCH=sparc
2305
    TARGET_ABI_DIR=sparc
2306
    echo "TARGET_ABI32=y" >> $config_target_mak
P
Paul Brook 已提交
2307
    target_phys_bits=64
A
aurel32 已提交
2308 2309 2310 2311 2312 2313
  ;;
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
2314
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
2315
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
2316 2317
echo "TARGET_$target_arch_name=y" >> $config_target_mak
echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
2318
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2319 2320 2321
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
2322
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
2323 2324 2325
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
2326
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
P
Paul Brook 已提交
2327 2328 2329
if [ $target_phys_bits -lt $hostlongbits ] ; then
  target_phys_bits=$hostlongbits
fi
J
Juan Quintela 已提交
2330 2331 2332
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
2333
      echo "CONFIG_XEN=y" >> $config_target_mak
J
Juan Quintela 已提交
2334 2335
    fi
esac
J
Juan Quintela 已提交
2336
case "$target_arch2" in
A
Alexander Graf 已提交
2337
  i386|x86_64|ppcemb|ppc|ppc64)
J
Juan Quintela 已提交
2338 2339 2340 2341
    # 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 已提交
2342
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
J
Juan Quintela 已提交
2343 2344
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
2345 2346
      echo "CONFIG_KVM=y" >> $config_target_mak
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
J
Juan Quintela 已提交
2347 2348
    fi
esac
2349
echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
B
bellard 已提交
2350
if test "$target_bigendian" = "yes" ; then
2351
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
B
bellard 已提交
2352
fi
2353
if test "$target_softmmu" = "yes" ; then
2354 2355 2356
  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
  echo "LIBS+=$libs_softmmu" >> $config_target_mak
  echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_target_mak
2357
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
2358
fi
B
bellard 已提交
2359
if test "$target_user_only" = "yes" ; then
2360
  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
B
bellard 已提交
2361
fi
2362
if test "$target_linux_user" = "yes" ; then
2363
  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
2364 2365
fi
if test "$target_darwin_user" = "yes" ; then
2366
  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
2367
fi
P
pbrook 已提交
2368 2369 2370 2371 2372
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
2373
  echo "TARGET_XML_FILES=$list" >> $config_target_mak
P
pbrook 已提交
2374
fi
2375

2376 2377
case "$target_arch2" in
  arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|sparc|sparc64|sparc32plus)
2378
    echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
2379
    ;;
2380
  *)
2381
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
2382
    ;;
2383 2384
esac

P
pbrook 已提交
2385
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2386
  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
P
pbrook 已提交
2387
fi
2388 2389
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2390
  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
2391
fi
2392 2393
# 32 bit ELF loader in addition to native 64 bit loader?
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2394
  echo "TARGET_HAS_ELFLOAD32=y" >> $config_target_mak
2395
fi
P
Paul Brook 已提交
2396
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
2397
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
P
Paul Brook 已提交
2398
fi
B
blueswir1 已提交
2399
if test "$target_bsd_user" = "yes" ; then
2400
  echo "CONFIG_BSD_USER=y" >> $config_target_mak
B
blueswir1 已提交
2401
fi
2402

2403
# generate QEMU_CFLAGS/LDFLAGS for targets
2404

2405
cflags=""
2406
ldflags=""
2407

J
Juan Quintela 已提交
2408 2409 2410 2411 2412 2413 2414 2415
if test "$ARCH" = "sparc64" ; then
  cflags="-I\$(SRC_PATH)/tcg/sparc $cflags"
else
  cflags="-I\$(SRC_PATH)/tcg/\$(ARCH) $cflags"
fi
cflags="-I\$(SRC_PATH)/tcg $cflags"
cflags="-I\$(SRC_PATH)/fpu $cflags"

2416 2417 2418
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
2419
    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
2420 2421
  ;;
  arm)
2422
    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
2423 2424
  ;;
  cris)
2425
    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
2426 2427
  ;;
  hppa)
2428
    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
2429 2430
  ;;
  i386|x86_64)
2431
    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
2432 2433
  ;;
  m68k)
2434
    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
2435 2436
  ;;
  microblaze)
2437
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
2438 2439
  ;;
  mips*)
2440
    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
2441 2442
  ;;
  ppc*)
2443
    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
2444 2445
  ;;
  s390)
2446
    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
2447 2448
  ;;
  sh4)
2449
    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
2450 2451
  ;;
  sparc*)
2452
    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
2453 2454 2455 2456
  ;;
  esac
done

2457 2458 2459 2460 2461
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
2462 2463 2464
ia64)
  cflags="-mno-sdata $cflags"
;;
2465 2466
esac

2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477
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

2478
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
2479
	"$user_pie" = "yes" ; then
2480 2481 2482 2483
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

2484 2485 2486
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
2487
  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
2488 2489
fi

2490
if test "$gprof" = "yes" ; then
2491
  echo "TARGET_GPROF=yes" >> $config_target_mak
2492 2493 2494 2495 2496 2497
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
2498
    echo "GPROF_CFLAGS=-p" >> $config_target_mak
2499 2500 2501
  fi
fi

2502
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
2503
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
2504 2505 2506
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
2507
    ldflags="$linker_script -static $ldflags"
2508 2509
    ;;
  ia64)
2510
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2511
    ;;
2512
  i386|x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
2513
    ldflags="$linker_script $ldflags"
2514 2515 2516 2517 2518 2519
    ;;
  esac
fi
if test "$target_softmmu" = "yes" ; then
  case "$ARCH" in
  ia64)
2520
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2521 2522 2523 2524
    ;;
  esac
fi

2525 2526
echo "LDFLAGS+=$ldflags" >> $config_target_mak
echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
2527

2528
done # for target in $targets
B
bellard 已提交
2529 2530 2531

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
2532
    DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
2533
    DIRS="$DIRS roms/pcbios roms/seabios roms/vgabios"
B
bellard 已提交
2534
    FILES="Makefile tests/Makefile"
2535
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
E
edgar_igl 已提交
2536
    FILES="$FILES tests/test-mmap.c"
2537
    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
2538
    FILES="$FILES roms/pcbios/Makefile roms/seabios/Makefile roms/vgabios/Makefile"
2539 2540 2541
    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
B
bellard 已提交
2542 2543 2544
    for dir in $DIRS ; do
            mkdir -p $dir
    done
B
bellard 已提交
2545
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
B
bellard 已提交
2546
    for f in $FILES ; do
B
bellard 已提交
2547 2548
        rm -f $f
        ln -s $source_path/$f $f
B
bellard 已提交
2549 2550
    done
fi
P
Paul Brook 已提交
2551

2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565
# temporary config to build submodules
for rom in seabios vgabios pcbios; do
    config_mak=roms/$rom/config.mak
    echo "# Automatically generated by configure - do not modify" >> $config_mak
    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 "HOST_CC=$host_cc" >> $config_mak
    echo "LD=$ld" >> $config_mak
done

P
Paul Brook 已提交
2566 2567 2568 2569 2570 2571
for hwlib in 32 64; do
  d=libhw$hwlib
  mkdir -p $d
  rm -f $d/Makefile
  ln -s $source_path/Makefile.hw $d/Makefile
  echo "HWLIB=libqemuhw$hwlib.a" > $d/config.mak
J
Juan Quintela 已提交
2572
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
P
Paul Brook 已提交
2573
done
2574 2575 2576 2577 2578

d=libuser
mkdir -p $d
rm -f $d/Makefile
ln -s $source_path/Makefile.user $d/Makefile