Statistics
| Branch: | Revision:

root / configure @ eac30262

History | View | Annotate | Download (45.8 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
kerneldir=""
120

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

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

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

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

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

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

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

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

    
418
if test x"$show_help" = x"yes" ; then
419
cat << EOF
420

    
421
Usage: configure [options]
422
Options: [defaults in brackets after descriptions]
423

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

    
480
cc="${cross_prefix}${cc}"
481
ar="${cross_prefix}${ar}"
482
strip="${cross_prefix}${strip}"
483

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

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

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

    
505
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
506
    mingw32="yes"
507
fi
508

    
509
if test "$mingw32" = "yes" ; then
510
    linux="no"
511
    EXESUF=".exe"
512
    oss="no"
513
    linux_user="no"
514
    bsd_user="no"
515
fi
516

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

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

    
560
if test ! -x "$(which cgcc 2>/dev/null)"; then
561
    sparse="no"
562
fi
563

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

    
604

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

    
666
if test -z "$cross_prefix" ; then
667

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

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

    
684
else
685

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

    
699
fi
700

    
701
# host long bits test
702
hostlongbits="32"
703
if test "$cpu" = "x86_64" \
704
     -o "$cpu" = "alpha" \
705
     -o "$cpu" = "ia64" \
706
     -o "$cpu" = "sparc64"; then
707
    hostlongbits="64"
708
fi
709

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

    
720
# check gcc options support
721
cat > $TMPC <<EOF
722
int main(void) {
723
}
724
EOF
725

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

    
738
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
739
  :
740
else
741
   nptl="no"
742
fi
743

    
744
##########################################
745
# zlib check
746

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

    
761
##########################################
762
# SDL probe
763

    
764
sdl_too_old=no
765

    
766
if test -z "$sdl" ; then
767
    sdl_config="sdl-config"
768
    sdl=no
769
    sdl_static=no
770

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

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

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

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

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

    
844
##########################################
845
# Sound support libraries probe
846

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

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

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

    
888
    esd)
889
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
890
    ;;
891

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

    
897
    oss|sdl|core|wav|dsound)
898
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
899
    ;;
900

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

    
913
##########################################
914
# BrlAPI probe
915

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

    
927
##########################################
928
# curses probe
929

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

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

    
961
##########################################
962
# kvm probe
963
if test "$kvm" = "yes" ; then
964
    cat > $TMPC <<EOF
965
#include <linux/kvm.h>
966
#if !defined(KVM_API_VERSION) || \
967
    KVM_API_VERSION < 12 || \
968
    KVM_API_VERSION > 12 || \
969
    !defined(KVM_CAP_USER_MEMORY) || \
970
    !defined(KVM_CAP_SET_TSS_ADDR)
971
#error Invalid KVM version
972
#endif
973
int main(void) { return 0; }
974
EOF
975
  if test "$kerneldir" != "" ; then
976
      kvm_cflags=-I"$kerneldir"/include
977
  else
978
      kvm_cflags=""
979
  fi
980
  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
981
      2>/dev/null ; then
982
    :
983
  else
984
    kvm="no"
985
  fi
986
fi
987

    
988
##########################################
989
# AIO probe
990
if test "$aio" = "yes" ; then
991
  aio=no
992
  cat > $TMPC << EOF
993
#include <aio.h>
994
int main(void) { return aio_write(NULL); }
995
EOF
996
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
997
    aio=yes
998
  fi
999
fi
1000

    
1001
# Check if tools are available to build documentation.
1002
if [ -x "`which texi2html 2>/dev/null`" ] && \
1003
   [ -x "`which pod2man 2>/dev/null`" ]; then
1004
  build_docs="yes"
1005
fi
1006

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

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

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

    
1090
#echo "Creating $config_mak and $config_h"
1091

    
1092
test -f $config_h && mv $config_h ${config_h}~
1093

    
1094
echo "# Automatically generated by configure - do not modify" > $config_mak
1095
echo "# Configured with: $0 $@" >> $config_mak
1096
echo "/* Automatically generated by configure - do not modify */" > $config_h
1097

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

    
1215
if [ "$openbsd" = "yes" ] ; then
1216
  echo "#define ENOTSUP 4096" >> $config_h
1217
fi
1218

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

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

    
1343
# XXX: suppress that
1344
if [ "$bsd" = "yes" ] ; then
1345
  echo "#define O_LARGEFILE 0" >> $config_h
1346
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1347
  echo "#define _BSD 1" >> $config_h
1348
fi
1349

    
1350
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1351

    
1352
tools=
1353
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1354
  tools="qemu-img\$(EXESUF) $tools"
1355
  if [ "$linux" = "yes" ] ; then
1356
      tools="qemu-nbd\$(EXESUF) $tools"
1357
  fi
1358
fi
1359
echo "TOOLS=$tools" >> $config_mak
1360

    
1361
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1362

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

    
1409
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1410
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1411
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1412
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1413
    echo "Note that this will disable all output from the virtual graphics card"
1414
    echo "except through VNC or curses."
1415
    exit 1;
1416
fi
1417

    
1418
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1419

    
1420
test -f $config_h && mv $config_h ${config_h}~
1421

    
1422
mkdir -p $target_dir
1423
mkdir -p $target_dir/fpu
1424
mkdir -p $target_dir/tcg
1425
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1426
  mkdir -p $target_dir/nwfpe
1427
fi
1428

    
1429
#
1430
# don't use ln -sf as not all "ln -sf" over write the file/link
1431
#
1432
rm -f $target_dir/Makefile
1433
ln -s $source_path/Makefile.target $target_dir/Makefile
1434

    
1435

    
1436
echo "# Automatically generated by configure - do not modify" > $config_mak
1437
echo "/* Automatically generated by configure - do not modify */" > $config_h
1438

    
1439

    
1440
echo "include ../config-host.mak" >> $config_mak
1441
echo "#include \"../config-host.h\"" >> $config_h
1442

    
1443
bflt="no"
1444
elfload32="no"
1445
target_nptl="no"
1446
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1447
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1448
gdb_xml_files=""
1449

    
1450
# FIXME allow i386 to build on x86_64 and vice versa
1451
if test "$kvm" = "yes" -a "$target_cpu" != "$cpu" ; then
1452
  kvm="no"
1453
fi
1454
# Disable KVM for linux-user
1455
if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1456
  kvm="no"
1457
fi
1458

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

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

    
1670
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1671

    
1672
done # for target in $targets
1673

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

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