configure 62.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 16
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
B
bellard 已提交
17

J
Juan Quintela 已提交
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 52 53 54 55 56 57 58 59

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

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

97
if compile_object ; then
98 99 100 101 102 103 104 105 106 107 108 109 110
  : 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
111
  compile_object
112 113
}

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

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

# 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

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

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

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

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

B
bellard 已提交
354
if [ "$bsd" = "yes" ] ; then
355
  if [ "$darwin" != "yes" ] ; then
356
    make="gmake"
357
    usb="bsd"
358
  fi
B
blueswir1 已提交
359
  bsd_user="yes"
B
bellard 已提交
360 361
fi

362 363
if test "$mingw32" = "yes" ; then
  EXESUF=".exe"
J
Juan Quintela 已提交
364
  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
365
  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
366 367
fi

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

379
werror=""
380

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

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

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

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

B
bellard 已提交
711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735
#
# 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
736
fi
B
bellard 已提交
737 738


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

806 807 808 809 810
feature_not_found() {
  feature=$1

  echo "ERROR"
  echo "ERROR: User requested feature $feature"
811
  echo "ERROR: configure was not able to find it"
812 813 814 815
  echo "ERROR"
  exit 1;
}

B
bellard 已提交
816 817 818 819 820 821 822
if test -z "$cross_prefix" ; then

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

828
if compile_prog "" "" ; then
B
bellard 已提交
829 830 831 832 833 834 835 836
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
837 838 839 840 841
case "$cpu" in
  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
    bigendian=yes
  ;;
esac
B
bellard 已提交
842 843 844

fi

B
bellard 已提交
845 846
# host long bits test
hostlongbits="32"
847 848 849 850 851
case "$cpu" in
  x86_64|alpha|ia64|sparc64|ppc64)
    hostlongbits=64
  ;;
esac
B
bellard 已提交
852

853 854 855 856 857 858

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

if test "$nptl" != "no" ; then
  cat > $TMPC <<EOF
859
#include <sched.h>
P
pbrook 已提交
860
#include <linux/futex.h>
861 862 863 864 865 866 867 868
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

869 870 871 872 873 874 875 876
  if compile_object ; then
    nptl=yes
  else
    if test "$nptl" = "yes" ; then
      feature_not_found "nptl"
    fi
    nptl=no
  fi
877 878
fi

879 880 881 882 883 884 885
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
886
if compile_prog "" "-lz" ; then
887 888 889 890 891 892 893 894 895
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

896 897 898
##########################################
# xen probe

899
if test "$xen" != "no" ; then
900 901
  xen_libs="-lxenstore -lxenctrl -lxenguest"
  cat > $TMPC <<EOF
902 903
#include <xenctrl.h>
#include <xs.h>
904
int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
905
EOF
906
  if compile_prog "" "$xen_libs" ; then
907
    xen=yes
J
Juan Quintela 已提交
908
    libs_softmmu="$xen_libs $libs_softmmu"
909
  else
910 911 912 913
    if test "$xen" = "yes" ; then
      feature_not_found "xen"
    fi
    xen=no
914
  fi
915 916
fi

917 918 919 920 921 922 923 924 925 926 927 928 929
##########################################
# 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 已提交
930 931 932 933 934
##########################################
# SDL probe

sdl_too_old=no

935
if test "$sdl" != "no" ; then
J
Juan Quintela 已提交
936
  cat > $TMPC << EOF
B
bellard 已提交
937 938 939 940
#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 已提交
941 942
  sdl_cflags=`sdl-config --cflags 2> /dev/null`
  sdl_libs=`sdl-config --libs 2> /dev/null`
943
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
944 945 946 947 948 949 950 951
    _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 已提交
952

J
Juan Quintela 已提交
953 954 955 956 957 958 959
    # 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
960
      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
961 962 963 964 965
	:
      else
        sdl=no
      fi
    fi # static link
966 967 968 969 970
  else # sdl not found
    if test "$sdl" = "yes" ; then
      feature_not_found "sdl"
    fi
    sdl=no
J
Juan Quintela 已提交
971
  fi # sdl compile test
972
fi
B
bellard 已提交
973

974
if test "$sdl" = "yes" ; then
J
Juan Quintela 已提交
975
  cat > $TMPC <<EOF
976 977 978 979 980 981 982 983
#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
984
  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
J
Juan Quintela 已提交
985 986
    sdl_libs="$sdl_libs -lX11"
  fi
987 988 989
  if test "$mingw32" = "yes" ; then
    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
  fi
J
Juan Quintela 已提交
990
  libs_softmmu="$sdl_libs $libs_softmmu"
991 992
fi

993 994
##########################################
# VNC TLS detection
995 996
if test "$vnc_tls" != "no" ; then
  cat > $TMPC <<EOF
997 998 999
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
1000 1001 1002 1003 1004 1005 1006 1007
  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"
1008
    fi
1009 1010
    vnc_tls=no
  fi
1011 1012
fi

1013 1014
##########################################
# VNC SASL detection
J
Juan Quintela 已提交
1015
if test "$vnc_sasl" != "no" ; then
1016
  cat > $TMPC <<EOF
1017 1018 1019 1020
#include <sasl/sasl.h>
#include <stdio.h>
int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
EOF
1021 1022 1023 1024 1025 1026 1027 1028 1029
  # 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"
1030
    fi
1031 1032
    vnc_sasl=no
  fi
1033 1034
fi

1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045
##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
#include <fnmatch.h>
int main(void)
{
    fnmatch("foo", "foo", 0);
    return 0;
}
EOF
1046
if compile_prog "" "" ; then
1047 1048 1049
   fnmatch="yes"
fi

1050 1051
##########################################
# vde libraries probe
1052
if test "$vde" != "no" ; then
J
Juan Quintela 已提交
1053
  vde_libs="-lvdeplug"
1054 1055
  cat > $TMPC << EOF
#include <libvdeplug.h>
P
pbrook 已提交
1056 1057 1058 1059 1060 1061
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
1062
EOF
1063
  if compile_prog "" "$vde_libs" ; then
J
Juan Quintela 已提交
1064
    vde=yes
1065 1066
    libs_softmmu="$vde_libs $libs_softmmu"
    libs_tools="$vde_libs $libs_tools"
1067 1068 1069 1070 1071
  else
    if test "$vde" = "yes" ; then
      feature_not_found "vde"
    fi
    vde=no
J
Juan Quintela 已提交
1072
  fi
1073 1074
fi

1075
##########################################
1076
# Sound support libraries probe
1077

1078 1079 1080 1081 1082 1083 1084 1085 1086 1087
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
1088
EOF
1089
    if compile_prog "$cfl" "$lib" ; then
1090 1091 1092 1093 1094 1095 1096 1097 1098 1099
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

1100
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1101 1102 1103 1104 1105
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);"
1106
    libs_softmmu="-lasound $libs_softmmu"
1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117
    ;;

    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"
1118
    libs_softmmu="$fmod_lib $libs_softmmu"
1119 1120 1121 1122
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1123
    libs_softmmu="-lesd $libs_softmmu"
1124
    audio_pt_int="yes"
1125
    ;;
M
malc 已提交
1126 1127 1128 1129

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

1134 1135 1136 1137
    coreaudio)
      libs_softmmu="-framework CoreAudio $libs_softmmu"
    ;;

1138 1139 1140 1141 1142 1143 1144 1145 1146
    dsound)
      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
    ;;

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

    sdl|wav)
B
blueswir1 已提交
1147 1148 1149
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

M
malc 已提交
1150
    *)
M
malc 已提交
1151
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
M
malc 已提交
1152 1153 1154 1155 1156 1157 1158
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
1159 1160
    esac
done
1161

A
aurel32 已提交
1162 1163 1164
##########################################
# BrlAPI probe

1165
if test "$brlapi" != "no" ; then
J
Juan Quintela 已提交
1166 1167
  brlapi_libs="-lbrlapi"
  cat > $TMPC << EOF
A
aurel32 已提交
1168 1169 1170
#include <brlapi.h>
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
1171
  if compile_prog "" "$brlapi_libs" ; then
J
Juan Quintela 已提交
1172
    brlapi=yes
1173
    libs_softmmu="$brlapi_libs $libs_softmmu"
1174 1175 1176 1177 1178
  else
    if test "$brlapi" = "yes" ; then
      feature_not_found "brlapi"
    fi
    brlapi=no
J
Juan Quintela 已提交
1179 1180
  fi
fi
A
aurel32 已提交
1181

B
balrog 已提交
1182 1183
##########################################
# curses probe
1184
curses_list="-lncurses -lcurses"
B
balrog 已提交
1185

1186 1187
if test "$curses" != "no" ; then
  curses_found=no
B
balrog 已提交
1188 1189
  cat > $TMPC << EOF
#include <curses.h>
1190 1191 1192 1193
#ifdef __OpenBSD__
#define resize_term resizeterm
#endif
int main(void) { resize_term(0, 0); return curses_version(); }
B
balrog 已提交
1194
EOF
1195 1196
  for curses_lib in $curses_list; do
    if compile_prog "" "$curses_lib" ; then
1197
      curses_found=yes
1198 1199 1200 1201
      libs_softmmu="$curses_lib $libs_softmmu"
      break
    fi
  done
1202 1203 1204 1205 1206 1207 1208 1209
  if test "$curses_found" = "yes" ; then
    curses=yes
  else
    if test "$curses" = "yes" ; then
      feature_not_found "curses"
    fi
    curses=no
  fi
1210
fi
B
balrog 已提交
1211

A
Alexander Graf 已提交
1212 1213 1214
##########################################
# curl probe

1215
if test "$curl" != "no" ; then
A
Alexander Graf 已提交
1216 1217 1218 1219
  cat > $TMPC << EOF
#include <curl/curl.h>
int main(void) { return curl_easy_init(); }
EOF
J
Juan Quintela 已提交
1220
  curl_cflags=`curl-config --cflags 2>/dev/null`
1221
  curl_libs=`curl-config --libs 2>/dev/null`
J
Juan Quintela 已提交
1222
  if compile_prog "$curl_cflags" "$curl_libs" ; then
A
Alexander Graf 已提交
1223
    curl=yes
1224 1225
    libs_tools="$curl_libs $libs_tools"
    libs_softmmu="$curl_libs $libs_softmmu"
1226 1227 1228 1229 1230
  else
    if test "$curl" = "yes" ; then
      feature_not_found "curl"
    fi
    curl=no
A
Alexander Graf 已提交
1231 1232 1233
  fi
fi # test "$curl"

L
Luiz Capitulino 已提交
1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253
##########################################
# 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 已提交
1254 1255
##########################################
# bluez support probe
1256
if test "$bluez" != "no" ; then
1257 1258 1259 1260
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
1261 1262
  bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
  bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1263
  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1264
    bluez=yes
1265
    libs_softmmu="$bluez_libs $libs_softmmu"
1266
  else
1267 1268 1269
    if test "$bluez" = "yes" ; then
      feature_not_found "bluez"
    fi
1270 1271
    bluez="no"
  fi
B
balrog 已提交
1272 1273
fi

A
aliguori 已提交
1274 1275
##########################################
# kvm probe
1276
if test "$kvm" != "no" ; then
A
aliguori 已提交
1277 1278
    cat > $TMPC <<EOF
#include <linux/kvm.h>
1279
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
A
aliguori 已提交
1280 1281
#error Invalid KVM version
#endif
1282 1283 1284 1285 1286 1287 1288 1289 1290
#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 已提交
1291 1292
int main(void) { return 0; }
EOF
A
aliguori 已提交
1293 1294
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
1295 1296 1297
      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 已提交
1298 1299
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1300 1301 1302
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
A
aliguori 已提交
1303 1304 1305
  else
      kvm_cflags=""
  fi
1306
  if compile_prog "$kvm_cflags" "" ; then
1307
    kvm=yes
A
aliguori 已提交
1308
  else
1309 1310 1311 1312
    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 \
1313 1314
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1315 1316 1317 1318 1319
        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
1320
      fi
1321
      feature_not_found "kvm"
1322
    fi
1323
    kvm=no
A
aliguori 已提交
1324 1325 1326
  fi
fi

1327
##########################################
1328
# pthread probe
1329
PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1330

C
Christoph Hellwig 已提交
1331
pthread=no
1332
cat > $TMPC << EOF
1333
#include <pthread.h>
1334
int main(void) { pthread_create(0,0,0,0); return 0; }
1335
EOF
C
Christoph Hellwig 已提交
1336 1337 1338 1339 1340 1341 1342
for pthread_lib in $PTHREADLIBS_LIST; do
  if compile_prog "" "$pthread_lib" ; then
    pthread=yes
    LIBS="$pthread_lib $LIBS"
    break
  fi
done
1343

1344
if test "$mingw32" != yes -a "$pthread" = no; then
C
Christoph Hellwig 已提交
1345 1346 1347 1348 1349
  echo
  echo "Error: pthread check failed"
  echo "Make sure to have the pthread libs and headers installed."
  echo
  exit 1
1350 1351
fi

1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368
##########################################
# linux-aio probe
AIOLIBS=""

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
1369
    linux_aio=no
1370 1371 1372
  fi
fi

A
aliguori 已提交
1373 1374 1375
##########################################
# iovec probe
cat > $TMPC <<EOF
B
blueswir1 已提交
1376
#include <sys/types.h>
A
aliguori 已提交
1377
#include <sys/uio.h>
B
blueswir1 已提交
1378
#include <unistd.h>
A
aliguori 已提交
1379 1380 1381
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1382
if compile_prog "" "" ; then
A
aliguori 已提交
1383 1384 1385
  iovec=yes
fi

1386 1387 1388 1389 1390 1391 1392 1393 1394
##########################################
# preadv probe
cat > $TMPC <<EOF
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
int main(void) { preadv; }
EOF
preadv=no
1395
if compile_prog "" "" ; then
1396 1397 1398
  preadv=yes
fi

1399 1400
##########################################
# fdt probe
1401
if test "$fdt" != "no" ; then
J
Juan Quintela 已提交
1402 1403
  fdt_libs="-lfdt"
  cat > $TMPC << EOF
1404 1405
int main(void) { return 0; }
EOF
1406
  if compile_prog "" "$fdt_libs" ; then
1407
    fdt=yes
J
Juan Quintela 已提交
1408
    libs_softmmu="$fdt_libs $libs_softmmu"
1409 1410 1411 1412 1413
  else
    if test "$fdt" = "yes" ; then
      feature_not_found "fdt"
    fi
    fdt=no
1414 1415 1416
  fi
fi

1417 1418 1419 1420 1421 1422
#
# 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
1423
cat > $TMPC << EOF
1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435
#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
1436
if compile_prog "" "" ; then
1437
  atfile=yes
1438 1439
fi

A
aurel32 已提交
1440
# Check for inotify functions when we are building linux-user
1441 1442 1443 1444 1445
# 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
1446
cat > $TMPC << EOF
1447 1448 1449 1450 1451 1452
#include <sys/inotify.h>

int
main(void)
{
	/* try to start inotify */
A
aurel32 已提交
1453
	return inotify_init();
1454 1455
}
EOF
1456
if compile_prog "" "" ; then
1457
  inotify=yes
1458 1459
fi

R
Riku Voipio 已提交
1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474
# 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
1475
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1476 1477 1478
  utimens=yes
fi

R
Riku Voipio 已提交
1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492
# 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
1493
if compile_prog "" "" ; then
R
Riku Voipio 已提交
1494 1495 1496
  pipe2=yes
fi

1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512
# 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
1513
if compile_prog "" "" ; then
1514 1515 1516
  splice=yes
fi

R
Riku Voipio 已提交
1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531
# 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

1532
# Check if tools are available to build documentation.
J
Juan Quintela 已提交
1533
if test "$docs" != "no" ; then
1534 1535
  if test -x "`which texi2html 2>/dev/null`" -a \
          -x "`which pod2man 2>/dev/null`" ; then
J
Juan Quintela 已提交
1536
    docs=yes
1537
  else
J
Juan Quintela 已提交
1538 1539
    if test "$docs" = "yes" ; then
      feature_not_found "docs"
1540
    fi
J
Juan Quintela 已提交
1541
    docs=no
1542
  fi
1543 1544
fi

1545 1546 1547 1548 1549 1550
# Search for bsawp_32 function
byteswap_h=no
cat > $TMPC << EOF
#include <byteswap.h>
int main(void) { return bswap_32(0); }
EOF
1551
if compile_prog "" "" ; then
1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562
  byteswap_h=yes
fi

# Search for bsawp_32 function
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
1563
if compile_prog "" "" ; then
1564 1565 1566
  bswap_h=yes
fi

A
aliguori 已提交
1567 1568 1569 1570 1571 1572 1573 1574
##########################################
# 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

1575
if compile_prog "" "" ; then
1576
  :
1577
elif compile_prog "" "-lrt" ; then
1578
  LIBS="-lrt $LIBS"
A
aliguori 已提交
1579 1580
fi

1581 1582 1583 1584 1585 1586 1587
# Determine what linker flags to use to force archive inclusion
check_linker_flags()
{
    w2=
    if test "$2" ; then
	w2=-Wl,$2
    fi
1588
    compile_prog "" "-Wl,$1 ${w2}"
1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599
}

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
1600
    arlibs_begin="-Wl,-z,allextract"
1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611
    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

1612
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
1613 1614 1615 1616
        "$aix" != "yes" ; then
    libs_softmmu="-lutil $libs_softmmu"
fi

1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628
##########################################
# 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

B
Blue Swirl 已提交
1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640
##########################################
# 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

1641 1642 1643 1644
# End of CC checks
# After here, no more $cc or $ld runs

# default flags for all hosts
J
Juan Quintela 已提交
1645 1646
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
1647
if test "$debug" = "no" ; then
1648
  CFLAGS="-O2 $CFLAGS"
1649
fi
J
Juan Quintela 已提交
1650 1651
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
1652 1653 1654
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
QEMU_CFLAGS="-I. -I\$(SRC_PATH) -MMD -MP -MT \$@ $QEMU_CFLAGS"
1655
LDFLAGS="-g $LDFLAGS"
1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669

# 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 已提交
1670
    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
1671 1672 1673 1674
fi

if test "$solaris" = "no" ; then
    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
1675
        LDFLAGS="-Wl,--warn-common $LDFLAGS"
1676 1677 1678
    fi
fi

B
bellard 已提交
1679
if test "$mingw32" = "yes" ; then
P
pbrook 已提交
1680
  if test -z "$prefix" ; then
S
Stefan Weil 已提交
1681
      prefix="c:/Program Files/Qemu"
P
pbrook 已提交
1682 1683 1684 1685 1686
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
B
bellard 已提交
1687
else
P
pbrook 已提交
1688 1689 1690 1691 1692 1693 1694
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
B
bellard 已提交
1695
fi
1696

B
bellard 已提交
1697
echo "Install prefix    $prefix"
P
pbrook 已提交
1698 1699
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
B
bellard 已提交
1700
if test "$mingw32" = "no" ; then
P
pbrook 已提交
1701
echo "Manual directory  $prefix$mansuffix"
B
bellard 已提交
1702
echo "ELF interp prefix $interp_prefix"
B
bellard 已提交
1703
fi
1704
echo "Source path       $source_path"
B
bellard 已提交
1705
echo "C compiler        $cc"
B
bellard 已提交
1706
echo "Host C compiler   $host_cc"
1707
echo "CFLAGS            $CFLAGS"
J
Juan Quintela 已提交
1708
echo "QEMU_CFLAGS       $QEMU_CFLAGS"
1709
echo "LDFLAGS           $LDFLAGS"
B
bellard 已提交
1710
echo "make              $make"
1711
echo "install           $install"
B
bellard 已提交
1712
echo "host CPU          $cpu"
B
bellard 已提交
1713
echo "host big endian   $bigendian"
1714
echo "target list       $target_list"
1715
echo "tcg debug enabled $debug_tcg"
B
bellard 已提交
1716
echo "gprof enabled     $gprof"
1717
echo "sparse enabled    $sparse"
1718
echo "strip binaries    $strip_opt"
1719
echo "profiler          $profiler"
B
bellard 已提交
1720
echo "static build      $static"
1721
echo "-Werror enabled   $werror"
1722 1723 1724
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1725
echo "SDL support       $sdl"
B
balrog 已提交
1726
echo "curses support    $curses"
A
Alexander Graf 已提交
1727
echo "curl support      $curl"
L
Luiz Capitulino 已提交
1728
echo "check support     $check_utests"
B
bellard 已提交
1729
echo "mingw32 support   $mingw32"
M
malc 已提交
1730 1731
echo "Audio drivers     $audio_drv_list"
echo "Extra audio cards $audio_card_list"
1732
echo "Mixer emulation   $mixemu"
1733
echo "VNC TLS support   $vnc_tls"
1734
echo "VNC SASL support  $vnc_sasl"
1735 1736 1737
if test -n "$sparc_cpu"; then
    echo "Target Sparc Arch $sparc_cpu"
fi
1738
echo "xen support       $xen"
A
aurel32 已提交
1739
echo "brlapi support    $brlapi"
1740
echo "bluez  support    $bluez"
J
Juan Quintela 已提交
1741
echo "Documentation     $docs"
1742 1743
[ ! -z "$uname_release" ] && \
echo "uname -r          $uname_release"
1744
echo "NPTL support      $nptl"
P
Paul Brook 已提交
1745
echo "GUEST_BASE        $guest_base"
1746
echo "PIE user targets  $user_pie"
1747
echo "vde support       $vde"
1748
echo "IO thread         $io_thread"
1749
echo "Linux AIO support $linux_aio"
T
ths 已提交
1750
echo "Install blobs     $blobs"
1751
echo "KVM support       $kvm"
1752
echo "fdt support       $fdt"
1753
echo "preadv support    $preadv"
B
Blue Swirl 已提交
1754
echo "fdatasync         $fdatasync"
B
bellard 已提交
1755

1756
if test $sdl_too_old = "yes"; then
B
bellard 已提交
1757
echo "-> Your SDL version is too old - please upgrade to have SDL support"
B
bellard 已提交
1758
fi
B
bellard 已提交
1759

1760 1761
config_host_mak="config-host.mak"
config_host_h="config-host.h"
1762
config_host_ld="config-host.ld"
1763 1764 1765 1766 1767 1768 1769 1770 1771 1772

#echo "Creating $config_host_mak and $config_host_h"

test -f $config_host_h && mv $config_host_h ${config_host_h}~

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

1773
echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak
1774

A
aurel32 已提交
1775
case "$cpu" in
1776
  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1777
    ARCH=$cpu
A
aurel32 已提交
1778
  ;;
1779
  armv4b|armv4l)
1780
    ARCH=arm
A
aurel32 已提交
1781 1782 1783 1784 1785 1786
  ;;
  *)
    echo "Unsupported CPU = $cpu"
    exit 1
  ;;
esac
1787
echo "ARCH=$ARCH" >> $config_host_mak
1788
if test "$debug_tcg" = "yes" ; then
1789
  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1790
fi
P
Paul Brook 已提交
1791
if test "$debug" = "yes" ; then
1792
  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
P
Paul Brook 已提交
1793
fi
1794
if test "$strip_opt" = "yes" ; then
1795
  echo "STRIP_OPT=-s" >> $config_host_mak
1796
fi
B
bellard 已提交
1797
if test "$bigendian" = "yes" ; then
1798
  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1799
fi
1800
echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
B
bellard 已提交
1801
if test "$mingw32" = "yes" ; then
1802
  echo "CONFIG_WIN32=y" >> $config_host_mak
1803
else
J
Juan Quintela 已提交
1804
  echo "CONFIG_POSIX=y" >> $config_host_mak
B
bellard 已提交
1805
fi
1806

1807
if test "$darwin" = "yes" ; then
1808
  echo "CONFIG_DARWIN=y" >> $config_host_mak
1809
fi
M
malc 已提交
1810 1811

if test "$aix" = "yes" ; then
1812
  echo "CONFIG_AIX=y" >> $config_host_mak
M
malc 已提交
1813 1814
fi

B
bellard 已提交
1815
if test "$solaris" = "yes" ; then
1816
  echo "CONFIG_SOLARIS=y" >> $config_host_mak
1817
  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
T
ths 已提交
1818
  if test "$needs_libsunmath" = "yes" ; then
1819
    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
T
ths 已提交
1820
  fi
B
bellard 已提交
1821
fi
1822
if test "$static" = "yes" ; then
1823
  echo "CONFIG_STATIC=y" >> $config_host_mak
1824
  LDFLAGS="-static $LDFLAGS"
B
bellard 已提交
1825
fi
1826
if test $profiler = "yes" ; then
1827
  echo "CONFIG_PROFILER=y" >> $config_host_mak
1828
fi
B
bellard 已提交
1829
if test "$slirp" = "yes" ; then
1830
  echo "CONFIG_SLIRP=y" >> $config_host_mak
1831
  CFLAGS="-I\$(SRC_PATH)/slirp $CFLAGS"
B
bellard 已提交
1832
fi
1833
if test "$vde" = "yes" ; then
1834
  echo "CONFIG_VDE=y" >> $config_host_mak
1835
fi
M
malc 已提交
1836
for card in $audio_card_list; do
P
pbrook 已提交
1837
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1838
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1839
done
1840
echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
M
malc 已提交
1841
for drv in $audio_drv_list; do
P
pbrook 已提交
1842
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1843
    echo "$def=y" >> $config_host_mak
M
malc 已提交
1844
    if test "$drv" = "fmod"; then
1845
        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
M
malc 已提交
1846 1847
    fi
done
1848 1849 1850
if test "$audio_pt_int" = "yes" ; then
  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
fi
1851
if test "$mixemu" = "yes" ; then
1852
  echo "CONFIG_MIXEMU=y" >> $config_host_mak
1853
fi
1854
if test "$vnc_tls" = "yes" ; then
1855
  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1856
  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1857
fi
1858
if test "$vnc_sasl" = "yes" ; then
1859
  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1860
  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1861
fi
1862
if test "$fnmatch" = "yes" ; then
1863
  echo "CONFIG_FNMATCH=y" >> $config_host_mak
1864
fi
1865
qemu_version=`head $source_path/VERSION`
1866
echo "VERSION=$qemu_version" >>$config_host_mak
1867
echo "PKGVERSION=$pkgversion" >>$config_host_mak
1868
echo "SRC_PATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1869
if [ "$source_path_used" = "yes" ]; then
1870
  echo "VPATH=$source_path" >> $config_host_mak
P
pbrook 已提交
1871
fi
1872
echo "TARGET_DIRS=$target_list" >> $config_host_mak
J
Juan Quintela 已提交
1873
if [ "$docs" = "yes" ] ; then
1874
  echo "BUILD_DOCS=yes" >> $config_host_mak
1875
fi
1876
if test "$sdl" = "yes" ; then
1877
  echo "CONFIG_SDL=y" >> $config_host_mak
1878
  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
1879 1880
fi
if test "$cocoa" = "yes" ; then
1881
  echo "CONFIG_COCOA=y" >> $config_host_mak
B
balrog 已提交
1882 1883
fi
if test "$curses" = "yes" ; then
1884
  echo "CONFIG_CURSES=y" >> $config_host_mak
1885
fi
1886
if test "$atfile" = "yes" ; then
1887
  echo "CONFIG_ATFILE=y" >> $config_host_mak
1888
fi
R
Riku Voipio 已提交
1889
if test "$utimens" = "yes" ; then
1890
  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
R
Riku Voipio 已提交
1891
fi
R
Riku Voipio 已提交
1892
if test "$pipe2" = "yes" ; then
1893
  echo "CONFIG_PIPE2=y" >> $config_host_mak
R
Riku Voipio 已提交
1894
fi
1895
if test "$splice" = "yes" ; then
1896
  echo "CONFIG_SPLICE=y" >> $config_host_mak
1897
fi
R
Riku Voipio 已提交
1898 1899 1900
if test "$eventfd" = "yes" ; then
  echo "CONFIG_EVENTFD=y" >> $config_host_mak
fi
1901
if test "$inotify" = "yes" ; then
1902
  echo "CONFIG_INOTIFY=y" >> $config_host_mak
1903
fi
1904 1905 1906 1907 1908 1909
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 已提交
1910
if test "$curl" = "yes" ; then
1911
  echo "CONFIG_CURL=y" >> $config_host_mak
J
Juan Quintela 已提交
1912
  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
A
Alexander Graf 已提交
1913
fi
A
aurel32 已提交
1914
if test "$brlapi" = "yes" ; then
1915
  echo "CONFIG_BRLAPI=y" >> $config_host_mak
A
aurel32 已提交
1916
fi
B
balrog 已提交
1917
if test "$bluez" = "yes" ; then
1918
  echo "CONFIG_BLUEZ=y" >> $config_host_mak
1919
  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
B
balrog 已提交
1920
fi
1921
if test "$xen" = "yes" ; then
J
Juan Quintela 已提交
1922
  echo "CONFIG_XEN=y" >> $config_host_mak
1923
fi
1924
if test "$io_thread" = "yes" ; then
1925
  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
1926
fi
1927 1928 1929
if test "$linux_aio" = "yes" ; then
  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
fi
T
ths 已提交
1930
if test "$blobs" = "yes" ; then
1931
  echo "INSTALL_BLOBS=yes" >> $config_host_mak
T
ths 已提交
1932
fi
A
aliguori 已提交
1933
if test "$iovec" = "yes" ; then
1934
  echo "CONFIG_IOVEC=y" >> $config_host_mak
A
aliguori 已提交
1935
fi
1936
if test "$preadv" = "yes" ; then
1937
  echo "CONFIG_PREADV=y" >> $config_host_mak
1938
fi
1939
if test "$fdt" = "yes" ; then
1940
  echo "CONFIG_FDT=y" >> $config_host_mak
1941
fi
1942 1943 1944
if test "$need_offsetof" = "yes" ; then
  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
fi
B
Blue Swirl 已提交
1945 1946 1947
if test "$fdatasync" = "yes" ; then
  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
fi
1948

1949
# XXX: suppress that
B
bellard 已提交
1950
if [ "$bsd" = "yes" ] ; then
1951
  echo "CONFIG_BSD=y" >> $config_host_mak
B
bellard 已提交
1952 1953
fi

1954
echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
1955

1956 1957 1958
# USB host support
case "$usb" in
linux)
1959
  echo "HOST_USB=linux" >> $config_host_mak
1960 1961
;;
bsd)
1962
  echo "HOST_USB=bsd" >> $config_host_mak
1963 1964
;;
*)
1965
  echo "HOST_USB=stub" >> $config_host_mak
1966 1967 1968
;;
esac

1969 1970
tools=
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
A
aliguori 已提交
1971
  tools="qemu-img\$(EXESUF) $tools"
B
bellard 已提交
1972
  if [ "$linux" = "yes" ] ; then
A
aliguori 已提交
1973
      tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
L
Luiz Capitulino 已提交
1974
    if [ "$check_utests" = "yes" ]; then
L
Luiz Capitulino 已提交
1975
      tools="check-qint check-qstring check-qdict $tools"
L
Luiz Capitulino 已提交
1976
    fi
1977 1978
  elif test "$mingw32" = "yes" ; then
      tools="qemu-io\$(EXESUF) $tools"
B
bellard 已提交
1979
  fi
1980
fi
1981
echo "TOOLS=$tools" >> $config_host_mak
1982

1983
# Mac OS X ships with a broken assembler
A
Alexander Graf 已提交
1984
roms=
1985
if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
1986 1987
        "$targetos" != "Darwin" -a \
        `expr "$target_list" : ".*softmmu.*"` != 0 ; then
P
Paul Brook 已提交
1988
  roms="optionrom"
A
Alexander Graf 已提交
1989
fi
1990
echo "ROMS=$roms" >> $config_host_mak
A
Alexander Graf 已提交
1991

1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
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 已提交
2007
  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2008 2009 2010 2011
fi
echo "AR=$ar" >> $config_host_mak
echo "OBJCOPY=$objcopy" >> $config_host_mak
echo "LD=$ld" >> $config_host_mak
2012
echo "CFLAGS=$CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2013
echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
J
Juan Quintela 已提交
2014
echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2015
echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2016 2017
echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
J
Juan Quintela 已提交
2018
echo "LIBS+=$LIBS" >> $config_host_mak
J
Juan Quintela 已提交
2019
echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2020 2021
echo "EXESUF=$EXESUF" >> $config_host_mak

2022 2023
echo "/* Automatically generated by configure - do not modify */" > $config_host_h

2024
/bin/sh $source_path/create_config < $config_host_mak >> $config_host_h
2025

2026 2027 2028
if test -f ${config_host_h}~ ; then
  if cmp -s $config_host_h ${config_host_h}~ ; then
    mv ${config_host_h}~ $config_host_h
P
Paul Brook 已提交
2029
  else
2030
    rm ${config_host_h}~
P
Paul Brook 已提交
2031 2032 2033
  fi
fi

2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045
# 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

2046
for target in $target_list; do
2047 2048 2049
target_dir="$target"
config_mak=$target_dir/config.mak
config_h=$target_dir/config.h
B
Blue Swirl 已提交
2050
target_arch2=`echo $target | cut -d '-' -f 1`
2051
target_bigendian="no"
2052 2053 2054 2055 2056
case "$target_arch2" in
  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
  target_bigendian=yes
  ;;
esac
2057
target_softmmu="no"
B
bellard 已提交
2058
target_user_only="no"
2059 2060
target_linux_user="no"
target_darwin_user="no"
B
blueswir1 已提交
2061
target_bsd_user="no"
P
pbrook 已提交
2062
case "$target" in
B
Blue Swirl 已提交
2063
  ${target_arch2}-softmmu)
P
pbrook 已提交
2064 2065
    target_softmmu="yes"
    ;;
B
Blue Swirl 已提交
2066
  ${target_arch2}-linux-user)
P
pbrook 已提交
2067 2068 2069
    target_user_only="yes"
    target_linux_user="yes"
    ;;
B
Blue Swirl 已提交
2070
  ${target_arch2}-darwin-user)
P
pbrook 已提交
2071 2072 2073
    target_user_only="yes"
    target_darwin_user="yes"
    ;;
B
Blue Swirl 已提交
2074
  ${target_arch2}-bsd-user)
B
blueswir1 已提交
2075 2076 2077
    target_user_only="yes"
    target_bsd_user="yes"
    ;;
P
pbrook 已提交
2078 2079 2080 2081 2082
  *)
    echo "ERROR: Target '$target' not recognised"
    exit 1
    ;;
esac
2083

B
bellard 已提交
2084
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
2085

2086 2087
test -f $config_h && mv $config_h ${config_h}~

2088
mkdir -p $target_dir
B
bellard 已提交
2089
mkdir -p $target_dir/fpu
B
bellard 已提交
2090
mkdir -p $target_dir/tcg
G
Gerd Hoffmann 已提交
2091
mkdir -p $target_dir/ide
B
blueswir1 已提交
2092
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
B
bellard 已提交
2093 2094 2095
  mkdir -p $target_dir/nwfpe
fi

B
bellard 已提交
2096 2097 2098 2099 2100 2101
#
# 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

2102 2103

echo "# Automatically generated by configure - do not modify" > $config_mak
B
bellard 已提交
2104

2105
echo "include ../config-host.mak" >> $config_mak
2106

P
pbrook 已提交
2107
bflt="no"
2108
elfload32="no"
2109
target_nptl="no"
B
Blue Swirl 已提交
2110
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
2111
echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_mak
P
pbrook 已提交
2112
gdb_xml_files=""
A
aliguori 已提交
2113

2114
TARGET_ARCH="$target_arch2"
2115
TARGET_BASE_ARCH=""
2116
TARGET_ABI_DIR=""
2117

B
Blue Swirl 已提交
2118
case "$target_arch2" in
A
aurel32 已提交
2119
  i386)
P
Paul Brook 已提交
2120
    target_phys_bits=32
A
aurel32 已提交
2121 2122
  ;;
  x86_64)
2123
    TARGET_BASE_ARCH=i386
P
Paul Brook 已提交
2124
    target_phys_bits=64
A
aurel32 已提交
2125 2126
  ;;
  alpha)
P
Paul Brook 已提交
2127
    target_phys_bits=64
A
aurel32 已提交
2128 2129
  ;;
  arm|armeb)
J
Juan Quintela 已提交
2130
    TARGET_ARCH=arm
A
aurel32 已提交
2131
    bflt="yes"
2132
    target_nptl="yes"
P
pbrook 已提交
2133
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
P
Paul Brook 已提交
2134
    target_phys_bits=32
A
aurel32 已提交
2135 2136
  ;;
  cris)
E
edgar_igl 已提交
2137
    target_nptl="yes"
P
Paul Brook 已提交
2138
    target_phys_bits=32
A
aurel32 已提交
2139 2140 2141
  ;;
  m68k)
    bflt="yes"
P
pbrook 已提交
2142
    gdb_xml_files="cf-core.xml cf-fp.xml"
P
Paul Brook 已提交
2143
    target_phys_bits=32
A
aurel32 已提交
2144
  ;;
2145 2146 2147 2148 2149
  microblaze)
    bflt="yes"
    target_nptl="yes"
    target_phys_bits=32
  ;;
J
Juan Quintela 已提交
2150
  mips|mipsel)
J
Juan Quintela 已提交
2151
    TARGET_ARCH=mips
2152
    echo "TARGET_ABI_MIPSO32=y" >> $config_mak
P
Paul Brook 已提交
2153
    target_nptl="yes"
P
Paul Brook 已提交
2154
    target_phys_bits=64
A
aurel32 已提交
2155 2156
  ;;
  mipsn32|mipsn32el)
J
Juan Quintela 已提交
2157
    TARGET_ARCH=mipsn32
2158
    TARGET_BASE_ARCH=mips
2159
    echo "TARGET_ABI_MIPSN32=y" >> $config_mak
P
Paul Brook 已提交
2160
    target_phys_bits=64
A
aurel32 已提交
2161 2162
  ;;
  mips64|mips64el)
J
Juan Quintela 已提交
2163
    TARGET_ARCH=mips64
2164
    TARGET_BASE_ARCH=mips
2165
    echo "TARGET_ABI_MIPSN64=y" >> $config_mak
P
Paul Brook 已提交
2166
    target_phys_bits=64
A
aurel32 已提交
2167 2168
  ;;
  ppc)
2169
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2170
    target_phys_bits=32
2171
    target_nptl="yes"
A
aurel32 已提交
2172 2173
  ;;
  ppcemb)
2174
    TARGET_BASE_ARCH=ppc
2175
    TARGET_ABI_DIR=ppc
2176
    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2177
    target_phys_bits=64
2178
    target_nptl="yes"
A
aurel32 已提交
2179 2180
  ;;
  ppc64)
2181
    TARGET_BASE_ARCH=ppc
2182
    TARGET_ABI_DIR=ppc
2183
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2184
    target_phys_bits=64
A
aurel32 已提交
2185 2186
  ;;
  ppc64abi32)
J
Juan Quintela 已提交
2187
    TARGET_ARCH=ppc64
2188
    TARGET_BASE_ARCH=ppc
2189
    TARGET_ABI_DIR=ppc
2190
    echo "TARGET_ABI32=y" >> $config_mak
2191
    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
P
Paul Brook 已提交
2192
    target_phys_bits=64
A
aurel32 已提交
2193 2194
  ;;
  sh4|sh4eb)
J
Juan Quintela 已提交
2195
    TARGET_ARCH=sh4
A
aurel32 已提交
2196
    bflt="yes"
A
aurel32 已提交
2197
    target_nptl="yes"
P
Paul Brook 已提交
2198
    target_phys_bits=32
A
aurel32 已提交
2199 2200
  ;;
  sparc)
P
Paul Brook 已提交
2201
    target_phys_bits=64
A
aurel32 已提交
2202 2203
  ;;
  sparc64)
2204
    TARGET_BASE_ARCH=sparc
A
aurel32 已提交
2205
    elfload32="yes"
P
Paul Brook 已提交
2206
    target_phys_bits=64
A
aurel32 已提交
2207 2208
  ;;
  sparc32plus)
J
Juan Quintela 已提交
2209
    TARGET_ARCH=sparc64
2210
    TARGET_BASE_ARCH=sparc
2211
    TARGET_ABI_DIR=sparc
2212
    echo "TARGET_ABI32=y" >> $config_mak
P
Paul Brook 已提交
2213
    target_phys_bits=64
A
aurel32 已提交
2214 2215 2216 2217 2218 2219
  ;;
  *)
    echo "Unsupported target CPU"
    exit 1
  ;;
esac
J
Juan Quintela 已提交
2220
echo "TARGET_ARCH=$TARGET_ARCH" >> $config_mak
2221 2222
target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
echo "TARGET_$target_arch_name=y" >> $config_mak
J
Juan Quintela 已提交
2223
echo "TARGET_ARCH2=$target_arch2" >> $config_mak
2224
# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2225 2226 2227 2228
if [ "$TARGET_BASE_ARCH" = "" ]; then
  TARGET_BASE_ARCH=$TARGET_ARCH
fi
echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_mak
2229 2230 2231 2232
if [ "$TARGET_ABI_DIR" = "" ]; then
  TARGET_ABI_DIR=$TARGET_ARCH
fi
echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_mak
P
Paul Brook 已提交
2233 2234 2235
if [ $target_phys_bits -lt $hostlongbits ] ; then
  target_phys_bits=$hostlongbits
fi
J
Juan Quintela 已提交
2236 2237 2238 2239 2240 2241
case "$target_arch2" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
      echo "CONFIG_XEN=y" >> $config_mak
    fi
esac
J
Juan Quintela 已提交
2242
case "$target_arch2" in
A
Alexander Graf 已提交
2243
  i386|x86_64|ppcemb|ppc|ppc64)
J
Juan Quintela 已提交
2244 2245 2246 2247
    # 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 已提交
2248
      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
J
Juan Quintela 已提交
2249 2250 2251 2252 2253 2254
      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
      echo "CONFIG_KVM=y" >> $config_mak
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
    fi
esac
2255
echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_mak
B
bellard 已提交
2256
if test "$target_bigendian" = "yes" ; then
2257
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_mak
B
bellard 已提交
2258
fi
2259
if test "$target_softmmu" = "yes" ; then
2260
  echo "CONFIG_SOFTMMU=y" >> $config_mak
J
Juan Quintela 已提交
2261
  echo "LIBS+=$libs_softmmu" >> $config_mak
2262 2263
  echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak
  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
B
bellard 已提交
2264
fi
B
bellard 已提交
2265
if test "$target_user_only" = "yes" ; then
2266
  echo "CONFIG_USER_ONLY=y" >> $config_mak
B
bellard 已提交
2267
fi
2268
if test "$target_linux_user" = "yes" ; then
2269
  echo "CONFIG_LINUX_USER=y" >> $config_mak
2270 2271
fi
if test "$target_darwin_user" = "yes" ; then
2272
  echo "CONFIG_DARWIN_USER=y" >> $config_mak
2273
fi
P
pbrook 已提交
2274 2275 2276 2277 2278 2279 2280
list=""
if test ! -z "$gdb_xml_files" ; then
  for x in $gdb_xml_files; do
    list="$list $source_path/gdb-xml/$x"
  done
fi
echo "TARGET_XML_FILES=$list" >> $config_mak
2281

2282 2283 2284 2285
case "$target_arch2" in
  arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|sparc|sparc64|sparc32plus)
    echo "CONFIG_SOFTFLOAT=y" >> $config_mak
    ;;
2286 2287 2288
  *)
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_mak
    ;;
2289 2290
esac

P
pbrook 已提交
2291
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
2292
  echo "TARGET_HAS_BFLT=y" >> $config_mak
P
pbrook 已提交
2293
fi
2294 2295
if test "$target_user_only" = "yes" \
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
2296
  echo "CONFIG_USE_NPTL=y" >> $config_mak
2297
fi
2298 2299
# 32 bit ELF loader in addition to native 64 bit loader?
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
2300
  echo "TARGET_HAS_ELFLOAD32=y" >> $config_mak
2301
fi
P
Paul Brook 已提交
2302 2303 2304
if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
  echo "CONFIG_USE_GUEST_BASE=y" >> $config_mak
fi
B
blueswir1 已提交
2305
if test "$target_bsd_user" = "yes" ; then
2306
  echo "CONFIG_BSD_USER=y" >> $config_mak
B
blueswir1 已提交
2307
fi
2308

2309
# generate QEMU_CFLAGS/LDFLAGS for targets
2310

2311
cflags=""
2312
ldflags=""
2313

J
Juan Quintela 已提交
2314 2315 2316 2317 2318 2319 2320 2321
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"

2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362
for i in $ARCH $TARGET_BASE_ARCH ; do
  case "$i" in
  alpha)
    echo "CONFIG_ALPHA_DIS=y"  >> $config_mak
  ;;
  arm)
    echo "CONFIG_ARM_DIS=y"  >> $config_mak
  ;;
  cris)
    echo "CONFIG_CRIS_DIS=y"  >> $config_mak
  ;;
  hppa)
    echo "CONFIG_HPPA_DIS=y"  >> $config_mak
  ;;
  i386|x86_64)
    echo "CONFIG_I386_DIS=y"  >> $config_mak
  ;;
  m68k)
    echo "CONFIG_M68K_DIS=y"  >> $config_mak
  ;;
  microblaze)
    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_mak
  ;;
  mips*)
    echo "CONFIG_MIPS_DIS=y"  >> $config_mak
  ;;
  ppc*)
    echo "CONFIG_PPC_DIS=y"  >> $config_mak
  ;;
  s390)
    echo "CONFIG_S390_DIS=y"  >> $config_mak
  ;;
  sh4)
    echo "CONFIG_SH4_DIS=y"  >> $config_mak
  ;;
  sparc*)
    echo "CONFIG_SPARC_DIS=y"  >> $config_mak
  ;;
  esac
done

2363 2364 2365 2366 2367
case "$ARCH" in
alpha)
  # Ensure there's only a single GP
  cflags="-msmall-data $cflags"
;;
2368 2369 2370
ia64)
  cflags="-mno-sdata $cflags"
;;
2371 2372
esac

2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383
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

2384
if test "$target_user_only" = "yes" -a "$static" = "no" -a \
2385
	"$user_pie" = "yes" ; then
2386 2387 2388 2389
  cflags="-fpie $cflags"
  ldflags="-pie $ldflags"
fi

2390 2391 2392 2393 2394 2395
if test "$target_softmmu" = "yes" -a \( \
        "$TARGET_ARCH" = "microblaze" -o \
        "$TARGET_ARCH" = "cris" \) ; then
  echo "CONFIG_NEED_MMU=y" >> $config_mak
fi

2396 2397 2398 2399 2400 2401 2402 2403
if test "$gprof" = "yes" ; then
  echo "TARGET_GPROF=yes" >> $config_mak
  if test "$target_linux_user" = "yes" ; then
    cflags="-p $cflags"
    ldflags="-p $ldflags"
  fi
  if test "$target_softmmu" = "yes" ; then
    ldflags="-p $ldflags"
2404
    echo "GPROF_CFLAGS=-p" >> $config_mak
2405 2406 2407
  fi
fi

2408
linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
2409
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
2410 2411 2412
  case "$ARCH" in
  sparc)
    # -static is used to avoid g1/g3 usage by the dynamic linker
2413
    ldflags="$linker_script -static $ldflags"
2414 2415
    ;;
  ia64)
2416
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2417
    ;;
2418
  i386|x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
2419
    ldflags="$linker_script $ldflags"
2420 2421 2422 2423 2424 2425
    ;;
  esac
fi
if test "$target_softmmu" = "yes" ; then
  case "$ARCH" in
  ia64)
2426
    ldflags="-Wl,-G0 $linker_script -static $ldflags"
2427 2428 2429 2430
    ;;
  esac
fi

2431
echo "LDFLAGS+=$ldflags" >> $config_mak
2432
echo "QEMU_CFLAGS+=$cflags" >> $config_mak
2433

2434 2435 2436
echo "/* Automatically generated by configure - do not modify */" > $config_h
echo "#include \"../config-host.h\"" >> $config_h

2437
/bin/sh $source_path/create_config < $config_mak >> $config_h
2438

2439 2440 2441 2442 2443 2444 2445
if test -f ${config_h}~ ; then
  if cmp -s $config_h ${config_h}~ ; then
    mv ${config_h}~ $config_h
  else
    rm ${config_h}~
  fi
fi
2446

2447
done # for target in $targets
B
bellard 已提交
2448 2449 2450

# build tree in object directory if source path is different from current one
if test "$source_path_used" = "yes" ; then
A
Alexander Graf 已提交
2451
    DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
2452
    DIRS="$DIRS roms/pcbios roms/seabios roms/vgabios"
B
bellard 已提交
2453
    FILES="Makefile tests/Makefile"
2454
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
E
edgar_igl 已提交
2455
    FILES="$FILES tests/test-mmap.c"
2456
    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
2457
    FILES="$FILES roms/pcbios/Makefile roms/seabios/Makefile roms/vgabios/Makefile"
2458 2459 2460
    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 已提交
2461 2462 2463
    for dir in $DIRS ; do
            mkdir -p $dir
    done
B
bellard 已提交
2464
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
B
bellard 已提交
2465
    for f in $FILES ; do
B
bellard 已提交
2466 2467
        rm -f $f
        ln -s $source_path/$f $f
B
bellard 已提交
2468 2469
    done
fi
P
Paul Brook 已提交
2470

2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484
# 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 已提交
2485 2486 2487 2488 2489 2490
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 已提交
2491
  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
P
Paul Brook 已提交
2492
done
2493 2494 2495 2496 2497

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