configure 48.1 KB
Newer Older
bellard's avatar
bellard committed
1 2
#!/bin/sh
#
bellard's avatar
bellard committed
3
# qemu configure script (c) 2003 Fabrice Bellard
bellard's avatar
bellard committed
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

bellard's avatar
bellard committed
14 15 16 17
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18
TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
19
TMPSDLLOG="${TMPDIR1}/qemu-conf-sdl-$$-${RANDOM}.log"
bellard's avatar
bellard committed
20

21
trap "rm -f $TMPC $TMPO $TMPE $TMPS $TMPI $TMPSDLLOG; exit" 0 2 3 15
22

bellard's avatar
bellard committed
23
# default parameters
bellard's avatar
bellard committed
24
prefix=""
25
interp_prefix="/usr/gnemul/qemu-%M"
bellard's avatar
bellard committed
26
static="no"
bellard's avatar
bellard committed
27 28
cross_prefix=""
cc="gcc"
malc's avatar
malc committed
29
audio_drv_list=""
malc's avatar
malc committed
30 31
audio_card_list="ac97 es1370 sb16"
audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
bellard's avatar
bellard committed
32 33 34
host_cc="gcc"
ar="ar"
make="make"
35
install="install"
bellard's avatar
bellard committed
36
strip="strip"
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82

# parse CC options first
for opt do
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
  case "$opt" in
  --cross-prefix=*) cross_prefix="$optarg"
  ;;
  --cc=*) cc="$optarg"
  ;;
  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}"
strip="${cross_prefix}${strip}"

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

if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
  : 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
  $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
}

if check_define __i386__ ; then
  cpu="i386"
elif check_define __x86_64__ ; then
  cpu="x86_64"
blueswir1's avatar
blueswir1 committed
83 84 85 86 87 88 89 90
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
malc's avatar
malc committed
91 92 93 94 95 96
elif check_define _ARCH_PPC ; then
  if check_define _ARCH_PPC64 ; then
    cpu="ppc64"
  else
    cpu="ppc"
  fi
97
else
malc's avatar
malc committed
98
  cpu=`uname -m`
99 100
fi

bellard's avatar
bellard committed
101
target_list=""
bellard's avatar
bellard committed
102 103
case "$cpu" in
  i386|i486|i586|i686|i86pc|BePC)
104
    cpu="i386"
bellard's avatar
bellard committed
105
  ;;
aurel32's avatar
aurel32 committed
106 107 108 109 110 111
  x86_64|amd64)
    cpu="x86_64"
  ;;
  alpha)
    cpu="alpha"
  ;;
112
  armv*b)
113 114
    cpu="armv4b"
  ;;
115
  armv*l)
bellard's avatar
bellard committed
116 117
    cpu="armv4l"
  ;;
aurel32's avatar
aurel32 committed
118 119
  cris)
    cpu="cris"
bellard's avatar
bellard committed
120
  ;;
aurel32's avatar
aurel32 committed
121 122 123
  parisc|parisc64)
    cpu="hppa"
  ;;
aurel32's avatar
aurel32 committed
124 125 126 127 128
  ia64)
    cpu="ia64"
  ;;
  m68k)
    cpu="m68k"
bellard's avatar
bellard committed
129 130 131 132
  ;;
  mips)
    cpu="mips"
  ;;
ths's avatar
ths committed
133 134 135
  mips64)
    cpu="mips64"
  ;;
malc's avatar
malc committed
136 137 138 139 140
  ppc)
    cpu="ppc"
  ;;
  ppc64)
    cpu="ppc64"
141
  ;;
ths's avatar
ths committed
142
  s390*)
bellard's avatar
bellard committed
143 144
    cpu="s390"
  ;;
145
  sparc|sun4[cdmuv])
bellard's avatar
bellard committed
146 147 148 149 150
    cpu="sparc"
  ;;
  sparc64)
    cpu="sparc64"
  ;;
bellard's avatar
bellard committed
151 152 153 154 155
  *)
    cpu="unknown"
  ;;
esac
gprof="no"
156
sparse="no"
bellard's avatar
bellard committed
157
bigendian="no"
bellard's avatar
bellard committed
158 159 160
mingw32="no"
EXESUF=""
gdbstub="yes"
bellard's avatar
bellard committed
161
slirp="yes"
162
vde="yes"
bellard's avatar
bellard committed
163 164
fmod_lib=""
fmod_inc=""
blueswir1's avatar
blueswir1 committed
165
oss_lib=""
166
vnc_tls="yes"
167
bsd="no"
bellard's avatar
bellard committed
168
linux="no"
169
solaris="no"
bellard's avatar
bellard committed
170
kqemu="no"
171
profiler="no"
172
cocoa="no"
173
check_gfx="yes"
174
softmmu="yes"
175 176
linux_user="no"
darwin_user="no"
177
bsd_user="no"
178
build_docs="no"
179
uname_release=""
balrog's avatar
balrog committed
180
curses="yes"
181
aio="yes"
182
nptl="yes"
183
mixemu="no"
184
bluez="yes"
aliguori's avatar
aliguori committed
185
kvm="yes"
186
kerneldir=""
malc's avatar
malc committed
187
aix="no"
ths's avatar
ths committed
188
blobs="yes"
189
fdt="yes"
bellard's avatar
bellard committed
190 191

# OS specific
192 193 194 195 196 197 198
if check_define __linux__ ; then
  targetos="Linux"
elif check_define _WIN32 ; then
  targetos='MINGW32'
else
  targetos=`uname -s`
fi
bellard's avatar
bellard committed
199
case $targetos in
bellard's avatar
bellard committed
200 201
CYGWIN*)
mingw32="yes"
202
OS_CFLAGS="-mno-cygwin"
203 204 205
if [ "$cpu" = "i386" ] ; then
    kqemu="yes"
fi
206
audio_possible_drivers="sdl"
bellard's avatar
bellard committed
207
;;
bellard's avatar
bellard committed
208 209
MINGW32*)
mingw32="yes"
210 211 212
if [ "$cpu" = "i386" ] ; then
    kqemu="yes"
fi
213
audio_possible_drivers="dsound sdl fmod"
bellard's avatar
bellard committed
214
;;
ths's avatar
ths committed
215
GNU/kFreeBSD)
malc's avatar
malc committed
216
audio_drv_list="oss"
217
audio_possible_drivers="oss sdl esd pa"
ths's avatar
ths committed
218 219 220 221
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
    kqemu="yes"
fi
;;
bellard's avatar
bellard committed
222 223
FreeBSD)
bsd="yes"
malc's avatar
malc committed
224
audio_drv_list="oss"
225
audio_possible_drivers="oss sdl esd pa"
bellard's avatar
bellard committed
226
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard's avatar
bellard committed
227 228
    kqemu="yes"
fi
bellard's avatar
bellard committed
229 230 231
;;
NetBSD)
bsd="yes"
malc's avatar
malc committed
232
audio_drv_list="oss"
233
audio_possible_drivers="oss sdl esd"
234
oss_lib="-lossaudio"
bellard's avatar
bellard committed
235 236 237
;;
OpenBSD)
bsd="yes"
238
openbsd="yes"
malc's avatar
malc committed
239
audio_drv_list="oss"
240
audio_possible_drivers="oss sdl esd"
blueswir1's avatar
blueswir1 committed
241
oss_lib="-lossaudio"
bellard's avatar
bellard committed
242
;;
243 244 245
Darwin)
bsd="yes"
darwin="yes"
246
darwin_user="yes"
247
cocoa="yes"
malc's avatar
malc committed
248
audio_drv_list="coreaudio"
249
audio_possible_drivers="coreaudio sdl fmod"
250
OS_CFLAGS="-mdynamic-no-pic"
251
OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
252
;;
bellard's avatar
bellard committed
253
SunOS)
254 255 256
    solaris="yes"
    make="gmake"
    install="ginstall"
ths's avatar
ths committed
257
    needs_libsunmath="no"
258
    solarisrev=`uname -r | cut -f2 -d.`
259 260 261 262 263 264
    # 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
265
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths's avatar
ths committed
266 267 268 269 270 271 272 273 274 275 276 277
        if test "$solarisrev" -le 9 ; then
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
                needs_libsunmath="yes"
            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
        fi
        if test "$solarisrev" -ge 9 ; then
278 279
            kqemu="yes"
        fi
ths's avatar
ths committed
280
    fi
ths's avatar
ths committed
281
    if test -f /usr/include/sys/soundcard.h ; then
malc's avatar
malc committed
282
        audio_drv_list="oss"
ths's avatar
ths committed
283
    fi
284
    audio_possible_drivers="oss sdl"
ths's avatar
ths committed
285
;;
malc's avatar
malc committed
286 287 288 289
AIX)
aix="yes"
make="gmake"
;;
290
*)
malc's avatar
malc committed
291
audio_drv_list="oss"
malc's avatar
malc committed
292
audio_possible_drivers="oss alsa sdl esd pa"
bellard's avatar
bellard committed
293
linux="yes"
294
linux_user="yes"
295
usb="linux"
bellard's avatar
bellard committed
296
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard's avatar
bellard committed
297
    kqemu="yes"
298
    audio_possible_drivers="$audio_possible_drivers fmod"
bellard's avatar
bellard committed
299
fi
300
;;
bellard's avatar
bellard committed
301 302
esac

bellard's avatar
bellard committed
303
if [ "$bsd" = "yes" ] ; then
304
  if [ "$darwin" != "yes" ] ; then
305
    make="gmake"
306
    usb="bsd"
307
  fi
308
  bsd_user="yes"
bellard's avatar
bellard committed
309 310
fi

bellard's avatar
bellard committed
311
# find source path
pbrook's avatar
pbrook committed
312
source_path=`dirname "$0"`
313 314
source_path_used="no"
workdir=`pwd`
pbrook's avatar
pbrook committed
315
if [ -z "$source_path" ]; then
316
    source_path=$workdir
pbrook's avatar
pbrook committed
317 318
else
    source_path=`cd "$source_path"; pwd`
bellard's avatar
bellard committed
319
fi
pbrook's avatar
pbrook committed
320
[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard's avatar
bellard committed
321

322
werror="no"
323 324 325 326
# generate compile errors on warnings for development builds
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
#werror="yes";
#fi
327

bellard's avatar
bellard committed
328
for opt do
pbrook's avatar
pbrook committed
329
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard's avatar
bellard committed
330
  case "$opt" in
331 332
  --help|-h) show_help=yes
  ;;
333
  --prefix=*) prefix="$optarg"
bellard's avatar
bellard committed
334
  ;;
335
  --interp-prefix=*) interp_prefix="$optarg"
bellard's avatar
bellard committed
336
  ;;
337
  --source-path=*) source_path="$optarg"
pbrook's avatar
pbrook committed
338
  source_path_used="yes"
bellard's avatar
bellard committed
339
  ;;
340
  --cross-prefix=*)
bellard's avatar
bellard committed
341
  ;;
342
  --cc=*)
bellard's avatar
bellard committed
343
  ;;
344
  --host-cc=*) host_cc="$optarg"
bellard's avatar
bellard committed
345
  ;;
346
  --make=*) make="$optarg"
bellard's avatar
bellard committed
347
  ;;
348 349
  --install=*) install="$optarg"
  ;;
350
  --extra-cflags=*) CFLAGS="$optarg"
bellard's avatar
bellard committed
351
  ;;
352
  --extra-ldflags=*) LDFLAGS="$optarg"
bellard's avatar
bellard committed
353
  ;;
354
  --cpu=*) cpu="$optarg"
bellard's avatar
bellard committed
355
  ;;
356
  --target-list=*) target_list="$optarg"
bellard's avatar
bellard committed
357
  ;;
bellard's avatar
bellard committed
358 359
  --enable-gprof) gprof="yes"
  ;;
bellard's avatar
bellard committed
360 361
  --static) static="yes"
  ;;
362 363
  --disable-sdl) sdl="no"
  ;;
malc's avatar
malc committed
364
  --fmod-lib=*) fmod_lib="$optarg"
365
  ;;
366 367
  --fmod-inc=*) fmod_inc="$optarg"
  ;;
blueswir1's avatar
blueswir1 committed
368 369
  --oss-lib=*) oss_lib="$optarg"
  ;;
370
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
bellard's avatar
bellard committed
371
  ;;
malc's avatar
malc committed
372
  --audio-drv-list=*) audio_drv_list="$optarg"
bellard's avatar
bellard committed
373
  ;;
374 375 376 377
  --enable-sparse) sparse="yes"
  ;;
  --disable-sparse) sparse="no"
  ;;
378 379
  --disable-vnc-tls) vnc_tls="no"
  ;;
bellard's avatar
bellard committed
380
  --disable-slirp) slirp="no"
381
  ;;
382
  --disable-vde) vde="no"
383
  ;;
bellard's avatar
bellard committed
384
  --disable-kqemu) kqemu="no"
385
  ;;
aurel32's avatar
aurel32 committed
386 387
  --disable-brlapi) brlapi="no"
  ;;
388 389
  --disable-bluez) bluez="no"
  ;;
aliguori's avatar
aliguori committed
390 391
  --disable-kvm) kvm="no"
  ;;
392 393
  --enable-profiler) profiler="yes"
  ;;
394 395 396 397
  --enable-cocoa)
      cocoa="yes" ;
      sdl="no" ;
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
398
  ;;
399 400
  --disable-gfx-check) check_gfx="no"
  ;;
401
  --disable-system) softmmu="no"
402
  ;;
403
  --enable-system) softmmu="yes"
404
  ;;
405
  --disable-linux-user) linux_user="no"
406
  ;;
407 408 409 410 411
  --enable-linux-user) linux_user="yes"
  ;;
  --disable-darwin-user) darwin_user="no"
  ;;
  --enable-darwin-user) darwin_user="yes"
412
  ;;
413 414 415 416
  --disable-bsd-user) bsd_user="no"
  ;;
  --enable-bsd-user) bsd_user="yes"
  ;;
417 418
  --enable-uname-release=*) uname_release="$optarg"
  ;;
419 420 421 422 423 424 425 426 427 428 429 430
  --sparc_cpu=*)
      sparc_cpu="$optarg"
      case $sparc_cpu in
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
                 target_cpu="sparc"; cpu="sparc" ;;
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
                 target_cpu="sparc"; cpu="sparc" ;;
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
                 target_cpu="sparc64"; cpu="sparc64" ;;
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
      esac
  ;;
431 432 433 434
  --enable-werror) werror="yes"
  ;;
  --disable-werror) werror="no"
  ;;
balrog's avatar
balrog committed
435 436
  --disable-curses) curses="no"
  ;;
437 438
  --disable-nptl) nptl="no"
  ;;
439 440
  --enable-mixemu) mixemu="yes"
  ;;
441 442
  --disable-aio) aio="no"
  ;;
ths's avatar
ths committed
443 444
  --disable-blobs) blobs="no"
  ;;
445 446
  --kerneldir=*) kerneldir="$optarg"
  ;;
447 448
  *) echo "ERROR: unknown option $opt"; show_help="yes"
  ;;
bellard's avatar
bellard committed
449 450 451
  esac
done

452
# default flags for all hosts
blueswir1's avatar
blueswir1 committed
453
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
454
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
455
LDFLAGS="$LDFLAGS -g"
456 457 458
if test "$werror" = "yes" ; then
CFLAGS="$CFLAGS -Werror"
fi
459

460 461 462 463
if test "$solaris" = "no" ; then
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
    fi
blueswir1's avatar
blueswir1 committed
464 465
fi

466 467 468 469
#
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
#
470
case "$cpu" in
471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486
    sparc) if test -z "$sparc_cpu" ; then
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
               ARCH_LDFLAGS="-m32"
           else
               ARCH_CFLAGS="${SP_CFLAGS}"
               ARCH_LDFLAGS="${SP_LDFLAGS}"
           fi
           ;;
    sparc64) if test -z "$sparc_cpu" ; then
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
               ARCH_LDFLAGS="-m64"
           else
               ARCH_CFLAGS="${SP_CFLAGS}"
               ARCH_LDFLAGS="${SP_LDFLAGS}"
           fi
           ;;
487 488 489
    s390)
           ARCH_CFLAGS="-march=z900"
           ;;
490 491 492 493 494 495 496 497
    i386)
           ARCH_CFLAGS="-m32"
           ARCH_LDFLAGS="-m32"
           ;;
    x86_64)
           ARCH_CFLAGS="-m64"
           ARCH_LDFLAGS="-m64"
           ;;
498 499
esac

500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522
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 "kqemu kernel acceleration support:"
echo "  --disable-kqemu          disable kqemu support"
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."
echo "  --make=MAKE              use specified make [$make]"
523
echo "  --install=INSTALL        use specified install [$install]"
524
echo "  --static                 enable static build [$static]"
525 526
echo "  --enable-sparse          enable sparse checker"
echo "  --disable-sparse         disable sparse checker (default)"
527
echo "  --disable-werror         disable compilation abort on warning"
528
echo "  --disable-sdl            disable SDL"
529
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
530 531
echo "  --audio-drv-list=LIST    set audio drivers list:"
echo "                           Available drivers: $audio_possible_drivers"
malc's avatar
malc committed
532 533
echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
echo "                           Available cards: $audio_possible_cards"
534
echo "  --enable-mixemu          enable mixer emulation"
aurel32's avatar
aurel32 committed
535
echo "  --disable-brlapi         disable BrlAPI"
536
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
537
echo "  --disable-curses         disable curses output"
538
echo "  --disable-bluez          disable bluez stack connectivity"
aliguori's avatar
aliguori committed
539
echo "  --disable-kvm            disable KVM acceleration support"
540
echo "  --disable-nptl           disable usermode NPTL support"
541 542
echo "  --enable-system          enable all system emulation targets"
echo "  --disable-system         disable all system emulation targets"
543 544 545 546
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"
547 548
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
549 550
echo "  --fmod-lib               path to FMOD library"
echo "  --fmod-inc               path to FMOD includes"
blueswir1's avatar
blueswir1 committed
551
echo "  --oss-lib                path to OSS library"
552
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
553
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
554
echo "  --disable-vde            disable support for vde network"
555
echo "  --disable-aio            disable AIO support"
ths's avatar
ths committed
556
echo "  --disable-blobs          disable installing provided firmware blobs"
557
echo "  --kerneldir=PATH         look for kernel includes in PATH"
558
echo ""
ths's avatar
ths committed
559
echo "NOTE: The object files are built at the place where configure is launched"
560 561 562
exit 1
fi

bellard's avatar
bellard committed
563
if test "$mingw32" = "yes" ; then
bellard's avatar
bellard committed
564
    linux="no"
bellard's avatar
bellard committed
565
    EXESUF=".exe"
bellard's avatar
bellard committed
566
    oss="no"
aliguori's avatar
aliguori committed
567
    linux_user="no"
568
    bsd_user="no"
aliguori's avatar
aliguori committed
569 570
fi

571 572 573 574
if test ! -x "$(which cgcc 2>/dev/null)"; then
    sparse="no"
fi

bellard's avatar
bellard committed
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599
#
# 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
600
fi
bellard's avatar
bellard committed
601 602


bellard's avatar
bellard committed
603 604
if test -z "$target_list" ; then
# these targets are portable
605
    if [ "$softmmu" = "yes" ] ; then
aurel32's avatar
aurel32 committed
606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622
        target_list="\
i386-softmmu \
x86_64-softmmu \
arm-softmmu \
cris-softmmu \
m68k-softmmu \
mips-softmmu \
mipsel-softmmu \
mips64-softmmu \
mips64el-softmmu \
ppc-softmmu \
ppcemb-softmmu \
ppc64-softmmu \
sh4-softmmu \
sh4eb-softmmu \
sparc-softmmu \
"
623
    fi
bellard's avatar
bellard committed
624
# the following are Linux specific
625
    if [ "$linux_user" = "yes" ] ; then
aurel32's avatar
aurel32 committed
626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644
        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 \
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 \
"
645 646 647
    fi
# the following are Darwin specific
    if [ "$darwin_user" = "yes" ] ; then
malc's avatar
malc committed
648
        target_list="$target_list i386-darwin-user ppc-darwin-user "
bellard's avatar
bellard committed
649
    fi
650 651 652 653 654 655
# the following are BSD specific
    if [ "$bsd_user" = "yes" ] ; then
        target_list="${target_list}\
sparc64-bsd-user \
"
    fi
656
else
657
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard's avatar
bellard committed
658
fi
659 660 661 662
if test -z "$target_list" ; then
    echo "No targets enabled"
    exit 1
fi
bellard's avatar
bellard committed
663

bellard's avatar
bellard committed
664 665 666 667 668 669 670
if test -z "$cross_prefix" ; then

# ---
# big/little endian test
cat > $TMPC << EOF
#include <inttypes.h>
int main(int argc, char ** argv){
671 672
        volatile uint32_t i=0x01234567;
        return (*((uint8_t*)(&i))) == 0x67;
bellard's avatar
bellard committed
673 674 675
}
EOF

676
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
bellard's avatar
bellard committed
677 678 679 680 681 682 683 684
$TMPE && bigendian="yes"
else
echo big/little test failed
fi

else

# if cross compiling, cannot launch a program, so make a static guess
aurel32's avatar
aurel32 committed
685
if test "$cpu" = "armv4b" \
aurel32's avatar
aurel32 committed
686
     -o "$cpu" = "hppa" \
aurel32's avatar
aurel32 committed
687 688 689
     -o "$cpu" = "m68k" \
     -o "$cpu" = "mips" \
     -o "$cpu" = "mips64" \
malc's avatar
malc committed
690 691
     -o "$cpu" = "ppc" \
     -o "$cpu" = "ppc64" \
aurel32's avatar
aurel32 committed
692 693 694
     -o "$cpu" = "s390" \
     -o "$cpu" = "sparc" \
     -o "$cpu" = "sparc64"; then
bellard's avatar
bellard committed
695 696 697 698 699
    bigendian="yes"
fi

fi

bellard's avatar
bellard committed
700 701
# host long bits test
hostlongbits="32"
aurel32's avatar
aurel32 committed
702 703 704
if test "$cpu" = "x86_64" \
     -o "$cpu" = "alpha" \
     -o "$cpu" = "ia64" \
malc's avatar
malc committed
705 706
     -o "$cpu" = "sparc64" \
     -o "$cpu" = "ppc64"; then
bellard's avatar
bellard committed
707 708 709
    hostlongbits="64"
fi

bellard's avatar
bellard committed
710
# check gcc options support
bellard's avatar
bellard committed
711 712 713 714 715
cat > $TMPC <<EOF
int main(void) {
}
EOF

716 717 718
# Check host NPTL support
cat > $TMPC <<EOF
#include <sched.h>
pbrook's avatar
pbrook committed
719
#include <linux/futex.h>
720 721 722 723 724 725 726 727
void foo()
{
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
#error bork
#endif
}
EOF

728
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
729 730 731 732 733
  :
else
   nptl="no"
fi

734 735 736 737 738 739 740
##########################################
# zlib check

cat > $TMPC << EOF
#include <zlib.h>
int main(void) { zlibVersion(); return 0; }
EOF
741
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
742 743 744 745 746 747 748 749 750
    :
else
    echo
    echo "Error: zlib check failed"
    echo "Make sure to have the zlib libs and headers installed."
    echo
    exit 1
fi

bellard's avatar
bellard committed
751 752 753 754 755 756
##########################################
# SDL probe

sdl_too_old=no

if test -z "$sdl" ; then
757 758 759 760
    sdl_config="sdl-config"
    sdl=no
    sdl_static=no

bellard's avatar
bellard committed
761 762 763 764 765
cat > $TMPC << EOF
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
766
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > $TMPSDLLOG 2>&1 ; then
aliguori's avatar
aliguori committed
767 768 769 770 771 772
        _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
773
            fi
aliguori's avatar
aliguori committed
774
        fi
bellard's avatar
bellard committed
775

aliguori's avatar
aliguori committed
776 777 778 779 780 781 782 783 784
        # static link with sdl ?
        if test "$sdl" = "yes" ; then
            aa="no"
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
            if [ "$aa" = "yes" ] ; then
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
            fi

785
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
aliguori's avatar
aliguori committed
786 787 788 789
                sdl_static=yes
            fi
        fi # static link
    fi # sdl compile test
790
else
791 792 793
    # Make sure to disable cocoa if sdl was set
    if test "$sdl" = "yes" ; then
       cocoa="no"
794
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
795
    fi
796
fi # -z $sdl
bellard's avatar
bellard committed
797

798 799 800
##########################################
# VNC TLS detection
if test "$vnc_tls" = "yes" ; then
801 802 803 804 805 806 807
cat > $TMPC <<EOF
#include <gnutls/gnutls.h>
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
EOF
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
808
           $vnc_tls_libs > /dev/null 2> /dev/null ; then
809 810 811 812
	:
    else
	vnc_tls="no"
    fi
813 814
fi

815 816 817 818 819
##########################################
# vde libraries probe
if test "$vde" = "yes" ; then
  cat > $TMPC << EOF
#include <libvdeplug.h>
pbrook's avatar
pbrook committed
820 821 822 823 824 825
int main(void)
{
    struct vde_open_args a = {0, 0, 0};
    vde_open("", "", &a);
    return 0;
}
826
EOF
827
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
828 829
        :
    else
830
        vde="no"
831 832 833
    fi
fi

834
##########################################
835
# Sound support libraries probe
836

837 838 839 840 841 842 843 844 845 846
audio_drv_probe()
{
    drv=$1
    hdr=$2
    lib=$3
    exp=$4
    cfl=$5
        cat > $TMPC << EOF
#include <$hdr>
int main(void) { $exp }
847
EOF
848
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
849 850 851 852 853 854 855 856 857 858
        :
    else
        echo
        echo "Error: $drv check failed"
        echo "Make sure to have the $drv libs and headers installed."
        echo
        exit 1
    fi
}

859
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880
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);"
    ;;

    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"
    ;;

    esd)
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
    ;;
malc's avatar
malc committed
881 882 883 884 885 886

    pa)
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
    ;;

blueswir1's avatar
blueswir1 committed
887 888 889 890
    oss|sdl|core|wav|dsound)
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
    ;;

malc's avatar
malc committed
891
    *)
malc's avatar
malc committed
892
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malc's avatar
malc committed
893 894 895 896 897 898 899
        echo
        echo "Error: Unknown driver '$drv' selected"
        echo "Possible drivers are: $audio_possible_drivers"
        echo
        exit 1
    }
    ;;
900 901
    esac
done
902

aurel32's avatar
aurel32 committed
903 904 905 906 907 908 909 910 911
##########################################
# BrlAPI probe

if test -z "$brlapi" ; then
    brlapi=no
cat > $TMPC << EOF
#include <brlapi.h>
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
EOF
912
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
aurel32's avatar
aurel32 committed
913 914 915 916
	    brlapi=yes
    fi # brlapi compile test
fi # -z $brlapi

balrog's avatar
balrog committed
917 918 919 920 921 922 923 924 925
##########################################
# curses probe

if test "$curses" = "yes" ; then
  curses=no
  cat > $TMPC << EOF
#include <curses.h>
int main(void) { return curses_version(); }
EOF
926
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
balrog's avatar
balrog committed
927 928 929 930
    curses=yes
  fi
fi # test "$curses"

931 932 933 934 935 936
##########################################
# bluez support probe
if test "$bluez" = "yes" ; then
  `pkg-config bluez` || bluez="no"
fi
if test "$bluez" = "yes" ; then
937 938 939 940
  cat > $TMPC << EOF
#include <bluetooth/bluetooth.h>
int main(void) { return bt_error(0); }
EOF
941 942
  bluez_cflags=`pkg-config --cflags bluez`
  bluez_libs=`pkg-config --libs bluez`
943
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
944
      $bluez_libs > /dev/null 2> /dev/null ; then
945 946 947 948
    :
  else
    bluez="no"
  fi
949 950
fi

aliguori's avatar
aliguori committed
951 952 953 954 955
##########################################
# kvm probe
if test "$kvm" = "yes" ; then
    cat > $TMPC <<EOF
#include <linux/kvm.h>
956
#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
aliguori's avatar
aliguori committed
957 958
#error Invalid KVM version
#endif
959 960 961 962 963 964 965 966 967
#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
aliguori's avatar
aliguori committed
968 969
int main(void) { return 0; }
EOF
970 971
  if test "$kerneldir" != "" ; then
      kvm_cflags=-I"$kerneldir"/include
972 973 974
      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
         -a -d "$kerneldir/arch/x86/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
aliguori's avatar
aliguori committed
975 976
	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
977 978 979
        elif test -d "$kerneldir/arch/$cpu/include" ; then
            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
      fi
980 981 982
  else
      kvm_cflags=""
  fi
aliguori's avatar
aliguori committed
983
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
984
      > /dev/null 2>/dev/null ; then
aliguori's avatar
aliguori committed
985 986
    :
  else
987 988 989 990 991 992 993 994 995 996
    kvm="no";
    if [ -x "`which awk 2>/dev/null`" ] && \
       [ -x "`which grep 2>/dev/null`" ]; then
      kvmerr=`$cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \
	| grep "error: " \
	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
      if test "$kvmerr" != "" ; then
        kvm="no - (${kvmerr})"
      fi
    fi
aliguori's avatar
aliguori committed
997 998 999
  fi
fi

1000 1001
##########################################
# AIO probe
1002 1003
AIOLIBS=""

1004 1005 1006
if test "$aio" = "yes" ; then
  aio=no
  cat > $TMPC << EOF
1007
#include <pthread.h>
1008
int main(void) { pthread_mutex_t lock;  return 0; }
1009 1010 1011
EOF
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
    aio=yes
1012
    AIOLIBS="-lpthread"
1013 1014 1015
  fi
fi

1016 1017 1018
##########################################
# iovec probe
cat > $TMPC <<EOF
blueswir1's avatar
blueswir1 committed
1019
#include <sys/types.h>
1020
#include <sys/uio.h>
blueswir1's avatar
blueswir1 committed
1021
#include <unistd.h>
1022 1023 1024
int main(void) { struct iovec iov; return 0; }
EOF
iovec=no
1025
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1026 1027 1028
  iovec=yes
fi

1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040
##########################################
# fdt probe
if test "$fdt" = "yes" ; then
    fdt=no
    cat > $TMPC << EOF
int main(void) { return 0; }
EOF
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null ; then
    fdt=yes
  fi
fi

1041
# Check if tools are available to build documentation.
1042 1043
if [ -x "`which texi2html 2>/dev/null`" ] && \
   [ -x "`which pod2man 2>/dev/null`" ]; then
1044 1045 1046
  build_docs="yes"
fi

1047 1048 1049 1050 1051 1052 1053 1054 1055
##########################################
# 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

rt=no
1056
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1057
  :
1058
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1059 1060 1061 1062 1063 1064 1065 1066
  rt=yes
fi

if test "$rt" = "yes" ; then
  # Hack, we should have a general purpose LIBS for this sort of thing
  AIOLIBS="$AIOLIBS -lrt"
fi

bellard's avatar
bellard committed
1067
if test "$mingw32" = "yes" ; then
1068
  if test -z "$prefix" ; then
1069
      prefix="c:\\\\Program Files\\\\Qemu"
1070 1071 1072 1073 1074
  fi
  mansuffix=""
  datasuffix=""
  docsuffix=""
  binsuffix=""
bellard's avatar
bellard committed
1075
else
1076 1077 1078 1079 1080 1081 1082
  if test -z "$prefix" ; then
      prefix="/usr/local"
  fi
  mansuffix="/share/man"
  datasuffix="/share/qemu"
  docsuffix="/share/doc/qemu"
  binsuffix="/bin"
bellard's avatar
bellard committed
1083
fi
1084

bellard's avatar
bellard committed
1085
echo "Install prefix    $prefix"
1086 1087
echo "BIOS directory    $prefix$datasuffix"
echo "binary directory  $prefix$binsuffix"
bellard's avatar
bellard committed
1088
if test "$mingw32" = "no" ; then
1089
echo "Manual directory  $prefix$mansuffix"
bellard's avatar
bellard committed
1090
echo "ELF interp prefix $interp_prefix"
bellard's avatar
bellard committed
1091
fi
1092
echo "Source path       $source_path"
bellard's avatar
bellard committed
1093
echo "C compiler        $cc"
bellard's avatar
bellard committed
1094
echo "Host C compiler   $host_cc"
pbrook's avatar
pbrook committed
1095
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
bellard's avatar
bellard committed
1096
echo "make              $make"
1097
echo "install           $install"
bellard's avatar
bellard committed
1098
echo "host CPU          $cpu"
bellard's avatar
bellard committed
1099
echo "host big endian   $bigendian"
1100
echo "target list       $target_list"
bellard's avatar
bellard committed
1101
echo "gprof enabled     $gprof"
1102
echo "sparse enabled    $sparse"
1103
echo "profiler          $profiler"
bellard's avatar
bellard committed
1104
echo "static build      $static"
1105
echo "-Werror enabled   $werror"
1106 1107 1108
if test "$darwin" = "yes" ; then
    echo "Cocoa support     $cocoa"
fi
1109
echo "SDL support       $sdl"
bellard's avatar
bellard committed
1110 1111 1112
if test "$sdl" != "no" ; then
    echo "SDL static link   $sdl_static"
fi
balrog's avatar
balrog committed
1113
echo "curses support    $curses"
bellard's avatar
bellard committed
1114
echo "mingw32 support   $mingw32"
malc's avatar
malc committed
1115