configure 62.1 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 302 303 304 305 306 307 308 309 310 311 312 313
  solaris="yes"
  make="gmake"
  install="ginstall"
  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"
314 315 316
        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"
317 318 319 320 321 322 323
      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 已提交
324
    fi
325 326 327 328 329
  fi
  if test -f /usr/include/sys/soundcard.h ; then
    audio_drv_list="oss"
  fi
  audio_possible_drivers="oss sdl"
330 331 332 333
# 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 已提交
334
  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
335
  LIBS="-lsocket -lnsl -lresolv $LIBS"
T
ths 已提交
336
;;
M
malc 已提交
337
AIX)
338 339
  aix="yes"
  make="gmake"
M
malc 已提交
340
;;
341
*)
342 343 344 345 346 347
  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
348
    audio_possible_drivers="$audio_possible_drivers fmod"
349
  fi
B
bellard 已提交
350
;;
B
bellard 已提交
351 352
esac

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

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

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

378
werror=""
379

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

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

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

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

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


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

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

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

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

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

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

else

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

fi

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

852 853 854 855 856 857

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

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

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

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

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

895 896 897
##########################################
# xen probe

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

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

sdl_too_old=no

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

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

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

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

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

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

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

1074
##########################################
1075
# Sound support libraries probe
1076

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367
##########################################
# 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
1368
    linux_aio=no
1369 1370 1371
  fi
fi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627
##########################################
# 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 已提交
1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639
##########################################
# 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

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

# default flags for all hosts
J
Juan Quintela 已提交
1644 1645
QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
CFLAGS="-g $CFLAGS"
1646
if test "$debug" = "no" ; then
1647
  CFLAGS="-O2 $CFLAGS"
1648
fi
J
Juan Quintela 已提交
1649 1650
QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
1651 1652 1653
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"
1654
LDFLAGS="-g $LDFLAGS"
1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668

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

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

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

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

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

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

#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

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

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

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

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

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

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

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

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

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

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

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

2020 2021
echo "/* Automatically generated by configure - do not modify */" > $config_host_h

2022
/bin/sh $source_path/create_config < $config_host_mak >> $config_host_h
2023

2024 2025 2026
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 已提交
2027
  else
2028
    rm ${config_host_h}~
P
Paul Brook 已提交
2029 2030 2031
  fi
fi

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

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

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

2084 2085
test -f $config_h && mv $config_h ${config_h}~

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

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

2100 2101

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

2103
echo "include ../config-host.mak" >> $config_mak
2104

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

2112
TARGET_ARCH="$target_arch2"
2113
TARGET_BASE_ARCH=""
2114
TARGET_ABI_DIR=""
2115

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

2280 2281 2282 2283
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
    ;;
2284 2285 2286
  *)
    echo "CONFIG_NOSOFTFLOAT=y" >> $config_mak
    ;;
2287 2288
esac

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

2307
# generate QEMU_CFLAGS/LDFLAGS for targets
2308

2309
cflags=""
2310
ldflags=""
2311

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

2320 2321 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
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

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

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

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

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

2394 2395 2396 2397 2398 2399 2400 2401
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"
2402
    echo "GPROF_CFLAGS=-p" >> $config_mak
2403 2404 2405
  fi
fi

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

2429
echo "LDFLAGS+=$ldflags" >> $config_mak
2430
echo "QEMU_CFLAGS+=$cflags" >> $config_mak
2431

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

2435
/bin/sh $source_path/create_config < $config_mak >> $config_h
2436

2437 2438 2439 2440 2441 2442 2443
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
2444

2445
done # for target in $targets
B
bellard 已提交
2446 2447 2448

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

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