Statistics
| Branch: | Revision:

root / configure @ 8bb6e981

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

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

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

    
217
if [ "$bsd" = "yes" ] ; then
218
  if [ "$darwin" != "yes" ] ; then
219
    make="gmake"
220
  fi
221
fi
222

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

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

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

    
353
# default flags for all hosts
354
CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
355
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
356
LDFLAGS="$LDFLAGS -g"
357
if test "$werror" = "yes" ; then
358
CFLAGS="$CFLAGS -Werror"
359
fi
360

    
361
if ld --version 2>/dev/null | grep -q "GNU ld" ; then
362
    LDFLAGS="$LDFLAGS -Wl,--warn-common"
363
fi
364

    
365
#
366
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
367
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
368
#
369
case "$cpu" in
370
    sparc) if test -z "$sparc_cpu" ; then
371
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
372
               ARCH_LDFLAGS="-m32"
373
           else
374
               ARCH_CFLAGS="${SP_CFLAGS}"
375
               ARCH_LDFLAGS="${SP_LDFLAGS}"
376
           fi
377
           ;;
378
    sparc64) if test -z "$sparc_cpu" ; then
379
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
380
               ARCH_LDFLAGS="-m64"
381
           else
382
               ARCH_CFLAGS="${SP_CFLAGS}"
383
               ARCH_LDFLAGS="${SP_LDFLAGS}"
384
           fi
385
           ;;
386
    s390)
387
           ARCH_CFLAGS="-march=z900"
388
           ;;
389
    i386)
390
           ARCH_CFLAGS="-m32"
391
           ARCH_LDFLAGS="-m32"
392
           ;;
393
    x86_64)
394
           ARCH_CFLAGS="-m64"
395
           ARCH_LDFLAGS="-m64"
396
           ;;
397
esac
398

    
399
if test x"$show_help" = x"yes" ; then
400
cat << EOF
401

    
402
Usage: configure [options]
403
Options: [defaults in brackets after descriptions]
404

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

    
455
cc="${cross_prefix}${cc}"
456
ar="${cross_prefix}${ar}"
457
strip="${cross_prefix}${strip}"
458

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

    
464
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
465
  : C compiler works ok
466
else
467
    echo "ERROR: \"$cc\" either does not exist or does not work"
468
    exit 1
469
fi
470

    
471
# check compiler to see if we're on mingw32
472
cat > $TMPC <<EOF
473
#include <windows.h>
474
#ifndef _WIN32
475
#error not windows
476
#endif
477
int main(void) {}
478
EOF
479

    
480
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
481
    mingw32="yes"
482
fi
483

    
484
if test "$mingw32" = "yes" ; then
485
    linux="no"
486
    EXESUF=".exe"
487
    oss="no"
488
    linux_user="no"
489
fi
490

    
491
if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
492
    AIOLIBS=
493
elif [ "$bsd" = "yes" ]; then
494
    AIOLIBS="-lpthread"
495
else
496
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
497
    AIOLIBS="-lrt -lpthread"
498
fi
499

    
500
# Check for gcc4, error if pre-gcc4
501
if test "$check_gcc" = "yes" ; then
502
    cat > $TMPC <<EOF
503
#if __GNUC__ < 4
504
#error gcc3
505
#endif
506
int main(){return 0;}
507
EOF
508
    if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
509
	echo "WARNING: \"$cc\" looks like gcc 4.x"
510
	found_compat_cc="no"
511
	if test "$gcc3_search" = "yes" ; then
512
	    echo "Looking for gcc 3.x"
513
	    for compat_cc in $gcc3_list ; do
514
		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
515
		    echo "Found \"$compat_cc\""
516
		    cc="$cross_prefix$compat_cc"
517
		    found_compat_cc="yes"
518
		    break
519
		fi
520
	    done
521
	    if test "$found_compat_cc" = "no" ; then
522
		echo "gcc 3.x not found!"
523
	    fi
524
	fi
525
	if test "$found_compat_cc" = "no" ; then
526
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
527
	    echo "It is recommended that you use gcc 3.x to build QEMU"
528
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
529
	    exit 1;
530
	fi
531
    fi
532
fi
533

    
534
#
535
# Solaris specific configure tool chain decisions
536
#
537
if test "$solaris" = "yes" ; then
538
  #
539
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
540
  # override the check with --disable-gcc-check
541
  #
542
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
543
    solgcc=`which $cc`
544
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
545
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
546
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
547
      echo "or get the latest patch from SunSolve for gcc"
548
      exit 1
549
    fi
550
  fi
551
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
552
  if test -z "$solinst" ; then
553
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
554
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
555
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
556
    exit 1
557
  fi
558
  if test "$solinst" = "/usr/sbin/install" ; then
559
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
560
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
561
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
562
    exit 1
563
  fi
564
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
565
  if test -z "$sol_ar" ; then
566
    echo "Error: No path includes ar"
567
    if test -f /usr/ccs/bin/ar ; then
568
      echo "Add /usr/ccs/bin to your path and rerun configure"
569
    fi
570
    exit 1
571
  fi
572
fi
573

    
574

    
575
if test -z "$target_list" ; then
576
# these targets are portable
577
    if [ "$softmmu" = "yes" ] ; then
578
        target_list="\
579
i386-softmmu \
580
x86_64-softmmu \
581
arm-softmmu \
582
cris-softmmu \
583
m68k-softmmu \
584
mips-softmmu \
585
mipsel-softmmu \
586
mips64-softmmu \
587
mips64el-softmmu \
588
ppc-softmmu \
589
ppcemb-softmmu \
590
ppc64-softmmu \
591
sh4-softmmu \
592
sh4eb-softmmu \
593
sparc-softmmu \
594
"
595
    fi
596
# the following are Linux specific
597
    if [ "$linux_user" = "yes" ] ; then
598
        target_list="${target_list}\
599
i386-linux-user \
600
x86_64-linux-user \
601
alpha-linux-user \
602
arm-linux-user \
603
armeb-linux-user \
604
cris-linux-user \
605
m68k-linux-user \
606
mips-linux-user \
607
mipsel-linux-user \
608
ppc-linux-user \
609
ppc64-linux-user \
610
ppc64abi32-linux-user \
611
sh4-linux-user \
612
sh4eb-linux-user \
613
sparc-linux-user \
614
sparc64-linux-user \
615
sparc32plus-linux-user \
616
"
617
    fi
618
# the following are Darwin specific
619
    if [ "$darwin_user" = "yes" ] ; then
620
        target_list="$target_list i386-darwin-user ppc-darwin-user"
621
    fi
622
else
623
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
624
fi
625
if test -z "$target_list" ; then
626
    echo "No targets enabled"
627
    exit 1
628
fi
629

    
630
if test -z "$cross_prefix" ; then
631

    
632
# ---
633
# big/little endian test
634
cat > $TMPC << EOF
635
#include <inttypes.h>
636
int main(int argc, char ** argv){
637
        volatile uint32_t i=0x01234567;
638
        return (*((uint8_t*)(&i))) == 0x67;
639
}
640
EOF
641

    
642
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
643
$TMPE && bigendian="yes"
644
else
645
echo big/little test failed
646
fi
647

    
648
else
649

    
650
# if cross compiling, cannot launch a program, so make a static guess
651
if test "$cpu" = "armv4b" \
652
     -o "$cpu" = "hppa" \
653
     -o "$cpu" = "m68k" \
654
     -o "$cpu" = "mips" \
655
     -o "$cpu" = "mips64" \
656
     -o "$cpu" = "powerpc" \
657
     -o "$cpu" = "s390" \
658
     -o "$cpu" = "sparc" \
659
     -o "$cpu" = "sparc64"; then
660
    bigendian="yes"
661
fi
662

    
663
fi
664

    
665
# host long bits test
666
hostlongbits="32"
667
if test "$cpu" = "x86_64" \
668
     -o "$cpu" = "alpha" \
669
     -o "$cpu" = "ia64" \
670
     -o "$cpu" = "sparc64"; then
671
    hostlongbits="64"
672
fi
673

    
674
# ppc specific hostlongbits selection
675
if test "$cpu" = "powerpc" ; then
676
    cat > $TMPC <<EOF
677
int main(void){return sizeof(long);}
678
EOF
679

    
680
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
681
        $TMPE
682
        case $? in
683
            4) hostlongbits="32";;
684
            8) hostlongbits="64";;
685
            *) echo "Couldn't determine bits per long value"; exit 1;;
686
        esac
687
    else
688
        echo hostlongbits test failed
689
        exit 1
690
    fi
691
fi
692

    
693
# check gcc options support
694
cat > $TMPC <<EOF
695
int main(void) {
696
}
697
EOF
698

    
699
# Check host NPTL support
700
cat > $TMPC <<EOF
701
#include <sched.h>
702
#include <linux/futex.h>
703
void foo()
704
{
705
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
706
#error bork
707
#endif
708
}
709
EOF
710

    
711
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
712
  :
713
else
714
   nptl="no"
715
fi
716

    
717
##########################################
718
# SDL probe
719

    
720
sdl_too_old=no
721

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

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

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

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

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

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

    
800
##########################################
801
# Sound support libraries probe
802

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

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

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

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

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

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

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

    
869
##########################################
870
# BrlAPI probe
871

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

    
883
##########################################
884
# curses probe
885

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

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

    
917
##########################################
918
# AIO probe
919
if test "$aio" = "yes" ; then
920
  aio=no
921
  cat > $TMPC << EOF
922
#include <aio.h>
923
int main(void) { return aio_write(NULL); }
924
EOF
925
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
926
    aio=yes
927
  fi
928
fi
929

    
930
##########################################
931
# signalfd probe
932
cat > $TMPC << EOF
933
#define _GNU_SOURCE
934
#include <unistd.h>
935
#include <sys/syscall.h>
936
#include <signal.h>
937
int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
938
EOF
939

    
940
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
941
  signalfd=yes
942
fi
943

    
944
##########################################
945
# eventfd probe
946
cat > $TMPC << EOF
947
#define _GNU_SOURCE
948
#include <unistd.h>
949
#include <sys/syscall.h>
950
int main(void) { return syscall(SYS_eventfd, 0); }
951
EOF
952

    
953
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
954
  eventfd=yes
955
fi
956

    
957
# Check if tools are available to build documentation.
958
if [ -x "`which texi2html 2>/dev/null`" ] && \
959
   [ -x "`which pod2man 2>/dev/null`" ]; then
960
  build_docs="yes"
961
fi
962

    
963
if test "$mingw32" = "yes" ; then
964
  if test -z "$prefix" ; then
965
      prefix="/c/Program Files/Qemu"
966
  fi
967
  mansuffix=""
968
  datasuffix=""
969
  docsuffix=""
970
  binsuffix=""
971
else
972
  if test -z "$prefix" ; then
973
      prefix="/usr/local"
974
  fi
975
  mansuffix="/share/man"
976
  datasuffix="/share/qemu"
977
  docsuffix="/share/doc/qemu"
978
  binsuffix="/bin"
979
fi
980

    
981
echo "Install prefix    $prefix"
982
echo "BIOS directory    $prefix$datasuffix"
983
echo "binary directory  $prefix$binsuffix"
984
if test "$mingw32" = "no" ; then
985
echo "Manual directory  $prefix$mansuffix"
986
echo "ELF interp prefix $interp_prefix"
987
fi
988
echo "Source path       $source_path"
989
echo "C compiler        $cc"
990
echo "Host C compiler   $host_cc"
991
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
992
echo "make              $make"
993
echo "install           $install"
994
echo "host CPU          $cpu"
995
echo "host big endian   $bigendian"
996
echo "target list       $target_list"
997
echo "gprof enabled     $gprof"
998
echo "profiler          $profiler"
999
echo "static build      $static"
1000
echo "-Werror enabled   $werror"
1001
if test "$darwin" = "yes" ; then
1002
    echo "Cocoa support     $cocoa"
1003
fi
1004
echo "SDL support       $sdl"
1005
if test "$sdl" != "no" ; then
1006
    echo "SDL static link   $sdl_static"
1007
fi
1008
echo "curses support    $curses"
1009
echo "mingw32 support   $mingw32"
1010
echo "Audio drivers     $audio_drv_list"
1011
echo "Extra audio cards $audio_card_list"
1012
echo "Mixer emulation   $mixemu"
1013
echo "VNC TLS support   $vnc_tls"
1014
if test "$vnc_tls" = "yes" ; then
1015
    echo "    TLS CFLAGS    $vnc_tls_cflags"
1016
    echo "    TLS LIBS      $vnc_tls_libs"
1017
fi
1018
if test -n "$sparc_cpu"; then
1019
    echo "Target Sparc Arch $sparc_cpu"
1020
fi
1021
echo "kqemu support     $kqemu"
1022
echo "brlapi support    $brlapi"
1023
echo "Documentation     $build_docs"
1024
[ ! -z "$uname_release" ] && \
1025
echo "uname -r          $uname_release"
1026
echo "NPTL support      $nptl"
1027
echo "vde support       $vde"
1028
echo "AIO support       $aio"
1029

    
1030
if test $sdl_too_old = "yes"; then
1031
echo "-> Your SDL version is too old - please upgrade to have SDL support"
1032
fi
1033
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1034
  echo "The error log from compiling the libSDL test is: "
1035
  cat /tmp/qemu-$$-sdl-config.log
1036
fi
1037
rm -f /tmp/qemu-$$-sdl-config.log
1038
#if test "$sdl_static" = "no"; then
1039
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1040
#fi
1041
config_mak="config-host.mak"
1042
config_h="config-host.h"
1043

    
1044
#echo "Creating $config_mak and $config_h"
1045

    
1046
test -f $config_h && mv $config_h ${config_h}~
1047

    
1048
echo "# Automatically generated by configure - do not modify" > $config_mak
1049
echo "# Configured with: $0 $@" >> $config_mak
1050
echo "/* Automatically generated by configure - do not modify */" > $config_h
1051

    
1052
echo "prefix=$prefix" >> $config_mak
1053
echo "bindir=\${prefix}$binsuffix" >> $config_mak
1054
echo "mandir=\${prefix}$mansuffix" >> $config_mak
1055
echo "datadir=\${prefix}$datasuffix" >> $config_mak
1056
echo "docdir=\${prefix}$docsuffix" >> $config_mak
1057
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1058
echo "MAKE=$make" >> $config_mak
1059
echo "INSTALL=$install" >> $config_mak
1060
echo "CC=$cc" >> $config_mak
1061
echo "HOST_CC=$host_cc" >> $config_mak
1062
echo "AR=$ar" >> $config_mak
1063
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1064
# XXX: only use CFLAGS and LDFLAGS ?  
1065
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1066
# compilation of dyngen tool (useful for win32 build on Linux host)
1067
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1068
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1069
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1070
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1071
echo "CFLAGS=$CFLAGS" >> $config_mak
1072
echo "LDFLAGS=$LDFLAGS" >> $config_mak
1073
echo "EXESUF=$EXESUF" >> $config_mak
1074
echo "AIOLIBS=$AIOLIBS" >> $config_mak
1075
case "$cpu" in
1076
  i386)
1077
    echo "ARCH=i386" >> $config_mak
1078
    echo "#define HOST_I386 1" >> $config_h
1079
  ;;
1080
  x86_64)
1081
    echo "ARCH=x86_64" >> $config_mak
1082
    echo "#define HOST_X86_64 1" >> $config_h
1083
  ;;
1084
  alpha)
1085
    echo "ARCH=alpha" >> $config_mak
1086
    echo "#define HOST_ALPHA 1" >> $config_h
1087
  ;;
1088
  armv4b)
1089
    echo "ARCH=arm" >> $config_mak
1090
    echo "#define HOST_ARM 1" >> $config_h
1091
  ;;
1092
  armv4l)
1093
    echo "ARCH=arm" >> $config_mak
1094
    echo "#define HOST_ARM 1" >> $config_h
1095
  ;;
1096
  cris)
1097
    echo "ARCH=cris" >> $config_mak
1098
    echo "#define HOST_CRIS 1" >> $config_h
1099
  ;;
1100
  hppa)
1101
    echo "ARCH=hppa" >> $config_mak
1102
    echo "#define HOST_HPPA 1" >> $config_h
1103
  ;;
1104
  ia64)
1105
    echo "ARCH=ia64" >> $config_mak
1106
    echo "#define HOST_IA64 1" >> $config_h
1107
  ;;
1108
  m68k)
1109
    echo "ARCH=m68k" >> $config_mak
1110
    echo "#define HOST_M68K 1" >> $config_h
1111
  ;;
1112
  mips)
1113
    echo "ARCH=mips" >> $config_mak
1114
    echo "#define HOST_MIPS 1" >> $config_h
1115
  ;;
1116
  mips64)
1117
    echo "ARCH=mips64" >> $config_mak
1118
    echo "#define HOST_MIPS64 1" >> $config_h
1119
  ;;
1120
  powerpc)
1121
  if test "$hostlongbits" = "32"; then
1122
      echo "ARCH=ppc" >> $config_mak
1123
      echo "#define HOST_PPC 1" >> $config_h
1124
  else
1125
      echo "ARCH=ppc64" >> $config_mak
1126
      echo "#define HOST_PPC64 1" >> $config_h
1127
  fi
1128
  ;;
1129
  s390)
1130
    echo "ARCH=s390" >> $config_mak
1131
    echo "#define HOST_S390 1" >> $config_h
1132
  ;;
1133
  sparc)
1134
    echo "ARCH=sparc" >> $config_mak
1135
    echo "#define HOST_SPARC 1" >> $config_h
1136
  ;;
1137
  sparc64)
1138
    echo "ARCH=sparc64" >> $config_mak
1139
    echo "#define HOST_SPARC64 1" >> $config_h
1140
  ;;
1141
  *)
1142
    echo "Unsupported CPU = $cpu"
1143
    exit 1
1144
  ;;
1145
esac
1146
if test "$bigendian" = "yes" ; then
1147
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1148
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1149
fi
1150
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1151
if test "$mingw32" = "yes" ; then
1152
  echo "CONFIG_WIN32=yes" >> $config_mak
1153
  echo "#define CONFIG_WIN32 1" >> $config_h
1154
else
1155
  cat > $TMPC << EOF
1156
#include <byteswap.h>
1157
int main(void) { return bswap_32(0); }
1158
EOF
1159
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1160
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1161
  fi
1162
fi
1163

    
1164
if [ "$openbsd" = "yes" ] ; then
1165
  echo "#define ENOTSUP 4096" >> $config_h
1166
fi
1167

    
1168
if test "$darwin" = "yes" ; then
1169
  echo "CONFIG_DARWIN=yes" >> $config_mak
1170
  echo "#define CONFIG_DARWIN 1" >> $config_h
1171
fi
1172
if test "$solaris" = "yes" ; then
1173
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1174
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1175
  if test "$needs_libsunmath" = "yes" ; then
1176
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1177
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1178
  fi
1179
fi
1180
if test -n "$sparc_cpu"; then
1181
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1182
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1183
fi
1184
if test "$gdbstub" = "yes" ; then
1185
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1186
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1187
fi
1188
if test "$gprof" = "yes" ; then
1189
  echo "TARGET_GPROF=yes" >> $config_mak
1190
  echo "#define HAVE_GPROF 1" >> $config_h
1191
fi
1192
if test "$static" = "yes" ; then
1193
  echo "CONFIG_STATIC=yes" >> $config_mak
1194
  echo "#define CONFIG_STATIC 1" >> $config_h
1195
fi
1196
if test $profiler = "yes" ; then
1197
  echo "#define CONFIG_PROFILER 1" >> $config_h
1198
fi
1199
if test "$slirp" = "yes" ; then
1200
  echo "CONFIG_SLIRP=yes" >> $config_mak
1201
  echo "#define CONFIG_SLIRP 1" >> $config_h
1202
fi
1203
if test "$vde" = "yes" ; then
1204
  echo "CONFIG_VDE=yes" >> $config_mak
1205
  echo "#define CONFIG_VDE 1" >> $config_h
1206
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1207
fi
1208
for card in $audio_card_list; do
1209
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1210
    echo "$def=yes" >> $config_mak
1211
    echo "#define $def 1" >> $config_h
1212
done
1213
echo "#define AUDIO_DRIVERS \\" >> $config_h
1214
for drv in $audio_drv_list; do
1215
    echo "    &${drv}_audio_driver, \\" >>$config_h
1216
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1217
    echo "$def=yes" >> $config_mak
1218
    if test "$drv" = "fmod"; then
1219
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1220
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1221
    elif test "$drv" = "oss"; then
1222
        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1223
    fi
1224
done
1225
echo "" >>$config_h
1226
if test "$mixemu" = "yes" ; then
1227
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1228
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1229
fi
1230
if test "$vnc_tls" = "yes" ; then
1231
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1232
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1233
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1234
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1235
fi
1236
qemu_version=`head $source_path/VERSION`
1237
echo "VERSION=$qemu_version" >>$config_mak
1238
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1239

    
1240
echo "SRC_PATH=$source_path" >> $config_mak
1241
if [ "$source_path_used" = "yes" ]; then
1242
  echo "VPATH=$source_path" >> $config_mak
1243
fi
1244
echo "TARGET_DIRS=$target_list" >> $config_mak
1245
if [ "$build_docs" = "yes" ] ; then
1246
  echo "BUILD_DOCS=yes" >> $config_mak
1247
fi
1248
if test "$static" = "yes"; then
1249
  sdl1=$sdl_static
1250
else
1251
  sdl1=$sdl
1252
fi
1253
if test "$sdl1" = "yes" ; then
1254
  echo "#define CONFIG_SDL 1" >> $config_h
1255
  echo "CONFIG_SDL=yes" >> $config_mak
1256
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1257
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1258
  else
1259
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1260
  fi
1261
  if [ "${aa}" = "yes" ] ; then
1262
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1263
  else
1264
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1265
  fi
1266
fi
1267
if test "$cocoa" = "yes" ; then
1268
  echo "#define CONFIG_COCOA 1" >> $config_h
1269
  echo "CONFIG_COCOA=yes" >> $config_mak
1270
fi
1271
if test "$curses" = "yes" ; then
1272
  echo "#define CONFIG_CURSES 1" >> $config_h
1273
  echo "CONFIG_CURSES=yes" >> $config_mak
1274
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1275
fi
1276
if test "$brlapi" = "yes" ; then
1277
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1278
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1279
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1280
fi
1281
if test "$bluez" = "yes" ; then
1282
  echo "CONFIG_BLUEZ=yes" >> $config_mak
1283
  echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1284
  echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1285
  echo "#define CONFIG_BLUEZ 1" >> $config_h
1286
fi
1287
if test "$aio" = "yes" ; then
1288
  echo "#define CONFIG_AIO 1" >> $config_h
1289
  echo "CONFIG_AIO=yes" >> $config_mak
1290
fi
1291
if test "$signalfd" = "yes" ; then
1292
  echo "#define CONFIG_signalfd 1" >> $config_h
1293
fi
1294
if test "$eventfd" = "yes" ; then
1295
  echo "#define CONFIG_eventfd 1" >> $config_h
1296
fi
1297

    
1298
# XXX: suppress that
1299
if [ "$bsd" = "yes" ] ; then
1300
  echo "#define O_LARGEFILE 0" >> $config_h
1301
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1302
  echo "#define _BSD 1" >> $config_h
1303
fi
1304

    
1305
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1306

    
1307
tools=
1308
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1309
  tools="qemu-img\$(EXESUF) $tools"
1310
  if [ "$linux" = "yes" ] ; then
1311
      tools="qemu-nbd\$(EXESUF) $tools"
1312
  fi
1313
fi
1314
echo "TOOLS=$tools" >> $config_mak
1315

    
1316
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1317

    
1318
for target in $target_list; do
1319
target_dir="$target"
1320
config_mak=$target_dir/config.mak
1321
config_h=$target_dir/config.h
1322
target_cpu=`echo $target | cut -d '-' -f 1`
1323
target_bigendian="no"
1324
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1325
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1326
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1327
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1328
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1329
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1330
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1331
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1332
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1333
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1334
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1335
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1336
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1337
target_softmmu="no"
1338
target_user_only="no"
1339
target_linux_user="no"
1340
target_darwin_user="no"
1341
case "$target" in
1342
  ${target_cpu}-softmmu)
1343
    target_softmmu="yes"
1344
    ;;
1345
  ${target_cpu}-linux-user)
1346
    target_user_only="yes"
1347
    target_linux_user="yes"
1348
    ;;
1349
  ${target_cpu}-darwin-user)
1350
    target_user_only="yes"
1351
    target_darwin_user="yes"
1352
    ;;
1353
  *)
1354
    echo "ERROR: Target '$target' not recognised"
1355
    exit 1
1356
    ;;
1357
esac
1358

    
1359
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1360
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1361
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1362
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1363
    echo "Note that this will disable all output from the virtual graphics card"
1364
    echo "except through VNC or curses."
1365
    exit 1;
1366
fi
1367

    
1368
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1369

    
1370
test -f $config_h && mv $config_h ${config_h}~
1371

    
1372
mkdir -p $target_dir
1373
mkdir -p $target_dir/fpu
1374
mkdir -p $target_dir/tcg
1375
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1376
  mkdir -p $target_dir/nwfpe
1377
fi
1378

    
1379
#
1380
# don't use ln -sf as not all "ln -sf" over write the file/link
1381
#
1382
rm -f $target_dir/Makefile
1383
ln -s $source_path/Makefile.target $target_dir/Makefile
1384

    
1385

    
1386
echo "# Automatically generated by configure - do not modify" > $config_mak
1387
echo "/* Automatically generated by configure - do not modify */" > $config_h
1388

    
1389

    
1390
echo "include ../config-host.mak" >> $config_mak
1391
echo "#include \"../config-host.h\"" >> $config_h
1392

    
1393
bflt="no"
1394
elfload32="no"
1395
target_nptl="no"
1396
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1397
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1398

    
1399
case "$target_cpu" in
1400
  i386)
1401
    echo "TARGET_ARCH=i386" >> $config_mak
1402
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1403
    echo "#define TARGET_I386 1" >> $config_h
1404
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1405
    then
1406
      echo "#define USE_KQEMU 1" >> $config_h
1407
    fi
1408
    gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1409
    if test -n "$gcc3minver" && test $gcc3minver -gt 3
1410
    then
1411
      echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1412
    else
1413
      echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1414
    fi
1415
  ;;
1416
  x86_64)
1417
    echo "TARGET_ARCH=x86_64" >> $config_mak
1418
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1419
    echo "#define TARGET_I386 1" >> $config_h
1420
    echo "#define TARGET_X86_64 1" >> $config_h
1421
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1422
    then
1423
      echo "#define USE_KQEMU 1" >> $config_h
1424
    fi
1425
  ;;
1426
  alpha)
1427
    echo "TARGET_ARCH=alpha" >> $config_mak
1428
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1429
    echo "#define TARGET_ALPHA 1" >> $config_h
1430
  ;;
1431
  arm|armeb)
1432
    echo "TARGET_ARCH=arm" >> $config_mak
1433
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1434
    echo "#define TARGET_ARM 1" >> $config_h
1435
    bflt="yes"
1436
    target_nptl="yes"
1437
  ;;
1438
  cris)
1439
    echo "TARGET_ARCH=cris" >> $config_mak
1440
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1441
    echo "#define TARGET_CRIS 1" >> $config_h
1442
  ;;
1443
  m68k)
1444
    echo "TARGET_ARCH=m68k" >> $config_mak
1445
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1446
    echo "#define TARGET_M68K 1" >> $config_h
1447
    bflt="yes"
1448
  ;;
1449
  mips|mipsel)
1450
    echo "TARGET_ARCH=mips" >> $config_mak
1451
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1452
    echo "#define TARGET_MIPS 1" >> $config_h
1453
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1454
  ;;
1455
  mipsn32|mipsn32el)
1456
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1457
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1458
    echo "#define TARGET_MIPS 1" >> $config_h
1459
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1460
  ;;
1461
  mips64|mips64el)
1462
    echo "TARGET_ARCH=mips64" >> $config_mak
1463
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1464
    echo "#define TARGET_MIPS 1" >> $config_h
1465
    echo "#define TARGET_MIPS64 1" >> $config_h
1466
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1467
  ;;
1468
  ppc)
1469
    echo "TARGET_ARCH=ppc" >> $config_mak
1470
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1471
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1472
    echo "#define TARGET_PPC 1" >> $config_h
1473
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1474
  ;;
1475
  ppcemb)
1476
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1477
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1478
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1479
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1480
    echo "#define TARGET_PPC 1" >> $config_h
1481
    echo "#define TARGET_PPCEMB 1" >> $config_h
1482
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1483
  ;;
1484
  ppc64)
1485
    echo "TARGET_ARCH=ppc64" >> $config_mak
1486
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1487
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1488
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1489
    echo "#define TARGET_PPC 1" >> $config_h
1490
    echo "#define TARGET_PPC64 1" >> $config_h
1491
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1492
  ;;
1493
  ppc64abi32)
1494
    echo "TARGET_ARCH=ppc64" >> $config_mak
1495
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1496
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1497
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1498
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1499
    echo "#define TARGET_PPC 1" >> $config_h
1500
    echo "#define TARGET_PPC64 1" >> $config_h
1501
    echo "#define TARGET_ABI32 1" >> $config_h
1502
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1503
  ;;
1504
  sh4|sh4eb)
1505
    echo "TARGET_ARCH=sh4" >> $config_mak
1506
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1507
    echo "#define TARGET_SH4 1" >> $config_h
1508
    bflt="yes"
1509
    target_nptl="yes"
1510
  ;;
1511
  sparc)
1512
    echo "TARGET_ARCH=sparc" >> $config_mak
1513
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1514
    echo "#define TARGET_SPARC 1" >> $config_h
1515
  ;;
1516
  sparc64)
1517
    echo "TARGET_ARCH=sparc64" >> $config_mak
1518
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1519
    echo "#define TARGET_SPARC 1" >> $config_h
1520
    echo "#define TARGET_SPARC64 1" >> $config_h
1521
    elfload32="yes"
1522
  ;;
1523
  sparc32plus)
1524
    echo "TARGET_ARCH=sparc64" >> $config_mak
1525
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1526
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1527
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1528
    echo "#define TARGET_SPARC 1" >> $config_h
1529
    echo "#define TARGET_SPARC64 1" >> $config_h
1530
    echo "#define TARGET_ABI32 1" >> $config_h
1531
  ;;
1532
  *)
1533
    echo "Unsupported target CPU"
1534
    exit 1
1535
  ;;
1536
esac
1537
if test "$target_bigendian" = "yes" ; then
1538
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1539
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1540
fi
1541
if test "$target_softmmu" = "yes" ; then
1542
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1543
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1544
fi
1545
if test "$target_user_only" = "yes" ; then
1546
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1547
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1548
fi
1549
if test "$target_linux_user" = "yes" ; then
1550
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1551
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1552
fi
1553
if test "$target_darwin_user" = "yes" ; then
1554
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1555
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1556
fi
1557

    
1558
if test "$target_cpu" = "arm" \
1559
     -o "$target_cpu" = "armeb" \
1560
     -o "$target_cpu" = "m68k" \
1561
     -o "$target_cpu" = "mips" \
1562
     -o "$target_cpu" = "mipsel" \
1563
     -o "$target_cpu" = "mipsn32" \
1564
     -o "$target_cpu" = "mipsn32el" \
1565
     -o "$target_cpu" = "mips64" \
1566
     -o "$target_cpu" = "mips64el" \
1567
     -o "$target_cpu" = "sparc" \
1568
     -o "$target_cpu" = "sparc64" \
1569
     -o "$target_cpu" = "sparc32plus"; then
1570
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1571
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1572
fi
1573
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1574
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1575
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1576
fi
1577
if test "$target_user_only" = "yes" \
1578
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1579
  echo "#define USE_NPTL 1" >> $config_h
1580
fi
1581
# 32 bit ELF loader in addition to native 64 bit loader?
1582
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1583
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1584
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1585
fi
1586

    
1587
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1588

    
1589
done # for target in $targets
1590

    
1591
# build tree in object directory if source path is different from current one
1592
if test "$source_path_used" = "yes" ; then
1593
    DIRS="tests tests/cris slirp audio"
1594
    FILES="Makefile tests/Makefile"
1595
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1596
    FILES="$FILES tests/test-mmap.c"
1597
    for dir in $DIRS ; do
1598
            mkdir -p $dir
1599
    done
1600
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1601
    for f in $FILES ; do
1602
        rm -f $f
1603
        ln -s $source_path/$f $f
1604
    done
1605
fi
1606

    
1607
rm -f $TMPO $TMPC $TMPE $TMPS