Statistics
| Branch: | Revision:

root / configure @ 7ba1e619

History | View | Annotate | Download (45.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=`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)
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

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

    
220
if [ "$bsd" = "yes" ] ; then
221
  if [ "$darwin" != "yes" ] ; then
222
    make="gmake"
223
  fi
224
  bsd_user="yes"
225
fi
226

    
227
# find source path
228
source_path=`dirname "$0"`
229
source_path_used="no"
230
workdir=`pwd`
231
if [ -z "$source_path" ]; then
232
    source_path=$workdir
233
else
234
    source_path=`cd "$source_path"; pwd`
235
fi
236
[ -f "$workdir/vl.c" ] || source_path_used="yes"
237

    
238
werror="no"
239
# generate compile errors on warnings for development builds
240
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
241
#werror="yes";
242
#fi
243

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

    
367
# default flags for all hosts
368
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
369
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
370
LDFLAGS="$LDFLAGS -g"
371
if test "$werror" = "yes" ; then
372
CFLAGS="$CFLAGS -Werror"
373
fi
374

    
375
if test "$solaris" = "no" ; then
376
    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
377
        LDFLAGS="$LDFLAGS -Wl,--warn-common"
378
    fi
379
fi
380

    
381
#
382
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
383
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
384
#
385
case "$cpu" in
386
    sparc) if test -z "$sparc_cpu" ; then
387
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
388
               ARCH_LDFLAGS="-m32"
389
           else
390
               ARCH_CFLAGS="${SP_CFLAGS}"
391
               ARCH_LDFLAGS="${SP_LDFLAGS}"
392
           fi
393
           ;;
394
    sparc64) if test -z "$sparc_cpu" ; then
395
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
396
               ARCH_LDFLAGS="-m64"
397
           else
398
               ARCH_CFLAGS="${SP_CFLAGS}"
399
               ARCH_LDFLAGS="${SP_LDFLAGS}"
400
           fi
401
           ;;
402
    s390)
403
           ARCH_CFLAGS="-march=z900"
404
           ;;
405
    i386)
406
           ARCH_CFLAGS="-m32"
407
           ARCH_LDFLAGS="-m32"
408
           ;;
409
    x86_64)
410
           ARCH_CFLAGS="-m64"
411
           ARCH_LDFLAGS="-m64"
412
           ;;
413
esac
414

    
415
if test x"$show_help" = x"yes" ; then
416
cat << EOF
417

    
418
Usage: configure [options]
419
Options: [defaults in brackets after descriptions]
420

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

    
476
cc="${cross_prefix}${cc}"
477
ar="${cross_prefix}${ar}"
478
strip="${cross_prefix}${strip}"
479

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

    
485
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
486
  : C compiler works ok
487
else
488
    echo "ERROR: \"$cc\" either does not exist or does not work"
489
    exit 1
490
fi
491

    
492
# check compiler to see if we're on mingw32
493
cat > $TMPC <<EOF
494
#include <windows.h>
495
#ifndef _WIN32
496
#error not windows
497
#endif
498
int main(void) {}
499
EOF
500

    
501
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
502
    mingw32="yes"
503
fi
504

    
505
if test "$mingw32" = "yes" ; then
506
    linux="no"
507
    EXESUF=".exe"
508
    oss="no"
509
    linux_user="no"
510
    bsd_user="no"
511
fi
512

    
513
if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
514
    AIOLIBS=
515
elif [ "$bsd" = "yes" ]; then
516
    AIOLIBS="-lpthread"
517
else
518
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
519
    AIOLIBS="-lrt -lpthread"
520
fi
521

    
522
# Check for gcc4, error if pre-gcc4
523
if test "$check_gcc" = "yes" ; then
524
    cat > $TMPC <<EOF
525
#if __GNUC__ < 4
526
#error gcc3
527
#endif
528
int main(){return 0;}
529
EOF
530
    if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
531
	echo "WARNING: \"$cc\" looks like gcc 4.x"
532
	found_compat_cc="no"
533
	if test "$gcc3_search" = "yes" ; then
534
	    echo "Looking for gcc 3.x"
535
	    for compat_cc in $gcc3_list ; do
536
		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
537
		    echo "Found \"$compat_cc\""
538
		    cc="$cross_prefix$compat_cc"
539
		    found_compat_cc="yes"
540
		    break
541
		fi
542
	    done
543
	    if test "$found_compat_cc" = "no" ; then
544
		echo "gcc 3.x not found!"
545
	    fi
546
	fi
547
	if test "$found_compat_cc" = "no" ; then
548
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
549
	    echo "It is recommended that you use gcc 3.x to build QEMU"
550
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
551
	    exit 1;
552
	fi
553
    fi
554
fi
555

    
556
if test ! -x "$(which cgcc 2>/dev/null)"; then
557
    sparse="no"
558
fi
559

    
560
#
561
# Solaris specific configure tool chain decisions
562
#
563
if test "$solaris" = "yes" ; then
564
  #
565
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
566
  # override the check with --disable-gcc-check
567
  #
568
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
569
    solgcc=`which $cc`
570
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
571
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
572
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
573
      echo "or get the latest patch from SunSolve for gcc"
574
      exit 1
575
    fi
576
  fi
577
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
578
  if test -z "$solinst" ; then
579
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
580
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
581
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
582
    exit 1
583
  fi
584
  if test "$solinst" = "/usr/sbin/install" ; then
585
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
586
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
587
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
588
    exit 1
589
  fi
590
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
591
  if test -z "$sol_ar" ; then
592
    echo "Error: No path includes ar"
593
    if test -f /usr/ccs/bin/ar ; then
594
      echo "Add /usr/ccs/bin to your path and rerun configure"
595
    fi
596
    exit 1
597
  fi
598
fi
599

    
600

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

    
662
if test -z "$cross_prefix" ; then
663

    
664
# ---
665
# big/little endian test
666
cat > $TMPC << EOF
667
#include <inttypes.h>
668
int main(int argc, char ** argv){
669
        volatile uint32_t i=0x01234567;
670
        return (*((uint8_t*)(&i))) == 0x67;
671
}
672
EOF
673

    
674
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
675
$TMPE && bigendian="yes"
676
else
677
echo big/little test failed
678
fi
679

    
680
else
681

    
682
# if cross compiling, cannot launch a program, so make a static guess
683
if test "$cpu" = "armv4b" \
684
     -o "$cpu" = "hppa" \
685
     -o "$cpu" = "m68k" \
686
     -o "$cpu" = "mips" \
687
     -o "$cpu" = "mips64" \
688
     -o "$cpu" = "powerpc" \
689
     -o "$cpu" = "s390" \
690
     -o "$cpu" = "sparc" \
691
     -o "$cpu" = "sparc64"; then
692
    bigendian="yes"
693
fi
694

    
695
fi
696

    
697
# host long bits test
698
hostlongbits="32"
699
if test "$cpu" = "x86_64" \
700
     -o "$cpu" = "alpha" \
701
     -o "$cpu" = "ia64" \
702
     -o "$cpu" = "sparc64"; then
703
    hostlongbits="64"
704
fi
705

    
706
# ppc specific hostlongbits selection
707
if test "$cpu" = "powerpc" ; then
708
    if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
709
        grep -q __powerpc64__ $TMPI && hostlongbits=64
710
    else
711
        echo hostlongbits test failed
712
        exit 1
713
    fi
714
fi
715

    
716
# check gcc options support
717
cat > $TMPC <<EOF
718
int main(void) {
719
}
720
EOF
721

    
722
# Check host NPTL support
723
cat > $TMPC <<EOF
724
#include <sched.h>
725
#include <linux/futex.h>
726
void foo()
727
{
728
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
729
#error bork
730
#endif
731
}
732
EOF
733

    
734
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
735
  :
736
else
737
   nptl="no"
738
fi
739

    
740
##########################################
741
# zlib check
742

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

    
757
##########################################
758
# SDL probe
759

    
760
sdl_too_old=no
761

    
762
if test -z "$sdl" ; then
763
    sdl_config="sdl-config"
764
    sdl=no
765
    sdl_static=no
766

    
767
cat > $TMPC << EOF
768
#include <SDL.h>
769
#undef main /* We don't want SDL to override our main() */
770
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
771
EOF
772
    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
773
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
774
        if test "$_sdlversion" -lt 121 ; then
775
            sdl_too_old=yes
776
        else
777
            if test "$cocoa" = "no" ; then
778
                sdl=yes
779
            fi
780
        fi
781

    
782
        # static link with sdl ?
783
        if test "$sdl" = "yes" ; then
784
            aa="no"
785
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
786
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
787
            if [ "$aa" = "yes" ] ; then
788
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
789
            fi
790

    
791
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
792
                sdl_static=yes
793
            fi
794
        fi # static link
795
    fi # sdl compile test
796
else
797
    # Make sure to disable cocoa if sdl was set
798
    if test "$sdl" = "yes" ; then
799
       cocoa="no"
800
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
801
    fi
802
fi # -z $sdl
803

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

    
821
##########################################
822
# vde libraries probe
823
if test "$vde" = "yes" ; then
824
  cat > $TMPC << EOF
825
#include <libvdeplug.h>
826
int main(void)
827
{
828
    struct vde_open_args a = {0, 0, 0};
829
    vde_open("", "", &a);
830
    return 0;
831
}
832
EOF
833
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
834
        :
835
    else
836
        vde="no"
837
    fi
838
fi
839

    
840
##########################################
841
# Sound support libraries probe
842

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

    
865
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
866
for drv in $audio_drv_list; do
867
    case $drv in
868
    alsa)
869
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
870
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
871
    ;;
872

    
873
    fmod)
874
    if test -z $fmod_lib || test -z $fmod_inc; then
875
        echo
876
        echo "Error: You must specify path to FMOD library and headers"
877
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
878
        echo
879
        exit 1
880
    fi
881
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
882
    ;;
883

    
884
    esd)
885
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
886
    ;;
887

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

    
893
    oss|sdl|core|wav|dsound)
894
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
895
    ;;
896

    
897
    *)
898
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
899
        echo
900
        echo "Error: Unknown driver '$drv' selected"
901
        echo "Possible drivers are: $audio_possible_drivers"
902
        echo
903
        exit 1
904
    }
905
    ;;
906
    esac
907
done
908

    
909
##########################################
910
# BrlAPI probe
911

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

    
923
##########################################
924
# curses probe
925

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

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

    
957
##########################################
958
# kvm probe
959
if test "$kvm" = "yes" ; then
960
    cat > $TMPC <<EOF
961
#include <linux/kvm.h>
962
#if !defined(KVM_API_VERSION) || \
963
    KVM_API_VERSION < 12 || \
964
    KVM_API_VERSION > 12 || \
965
    !defined(KVM_CAP_USER_MEMORY) || \
966
    !defined(KVM_CAP_SET_TSS_ADDR)
967
#error Invalid KVM version
968
#endif
969
int main(void) { return 0; }
970
EOF
971
  # FIXME make this configurable
972
  kvm_cflags=-I/lib/modules/`uname -r`/build/include
973
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
974
      2>/dev/null ; then
975
    :
976
  else
977
    kvm="no"
978
  fi
979
fi
980

    
981
##########################################
982
# AIO probe
983
if test "$aio" = "yes" ; then
984
  aio=no
985
  cat > $TMPC << EOF
986
#include <aio.h>
987
int main(void) { return aio_write(NULL); }
988
EOF
989
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
990
    aio=yes
991
  fi
992
fi
993

    
994
# Check if tools are available to build documentation.
995
if [ -x "`which texi2html 2>/dev/null`" ] && \
996
   [ -x "`which pod2man 2>/dev/null`" ]; then
997
  build_docs="yes"
998
fi
999

    
1000
if test "$mingw32" = "yes" ; then
1001
  if test -z "$prefix" ; then
1002
      prefix="c:\\\\Program Files\\\\Qemu"
1003
  fi
1004
  mansuffix=""
1005
  datasuffix=""
1006
  docsuffix=""
1007
  binsuffix=""
1008
else
1009
  if test -z "$prefix" ; then
1010
      prefix="/usr/local"
1011
  fi
1012
  mansuffix="/share/man"
1013
  datasuffix="/share/qemu"
1014
  docsuffix="/share/doc/qemu"
1015
  binsuffix="/bin"
1016
fi
1017

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

    
1069
if test $sdl_too_old = "yes"; then
1070
echo "-> Your SDL version is too old - please upgrade to have SDL support"
1071
fi
1072
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1073
  echo "The error log from compiling the libSDL test is: "
1074
  cat /tmp/qemu-$$-sdl-config.log
1075
fi
1076
rm -f /tmp/qemu-$$-sdl-config.log
1077
#if test "$sdl_static" = "no"; then
1078
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1079
#fi
1080
config_mak="config-host.mak"
1081
config_h="config-host.h"
1082

    
1083
#echo "Creating $config_mak and $config_h"
1084

    
1085
test -f $config_h && mv $config_h ${config_h}~
1086

    
1087
echo "# Automatically generated by configure - do not modify" > $config_mak
1088
echo "# Configured with: $0 $@" >> $config_mak
1089
echo "/* Automatically generated by configure - do not modify */" > $config_h
1090

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

    
1208
if [ "$openbsd" = "yes" ] ; then
1209
  echo "#define ENOTSUP 4096" >> $config_h
1210
fi
1211

    
1212
if test "$darwin" = "yes" ; then
1213
  echo "CONFIG_DARWIN=yes" >> $config_mak
1214
  echo "#define CONFIG_DARWIN 1" >> $config_h
1215
fi
1216
if test "$solaris" = "yes" ; then
1217
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1218
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1219
  if test "$needs_libsunmath" = "yes" ; then
1220
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1221
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1222
  fi
1223
fi
1224
if test -n "$sparc_cpu"; then
1225
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1226
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1227
fi
1228
if test "$gdbstub" = "yes" ; then
1229
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1230
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1231
fi
1232
if test "$gprof" = "yes" ; then
1233
  echo "TARGET_GPROF=yes" >> $config_mak
1234
  echo "#define HAVE_GPROF 1" >> $config_h
1235
fi
1236
if test "$static" = "yes" ; then
1237
  echo "CONFIG_STATIC=yes" >> $config_mak
1238
  echo "#define CONFIG_STATIC 1" >> $config_h
1239
fi
1240
if test $profiler = "yes" ; then
1241
  echo "#define CONFIG_PROFILER 1" >> $config_h
1242
fi
1243
if test "$slirp" = "yes" ; then
1244
  echo "CONFIG_SLIRP=yes" >> $config_mak
1245
  echo "#define CONFIG_SLIRP 1" >> $config_h
1246
fi
1247
if test "$vde" = "yes" ; then
1248
  echo "CONFIG_VDE=yes" >> $config_mak
1249
  echo "#define CONFIG_VDE 1" >> $config_h
1250
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1251
fi
1252
for card in $audio_card_list; do
1253
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1254
    echo "$def=yes" >> $config_mak
1255
    echo "#define $def 1" >> $config_h
1256
done
1257
echo "#define AUDIO_DRIVERS \\" >> $config_h
1258
for drv in $audio_drv_list; do
1259
    echo "    &${drv}_audio_driver, \\" >>$config_h
1260
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1261
    echo "$def=yes" >> $config_mak
1262
    if test "$drv" = "fmod"; then
1263
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1264
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1265
    elif test "$drv" = "oss"; then
1266
        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1267
    fi
1268
done
1269
echo "" >>$config_h
1270
if test "$mixemu" = "yes" ; then
1271
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1272
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1273
fi
1274
if test "$vnc_tls" = "yes" ; then
1275
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1276
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1277
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1278
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1279
fi
1280
qemu_version=`head $source_path/VERSION`
1281
echo "VERSION=$qemu_version" >>$config_mak
1282
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1283

    
1284
echo "SRC_PATH=$source_path" >> $config_mak
1285
if [ "$source_path_used" = "yes" ]; then
1286
  echo "VPATH=$source_path" >> $config_mak
1287
fi
1288
echo "TARGET_DIRS=$target_list" >> $config_mak
1289
if [ "$build_docs" = "yes" ] ; then
1290
  echo "BUILD_DOCS=yes" >> $config_mak
1291
fi
1292
if test "$static" = "yes"; then
1293
  sdl1=$sdl_static
1294
else
1295
  sdl1=$sdl
1296
fi
1297
if test "$sdl1" = "yes" ; then
1298
  echo "#define CONFIG_SDL 1" >> $config_h
1299
  echo "CONFIG_SDL=yes" >> $config_mak
1300
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1301
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1302
  else
1303
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1304
  fi
1305
  if [ "${aa}" = "yes" ] ; then
1306
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1307
  else
1308
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1309
  fi
1310
fi
1311
if test "$cocoa" = "yes" ; then
1312
  echo "#define CONFIG_COCOA 1" >> $config_h
1313
  echo "CONFIG_COCOA=yes" >> $config_mak
1314
fi
1315
if test "$curses" = "yes" ; then
1316
  echo "#define CONFIG_CURSES 1" >> $config_h
1317
  echo "CONFIG_CURSES=yes" >> $config_mak
1318
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1319
fi
1320
if test "$brlapi" = "yes" ; then
1321
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1322
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1323
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1324
fi
1325
if test "$bluez" = "yes" ; then
1326
  echo "CONFIG_BLUEZ=yes" >> $config_mak
1327
  echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1328
  echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1329
  echo "#define CONFIG_BLUEZ 1" >> $config_h
1330
fi
1331
if test "$aio" = "yes" ; then
1332
  echo "#define CONFIG_AIO 1" >> $config_h
1333
  echo "CONFIG_AIO=yes" >> $config_mak
1334
fi
1335

    
1336
# XXX: suppress that
1337
if [ "$bsd" = "yes" ] ; then
1338
  echo "#define O_LARGEFILE 0" >> $config_h
1339
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1340
  echo "#define _BSD 1" >> $config_h
1341
fi
1342

    
1343
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1344

    
1345
tools=
1346
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1347
  tools="qemu-img\$(EXESUF) $tools"
1348
  if [ "$linux" = "yes" ] ; then
1349
      tools="qemu-nbd\$(EXESUF) $tools"
1350
  fi
1351
fi
1352
echo "TOOLS=$tools" >> $config_mak
1353

    
1354
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1355

    
1356
for target in $target_list; do
1357
target_dir="$target"
1358
config_mak=$target_dir/config.mak
1359
config_h=$target_dir/config.h
1360
target_cpu=`echo $target | cut -d '-' -f 1`
1361
target_bigendian="no"
1362
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1363
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1364
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1365
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1366
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1367
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1368
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1369
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1370
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1371
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1372
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1373
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1374
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1375
target_softmmu="no"
1376
target_user_only="no"
1377
target_linux_user="no"
1378
target_darwin_user="no"
1379
target_bsd_user="no"
1380
case "$target" in
1381
  ${target_cpu}-softmmu)
1382
    target_softmmu="yes"
1383
    ;;
1384
  ${target_cpu}-linux-user)
1385
    target_user_only="yes"
1386
    target_linux_user="yes"
1387
    ;;
1388
  ${target_cpu}-darwin-user)
1389
    target_user_only="yes"
1390
    target_darwin_user="yes"
1391
    ;;
1392
  ${target_cpu}-bsd-user)
1393
    target_user_only="yes"
1394
    target_bsd_user="yes"
1395
    ;;
1396
  *)
1397
    echo "ERROR: Target '$target' not recognised"
1398
    exit 1
1399
    ;;
1400
esac
1401

    
1402
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1403
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1404
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1405
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1406
    echo "Note that this will disable all output from the virtual graphics card"
1407
    echo "except through VNC or curses."
1408
    exit 1;
1409
fi
1410

    
1411
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1412

    
1413
test -f $config_h && mv $config_h ${config_h}~
1414

    
1415
mkdir -p $target_dir
1416
mkdir -p $target_dir/fpu
1417
mkdir -p $target_dir/tcg
1418
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1419
  mkdir -p $target_dir/nwfpe
1420
fi
1421

    
1422
#
1423
# don't use ln -sf as not all "ln -sf" over write the file/link
1424
#
1425
rm -f $target_dir/Makefile
1426
ln -s $source_path/Makefile.target $target_dir/Makefile
1427

    
1428

    
1429
echo "# Automatically generated by configure - do not modify" > $config_mak
1430
echo "/* Automatically generated by configure - do not modify */" > $config_h
1431

    
1432

    
1433
echo "include ../config-host.mak" >> $config_mak
1434
echo "#include \"../config-host.h\"" >> $config_h
1435

    
1436
bflt="no"
1437
elfload32="no"
1438
target_nptl="no"
1439
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1440
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1441
gdb_xml_files=""
1442

    
1443
# FIXME allow i386 to build on x86_64 and vice versa
1444
if test "$kvm" = "yes" -a "$target_cpu" != "$cpu" ; then
1445
  kvm="no"
1446
fi
1447
# Disable KVM for linux-user
1448
if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1449
  kvm="no"
1450
fi
1451

    
1452
case "$target_cpu" in
1453
  i386)
1454
    echo "TARGET_ARCH=i386" >> $config_mak
1455
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1456
    echo "#define TARGET_I386 1" >> $config_h
1457
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1458
    then
1459
      echo "#define USE_KQEMU 1" >> $config_h
1460
    fi
1461
    if test "$kvm" = "yes" ; then
1462
      echo "CONFIG_KVM=yes" >> $config_mak
1463
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1464
      echo "#define CONFIG_KVM" >> $config_h
1465
    fi
1466
    gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1467
    if test -n "$gcc3minver" && test $gcc3minver -gt 3
1468
    then
1469
      echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1470
    else
1471
      echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1472
    fi
1473
  ;;
1474
  x86_64)
1475
    echo "TARGET_ARCH=x86_64" >> $config_mak
1476
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1477
    echo "#define TARGET_I386 1" >> $config_h
1478
    echo "#define TARGET_X86_64 1" >> $config_h
1479
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1480
    then
1481
      echo "#define USE_KQEMU 1" >> $config_h
1482
    fi
1483
    if test "$kvm" = "yes" ; then
1484
      echo "CONFIG_KVM=yes" >> $config_mak
1485
      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1486
      echo "#define CONFIG_KVM 1" >> $config_h
1487
    fi
1488
  ;;
1489
  alpha)
1490
    echo "TARGET_ARCH=alpha" >> $config_mak
1491
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1492
    echo "#define TARGET_ALPHA 1" >> $config_h
1493
  ;;
1494
  arm|armeb)
1495
    echo "TARGET_ARCH=arm" >> $config_mak
1496
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1497
    echo "#define TARGET_ARM 1" >> $config_h
1498
    bflt="yes"
1499
    target_nptl="yes"
1500
    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1501
  ;;
1502
  cris)
1503
    echo "TARGET_ARCH=cris" >> $config_mak
1504
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1505
    echo "#define TARGET_CRIS 1" >> $config_h
1506
  ;;
1507
  m68k)
1508
    echo "TARGET_ARCH=m68k" >> $config_mak
1509
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1510
    echo "#define TARGET_M68K 1" >> $config_h
1511
    bflt="yes"
1512
    gdb_xml_files="cf-core.xml cf-fp.xml"
1513
  ;;
1514
  mips|mipsel)
1515
    echo "TARGET_ARCH=mips" >> $config_mak
1516
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1517
    echo "#define TARGET_MIPS 1" >> $config_h
1518
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1519
  ;;
1520
  mipsn32|mipsn32el)
1521
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1522
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1523
    echo "#define TARGET_MIPS 1" >> $config_h
1524
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1525
  ;;
1526
  mips64|mips64el)
1527
    echo "TARGET_ARCH=mips64" >> $config_mak
1528
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1529
    echo "#define TARGET_MIPS 1" >> $config_h
1530
    echo "#define TARGET_MIPS64 1" >> $config_h
1531
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1532
  ;;
1533
  ppc)
1534
    echo "TARGET_ARCH=ppc" >> $config_mak
1535
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1536
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1537
    echo "#define TARGET_PPC 1" >> $config_h
1538
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1539
  ;;
1540
  ppcemb)
1541
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1542
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1543
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1544
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1545
    echo "#define TARGET_PPC 1" >> $config_h
1546
    echo "#define TARGET_PPCEMB 1" >> $config_h
1547
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1548
  ;;
1549
  ppc64)
1550
    echo "TARGET_ARCH=ppc64" >> $config_mak
1551
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1552
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1553
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1554
    echo "#define TARGET_PPC 1" >> $config_h
1555
    echo "#define TARGET_PPC64 1" >> $config_h
1556
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1557
  ;;
1558
  ppc64abi32)
1559
    echo "TARGET_ARCH=ppc64" >> $config_mak
1560
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1561
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1562
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1563
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1564
    echo "#define TARGET_PPC 1" >> $config_h
1565
    echo "#define TARGET_PPC64 1" >> $config_h
1566
    echo "#define TARGET_ABI32 1" >> $config_h
1567
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1568
  ;;
1569
  sh4|sh4eb)
1570
    echo "TARGET_ARCH=sh4" >> $config_mak
1571
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1572
    echo "#define TARGET_SH4 1" >> $config_h
1573
    bflt="yes"
1574
    target_nptl="yes"
1575
  ;;
1576
  sparc)
1577
    echo "TARGET_ARCH=sparc" >> $config_mak
1578
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1579
    echo "#define TARGET_SPARC 1" >> $config_h
1580
  ;;
1581
  sparc64)
1582
    echo "TARGET_ARCH=sparc64" >> $config_mak
1583
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1584
    echo "#define TARGET_SPARC 1" >> $config_h
1585
    echo "#define TARGET_SPARC64 1" >> $config_h
1586
    elfload32="yes"
1587
  ;;
1588
  sparc32plus)
1589
    echo "TARGET_ARCH=sparc64" >> $config_mak
1590
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1591
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1592
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1593
    echo "#define TARGET_SPARC 1" >> $config_h
1594
    echo "#define TARGET_SPARC64 1" >> $config_h
1595
    echo "#define TARGET_ABI32 1" >> $config_h
1596
  ;;
1597
  *)
1598
    echo "Unsupported target CPU"
1599
    exit 1
1600
  ;;
1601
esac
1602
if test "$target_bigendian" = "yes" ; then
1603
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1604
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1605
fi
1606
if test "$target_softmmu" = "yes" ; then
1607
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1608
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1609
fi
1610
if test "$target_user_only" = "yes" ; then
1611
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1612
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1613
fi
1614
if test "$target_linux_user" = "yes" ; then
1615
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1616
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1617
fi
1618
if test "$target_darwin_user" = "yes" ; then
1619
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1620
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1621
fi
1622
list=""
1623
if test ! -z "$gdb_xml_files" ; then
1624
  for x in $gdb_xml_files; do
1625
    list="$list $source_path/gdb-xml/$x"
1626
  done
1627
fi
1628
echo "TARGET_XML_FILES=$list" >> $config_mak
1629

    
1630
if test "$target_cpu" = "arm" \
1631
     -o "$target_cpu" = "armeb" \
1632
     -o "$target_cpu" = "m68k" \
1633
     -o "$target_cpu" = "mips" \
1634
     -o "$target_cpu" = "mipsel" \
1635
     -o "$target_cpu" = "mipsn32" \
1636
     -o "$target_cpu" = "mipsn32el" \
1637
     -o "$target_cpu" = "mips64" \
1638
     -o "$target_cpu" = "mips64el" \
1639
     -o "$target_cpu" = "sparc" \
1640
     -o "$target_cpu" = "sparc64" \
1641
     -o "$target_cpu" = "sparc32plus"; then
1642
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1643
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1644
fi
1645
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1646
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1647
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1648
fi
1649
if test "$target_user_only" = "yes" \
1650
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1651
  echo "#define USE_NPTL 1" >> $config_h
1652
fi
1653
# 32 bit ELF loader in addition to native 64 bit loader?
1654
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1655
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1656
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1657
fi
1658
if test "$target_bsd_user" = "yes" ; then
1659
  echo "CONFIG_BSD_USER=yes" >> $config_mak
1660
  echo "#define CONFIG_BSD_USER 1" >> $config_h
1661
fi
1662

    
1663
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1664

    
1665
done # for target in $targets
1666

    
1667
# build tree in object directory if source path is different from current one
1668
if test "$source_path_used" = "yes" ; then
1669
    DIRS="tests tests/cris slirp audio"
1670
    FILES="Makefile tests/Makefile"
1671
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1672
    FILES="$FILES tests/test-mmap.c"
1673
    for dir in $DIRS ; do
1674
            mkdir -p $dir
1675
    done
1676
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1677
    for f in $FILES ; do
1678
        rm -f $f
1679
        ln -s $source_path/$f $f
1680
    done
1681
fi
1682

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