Statistics
| Branch: | Revision:

root / configure @ 77755340

History | View | Annotate | Download (46.7 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

    
20
# default parameters
21
prefix=""
22
interp_prefix="/usr/gnemul/qemu-%M"
23
static="no"
24
cross_prefix=""
25
cc="gcc"
26
gcc3_search="yes"
27
gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
28
audio_drv_list=""
29
audio_card_list=""
30
host_cc="gcc"
31
ar="ar"
32
make="make"
33
install="install"
34
strip="strip"
35
cpu=`test $(uname -s) = AIX && uname -p || uname -m`
36
target_list=""
37
case "$cpu" in
38
  i386|i486|i586|i686|i86pc|BePC)
39
    cpu="i386"
40
  ;;
41
  x86_64|amd64)
42
    cpu="x86_64"
43
  ;;
44
  alpha)
45
    cpu="alpha"
46
  ;;
47
  armv*b)
48
    cpu="armv4b"
49
  ;;
50
  armv*l)
51
    cpu="armv4l"
52
  ;;
53
  cris)
54
    cpu="cris"
55
  ;;
56
  parisc|parisc64)
57
    cpu="hppa"
58
  ;;
59
  ia64)
60
    cpu="ia64"
61
  ;;
62
  m68k)
63
    cpu="m68k"
64
  ;;
65
  mips)
66
    cpu="mips"
67
  ;;
68
  mips64)
69
    cpu="mips64"
70
  ;;
71
  "Power Macintosh"|ppc|ppc64|powerpc)
72
    cpu="powerpc"
73
  ;;
74
  s390*)
75
    cpu="s390"
76
  ;;
77
  sparc|sun4[cdmuv])
78
    cpu="sparc"
79
  ;;
80
  sparc64)
81
    cpu="sparc64"
82
  ;;
83
  *)
84
    cpu="unknown"
85
  ;;
86
esac
87
gprof="no"
88
sparse="no"
89
bigendian="no"
90
mingw32="no"
91
EXESUF=""
92
gdbstub="yes"
93
slirp="yes"
94
vde="yes"
95
fmod_lib=""
96
fmod_inc=""
97
oss_lib=""
98
vnc_tls="yes"
99
bsd="no"
100
linux="no"
101
solaris="no"
102
kqemu="no"
103
profiler="no"
104
cocoa="no"
105
check_gfx="yes"
106
check_gcc="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

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

    
233
if [ "$bsd" = "yes" ] ; then
234
  if [ "$darwin" != "yes" ] ; then
235
    make="gmake"
236
    usb="bsd"
237
  fi
238
  bsd_user="yes"
239
fi
240

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

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

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

    
385
# default flags for all hosts
386
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
387
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
388
LDFLAGS="$LDFLAGS -g"
389
if test "$werror" = "yes" ; then
390
CFLAGS="$CFLAGS -Werror"
391
fi
392

    
393
if test "$solaris" = "no" ; then
394
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
395
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
396
    fi
397
fi
398

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

    
433
if test x"$show_help" = x"yes" ; then
434
cat << EOF
435

    
436
Usage: configure [options]
437
Options: [defaults in brackets after descriptions]
438

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

    
496
cc="${cross_prefix}${cc}"
497
ar="${cross_prefix}${ar}"
498
strip="${cross_prefix}${strip}"
499

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

    
505
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
506
  : C compiler works ok
507
else
508
    echo "ERROR: \"$cc\" either does not exist or does not work"
509
    exit 1
510
fi
511

    
512
# check compiler to see if we're on mingw32
513
cat > $TMPC <<EOF
514
#include <windows.h>
515
#ifndef _WIN32
516
#error not windows
517
#endif
518
int main(void) {}
519
EOF
520

    
521
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
522
    mingw32="yes"
523
fi
524

    
525
if test "$mingw32" = "yes" ; then
526
    linux="no"
527
    EXESUF=".exe"
528
    oss="no"
529
    linux_user="no"
530
    bsd_user="no"
531
fi
532

    
533
if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
534
    AIOLIBS=
535
elif [ "$bsd" = "yes" ]; then
536
    AIOLIBS="$aio_lib"
537
else
538
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
539
    AIOLIBS="-lrt -lpthread"
540
fi
541

    
542
# Check for gcc4, error if pre-gcc4
543
if test "$check_gcc" = "yes" ; then
544
    cat > $TMPC <<EOF
545
#if __GNUC__ < 4
546
#error gcc3
547
#endif
548
int main(){return 0;}
549
EOF
550
    if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
551
	echo "WARNING: \"$cc\" looks like gcc 4.x"
552
	found_compat_cc="no"
553
	if test "$gcc3_search" = "yes" ; then
554
	    echo "Looking for gcc 3.x"
555
	    for compat_cc in $gcc3_list ; do
556
		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
557
		    echo "Found \"$compat_cc\""
558
		    cc="$cross_prefix$compat_cc"
559
		    found_compat_cc="yes"
560
		    break
561
		fi
562
	    done
563
	    if test "$found_compat_cc" = "no" ; then
564
		echo "gcc 3.x not found!"
565
	    fi
566
	fi
567
	if test "$found_compat_cc" = "no" ; then
568
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
569
	    echo "It is recommended that you use gcc 3.x to build QEMU"
570
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
571
	    exit 1;
572
	fi
573
    fi
574
fi
575

    
576
if test ! -x "$(which cgcc 2>/dev/null)"; then
577
    sparse="no"
578
fi
579

    
580
#
581
# Solaris specific configure tool chain decisions
582
#
583
if test "$solaris" = "yes" ; then
584
  #
585
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
586
  # override the check with --disable-gcc-check
587
  #
588
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
589
    solgcc=`which $cc`
590
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
591
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
592
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
593
      echo "or get the latest patch from SunSolve for gcc"
594
      exit 1
595
    fi
596
  fi
597
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
598
  if test -z "$solinst" ; then
599
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
600
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
601
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
602
    exit 1
603
  fi
604
  if test "$solinst" = "/usr/sbin/install" ; then
605
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
606
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
607
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
608
    exit 1
609
  fi
610
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
611
  if test -z "$sol_ar" ; then
612
    echo "Error: No path includes ar"
613
    if test -f /usr/ccs/bin/ar ; then
614
      echo "Add /usr/ccs/bin to your path and rerun configure"
615
    fi
616
    exit 1
617
  fi
618
fi
619

    
620

    
621
if test -z "$target_list" ; then
622
# these targets are portable
623
    if [ "$softmmu" = "yes" ] ; then
624
        target_list="\
625
i386-softmmu \
626
x86_64-softmmu \
627
arm-softmmu \
628
cris-softmmu \
629
m68k-softmmu \
630
mips-softmmu \
631
mipsel-softmmu \
632
mips64-softmmu \
633
mips64el-softmmu \
634
ppc-softmmu \
635
ppcemb-softmmu \
636
ppc64-softmmu \
637
sh4-softmmu \
638
sh4eb-softmmu \
639
sparc-softmmu \
640
"
641
    fi
642
# the following are Linux specific
643
    if [ "$linux_user" = "yes" ] ; then
644
        target_list="${target_list}\
645
i386-linux-user \
646
x86_64-linux-user \
647
alpha-linux-user \
648
arm-linux-user \
649
armeb-linux-user \
650
cris-linux-user \
651
m68k-linux-user \
652
mips-linux-user \
653
mipsel-linux-user \
654
ppc-linux-user \
655
ppc64-linux-user \
656
ppc64abi32-linux-user \
657
sh4-linux-user \
658
sh4eb-linux-user \
659
sparc-linux-user \
660
sparc64-linux-user \
661
sparc32plus-linux-user \
662
"
663
    fi
664
# the following are Darwin specific
665
    if [ "$darwin_user" = "yes" ] ; then
666
        target_list="$target_list i386-darwin-user ppc-darwin-user"
667
    fi
668
# the following are BSD specific
669
    if [ "$bsd_user" = "yes" ] ; then
670
        target_list="${target_list}\
671
sparc64-bsd-user \
672
"
673
    fi
674
else
675
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
676
fi
677
if test -z "$target_list" ; then
678
    echo "No targets enabled"
679
    exit 1
680
fi
681

    
682
if test -z "$cross_prefix" ; then
683

    
684
# ---
685
# big/little endian test
686
cat > $TMPC << EOF
687
#include <inttypes.h>
688
int main(int argc, char ** argv){
689
        volatile uint32_t i=0x01234567;
690
        return (*((uint8_t*)(&i))) == 0x67;
691
}
692
EOF
693

    
694
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
695
$TMPE && bigendian="yes"
696
else
697
echo big/little test failed
698
fi
699

    
700
else
701

    
702
# if cross compiling, cannot launch a program, so make a static guess
703
if test "$cpu" = "armv4b" \
704
     -o "$cpu" = "hppa" \
705
     -o "$cpu" = "m68k" \
706
     -o "$cpu" = "mips" \
707
     -o "$cpu" = "mips64" \
708
     -o "$cpu" = "powerpc" \
709
     -o "$cpu" = "s390" \
710
     -o "$cpu" = "sparc" \
711
     -o "$cpu" = "sparc64"; then
712
    bigendian="yes"
713
fi
714

    
715
fi
716

    
717
# host long bits test
718
hostlongbits="32"
719
if test "$cpu" = "x86_64" \
720
     -o "$cpu" = "alpha" \
721
     -o "$cpu" = "ia64" \
722
     -o "$cpu" = "sparc64"; then
723
    hostlongbits="64"
724
fi
725

    
726
# ppc specific hostlongbits selection
727
if test "$cpu" = "powerpc" ; then
728
    if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
729
        grep -q __powerpc64__ $TMPI && hostlongbits=64
730
    else
731
        echo hostlongbits test failed
732
        exit 1
733
    fi
734
fi
735

    
736
# check gcc options support
737
cat > $TMPC <<EOF
738
int main(void) {
739
}
740
EOF
741

    
742
# Check host NPTL support
743
cat > $TMPC <<EOF
744
#include <sched.h>
745
#include <linux/futex.h>
746
void foo()
747
{
748
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
749
#error bork
750
#endif
751
}
752
EOF
753

    
754
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
755
  :
756
else
757
   nptl="no"
758
fi
759

    
760
##########################################
761
# zlib check
762

    
763
cat > $TMPC << EOF
764
#include <zlib.h>
765
int main(void) { zlibVersion(); return 0; }
766
EOF
767
if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
768
    :
769
else
770
    echo
771
    echo "Error: zlib check failed"
772
    echo "Make sure to have the zlib libs and headers installed."
773
    echo
774
    exit 1
775
fi
776

    
777
##########################################
778
# SDL probe
779

    
780
sdl_too_old=no
781

    
782
if test -z "$sdl" ; then
783
    sdl_config="sdl-config"
784
    sdl=no
785
    sdl_static=no
786

    
787
cat > $TMPC << EOF
788
#include <SDL.h>
789
#undef main /* We don't want SDL to override our main() */
790
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
791
EOF
792
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
793
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
794
        if test "$_sdlversion" -lt 121 ; then
795
            sdl_too_old=yes
796
        else
797
            if test "$cocoa" = "no" ; then
798
                sdl=yes
799
            fi
800
        fi
801

    
802
        # static link with sdl ?
803
        if test "$sdl" = "yes" ; then
804
            aa="no"
805
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
806
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
807
            if [ "$aa" = "yes" ] ; then
808
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
809
            fi
810

    
811
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
812
                sdl_static=yes
813
            fi
814
        fi # static link
815
    fi # sdl compile test
816
else
817
    # Make sure to disable cocoa if sdl was set
818
    if test "$sdl" = "yes" ; then
819
       cocoa="no"
820
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
821
    fi
822
fi # -z $sdl
823

    
824
##########################################
825
# VNC TLS detection
826
if test "$vnc_tls" = "yes" ; then
827
cat > $TMPC <<EOF
828
#include <gnutls/gnutls.h>
829
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
830
EOF
831
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
832
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
833
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
834
           $vnc_tls_libs 2> /dev/null ; then
835
	:
836
    else
837
	vnc_tls="no"
838
    fi
839
fi
840

    
841
##########################################
842
# vde libraries probe
843
if test "$vde" = "yes" ; then
844
  cat > $TMPC << EOF
845
#include <libvdeplug.h>
846
int main(void)
847
{
848
    struct vde_open_args a = {0, 0, 0};
849
    vde_open("", "", &a);
850
    return 0;
851
}
852
EOF
853
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
854
        :
855
    else
856
        vde="no"
857
    fi
858
fi
859

    
860
##########################################
861
# Sound support libraries probe
862

    
863
audio_drv_probe()
864
{
865
    drv=$1
866
    hdr=$2
867
    lib=$3
868
    exp=$4
869
    cfl=$5
870
        cat > $TMPC << EOF
871
#include <$hdr>
872
int main(void) { $exp }
873
EOF
874
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
875
        :
876
    else
877
        echo
878
        echo "Error: $drv check failed"
879
        echo "Make sure to have the $drv libs and headers installed."
880
        echo
881
        exit 1
882
    fi
883
}
884

    
885
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
886
for drv in $audio_drv_list; do
887
    case $drv in
888
    alsa)
889
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
890
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
891
    ;;
892

    
893
    fmod)
894
    if test -z $fmod_lib || test -z $fmod_inc; then
895
        echo
896
        echo "Error: You must specify path to FMOD library and headers"
897
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
898
        echo
899
        exit 1
900
    fi
901
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
902
    ;;
903

    
904
    esd)
905
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
906
    ;;
907

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

    
913
    oss|sdl|core|wav|dsound)
914
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
915
    ;;
916

    
917
    *)
918
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
919
        echo
920
        echo "Error: Unknown driver '$drv' selected"
921
        echo "Possible drivers are: $audio_possible_drivers"
922
        echo
923
        exit 1
924
    }
925
    ;;
926
    esac
927
done
928

    
929
##########################################
930
# BrlAPI probe
931

    
932
if test -z "$brlapi" ; then
933
    brlapi=no
934
cat > $TMPC << EOF
935
#include <brlapi.h>
936
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
937
EOF
938
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
939
	    brlapi=yes
940
    fi # brlapi compile test
941
fi # -z $brlapi
942

    
943
##########################################
944
# curses probe
945

    
946
if test "$curses" = "yes" ; then
947
  curses=no
948
  cat > $TMPC << EOF
949
#include <curses.h>
950
int main(void) { return curses_version(); }
951
EOF
952
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
953
    curses=yes
954
  fi
955
fi # test "$curses"
956

    
957
##########################################
958
# bluez support probe
959
if test "$bluez" = "yes" ; then
960
  `pkg-config bluez` || bluez="no"
961
fi
962
if test "$bluez" = "yes" ; then
963
  cat > $TMPC << EOF
964
#include <bluetooth/bluetooth.h>
965
int main(void) { return bt_error(0); }
966
EOF
967
  bluez_cflags=`pkg-config --cflags bluez`
968
  bluez_libs=`pkg-config --libs bluez`
969
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
970
      $bluez_libs 2> /dev/null ; then
971
    :
972
  else
973
    bluez="no"
974
  fi
975
fi
976

    
977
##########################################
978
# kvm probe
979
if test "$kvm" = "yes" ; then
980
    cat > $TMPC <<EOF
981
#include <linux/kvm.h>
982
#if !defined(KVM_API_VERSION) || \
983
    KVM_API_VERSION < 12 || \
984
    KVM_API_VERSION > 12 || \
985
    !defined(KVM_CAP_USER_MEMORY) || \
986
    !defined(KVM_CAP_SET_TSS_ADDR)
987
#error Invalid KVM version
988
#endif
989
int main(void) { return 0; }
990
EOF
991
  if test "$kerneldir" != "" ; then
992
      kvm_cflags=-I"$kerneldir"/include
993
  else
994
      kvm_cflags=""
995
  fi
996
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
997
      2>/dev/null ; then
998
    :
999
  else
1000
    kvm="no"
1001
  fi
1002
fi
1003

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

    
1017
# Check if tools are available to build documentation.
1018
if [ -x "`which texi2html 2>/dev/null`" ] && \
1019
   [ -x "`which pod2man 2>/dev/null`" ]; then
1020
  build_docs="yes"
1021
fi
1022

    
1023
if test "$mingw32" = "yes" ; then
1024
  if test -z "$prefix" ; then
1025
      prefix="c:\\\\Program Files\\\\Qemu"
1026
  fi
1027
  mansuffix=""
1028
  datasuffix=""
1029
  docsuffix=""
1030
  binsuffix=""
1031
else
1032
  if test -z "$prefix" ; then
1033
      prefix="/usr/local"
1034
  fi
1035
  mansuffix="/share/man"
1036
  datasuffix="/share/qemu"
1037
  docsuffix="/share/doc/qemu"
1038
  binsuffix="/bin"
1039
fi
1040

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

    
1093
if test $sdl_too_old = "yes"; then
1094
echo "-> Your SDL version is too old - please upgrade to have SDL support"
1095
fi
1096
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1097
  echo "The error log from compiling the libSDL test is: "
1098
  cat /tmp/qemu-$$-sdl-config.log
1099
fi
1100
rm -f /tmp/qemu-$$-sdl-config.log
1101
#if test "$sdl_static" = "no"; then
1102
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1103
#fi
1104
config_mak="config-host.mak"
1105
config_h="config-host.h"
1106

    
1107
#echo "Creating $config_mak and $config_h"
1108

    
1109
test -f $config_h && mv $config_h ${config_h}~
1110

    
1111
echo "# Automatically generated by configure - do not modify" > $config_mak
1112
echo "# Configured with: $0 $@" >> $config_mak
1113
echo "/* Automatically generated by configure - do not modify */" > $config_h
1114

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

    
1232
if [ "$openbsd" = "yes" ] ; then
1233
  echo "#define ENOTSUP 4096" >> $config_h
1234
fi
1235

    
1236
if test "$darwin" = "yes" ; then
1237
  echo "CONFIG_DARWIN=yes" >> $config_mak
1238
  echo "#define CONFIG_DARWIN 1" >> $config_h
1239
fi
1240

    
1241
if test "$aix" = "yes" ; then
1242
  echo "CONFIG_AIX=yes" >> $config_mak
1243
  echo "#define CONFIG_AIX 1" >> $config_h
1244
fi
1245

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

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

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

    
1376
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1377

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

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

    
1400
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1401

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

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

    
1457
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1458

    
1459
test -f $config_h && mv $config_h ${config_h}~
1460

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

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

    
1474

    
1475
echo "# Automatically generated by configure - do not modify" > $config_mak
1476
echo "/* Automatically generated by configure - do not modify */" > $config_h
1477

    
1478

    
1479
echo "include ../config-host.mak" >> $config_mak
1480
echo "#include \"../config-host.h\"" >> $config_h
1481

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

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

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

    
1678
if test "$target_cpu" = "arm" \
1679
     -o "$target_cpu" = "armeb" \
1680
     -o "$target_cpu" = "m68k" \
1681
     -o "$target_cpu" = "mips" \
1682
     -o "$target_cpu" = "mipsel" \
1683
     -o "$target_cpu" = "mipsn32" \
1684
     -o "$target_cpu" = "mipsn32el" \
1685
     -o "$target_cpu" = "mips64" \
1686
     -o "$target_cpu" = "mips64el" \
1687
     -o "$target_cpu" = "sparc" \
1688
     -o "$target_cpu" = "sparc64" \
1689
     -o "$target_cpu" = "sparc32plus"; then
1690
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1691
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1692
fi
1693
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1694
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1695
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1696
fi
1697
if test "$target_user_only" = "yes" \
1698
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1699
  echo "#define USE_NPTL 1" >> $config_h
1700
fi
1701
# 32 bit ELF loader in addition to native 64 bit loader?
1702
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1703
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1704
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1705
fi
1706
if test "$target_bsd_user" = "yes" ; then
1707
  echo "CONFIG_BSD_USER=yes" >> $config_mak
1708
  echo "#define CONFIG_BSD_USER 1" >> $config_h
1709
fi
1710

    
1711
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1712

    
1713
done # for target in $targets
1714

    
1715
# build tree in object directory if source path is different from current one
1716
if test "$source_path_used" = "yes" ; then
1717
    DIRS="tests tests/cris slirp audio"
1718
    FILES="Makefile tests/Makefile"
1719
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1720
    FILES="$FILES tests/test-mmap.c"
1721
    for dir in $DIRS ; do
1722
            mkdir -p $dir
1723
    done
1724
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1725
    for f in $FILES ; do
1726
        rm -f $f
1727
        ln -s $source_path/$f $f
1728
    done
1729
fi
1730

    
1731
rm -f $TMPO $TMPC $TMPE $TMPS $TMPI