Statistics
| Branch: | Revision:

root / configure @ f652e6af

History | View | Annotate | Download (46 kB)

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

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

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

    
23
# default parameters
24
prefix=""
25
interp_prefix="/usr/gnemul/qemu-%M"
26
static="no"
27
cross_prefix=""
28
cc="gcc"
29
audio_drv_list=""
30
audio_card_list=""
31
host_cc="gcc"
32
ar="ar"
33
make="make"
34
install="install"
35
strip="strip"
36
cpu=`test $(uname -s) = AIX && uname -p || uname -m`
37
target_list=""
38
case "$cpu" in
39
  i386|i486|i586|i686|i86pc|BePC)
40
    cpu="i386"
41
  ;;
42
  x86_64|amd64)
43
    cpu="x86_64"
44
  ;;
45
  alpha)
46
    cpu="alpha"
47
  ;;
48
  armv*b)
49
    cpu="armv4b"
50
  ;;
51
  armv*l)
52
    cpu="armv4l"
53
  ;;
54
  cris)
55
    cpu="cris"
56
  ;;
57
  parisc|parisc64)
58
    cpu="hppa"
59
  ;;
60
  ia64)
61
    cpu="ia64"
62
  ;;
63
  m68k)
64
    cpu="m68k"
65
  ;;
66
  mips)
67
    cpu="mips"
68
  ;;
69
  mips64)
70
    cpu="mips64"
71
  ;;
72
  "Power Macintosh"|ppc|ppc64|powerpc)
73
    cpu="powerpc"
74
  ;;
75
  s390*)
76
    cpu="s390"
77
  ;;
78
  sparc|sun4[cdmuv])
79
    cpu="sparc"
80
  ;;
81
  sparc64)
82
    cpu="sparc64"
83
  ;;
84
  *)
85
    cpu="unknown"
86
  ;;
87
esac
88
gprof="no"
89
sparse="no"
90
bigendian="no"
91
mingw32="no"
92
EXESUF=""
93
gdbstub="yes"
94
slirp="yes"
95
vde="yes"
96
fmod_lib=""
97
fmod_inc=""
98
oss_lib=""
99
vnc_tls="yes"
100
bsd="no"
101
linux="no"
102
solaris="no"
103
kqemu="no"
104
profiler="no"
105
cocoa="no"
106
check_gfx="yes"
107
softmmu="yes"
108
linux_user="no"
109
darwin_user="no"
110
bsd_user="no"
111
build_docs="no"
112
uname_release=""
113
curses="yes"
114
aio="yes"
115
nptl="yes"
116
mixemu="no"
117
bluez="yes"
118
kvm="yes"
119
kerneldir=""
120
aix="no"
121
blobs="yes"
122
fdt="yes"
123

    
124
# OS specific
125
targetos=`uname -s`
126
case $targetos in
127
CYGWIN*)
128
mingw32="yes"
129
OS_CFLAGS="-mno-cygwin"
130
if [ "$cpu" = "i386" ] ; then
131
    kqemu="yes"
132
fi
133
audio_possible_drivers="sdl"
134
;;
135
MINGW32*)
136
mingw32="yes"
137
if [ "$cpu" = "i386" ] ; then
138
    kqemu="yes"
139
fi
140
audio_possible_drivers="dsound sdl fmod"
141
;;
142
GNU/kFreeBSD)
143
audio_drv_list="oss"
144
audio_possible_drivers="oss sdl esd pa"
145
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
146
    kqemu="yes"
147
fi
148
;;
149
FreeBSD)
150
bsd="yes"
151
audio_drv_list="oss"
152
audio_possible_drivers="oss sdl esd pa"
153
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
154
    kqemu="yes"
155
fi
156
;;
157
NetBSD)
158
bsd="yes"
159
audio_drv_list="oss"
160
audio_possible_drivers="oss sdl esd"
161
oss_lib="-lossaudio"
162
;;
163
OpenBSD)
164
bsd="yes"
165
openbsd="yes"
166
audio_drv_list="oss"
167
audio_possible_drivers="oss sdl esd"
168
oss_lib="-lossaudio"
169
;;
170
Darwin)
171
bsd="yes"
172
darwin="yes"
173
darwin_user="yes"
174
cocoa="yes"
175
audio_drv_list="coreaudio"
176
audio_possible_drivers="coreaudio sdl fmod"
177
OS_CFLAGS="-mdynamic-no-pic"
178
OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
179
;;
180
SunOS)
181
    solaris="yes"
182
    make="gmake"
183
    install="ginstall"
184
    needs_libsunmath="no"
185
    solarisrev=`uname -r | cut -f2 -d.`
186
    # have to select again, because `uname -m` returns i86pc
187
    # even on an x86_64 box.
188
    solariscpu=`isainfo -k`
189
    if test "${solariscpu}" = "amd64" ; then
190
        cpu="x86_64"
191
    fi
192
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
193
        if test "$solarisrev" -le 9 ; then
194
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
195
                needs_libsunmath="yes"
196
            else
197
                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
198
                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
199
                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
200
                echo "Studio 11 can be downloaded from www.sun.com."
201
                exit 1
202
            fi
203
        fi
204
        if test "$solarisrev" -ge 9 ; then
205
            kqemu="yes"
206
        fi
207
    fi
208
    if test -f /usr/include/sys/soundcard.h ; then
209
        audio_drv_list="oss"
210
    fi
211
    audio_possible_drivers="oss sdl"
212
;;
213
AIX)
214
aix="yes"
215
make="gmake"
216
;;
217
*)
218
audio_drv_list="oss"
219
audio_possible_drivers="oss alsa sdl esd pa"
220
linux="yes"
221
linux_user="yes"
222
usb="linux"
223
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
224
    kqemu="yes"
225
    audio_possible_drivers="$audio_possible_drivers fmod"
226
fi
227
;;
228
esac
229

    
230
if [ "$bsd" = "yes" ] ; then
231
  if [ "$darwin" != "yes" ] ; then
232
    make="gmake"
233
    usb="bsd"
234
  fi
235
  bsd_user="yes"
236
fi
237

    
238
# find source path
239
source_path=`dirname "$0"`
240
source_path_used="no"
241
workdir=`pwd`
242
if [ -z "$source_path" ]; then
243
    source_path=$workdir
244
else
245
    source_path=`cd "$source_path"; pwd`
246
fi
247
[ -f "$workdir/vl.c" ] || source_path_used="yes"
248

    
249
werror="no"
250
# generate compile errors on warnings for development builds
251
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
252
#werror="yes";
253
#fi
254

    
255
for opt do
256
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
257
  case "$opt" in
258
  --help|-h) show_help=yes
259
  ;;
260
  --prefix=*) prefix="$optarg"
261
  ;;
262
  --interp-prefix=*) interp_prefix="$optarg"
263
  ;;
264
  --source-path=*) source_path="$optarg"
265
  source_path_used="yes"
266
  ;;
267
  --cross-prefix=*) cross_prefix="$optarg"
268
  ;;
269
  --cc=*) cc="$optarg"
270
  ;;
271
  --host-cc=*) host_cc="$optarg"
272
  ;;
273
  --make=*) make="$optarg"
274
  ;;
275
  --install=*) install="$optarg"
276
  ;;
277
  --extra-cflags=*) CFLAGS="$optarg"
278
  ;;
279
  --extra-ldflags=*) LDFLAGS="$optarg"
280
  ;;
281
  --cpu=*) cpu="$optarg"
282
  ;;
283
  --target-list=*) target_list="$optarg"
284
  ;;
285
  --enable-gprof) gprof="yes"
286
  ;;
287
  --static) static="yes"
288
  ;;
289
  --disable-sdl) sdl="no"
290
  ;;
291
  --fmod-lib=*) fmod_lib="$optarg"
292
  ;;
293
  --fmod-inc=*) fmod_inc="$optarg"
294
  ;;
295
  --oss-lib=*) oss_lib="$optarg"
296
  ;;
297
  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
298
  ;;
299
  --audio-drv-list=*) audio_drv_list="$optarg"
300
  ;;
301
  --enable-sparse) sparse="yes"
302
  ;;
303
  --disable-sparse) sparse="no"
304
  ;;
305
  --disable-vnc-tls) vnc_tls="no"
306
  ;;
307
  --disable-slirp) slirp="no"
308
  ;;
309
  --disable-vde) vde="no"
310
  ;;
311
  --disable-kqemu) kqemu="no"
312
  ;;
313
  --disable-brlapi) brlapi="no"
314
  ;;
315
  --disable-bluez) bluez="no"
316
  ;;
317
  --disable-kvm) kvm="no"
318
  ;;
319
  --enable-profiler) profiler="yes"
320
  ;;
321
  --enable-cocoa)
322
      cocoa="yes" ;
323
      sdl="no" ;
324
      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
325
  ;;
326
  --disable-gfx-check) check_gfx="no"
327
  ;;
328
  --disable-system) softmmu="no"
329
  ;;
330
  --enable-system) softmmu="yes"
331
  ;;
332
  --disable-linux-user) linux_user="no"
333
  ;;
334
  --enable-linux-user) linux_user="yes"
335
  ;;
336
  --disable-darwin-user) darwin_user="no"
337
  ;;
338
  --enable-darwin-user) darwin_user="yes"
339
  ;;
340
  --disable-bsd-user) bsd_user="no"
341
  ;;
342
  --enable-bsd-user) bsd_user="yes"
343
  ;;
344
  --enable-uname-release=*) uname_release="$optarg"
345
  ;;
346
  --sparc_cpu=*)
347
      sparc_cpu="$optarg"
348
      case $sparc_cpu in
349
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
350
                 target_cpu="sparc"; cpu="sparc" ;;
351
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
352
                 target_cpu="sparc"; cpu="sparc" ;;
353
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
354
                 target_cpu="sparc64"; cpu="sparc64" ;;
355
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
356
      esac
357
  ;;
358
  --enable-werror) werror="yes"
359
  ;;
360
  --disable-werror) werror="no"
361
  ;;
362
  --disable-curses) curses="no"
363
  ;;
364
  --disable-nptl) nptl="no"
365
  ;;
366
  --enable-mixemu) mixemu="yes"
367
  ;;
368
  --disable-aio) aio="no"
369
  ;;
370
  --disable-blobs) blobs="no"
371
  ;;
372
  --kerneldir=*) kerneldir="$optarg"
373
  ;;
374
  *) echo "ERROR: unknown option $opt"; show_help="yes"
375
  ;;
376
  esac
377
done
378

    
379
# default flags for all hosts
380
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
381
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
382
LDFLAGS="$LDFLAGS -g"
383
if test "$werror" = "yes" ; then
384
CFLAGS="$CFLAGS -Werror"
385
fi
386

    
387
if test "$solaris" = "no" ; then
388
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
389
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
390
    fi
391
fi
392

    
393
#
394
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
395
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
396
#
397
case "$cpu" in
398
    sparc) if test -z "$sparc_cpu" ; then
399
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
400
               ARCH_LDFLAGS="-m32"
401
           else
402
               ARCH_CFLAGS="${SP_CFLAGS}"
403
               ARCH_LDFLAGS="${SP_LDFLAGS}"
404
           fi
405
           ;;
406
    sparc64) if test -z "$sparc_cpu" ; then
407
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
408
               ARCH_LDFLAGS="-m64"
409
           else
410
               ARCH_CFLAGS="${SP_CFLAGS}"
411
               ARCH_LDFLAGS="${SP_LDFLAGS}"
412
           fi
413
           ;;
414
    s390)
415
           ARCH_CFLAGS="-march=z900"
416
           ;;
417
    i386)
418
           ARCH_CFLAGS="-m32"
419
           ARCH_LDFLAGS="-m32"
420
           ;;
421
    x86_64)
422
           ARCH_CFLAGS="-m64"
423
           ARCH_LDFLAGS="-m64"
424
           ;;
425
esac
426

    
427
if test x"$show_help" = x"yes" ; then
428
cat << EOF
429

    
430
Usage: configure [options]
431
Options: [defaults in brackets after descriptions]
432

    
433
EOF
434
echo "Standard options:"
435
echo "  --help                   print this message"
436
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
437
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
438
echo "                           use %M for cpu name [$interp_prefix]"
439
echo "  --target-list=LIST       set target list [$target_list]"
440
echo ""
441
echo "kqemu kernel acceleration support:"
442
echo "  --disable-kqemu          disable kqemu support"
443
echo ""
444
echo "Advanced options (experts only):"
445
echo "  --source-path=PATH       path of source code [$source_path]"
446
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
447
echo "  --cc=CC                  use C compiler CC [$cc]"
448
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
449
echo "  --make=MAKE              use specified make [$make]"
450
echo "  --install=INSTALL        use specified install [$install]"
451
echo "  --static                 enable static build [$static]"
452
echo "  --enable-sparse          enable sparse checker"
453
echo "  --disable-sparse         disable sparse checker (default)"
454
echo "  --disable-werror         disable compilation abort on warning"
455
echo "  --disable-sdl            disable SDL"
456
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
457
echo "  --audio-drv-list=LIST    set audio drivers list:"
458
echo "                           Available drivers: $audio_possible_drivers"
459
echo "  --audio-card-list=LIST   set list of additional emulated audio cards"
460
echo "                           Available cards: ac97 adlib cs4231a gus"
461
echo "  --enable-mixemu          enable mixer emulation"
462
echo "  --disable-brlapi         disable BrlAPI"
463
echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
464
echo "  --disable-curses         disable curses output"
465
echo "  --disable-bluez          disable bluez stack connectivity"
466
echo "  --disable-kvm            disable KVM acceleration support"
467
echo "  --disable-nptl           disable usermode NPTL support"
468
echo "  --enable-system          enable all system emulation targets"
469
echo "  --disable-system         disable all system emulation targets"
470
echo "  --enable-linux-user      enable all linux usermode emulation targets"
471
echo "  --disable-linux-user     disable all linux usermode emulation targets"
472
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
473
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
474
echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
475
echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
476
echo "  --fmod-lib               path to FMOD library"
477
echo "  --fmod-inc               path to FMOD includes"
478
echo "  --oss-lib                path to OSS library"
479
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
480
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
481
echo "  --disable-vde            disable support for vde network"
482
echo "  --disable-aio            disable AIO support"
483
echo "  --disable-blobs          disable installing provided firmware blobs"
484
echo "  --kerneldir=PATH         look for kernel includes in PATH"
485
echo ""
486
echo "NOTE: The object files are built at the place where configure is launched"
487
exit 1
488
fi
489

    
490
cc="${cross_prefix}${cc}"
491
ar="${cross_prefix}${ar}"
492
strip="${cross_prefix}${strip}"
493

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

    
499
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
500
  : C compiler works ok
501
else
502
    echo "ERROR: \"$cc\" either does not exist or does not work"
503
    exit 1
504
fi
505

    
506
# check compiler to see if we're on mingw32
507
cat > $TMPC <<EOF
508
#include <windows.h>
509
#ifndef _WIN32
510
#error not windows
511
#endif
512
int main(void) {}
513
EOF
514

    
515
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
516
    mingw32="yes"
517
fi
518

    
519
if test "$mingw32" = "yes" ; then
520
    linux="no"
521
    EXESUF=".exe"
522
    oss="no"
523
    linux_user="no"
524
    bsd_user="no"
525
fi
526

    
527
if test ! -x "$(which cgcc 2>/dev/null)"; then
528
    sparse="no"
529
fi
530

    
531
#
532
# Solaris specific configure tool chain decisions
533
#
534
if test "$solaris" = "yes" ; then
535
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
536
  if test -z "$solinst" ; then
537
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
538
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
539
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
540
    exit 1
541
  fi
542
  if test "$solinst" = "/usr/sbin/install" ; then
543
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
544
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
545
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
546
    exit 1
547
  fi
548
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
549
  if test -z "$sol_ar" ; then
550
    echo "Error: No path includes ar"
551
    if test -f /usr/ccs/bin/ar ; then
552
      echo "Add /usr/ccs/bin to your path and rerun configure"
553
    fi
554
    exit 1
555
  fi
556
fi
557

    
558

    
559
if test -z "$target_list" ; then
560
# these targets are portable
561
    if [ "$softmmu" = "yes" ] ; then
562
        target_list="\
563
i386-softmmu \
564
x86_64-softmmu \
565
arm-softmmu \
566
cris-softmmu \
567
m68k-softmmu \
568
mips-softmmu \
569
mipsel-softmmu \
570
mips64-softmmu \
571
mips64el-softmmu \
572
ppc-softmmu \
573
ppcemb-softmmu \
574
ppc64-softmmu \
575
sh4-softmmu \
576
sh4eb-softmmu \
577
sparc-softmmu \
578
"
579
    fi
580
# the following are Linux specific
581
    if [ "$linux_user" = "yes" ] ; then
582
        target_list="${target_list}\
583
i386-linux-user \
584
x86_64-linux-user \
585
alpha-linux-user \
586
arm-linux-user \
587
armeb-linux-user \
588
cris-linux-user \
589
m68k-linux-user \
590
mips-linux-user \
591
mipsel-linux-user \
592
ppc-linux-user \
593
ppc64-linux-user \
594
ppc64abi32-linux-user \
595
sh4-linux-user \
596
sh4eb-linux-user \
597
sparc-linux-user \
598
sparc64-linux-user \
599
sparc32plus-linux-user \
600
"
601
    fi
602
# the following are Darwin specific
603
    if [ "$darwin_user" = "yes" ] ; then
604
        target_list="$target_list i386-darwin-user ppc-darwin-user"
605
    fi
606
# the following are BSD specific
607
    if [ "$bsd_user" = "yes" ] ; then
608
        target_list="${target_list}\
609
sparc64-bsd-user \
610
"
611
    fi
612
else
613
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
614
fi
615
if test -z "$target_list" ; then
616
    echo "No targets enabled"
617
    exit 1
618
fi
619

    
620
if test -z "$cross_prefix" ; then
621

    
622
# ---
623
# big/little endian test
624
cat > $TMPC << EOF
625
#include <inttypes.h>
626
int main(int argc, char ** argv){
627
        volatile uint32_t i=0x01234567;
628
        return (*((uint8_t*)(&i))) == 0x67;
629
}
630
EOF
631

    
632
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
633
$TMPE && bigendian="yes"
634
else
635
echo big/little test failed
636
fi
637

    
638
else
639

    
640
# if cross compiling, cannot launch a program, so make a static guess
641
if test "$cpu" = "armv4b" \
642
     -o "$cpu" = "hppa" \
643
     -o "$cpu" = "m68k" \
644
     -o "$cpu" = "mips" \
645
     -o "$cpu" = "mips64" \
646
     -o "$cpu" = "powerpc" \
647
     -o "$cpu" = "s390" \
648
     -o "$cpu" = "sparc" \
649
     -o "$cpu" = "sparc64"; then
650
    bigendian="yes"
651
fi
652

    
653
fi
654

    
655
# host long bits test
656
hostlongbits="32"
657
if test "$cpu" = "x86_64" \
658
     -o "$cpu" = "alpha" \
659
     -o "$cpu" = "ia64" \
660
     -o "$cpu" = "sparc64"; then
661
    hostlongbits="64"
662
fi
663

    
664
# ppc specific hostlongbits selection
665
if test "$cpu" = "powerpc" ; then
666
    if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
667
        grep -q __powerpc64__ $TMPI && hostlongbits=64
668
    else
669
        echo hostlongbits test failed
670
        exit 1
671
    fi
672
fi
673

    
674
# check gcc options support
675
cat > $TMPC <<EOF
676
int main(void) {
677
}
678
EOF
679

    
680
# Check host NPTL support
681
cat > $TMPC <<EOF
682
#include <sched.h>
683
#include <linux/futex.h>
684
void foo()
685
{
686
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
687
#error bork
688
#endif
689
}
690
EOF
691

    
692
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
693
  :
694
else
695
   nptl="no"
696
fi
697

    
698
##########################################
699
# zlib check
700

    
701
cat > $TMPC << EOF
702
#include <zlib.h>
703
int main(void) { zlibVersion(); return 0; }
704
EOF
705
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
706
    :
707
else
708
    echo
709
    echo "Error: zlib check failed"
710
    echo "Make sure to have the zlib libs and headers installed."
711
    echo
712
    exit 1
713
fi
714

    
715
##########################################
716
# SDL probe
717

    
718
sdl_too_old=no
719

    
720
if test -z "$sdl" ; then
721
    sdl_config="sdl-config"
722
    sdl=no
723
    sdl_static=no
724

    
725
cat > $TMPC << EOF
726
#include <SDL.h>
727
#undef main /* We don't want SDL to override our main() */
728
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
729
EOF
730
    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
731
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
732
        if test "$_sdlversion" -lt 121 ; then
733
            sdl_too_old=yes
734
        else
735
            if test "$cocoa" = "no" ; then
736
                sdl=yes
737
            fi
738
        fi
739

    
740
        # static link with sdl ?
741
        if test "$sdl" = "yes" ; then
742
            aa="no"
743
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
744
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
745
            if [ "$aa" = "yes" ] ; then
746
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
747
            fi
748

    
749
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
750
                sdl_static=yes
751
            fi
752
        fi # static link
753
    fi # sdl compile test
754
else
755
    # Make sure to disable cocoa if sdl was set
756
    if test "$sdl" = "yes" ; then
757
       cocoa="no"
758
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
759
    fi
760
fi # -z $sdl
761

    
762
##########################################
763
# VNC TLS detection
764
if test "$vnc_tls" = "yes" ; then
765
cat > $TMPC <<EOF
766
#include <gnutls/gnutls.h>
767
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
768
EOF
769
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
770
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
771
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
772
           $vnc_tls_libs > /dev/null 2> /dev/null ; then
773
	:
774
    else
775
	vnc_tls="no"
776
    fi
777
fi
778

    
779
##########################################
780
# vde libraries probe
781
if test "$vde" = "yes" ; then
782
  cat > $TMPC << EOF
783
#include <libvdeplug.h>
784
int main(void)
785
{
786
    struct vde_open_args a = {0, 0, 0};
787
    vde_open("", "", &a);
788
    return 0;
789
}
790
EOF
791
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
792
        :
793
    else
794
        vde="no"
795
    fi
796
fi
797

    
798
##########################################
799
# Sound support libraries probe
800

    
801
audio_drv_probe()
802
{
803
    drv=$1
804
    hdr=$2
805
    lib=$3
806
    exp=$4
807
    cfl=$5
808
        cat > $TMPC << EOF
809
#include <$hdr>
810
int main(void) { $exp }
811
EOF
812
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
813
        :
814
    else
815
        echo
816
        echo "Error: $drv check failed"
817
        echo "Make sure to have the $drv libs and headers installed."
818
        echo
819
        exit 1
820
    fi
821
}
822

    
823
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
824
for drv in $audio_drv_list; do
825
    case $drv in
826
    alsa)
827
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
828
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
829
    ;;
830

    
831
    fmod)
832
    if test -z $fmod_lib || test -z $fmod_inc; then
833
        echo
834
        echo "Error: You must specify path to FMOD library and headers"
835
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
836
        echo
837
        exit 1
838
    fi
839
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
840
    ;;
841

    
842
    esd)
843
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
844
    ;;
845

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

    
851
    oss|sdl|core|wav|dsound)
852
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
853
    ;;
854

    
855
    *)
856
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
857
        echo
858
        echo "Error: Unknown driver '$drv' selected"
859
        echo "Possible drivers are: $audio_possible_drivers"
860
        echo
861
        exit 1
862
    }
863
    ;;
864
    esac
865
done
866

    
867
##########################################
868
# BrlAPI probe
869

    
870
if test -z "$brlapi" ; then
871
    brlapi=no
872
cat > $TMPC << EOF
873
#include <brlapi.h>
874
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
875
EOF
876
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
877
	    brlapi=yes
878
    fi # brlapi compile test
879
fi # -z $brlapi
880

    
881
##########################################
882
# curses probe
883

    
884
if test "$curses" = "yes" ; then
885
  curses=no
886
  cat > $TMPC << EOF
887
#include <curses.h>
888
int main(void) { return curses_version(); }
889
EOF
890
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
891
    curses=yes
892
  fi
893
fi # test "$curses"
894

    
895
##########################################
896
# bluez support probe
897
if test "$bluez" = "yes" ; then
898
  `pkg-config bluez` || bluez="no"
899
fi
900
if test "$bluez" = "yes" ; then
901
  cat > $TMPC << EOF
902
#include <bluetooth/bluetooth.h>
903
int main(void) { return bt_error(0); }
904
EOF
905
  bluez_cflags=`pkg-config --cflags bluez`
906
  bluez_libs=`pkg-config --libs bluez`
907
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
908
      $bluez_libs > /dev/null 2> /dev/null ; then
909
    :
910
  else
911
    bluez="no"
912
  fi
913
fi
914

    
915
##########################################
916
# kvm probe
917
if test "$kvm" = "yes" ; then
918
    cat > $TMPC <<EOF
919
#include <linux/kvm.h>
920
#if !defined(KVM_API_VERSION) || \
921
    KVM_API_VERSION < 12 || \
922
    KVM_API_VERSION > 12 || \
923
    !defined(KVM_CAP_USER_MEMORY) || \
924
    !defined(KVM_CAP_SET_TSS_ADDR) || \
925
    !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
926
#error Invalid KVM version
927
#endif
928
int main(void) { return 0; }
929
EOF
930
  if test "$kerneldir" != "" ; then
931
      kvm_cflags=-I"$kerneldir"/include
932
  else
933
      kvm_cflags=""
934
  fi
935
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
936
      > /dev/null 2>/dev/null ; then
937
    :
938
  else
939
    kvm="no"
940
  fi
941
fi
942

    
943
##########################################
944
# AIO probe
945
AIOLIBS=""
946

    
947
if test "$aio" = "yes" ; then
948
  aio=no
949
  cat > $TMPC << EOF
950
#include <pthread.h>
951
int main(void) { pthread_mutex_t lock; return 0; }
952
EOF
953
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
954
    aio=yes
955
    AIOLIBS="-lpthread"
956
  fi
957
fi
958

    
959
##########################################
960
# iovec probe
961
cat > $TMPC <<EOF
962
#include <sys/uio.h>
963
int main(void) { struct iovec iov; return 0; }
964
EOF
965
iovec=no
966
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
967
  iovec=yes
968
fi
969

    
970
##########################################
971
# fdt probe
972
if test "$fdt" = "yes" ; then
973
    fdt=no
974
    cat > $TMPC << EOF
975
int main(void) { return 0; }
976
EOF
977
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null ; then
978
    fdt=yes
979
  fi
980
fi
981

    
982
# Check if tools are available to build documentation.
983
if [ -x "`which texi2html 2>/dev/null`" ] && \
984
   [ -x "`which pod2man 2>/dev/null`" ]; then
985
  build_docs="yes"
986
fi
987

    
988
##########################################
989
# Do we need librt
990
cat > $TMPC <<EOF
991
#include <signal.h>
992
#include <time.h>
993
int main(void) { clockid_t id; return clock_gettime(id, NULL); }
994
EOF
995

    
996
rt=no
997
if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
998
  :
999
elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1000
  rt=yes
1001
fi
1002

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

    
1008
if test "$mingw32" = "yes" ; then
1009
  if test -z "$prefix" ; then
1010
      prefix="c:\\\\Program Files\\\\Qemu"
1011
  fi
1012
  mansuffix=""
1013
  datasuffix=""
1014
  docsuffix=""
1015
  binsuffix=""
1016
else
1017
  if test -z "$prefix" ; then
1018
      prefix="/usr/local"
1019
  fi
1020
  mansuffix="/share/man"
1021
  datasuffix="/share/qemu"
1022
  docsuffix="/share/doc/qemu"
1023
  binsuffix="/bin"
1024
fi
1025

    
1026
echo "Install prefix    $prefix"
1027
echo "BIOS directory    $prefix$datasuffix"
1028
echo "binary directory  $prefix$binsuffix"
1029
if test "$mingw32" = "no" ; then
1030
echo "Manual directory  $prefix$mansuffix"
1031
echo "ELF interp prefix $interp_prefix"
1032
fi
1033
echo "Source path       $source_path"
1034
echo "C compiler        $cc"
1035
echo "Host C compiler   $host_cc"
1036
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
1037
echo "make              $make"
1038
echo "install           $install"
1039
echo "host CPU          $cpu"
1040
echo "host big endian   $bigendian"
1041
echo "target list       $target_list"
1042
echo "gprof enabled     $gprof"
1043
echo "sparse enabled    $sparse"
1044
echo "profiler          $profiler"
1045
echo "static build      $static"
1046
echo "-Werror enabled   $werror"
1047
if test "$darwin" = "yes" ; then
1048
    echo "Cocoa support     $cocoa"
1049
fi
1050
echo "SDL support       $sdl"
1051
if test "$sdl" != "no" ; then
1052
    echo "SDL static link   $sdl_static"
1053
fi
1054
echo "curses support    $curses"
1055
echo "mingw32 support   $mingw32"
1056
echo "Audio drivers     $audio_drv_list"
1057
echo "Extra audio cards $audio_card_list"
1058
echo "Mixer emulation   $mixemu"
1059
echo "VNC TLS support   $vnc_tls"
1060
if test "$vnc_tls" = "yes" ; then
1061
    echo "    TLS CFLAGS    $vnc_tls_cflags"
1062
    echo "    TLS LIBS      $vnc_tls_libs"
1063
fi
1064
if test -n "$sparc_cpu"; then
1065
    echo "Target Sparc Arch $sparc_cpu"
1066
fi
1067
echo "kqemu support     $kqemu"
1068
echo "brlapi support    $brlapi"
1069
echo "Documentation     $build_docs"
1070
[ ! -z "$uname_release" ] && \
1071
echo "uname -r          $uname_release"
1072
echo "NPTL support      $nptl"
1073
echo "vde support       $vde"
1074
echo "AIO support       $aio"
1075
echo "Install blobs     $blobs"
1076
echo "KVM support       $kvm"
1077
echo "fdt support       $fdt"
1078

    
1079
if test $sdl_too_old = "yes"; then
1080
echo "-> Your SDL version is too old - please upgrade to have SDL support"
1081
fi
1082
if [ -s $TMPSDLLOG ]; then
1083
  echo "The error log from compiling the libSDL test is: "
1084
  cat $TMPSDLLOG
1085
fi
1086
#if test "$sdl_static" = "no"; then
1087
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1088
#fi
1089
config_mak="config-host.mak"
1090
config_h="config-host.h"
1091

    
1092
#echo "Creating $config_mak and $config_h"
1093

    
1094
test -f $config_h && mv $config_h ${config_h}~
1095

    
1096
echo "# Automatically generated by configure - do not modify" > $config_mak
1097
echo -n "# Configured with:" >> $config_mak
1098
printf " '%s'" "$0" "$@" >> $config_mak
1099
echo >> $config_mak
1100
echo "/* Automatically generated by configure - do not modify */" > $config_h
1101

    
1102
echo "prefix=$prefix" >> $config_mak
1103
echo "bindir=\${prefix}$binsuffix" >> $config_mak
1104
echo "mandir=\${prefix}$mansuffix" >> $config_mak
1105
echo "datadir=\${prefix}$datasuffix" >> $config_mak
1106
echo "docdir=\${prefix}$docsuffix" >> $config_mak
1107
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1108
echo "MAKE=$make" >> $config_mak
1109
echo "INSTALL=$install" >> $config_mak
1110
echo "CC=$cc" >> $config_mak
1111
echo "HOST_CC=$host_cc" >> $config_mak
1112
echo "AR=$ar" >> $config_mak
1113
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1114
# XXX: only use CFLAGS and LDFLAGS ?  
1115
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1116
# compilation of dyngen tool (useful for win32 build on Linux host)
1117
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1118
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1119
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1120
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1121
echo "CFLAGS=$CFLAGS" >> $config_mak
1122
echo "LDFLAGS=$LDFLAGS" >> $config_mak
1123
echo "EXESUF=$EXESUF" >> $config_mak
1124
echo "AIOLIBS=$AIOLIBS" >> $config_mak
1125
case "$cpu" in
1126
  i386)
1127
    echo "ARCH=i386" >> $config_mak
1128
    echo "#define HOST_I386 1" >> $config_h
1129
  ;;
1130
  x86_64)
1131
    echo "ARCH=x86_64" >> $config_mak
1132
    echo "#define HOST_X86_64 1" >> $config_h
1133
  ;;
1134
  alpha)
1135
    echo "ARCH=alpha" >> $config_mak
1136
    echo "#define HOST_ALPHA 1" >> $config_h
1137
  ;;
1138
  armv4b)
1139
    echo "ARCH=arm" >> $config_mak
1140
    echo "#define HOST_ARM 1" >> $config_h
1141
  ;;
1142
  armv4l)
1143
    echo "ARCH=arm" >> $config_mak
1144
    echo "#define HOST_ARM 1" >> $config_h
1145
  ;;
1146
  cris)
1147
    echo "ARCH=cris" >> $config_mak
1148
    echo "#define HOST_CRIS 1" >> $config_h
1149
  ;;
1150
  hppa)
1151
    echo "ARCH=hppa" >> $config_mak
1152
    echo "#define HOST_HPPA 1" >> $config_h
1153
  ;;
1154
  ia64)
1155
    echo "ARCH=ia64" >> $config_mak
1156
    echo "#define HOST_IA64 1" >> $config_h
1157
  ;;
1158
  m68k)
1159
    echo "ARCH=m68k" >> $config_mak
1160
    echo "#define HOST_M68K 1" >> $config_h
1161
  ;;
1162
  mips)
1163
    echo "ARCH=mips" >> $config_mak
1164
    echo "#define HOST_MIPS 1" >> $config_h
1165
  ;;
1166
  mips64)
1167
    echo "ARCH=mips64" >> $config_mak
1168
    echo "#define HOST_MIPS64 1" >> $config_h
1169
  ;;
1170
  powerpc)
1171
  if test "$hostlongbits" = "32"; then
1172
      echo "ARCH=ppc" >> $config_mak
1173
      echo "#define HOST_PPC 1" >> $config_h
1174
  else
1175
      echo "ARCH=ppc64" >> $config_mak
1176
      echo "#define HOST_PPC64 1" >> $config_h
1177
  fi
1178
  ;;
1179
  s390)
1180
    echo "ARCH=s390" >> $config_mak
1181
    echo "#define HOST_S390 1" >> $config_h
1182
  ;;
1183
  sparc)
1184
    echo "ARCH=sparc" >> $config_mak
1185
    echo "#define HOST_SPARC 1" >> $config_h
1186
  ;;
1187
  sparc64)
1188
    echo "ARCH=sparc64" >> $config_mak
1189
    echo "#define HOST_SPARC64 1" >> $config_h
1190
  ;;
1191
  *)
1192
    echo "Unsupported CPU = $cpu"
1193
    exit 1
1194
  ;;
1195
esac
1196
if test "$sparse" = "yes" ; then
1197
  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_mak
1198
  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_mak
1199
  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1200
fi
1201
if test "$bigendian" = "yes" ; then
1202
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1203
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1204
fi
1205
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1206
if test "$mingw32" = "yes" ; then
1207
  echo "CONFIG_WIN32=yes" >> $config_mak
1208
  echo "#define CONFIG_WIN32 1" >> $config_h
1209
else
1210
  cat > $TMPC << EOF
1211
#include <byteswap.h>
1212
int main(void) { return bswap_32(0); }
1213
EOF
1214
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1215
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1216
  fi
1217
  cat > $TMPC << EOF
1218
#include <sys/endian.h>
1219
#include <sys/types.h>
1220
#include <machine/bswap.h>
1221
int main(void) { return bswap32(0); }
1222
EOF
1223
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1224
    echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
1225
  fi
1226
fi
1227

    
1228
if [ "$openbsd" = "yes" ] ; then
1229
  echo "#define ENOTSUP 4096" >> $config_h
1230
fi
1231

    
1232
if test "$darwin" = "yes" ; then
1233
  echo "CONFIG_DARWIN=yes" >> $config_mak
1234
  echo "#define CONFIG_DARWIN 1" >> $config_h
1235
fi
1236

    
1237
if test "$aix" = "yes" ; then
1238
  echo "CONFIG_AIX=yes" >> $config_mak
1239
  echo "#define CONFIG_AIX 1" >> $config_h
1240
fi
1241

    
1242
if test "$solaris" = "yes" ; then
1243
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1244
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1245
  if test "$needs_libsunmath" = "yes" ; then
1246
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1247
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1248
  fi
1249
fi
1250
if test -n "$sparc_cpu"; then
1251
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1252
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1253
fi
1254
if test "$gdbstub" = "yes" ; then
1255
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1256
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1257
fi
1258
if test "$gprof" = "yes" ; then
1259
  echo "TARGET_GPROF=yes" >> $config_mak
1260
  echo "#define HAVE_GPROF 1" >> $config_h
1261
fi
1262
if test "$static" = "yes" ; then
1263
  echo "CONFIG_STATIC=yes" >> $config_mak
1264
  echo "#define CONFIG_STATIC 1" >> $config_h
1265
fi
1266
if test $profiler = "yes" ; then
1267
  echo "#define CONFIG_PROFILER 1" >> $config_h
1268
fi
1269
if test "$slirp" = "yes" ; then
1270
  echo "CONFIG_SLIRP=yes" >> $config_mak
1271
  echo "#define CONFIG_SLIRP 1" >> $config_h
1272
fi
1273
if test "$vde" = "yes" ; then
1274
  echo "CONFIG_VDE=yes" >> $config_mak
1275
  echo "#define CONFIG_VDE 1" >> $config_h
1276
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1277
fi
1278
for card in $audio_card_list; do
1279
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1280
    echo "$def=yes" >> $config_mak
1281
    echo "#define $def 1" >> $config_h
1282
done
1283
echo "#define AUDIO_DRIVERS \\" >> $config_h
1284
for drv in $audio_drv_list; do
1285
    echo "    &${drv}_audio_driver, \\" >>$config_h
1286
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1287
    echo "$def=yes" >> $config_mak
1288
    if test "$drv" = "fmod"; then
1289
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1290
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1291
    elif test "$drv" = "oss"; then
1292
        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1293
    fi
1294
done
1295
echo "" >>$config_h
1296
if test "$mixemu" = "yes" ; then
1297
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1298
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1299
fi
1300
if test "$vnc_tls" = "yes" ; then
1301
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1302
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1303
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1304
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1305
fi
1306
qemu_version=`head $source_path/VERSION`
1307
echo "VERSION=$qemu_version" >>$config_mak
1308
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1309

    
1310
echo "SRC_PATH=$source_path" >> $config_mak
1311
if [ "$source_path_used" = "yes" ]; then
1312
  echo "VPATH=$source_path" >> $config_mak
1313
fi
1314
echo "TARGET_DIRS=$target_list" >> $config_mak
1315
if [ "$build_docs" = "yes" ] ; then
1316
  echo "BUILD_DOCS=yes" >> $config_mak
1317
fi
1318
if test "$static" = "yes"; then
1319
  sdl1=$sdl_static
1320
else
1321
  sdl1=$sdl
1322
fi
1323
if test "$sdl1" = "yes" ; then
1324
  echo "#define CONFIG_SDL 1" >> $config_h
1325
  echo "CONFIG_SDL=yes" >> $config_mak
1326
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1327
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1328
  else
1329
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1330
  fi
1331
  if [ "${aa}" = "yes" ] ; then
1332
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1333
  else
1334
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1335
  fi
1336
fi
1337
if test "$cocoa" = "yes" ; then
1338
  echo "#define CONFIG_COCOA 1" >> $config_h
1339
  echo "CONFIG_COCOA=yes" >> $config_mak
1340
fi
1341
if test "$curses" = "yes" ; then
1342
  echo "#define CONFIG_CURSES 1" >> $config_h
1343
  echo "CONFIG_CURSES=yes" >> $config_mak
1344
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1345
fi
1346
if test "$brlapi" = "yes" ; then
1347
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1348
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1349
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1350
fi
1351
if test "$bluez" = "yes" ; then
1352
  echo "CONFIG_BLUEZ=yes" >> $config_mak
1353
  echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1354
  echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1355
  echo "#define CONFIG_BLUEZ 1" >> $config_h
1356
fi
1357
if test "$aio" = "yes" ; then
1358
  echo "#define CONFIG_AIO 1" >> $config_h
1359
  echo "CONFIG_AIO=yes" >> $config_mak
1360
fi
1361
if test "$blobs" = "yes" ; then
1362
  echo "INSTALL_BLOBS=yes" >> $config_mak
1363
fi
1364
if test "$iovec" = "yes" ; then
1365
  echo "#define HAVE_IOVEC 1" >> $config_h
1366
fi
1367
if test "$fdt" = "yes" ; then
1368
  echo "#define HAVE_FDT 1" >> $config_h
1369
  echo "FDT_LIBS=-lfdt" >> $config_mak
1370
fi
1371

    
1372
# XXX: suppress that
1373
if [ "$bsd" = "yes" ] ; then
1374
  echo "#define O_LARGEFILE 0" >> $config_h
1375
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1376
  echo "#define _BSD 1" >> $config_h
1377
fi
1378

    
1379
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1380

    
1381
# USB host support
1382
case "$usb" in
1383
linux)
1384
  echo "HOST_USB=linux" >> $config_mak
1385
;;
1386
bsd)
1387
  echo "HOST_USB=bsd" >> $config_mak
1388
;;
1389
*)
1390
  echo "HOST_USB=stub" >> $config_mak
1391
;;
1392
esac
1393

    
1394
tools=
1395
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1396
  tools="qemu-img\$(EXESUF) $tools"
1397
  if [ "$linux" = "yes" ] ; then
1398
      tools="qemu-nbd\$(EXESUF) $tools"
1399
  fi
1400
fi
1401
echo "TOOLS=$tools" >> $config_mak
1402

    
1403
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1404

    
1405
for target in $target_list; do
1406
target_dir="$target"
1407
config_mak=$target_dir/config.mak
1408
config_h=$target_dir/config.h
1409
target_cpu=`echo $target | cut -d '-' -f 1`
1410
target_bigendian="no"
1411
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1412
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1413
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1414
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1415
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1416
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1417
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1418
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1419
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1420
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1421
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1422
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1423
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1424
target_softmmu="no"
1425
target_user_only="no"
1426
target_linux_user="no"
1427
target_darwin_user="no"
1428
target_bsd_user="no"
1429
case "$target" in
1430
  ${target_cpu}-softmmu)
1431
    target_softmmu="yes"
1432
    ;;
1433
  ${target_cpu}-linux-user)
1434
    target_user_only="yes"
1435
    target_linux_user="yes"
1436
    ;;
1437
  ${target_cpu}-darwin-user)
1438
    target_user_only="yes"
1439
    target_darwin_user="yes"
1440
    ;;
1441
  ${target_cpu}-bsd-user)
1442
    target_user_only="yes"
1443
    target_bsd_user="yes"
1444
    ;;
1445
  *)
1446
    echo "ERROR: Target '$target' not recognised"
1447
    exit 1
1448
    ;;
1449
esac
1450

    
1451
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1452
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1453
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1454
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1455
    echo "Note that this will disable all output from the virtual graphics card"
1456
    echo "except through VNC or curses."
1457
    exit 1;
1458
fi
1459

    
1460
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1461

    
1462
test -f $config_h && mv $config_h ${config_h}~
1463

    
1464
mkdir -p $target_dir
1465
mkdir -p $target_dir/fpu
1466
mkdir -p $target_dir/tcg
1467
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1468
  mkdir -p $target_dir/nwfpe
1469
fi
1470

    
1471
#
1472
# don't use ln -sf as not all "ln -sf" over write the file/link
1473
#
1474
rm -f $target_dir/Makefile
1475
ln -s $source_path/Makefile.target $target_dir/Makefile
1476

    
1477

    
1478
echo "# Automatically generated by configure - do not modify" > $config_mak
1479
echo "/* Automatically generated by configure - do not modify */" > $config_h
1480

    
1481

    
1482
echo "include ../config-host.mak" >> $config_mak
1483
echo "#include \"../config-host.h\"" >> $config_h
1484

    
1485
bflt="no"
1486
elfload32="no"
1487
target_nptl="no"
1488
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1489
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1490
gdb_xml_files=""
1491

    
1492
# Make sure the target and host cpus are compatible
1493
if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1494
  \( "$target_cpu" = "x86_64" -a "$cpu" = "i386"   \) -o \
1495
  \( "$target_cpu" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
1496
  kvm="no"
1497
fi
1498
# Disable KVM for linux-user
1499
if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1500
  kvm="no"
1501
fi
1502

    
1503
case "$target_cpu" in
1504
  i386)
1505
    echo "TARGET_ARCH=i386" >> $config_mak
1506
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1507
    echo "#define TARGET_I386 1" >> $config_h
1508
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1509
    then
1510
      echo "#define USE_KQEMU 1" >> $config_h
1511
    fi
1512
    if test "$kvm" = "yes" ; then
1513
      echo "CONFIG_KVM=yes" >> $config_mak
1514
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1515
      echo "#define CONFIG_KVM 1" >> $config_h
1516
    fi
1517
  ;;
1518
  x86_64)
1519
    echo "TARGET_ARCH=x86_64" >> $config_mak
1520
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1521
    echo "#define TARGET_I386 1" >> $config_h
1522
    echo "#define TARGET_X86_64 1" >> $config_h
1523
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1524
    then
1525
      echo "#define USE_KQEMU 1" >> $config_h
1526
    fi
1527
    if test "$kvm" = "yes" ; then
1528
      echo "CONFIG_KVM=yes" >> $config_mak
1529
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1530
      echo "#define CONFIG_KVM 1" >> $config_h
1531
    fi
1532
  ;;
1533
  alpha)
1534
    echo "TARGET_ARCH=alpha" >> $config_mak
1535
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1536
    echo "#define TARGET_ALPHA 1" >> $config_h
1537
  ;;
1538
  arm|armeb)
1539
    echo "TARGET_ARCH=arm" >> $config_mak
1540
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1541
    echo "#define TARGET_ARM 1" >> $config_h
1542
    bflt="yes"
1543
    target_nptl="yes"
1544
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1545
  ;;
1546
  cris)
1547
    echo "TARGET_ARCH=cris" >> $config_mak
1548
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1549
    echo "#define TARGET_CRIS 1" >> $config_h
1550
  ;;
1551
  m68k)
1552
    echo "TARGET_ARCH=m68k" >> $config_mak
1553
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1554
    echo "#define TARGET_M68K 1" >> $config_h
1555
    bflt="yes"
1556
    gdb_xml_files="cf-core.xml cf-fp.xml"
1557
  ;;
1558
  mips|mipsel)
1559
    echo "TARGET_ARCH=mips" >> $config_mak
1560
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1561
    echo "#define TARGET_MIPS 1" >> $config_h
1562
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1563
  ;;
1564
  mipsn32|mipsn32el)
1565
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1566
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1567
    echo "#define TARGET_MIPS 1" >> $config_h
1568
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1569
  ;;
1570
  mips64|mips64el)
1571
    echo "TARGET_ARCH=mips64" >> $config_mak
1572
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1573
    echo "#define TARGET_MIPS 1" >> $config_h
1574
    echo "#define TARGET_MIPS64 1" >> $config_h
1575
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1576
  ;;
1577
  ppc)
1578
    echo "TARGET_ARCH=ppc" >> $config_mak
1579
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1580
    echo "#define TARGET_PPC 1" >> $config_h
1581
  ;;
1582
  ppcemb)
1583
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1584
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1585
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1586
    echo "#define TARGET_PPC 1" >> $config_h
1587
    echo "#define TARGET_PPCEMB 1" >> $config_h
1588
  ;;
1589
  ppc64)
1590
    echo "TARGET_ARCH=ppc64" >> $config_mak
1591
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1592
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1593
    echo "#define TARGET_PPC 1" >> $config_h
1594
    echo "#define TARGET_PPC64 1" >> $config_h
1595
  ;;
1596
  ppc64abi32)
1597
    echo "TARGET_ARCH=ppc64" >> $config_mak
1598
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1599
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1600
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1601
    echo "#define TARGET_PPC 1" >> $config_h
1602
    echo "#define TARGET_PPC64 1" >> $config_h
1603
    echo "#define TARGET_ABI32 1" >> $config_h
1604
  ;;
1605
  sh4|sh4eb)
1606
    echo "TARGET_ARCH=sh4" >> $config_mak
1607
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1608
    echo "#define TARGET_SH4 1" >> $config_h
1609
    bflt="yes"
1610
    target_nptl="yes"
1611
  ;;
1612
  sparc)
1613
    echo "TARGET_ARCH=sparc" >> $config_mak
1614
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1615
    echo "#define TARGET_SPARC 1" >> $config_h
1616
  ;;
1617
  sparc64)
1618
    echo "TARGET_ARCH=sparc64" >> $config_mak
1619
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1620
    echo "#define TARGET_SPARC 1" >> $config_h
1621
    echo "#define TARGET_SPARC64 1" >> $config_h
1622
    elfload32="yes"
1623
  ;;
1624
  sparc32plus)
1625
    echo "TARGET_ARCH=sparc64" >> $config_mak
1626
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1627
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1628
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1629
    echo "#define TARGET_SPARC 1" >> $config_h
1630
    echo "#define TARGET_SPARC64 1" >> $config_h
1631
    echo "#define TARGET_ABI32 1" >> $config_h
1632
  ;;
1633
  *)
1634
    echo "Unsupported target CPU"
1635
    exit 1
1636
  ;;
1637
esac
1638
if test "$target_bigendian" = "yes" ; then
1639
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1640
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1641
fi
1642
if test "$target_softmmu" = "yes" ; then
1643
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1644
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1645
fi
1646
if test "$target_user_only" = "yes" ; then
1647
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1648
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1649
fi
1650
if test "$target_linux_user" = "yes" ; then
1651
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1652
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1653
fi
1654
if test "$target_darwin_user" = "yes" ; then
1655
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1656
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1657
fi
1658
list=""
1659
if test ! -z "$gdb_xml_files" ; then
1660
  for x in $gdb_xml_files; do
1661
    list="$list $source_path/gdb-xml/$x"
1662
  done
1663
fi
1664
echo "TARGET_XML_FILES=$list" >> $config_mak
1665

    
1666
if test "$target_cpu" = "arm" \
1667
     -o "$target_cpu" = "armeb" \
1668
     -o "$target_cpu" = "m68k" \
1669
     -o "$target_cpu" = "mips" \
1670
     -o "$target_cpu" = "mipsel" \
1671
     -o "$target_cpu" = "mipsn32" \
1672
     -o "$target_cpu" = "mipsn32el" \
1673
     -o "$target_cpu" = "mips64" \
1674
     -o "$target_cpu" = "mips64el" \
1675
     -o "$target_cpu" = "ppc" \
1676
     -o "$target_cpu" = "ppc64" \
1677
     -o "$target_cpu" = "ppc64abi32" \
1678
     -o "$target_cpu" = "ppcemb" \
1679
     -o "$target_cpu" = "sparc" \
1680
     -o "$target_cpu" = "sparc64" \
1681
     -o "$target_cpu" = "sparc32plus"; then
1682
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1683
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1684
fi
1685
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1686
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1687
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1688
fi
1689
if test "$target_user_only" = "yes" \
1690
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1691
  echo "#define USE_NPTL 1" >> $config_h
1692
fi
1693
# 32 bit ELF loader in addition to native 64 bit loader?
1694
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1695
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1696
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1697
fi
1698
if test "$target_bsd_user" = "yes" ; then
1699
  echo "CONFIG_BSD_USER=yes" >> $config_mak
1700
  echo "#define CONFIG_BSD_USER 1" >> $config_h
1701
fi
1702

    
1703
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1704

    
1705
done # for target in $targets
1706

    
1707
# build tree in object directory if source path is different from current one
1708
if test "$source_path_used" = "yes" ; then
1709
    DIRS="tests tests/cris slirp audio"
1710
    FILES="Makefile tests/Makefile"
1711
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1712
    FILES="$FILES tests/test-mmap.c"
1713
    for dir in $DIRS ; do
1714
            mkdir -p $dir
1715
    done
1716
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1717
    for f in $FILES ; do
1718
        rm -f $f
1719
        ln -s $source_path/$f $f
1720
    done
1721
fi