Statistics
| Branch: | Revision:

root / configure @ 43661a95

History | View | Annotate | Download (41.6 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
vnc_tls="yes"
96
bsd="no"
97
linux="no"
98
kqemu="no"
99
profiler="no"
100
cocoa="no"
101
check_gfx="yes"
102
check_gcc="yes"
103
softmmu="yes"
104
linux_user="no"
105
darwin_user="no"
106
build_docs="no"
107
uname_release=""
108
curses="yes"
109
aio="yes"
110
nptl="yes"
111
mixemu="no"
112

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

    
212
if [ "$bsd" = "yes" ] ; then
213
  if [ "$darwin" != "yes" ] ; then
214
    make="gmake"
215
  fi
216
fi
217

    
218
# find source path
219
source_path=`dirname "$0"`
220
source_path_used="no"
221
workdir=`pwd`
222
if [ -z "$source_path" ]; then
223
    source_path=$workdir
224
else
225
    source_path=`cd "$source_path"; pwd`
226
fi
227
[ -f "$workdir/vl.c" ] || source_path_used="yes"
228

    
229
werror="no"
230
# generate compile errors on warnings for development builds
231
#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
232
#werror="yes";
233
#fi
234

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

    
346
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
347
    AIOLIBS=
348
else
349
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
350
    AIOLIBS="-lrt -lpthread"
351
fi
352

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

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

    
394
if test x"$show_help" = x"yes" ; then
395
cat << EOF
396

    
397
Usage: configure [options]
398
Options: [defaults in brackets after descriptions]
399

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

    
449
cc="${cross_prefix}${cc}"
450
ar="${cross_prefix}${ar}"
451
strip="${cross_prefix}${strip}"
452

    
453
# check that the C compiler works.
454
cat > $TMPC <<EOF
455
int main(void) {}
456
EOF
457

    
458
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
459
  : C compiler works ok
460
else
461
    echo "ERROR: \"$cc\" either does not exist or does not work"
462
    exit 1
463
fi
464

    
465
if test "$mingw32" = "yes" ; then
466
    linux="no"
467
    EXESUF=".exe"
468
    oss="no"
469
fi
470

    
471
# Check for gcc4, error if pre-gcc4
472
if test "$check_gcc" = "yes" ; then
473
    cat > $TMPC <<EOF
474
#if __GNUC__ < 4
475
#error gcc3
476
#endif
477
int main(){return 0;}
478
EOF
479
    if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
480
	echo "WARNING: \"$cc\" looks like gcc 4.x"
481
	found_compat_cc="no"
482
	if test "$gcc3_search" = "yes" ; then
483
	    echo "Looking for gcc 3.x"
484
	    for compat_cc in $gcc3_list ; do
485
		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
486
		    echo "Found \"$compat_cc\""
487
		    cc="$cross_prefix$compat_cc"
488
		    found_compat_cc="yes"
489
		    break
490
		fi
491
	    done
492
	    if test "$found_compat_cc" = "no" ; then
493
		echo "gcc 3.x not found!"
494
	    fi
495
	fi
496
	if test "$found_compat_cc" = "no" ; then
497
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
498
	    echo "It is recommended that you use gcc 3.x to build QEMU"
499
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
500
	    exit 1;
501
	fi
502
    fi
503
fi
504

    
505
#
506
# Solaris specific configure tool chain decisions
507
#
508
if test "$solaris" = "yes" ; then
509
  #
510
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
511
  # override the check with --disable-gcc-check
512
  #
513
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
514
    solgcc=`which $cc`
515
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
516
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
517
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
518
      echo "or get the latest patch from SunSolve for gcc"
519
      exit 1
520
    fi
521
  fi
522
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
523
  if test -z "$solinst" ; then
524
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
525
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
526
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
527
    exit 1
528
  fi
529
  if test "$solinst" = "/usr/sbin/install" ; then
530
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
531
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
532
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
533
    exit 1
534
  fi
535
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
536
  if test -z "$sol_ar" ; then
537
    echo "Error: No path includes ar"
538
    if test -f /usr/ccs/bin/ar ; then
539
      echo "Add /usr/ccs/bin to your path and rerun configure"
540
    fi
541
    exit 1
542
  fi
543
fi
544

    
545

    
546
if test -z "$target_list" ; then
547
# these targets are portable
548
    if [ "$softmmu" = "yes" ] ; then
549
        target_list="\
550
i386-softmmu \
551
x86_64-softmmu \
552
arm-softmmu \
553
cris-softmmu \
554
m68k-softmmu \
555
mips-softmmu \
556
mipsel-softmmu \
557
mips64-softmmu \
558
mips64el-softmmu \
559
ppc-softmmu \
560
ppcemb-softmmu \
561
ppc64-softmmu \
562
sh4-softmmu \
563
sh4eb-softmmu \
564
sparc-softmmu \
565
"
566
    fi
567
# the following are Linux specific
568
    if [ "$linux_user" = "yes" ] ; then
569
        target_list="${target_list}\
570
i386-linux-user \
571
x86_64-linux-user \
572
alpha-linux-user \
573
arm-linux-user \
574
armeb-linux-user \
575
cris-linux-user \
576
m68k-linux-user \
577
mips-linux-user \
578
mipsel-linux-user \
579
ppc-linux-user \
580
ppc64-linux-user \
581
ppc64abi32-linux-user \
582
sh4-linux-user \
583
sh4eb-linux-user \
584
sparc-linux-user \
585
sparc64-linux-user \
586
sparc32plus-linux-user \
587
"
588
    fi
589
# the following are Darwin specific
590
    if [ "$darwin_user" = "yes" ] ; then
591
        target_list="$target_list i386-darwin-user ppc-darwin-user"
592
    fi
593
else
594
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
595
fi
596
if test -z "$target_list" ; then
597
    echo "No targets enabled"
598
    exit 1
599
fi
600

    
601
if test -z "$cross_prefix" ; then
602

    
603
# ---
604
# big/little endian test
605
cat > $TMPC << EOF
606
#include <inttypes.h>
607
int main(int argc, char ** argv){
608
        volatile uint32_t i=0x01234567;
609
        return (*((uint8_t*)(&i))) == 0x67;
610
}
611
EOF
612

    
613
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
614
$TMPE && bigendian="yes"
615
else
616
echo big/little test failed
617
fi
618

    
619
else
620

    
621
# if cross compiling, cannot launch a program, so make a static guess
622
if test "$cpu" = "armv4b" \
623
     -o "$cpu" = "hppa" \
624
     -o "$cpu" = "m68k" \
625
     -o "$cpu" = "mips" \
626
     -o "$cpu" = "mips64" \
627
     -o "$cpu" = "powerpc" \
628
     -o "$cpu" = "s390" \
629
     -o "$cpu" = "sparc" \
630
     -o "$cpu" = "sparc64"; then
631
    bigendian="yes"
632
fi
633

    
634
fi
635

    
636
# host long bits test
637
hostlongbits="32"
638
if test "$cpu" = "x86_64" \
639
     -o "$cpu" = "alpha" \
640
     -o "$cpu" = "ia64" \
641
     -o "$cpu" = "sparc64"; then
642
    hostlongbits="64"
643
fi
644

    
645
# ppc specific hostlongbits selection
646
if test "$cpu" = "powerpc" ; then
647
    cat > $TMPC <<EOF
648
int main(void){return sizeof(long);}
649
EOF
650

    
651
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
652
        $TMPE
653
        case $? in
654
            4) hostlongbits="32";;
655
            8) hostlongbits="64";;
656
            *) echo "Couldn't determine bits per long value"; exit 1;;
657
        esac
658
    else
659
        echo hostlongbits test failed
660
        exit 1
661
    fi
662
fi
663

    
664
# check gcc options support
665
cat > $TMPC <<EOF
666
int main(void) {
667
}
668
EOF
669

    
670
# Check host NPTL support
671
cat > $TMPC <<EOF
672
#include <sched.h>
673
#include <linux/futex.h>
674
void foo()
675
{
676
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
677
#error bork
678
#endif
679
}
680
EOF
681

    
682
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
683
  :
684
else
685
   nptl="no"
686
fi
687

    
688
##########################################
689
# SDL probe
690

    
691
sdl_too_old=no
692

    
693
if test -z "$sdl" ; then
694
    sdl_config="sdl-config"
695
    sdl=no
696
    sdl_static=no
697

    
698
    if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
699
    # win32 cross compilation case
700
        sdl_config="i386-mingw32msvc-sdl-config"
701
        sdl=yes
702
    else
703
        # normal SDL probe
704
cat > $TMPC << EOF
705
#include <SDL.h>
706
#undef main /* We don't want SDL to override our main() */
707
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
708
EOF
709
        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
710
            _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
711
            if test "$_sdlversion" -lt 121 ; then
712
                sdl_too_old=yes
713
            else
714
                if test "$cocoa" = "no" ; then
715
                    sdl=yes
716
                fi
717
            fi
718

    
719
            # static link with sdl ?
720
            if test "$sdl" = "yes" ; then
721
                aa="no"
722
                `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
723
                sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
724
                if [ "$aa" = "yes" ] ; then
725
                    sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
726
                fi
727

    
728
                if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
729
                    sdl_static=yes
730
                fi
731
            fi # static link
732
        fi # sdl compile test
733
    fi # cross compilation
734
else
735
    # Make sure to disable cocoa if sdl was set
736
    if test "$sdl" = "yes" ; then
737
       cocoa="no"
738
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
739
    fi
740
fi # -z $sdl
741

    
742
##########################################
743
# VNC TLS detection
744
if test "$vnc_tls" = "yes" ; then
745
cat > $TMPC <<EOF
746
#include <gnutls/gnutls.h>
747
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
748
EOF
749
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
750
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
751
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
752
           $vnc_tls_libs 2> /dev/null ; then
753
	:
754
    else
755
	vnc_tls="no"
756
    fi
757
fi
758

    
759
##########################################
760
# vde libraries probe
761
if test "$vde" = "yes" ; then
762
  cat > $TMPC << EOF
763
#include <libvdeplug.h>
764
int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
765
EOF
766
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
767
        :
768
    else
769
        vde="no"
770
    fi
771
fi
772

    
773
##########################################
774
# Sound support libraries probe
775

    
776
audio_drv_probe()
777
{
778
    drv=$1
779
    hdr=$2
780
    lib=$3
781
    exp=$4
782
    cfl=$5
783
        cat > $TMPC << EOF
784
#include <$hdr>
785
int main(void) { $exp }
786
EOF
787
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
788
        :
789
    else
790
        echo
791
        echo "Error: $drv check failed"
792
        echo "Make sure to have the $drv libs and headers installed."
793
        echo
794
        exit 1
795
    fi
796
}
797

    
798
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
799
for drv in $audio_drv_list; do
800
    case $drv in
801
    alsa)
802
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
803
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
804
    ;;
805

    
806
    fmod)
807
    if test -z $fmod_lib || test -z $fmod_inc; then
808
        echo
809
        echo "Error: You must specify path to FMOD library and headers"
810
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
811
        echo
812
        exit 1
813
    fi
814
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
815
    ;;
816

    
817
    esd)
818
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
819
    ;;
820

    
821
    pa)
822
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
823
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
824
    ;;
825

    
826
    *)
827
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
828
        echo
829
        echo "Error: Unknown driver '$drv' selected"
830
        echo "Possible drivers are: $audio_possible_drivers"
831
        echo
832
        exit 1
833
    }
834
    ;;
835

    
836
    oss|sdl|core|wav|dsound)
837
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
838
    ;;
839

    
840
    esac
841
done
842

    
843
##########################################
844
# BrlAPI probe
845

    
846
if test -z "$brlapi" ; then
847
    brlapi=no
848
cat > $TMPC << EOF
849
#include <brlapi.h>
850
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
851
EOF
852
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
853
	    brlapi=yes
854
    fi # brlapi compile test
855
fi # -z $brlapi
856

    
857
##########################################
858
# curses probe
859

    
860
if test "$curses" = "yes" ; then
861
  curses=no
862
  cat > $TMPC << EOF
863
#include <curses.h>
864
int main(void) { return curses_version(); }
865
EOF
866
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
867
    curses=yes
868
  fi
869
fi # test "$curses"
870

    
871
##########################################
872
# AIO probe
873
if test "$aio" = "yes" ; then
874
  aio=no
875
  cat > $TMPC << EOF
876
#include <aio.h>
877
int main(void) { return aio_write(NULL); }
878
EOF
879
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
880
    aio=yes
881
  fi
882
fi
883

    
884
# Check if tools are available to build documentation.
885
if [ -x "`which texi2html 2>/dev/null`" ] && \
886
   [ -x "`which pod2man 2>/dev/null`" ]; then
887
  build_docs="yes"
888
fi
889

    
890
if test "$mingw32" = "yes" ; then
891
  if test -z "$prefix" ; then
892
      prefix="/c/Program Files/Qemu"
893
  fi
894
  mansuffix=""
895
  datasuffix=""
896
  docsuffix=""
897
  binsuffix=""
898
else
899
  if test -z "$prefix" ; then
900
      prefix="/usr/local"
901
  fi
902
  mansuffix="/share/man"
903
  datasuffix="/share/qemu"
904
  docsuffix="/share/doc/qemu"
905
  binsuffix="/bin"
906
fi
907

    
908
echo "Install prefix    $prefix"
909
echo "BIOS directory    $prefix$datasuffix"
910
echo "binary directory  $prefix$binsuffix"
911
if test "$mingw32" = "no" ; then
912
echo "Manual directory  $prefix$mansuffix"
913
echo "ELF interp prefix $interp_prefix"
914
fi
915
echo "Source path       $source_path"
916
echo "C compiler        $cc"
917
echo "Host C compiler   $host_cc"
918
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
919
echo "make              $make"
920
echo "install           $install"
921
echo "host CPU          $cpu"
922
echo "host big endian   $bigendian"
923
echo "target list       $target_list"
924
echo "gprof enabled     $gprof"
925
echo "profiler          $profiler"
926
echo "static build      $static"
927
echo "-Werror enabled   $werror"
928
if test "$darwin" = "yes" ; then
929
    echo "Cocoa support     $cocoa"
930
fi
931
echo "SDL support       $sdl"
932
if test "$sdl" != "no" ; then
933
    echo "SDL static link   $sdl_static"
934
fi
935
echo "curses support    $curses"
936
echo "mingw32 support   $mingw32"
937
echo "Audio drivers     $audio_drv_list"
938
echo "Extra audio cards $audio_card_list"
939
echo "Mixer emulation   $mixemu"
940
echo "VNC TLS support   $vnc_tls"
941
if test "$vnc_tls" = "yes" ; then
942
    echo "    TLS CFLAGS    $vnc_tls_cflags"
943
    echo "    TLS LIBS      $vnc_tls_libs"
944
fi
945
if test -n "$sparc_cpu"; then
946
    echo "Target Sparc Arch $sparc_cpu"
947
fi
948
echo "kqemu support     $kqemu"
949
echo "brlapi support    $brlapi"
950
echo "Documentation     $build_docs"
951
[ ! -z "$uname_release" ] && \
952
echo "uname -r          $uname_release"
953
echo "NPTL support      $nptl"
954
echo "vde support       $vde"
955
echo "AIO support       $aio"
956

    
957
if test $sdl_too_old = "yes"; then
958
echo "-> Your SDL version is too old - please upgrade to have SDL support"
959
fi
960
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
961
  echo "The error log from compiling the libSDL test is: "
962
  cat /tmp/qemu-$$-sdl-config.log
963
fi
964
rm -f /tmp/qemu-$$-sdl-config.log
965
#if test "$sdl_static" = "no"; then
966
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
967
#fi
968
config_mak="config-host.mak"
969
config_h="config-host.h"
970

    
971
#echo "Creating $config_mak and $config_h"
972

    
973
test -f $config_h && mv $config_h ${config_h}~
974

    
975
echo "# Automatically generated by configure - do not modify" > $config_mak
976
echo "# Configured with: $0 $@" >> $config_mak
977
echo "/* Automatically generated by configure - do not modify */" > $config_h
978

    
979
echo "prefix=$prefix" >> $config_mak
980
echo "bindir=\${prefix}$binsuffix" >> $config_mak
981
echo "mandir=\${prefix}$mansuffix" >> $config_mak
982
echo "datadir=\${prefix}$datasuffix" >> $config_mak
983
echo "docdir=\${prefix}$docsuffix" >> $config_mak
984
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
985
echo "MAKE=$make" >> $config_mak
986
echo "INSTALL=$install" >> $config_mak
987
echo "CC=$cc" >> $config_mak
988
echo "HOST_CC=$host_cc" >> $config_mak
989
echo "AR=$ar" >> $config_mak
990
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
991
# XXX: only use CFLAGS and LDFLAGS ?  
992
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
993
# compilation of dyngen tool (useful for win32 build on Linux host)
994
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
995
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
996
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
997
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
998
echo "CFLAGS=$CFLAGS" >> $config_mak
999
echo "LDFLAGS=$LDFLAGS" >> $config_mak
1000
echo "EXESUF=$EXESUF" >> $config_mak
1001
echo "AIOLIBS=$AIOLIBS" >> $config_mak
1002
case "$cpu" in
1003
  i386)
1004
    echo "ARCH=i386" >> $config_mak
1005
    echo "#define HOST_I386 1" >> $config_h
1006
  ;;
1007
  x86_64)
1008
    echo "ARCH=x86_64" >> $config_mak
1009
    echo "#define HOST_X86_64 1" >> $config_h
1010
  ;;
1011
  alpha)
1012
    echo "ARCH=alpha" >> $config_mak
1013
    echo "#define HOST_ALPHA 1" >> $config_h
1014
  ;;
1015
  armv4b)
1016
    echo "ARCH=arm" >> $config_mak
1017
    echo "#define HOST_ARM 1" >> $config_h
1018
  ;;
1019
  armv4l)
1020
    echo "ARCH=arm" >> $config_mak
1021
    echo "#define HOST_ARM 1" >> $config_h
1022
  ;;
1023
  cris)
1024
    echo "ARCH=cris" >> $config_mak
1025
    echo "#define HOST_CRIS 1" >> $config_h
1026
  ;;
1027
  hppa)
1028
    echo "ARCH=hppa" >> $config_mak
1029
    echo "#define HOST_HPPA 1" >> $config_h
1030
  ;;
1031
  ia64)
1032
    echo "ARCH=ia64" >> $config_mak
1033
    echo "#define HOST_IA64 1" >> $config_h
1034
  ;;
1035
  m68k)
1036
    echo "ARCH=m68k" >> $config_mak
1037
    echo "#define HOST_M68K 1" >> $config_h
1038
  ;;
1039
  mips)
1040
    echo "ARCH=mips" >> $config_mak
1041
    echo "#define HOST_MIPS 1" >> $config_h
1042
  ;;
1043
  mips64)
1044
    echo "ARCH=mips64" >> $config_mak
1045
    echo "#define HOST_MIPS64 1" >> $config_h
1046
  ;;
1047
  powerpc)
1048
  if test "$hostlongbits" = "32"; then
1049
      echo "ARCH=ppc" >> $config_mak
1050
      echo "#define HOST_PPC 1" >> $config_h
1051
  else
1052
      echo "ARCH=ppc64" >> $config_mak
1053
      echo "#define HOST_PPC64 1" >> $config_h
1054
  fi
1055
  ;;
1056
  s390)
1057
    echo "ARCH=s390" >> $config_mak
1058
    echo "#define HOST_S390 1" >> $config_h
1059
  ;;
1060
  sparc)
1061
    echo "ARCH=sparc" >> $config_mak
1062
    echo "#define HOST_SPARC 1" >> $config_h
1063
  ;;
1064
  sparc64)
1065
    echo "ARCH=sparc64" >> $config_mak
1066
    echo "#define HOST_SPARC64 1" >> $config_h
1067
  ;;
1068
  *)
1069
    echo "Unsupported CPU = $cpu"
1070
    exit 1
1071
  ;;
1072
esac
1073
if test "$bigendian" = "yes" ; then
1074
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1075
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1076
fi
1077
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1078
if test "$mingw32" = "yes" ; then
1079
  echo "CONFIG_WIN32=yes" >> $config_mak
1080
  echo "#define CONFIG_WIN32 1" >> $config_h
1081
else
1082
  cat > $TMPC << EOF
1083
#include <byteswap.h>
1084
int main(void) { return bswap_32(0); }
1085
EOF
1086
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1087
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1088
  fi
1089
fi
1090

    
1091
if [ "$openbsd" = "yes" ] ; then
1092
  echo "#define ENOTSUP 4096" >> $config_h
1093
fi
1094

    
1095
if test "$darwin" = "yes" ; then
1096
  echo "CONFIG_DARWIN=yes" >> $config_mak
1097
  echo "#define CONFIG_DARWIN 1" >> $config_h
1098
fi
1099
if test "$solaris" = "yes" ; then
1100
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1101
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1102
  if test "$needs_libsunmath" = "yes" ; then
1103
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1104
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1105
  fi
1106
fi
1107
if test -n "$sparc_cpu"; then
1108
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1109
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1110
fi
1111
if test "$gdbstub" = "yes" ; then
1112
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1113
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1114
fi
1115
if test "$gprof" = "yes" ; then
1116
  echo "TARGET_GPROF=yes" >> $config_mak
1117
  echo "#define HAVE_GPROF 1" >> $config_h
1118
fi
1119
if test "$static" = "yes" ; then
1120
  echo "CONFIG_STATIC=yes" >> $config_mak
1121
  echo "#define CONFIG_STATIC 1" >> $config_h
1122
fi
1123
if test $profiler = "yes" ; then
1124
  echo "#define CONFIG_PROFILER 1" >> $config_h
1125
fi
1126
if test "$slirp" = "yes" ; then
1127
  echo "CONFIG_SLIRP=yes" >> $config_mak
1128
  echo "#define CONFIG_SLIRP 1" >> $config_h
1129
fi
1130
if test "$vde" = "yes" ; then
1131
  echo "CONFIG_VDE=yes" >> $config_mak
1132
  echo "#define CONFIG_VDE 1" >> $config_h
1133
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1134
fi
1135
for card in $audio_card_list; do
1136
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1137
    echo "$def=yes" >> $config_mak
1138
    echo "#define $def 1" >> $config_h
1139
done
1140
echo "#define AUDIO_DRIVERS \\" >> $config_h
1141
for drv in $audio_drv_list; do
1142
    echo "    &${drv}_audio_driver, \\" >>$config_h
1143
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1144
    echo "$def=yes" >> $config_mak
1145
    if test "$drv" = "fmod"; then
1146
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1147
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1148
    fi
1149
done
1150
echo "" >>$config_h
1151
if test "$mixemu" = "yes" ; then
1152
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1153
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1154
fi
1155
if test "$vnc_tls" = "yes" ; then
1156
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1157
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1158
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1159
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1160
fi
1161
qemu_version=`head $source_path/VERSION`
1162
echo "VERSION=$qemu_version" >>$config_mak
1163
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1164

    
1165
echo "SRC_PATH=$source_path" >> $config_mak
1166
if [ "$source_path_used" = "yes" ]; then
1167
  echo "VPATH=$source_path" >> $config_mak
1168
fi
1169
echo "TARGET_DIRS=$target_list" >> $config_mak
1170
if [ "$build_docs" = "yes" ] ; then
1171
  echo "BUILD_DOCS=yes" >> $config_mak
1172
fi
1173
if test "$static" = "yes"; then
1174
  sdl1=$sdl_static
1175
else
1176
  sdl1=$sdl
1177
fi
1178
if test "$sdl1" = "yes" ; then
1179
  echo "#define CONFIG_SDL 1" >> $config_h
1180
  echo "CONFIG_SDL=yes" >> $config_mak
1181
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1182
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1183
  else
1184
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1185
  fi
1186
  if [ "${aa}" = "yes" ] ; then
1187
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1188
  else
1189
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1190
  fi
1191
fi
1192
if test "$cocoa" = "yes" ; then
1193
  echo "#define CONFIG_COCOA 1" >> $config_h
1194
  echo "CONFIG_COCOA=yes" >> $config_mak
1195
fi
1196
if test "$curses" = "yes" ; then
1197
  echo "#define CONFIG_CURSES 1" >> $config_h
1198
  echo "CONFIG_CURSES=yes" >> $config_mak
1199
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1200
fi
1201
if test "$brlapi" = "yes" ; then
1202
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1203
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1204
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1205
fi
1206
if test "$aio" = "yes" ; then
1207
  echo "#define CONFIG_AIO 1" >> $config_h
1208
fi
1209

    
1210
# XXX: suppress that
1211
if [ "$bsd" = "yes" ] ; then
1212
  echo "#define O_LARGEFILE 0" >> $config_h
1213
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1214
  echo "#define _BSD 1" >> $config_h
1215
fi
1216

    
1217
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1218

    
1219
tools=
1220
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1221
  tools="qemu-img\$(EXESUF) $tools"
1222
  if [ "$linux" = "yes" ] ; then
1223
      tools="qemu-nbd\$(EXESUF) $tools"
1224
  fi
1225
fi
1226
echo "TOOLS=$tools" >> $config_mak
1227

    
1228
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1229

    
1230
for target in $target_list; do
1231
target_dir="$target"
1232
config_mak=$target_dir/config.mak
1233
config_h=$target_dir/config.h
1234
target_cpu=`echo $target | cut -d '-' -f 1`
1235
target_bigendian="no"
1236
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1237
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1238
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1239
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1240
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1241
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1242
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1243
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1244
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1245
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1246
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1247
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1248
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1249
target_softmmu="no"
1250
target_user_only="no"
1251
target_linux_user="no"
1252
target_darwin_user="no"
1253
case "$target" in
1254
  ${target_cpu}-softmmu)
1255
    target_softmmu="yes"
1256
    ;;
1257
  ${target_cpu}-linux-user)
1258
    target_user_only="yes"
1259
    target_linux_user="yes"
1260
    ;;
1261
  ${target_cpu}-darwin-user)
1262
    target_user_only="yes"
1263
    target_darwin_user="yes"
1264
    ;;
1265
  *)
1266
    echo "ERROR: Target '$target' not recognised"
1267
    exit 1
1268
    ;;
1269
esac
1270

    
1271
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1272
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1273
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1274
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1275
    echo "Note that this will disable all output from the virtual graphics card"
1276
    echo "except through VNC or curses."
1277
    exit 1;
1278
fi
1279

    
1280
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1281

    
1282
test -f $config_h && mv $config_h ${config_h}~
1283

    
1284
mkdir -p $target_dir
1285
mkdir -p $target_dir/fpu
1286
mkdir -p $target_dir/tcg
1287
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1288
  mkdir -p $target_dir/nwfpe
1289
fi
1290

    
1291
#
1292
# don't use ln -sf as not all "ln -sf" over write the file/link
1293
#
1294
rm -f $target_dir/Makefile
1295
ln -s $source_path/Makefile.target $target_dir/Makefile
1296

    
1297

    
1298
echo "# Automatically generated by configure - do not modify" > $config_mak
1299
echo "/* Automatically generated by configure - do not modify */" > $config_h
1300

    
1301

    
1302
echo "include ../config-host.mak" >> $config_mak
1303
echo "#include \"../config-host.h\"" >> $config_h
1304

    
1305
bflt="no"
1306
elfload32="no"
1307
target_nptl="no"
1308
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1309
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1310

    
1311
case "$target_cpu" in
1312
  i386)
1313
    echo "TARGET_ARCH=i386" >> $config_mak
1314
    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1315
    echo "#define TARGET_I386 1" >> $config_h
1316
    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1317
    then
1318
      echo "#define USE_KQEMU 1" >> $config_h
1319
    fi
1320
    gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1321
    if test -n "$gcc3minver" && test $gcc3minver -gt 3
1322
    then
1323
      echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1324
    else
1325
      echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1326
    fi
1327
  ;;
1328
  x86_64)
1329
    echo "TARGET_ARCH=x86_64" >> $config_mak
1330
    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1331
    echo "#define TARGET_I386 1" >> $config_h
1332
    echo "#define TARGET_X86_64 1" >> $config_h
1333
    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1334
    then
1335
      echo "#define USE_KQEMU 1" >> $config_h
1336
    fi
1337
  ;;
1338
  alpha)
1339
    echo "TARGET_ARCH=alpha" >> $config_mak
1340
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1341
    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1342
    echo "#define TARGET_ALPHA 1" >> $config_h
1343
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1344
  ;;
1345
  arm|armeb)
1346
    echo "TARGET_ARCH=arm" >> $config_mak
1347
    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1348
    echo "#define TARGET_ARM 1" >> $config_h
1349
    bflt="yes"
1350
    target_nptl="yes"
1351
  ;;
1352
  cris)
1353
    echo "TARGET_ARCH=cris" >> $config_mak
1354
    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1355
    echo "#define TARGET_CRIS 1" >> $config_h
1356
  ;;
1357
  m68k)
1358
    echo "TARGET_ARCH=m68k" >> $config_mak
1359
    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1360
    echo "#define TARGET_M68K 1" >> $config_h
1361
    bflt="yes"
1362
  ;;
1363
  mips|mipsel)
1364
    echo "TARGET_ARCH=mips" >> $config_mak
1365
    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1366
    echo "#define TARGET_MIPS 1" >> $config_h
1367
    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1368
  ;;
1369
  mipsn32|mipsn32el)
1370
    echo "TARGET_ARCH=mipsn32" >> $config_mak
1371
    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1372
    echo "#define TARGET_MIPS 1" >> $config_h
1373
    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1374
  ;;
1375
  mips64|mips64el)
1376
    echo "TARGET_ARCH=mips64" >> $config_mak
1377
    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1378
    echo "#define TARGET_MIPS 1" >> $config_h
1379
    echo "#define TARGET_MIPS64 1" >> $config_h
1380
    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1381
  ;;
1382
  ppc)
1383
    echo "TARGET_ARCH=ppc" >> $config_mak
1384
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1385
    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1386
    echo "#define TARGET_PPC 1" >> $config_h
1387
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1388
  ;;
1389
  ppcemb)
1390
    echo "TARGET_ARCH=ppcemb" >> $config_mak
1391
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1392
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1393
    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1394
    echo "#define TARGET_PPC 1" >> $config_h
1395
    echo "#define TARGET_PPCEMB 1" >> $config_h
1396
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1397
  ;;
1398
  ppc64)
1399
    echo "TARGET_ARCH=ppc64" >> $config_mak
1400
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1401
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1402
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1403
    echo "#define TARGET_PPC 1" >> $config_h
1404
    echo "#define TARGET_PPC64 1" >> $config_h
1405
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1406
  ;;
1407
  ppc64abi32)
1408
    echo "TARGET_ARCH=ppc64" >> $config_mak
1409
    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1410
    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1411
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1412
    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1413
    echo "#define TARGET_PPC 1" >> $config_h
1414
    echo "#define TARGET_PPC64 1" >> $config_h
1415
    echo "#define TARGET_ABI32 1" >> $config_h
1416
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1417
  ;;
1418
  sh4|sh4eb)
1419
    echo "TARGET_ARCH=sh4" >> $config_mak
1420
    echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1421
    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1422
    echo "#define TARGET_SH4 1" >> $config_h
1423
    echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1424
    bflt="yes"
1425
  ;;
1426
  sparc)
1427
    echo "TARGET_ARCH=sparc" >> $config_mak
1428
    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1429
    echo "#define TARGET_SPARC 1" >> $config_h
1430
  ;;
1431
  sparc64)
1432
    echo "TARGET_ARCH=sparc64" >> $config_mak
1433
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1434
    echo "#define TARGET_SPARC 1" >> $config_h
1435
    echo "#define TARGET_SPARC64 1" >> $config_h
1436
    elfload32="yes"
1437
  ;;
1438
  sparc32plus)
1439
    echo "TARGET_ARCH=sparc64" >> $config_mak
1440
    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1441
    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1442
    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1443
    echo "#define TARGET_SPARC 1" >> $config_h
1444
    echo "#define TARGET_SPARC64 1" >> $config_h
1445
    echo "#define TARGET_ABI32 1" >> $config_h
1446
  ;;
1447
  *)
1448
    echo "Unsupported target CPU"
1449
    exit 1
1450
  ;;
1451
esac
1452
if test "$target_bigendian" = "yes" ; then
1453
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1454
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1455
fi
1456
if test "$target_softmmu" = "yes" ; then
1457
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1458
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1459
fi
1460
if test "$target_user_only" = "yes" ; then
1461
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1462
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1463
fi
1464
if test "$target_linux_user" = "yes" ; then
1465
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1466
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1467
fi
1468
if test "$target_darwin_user" = "yes" ; then
1469
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1470
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1471
fi
1472

    
1473
if test "$target_cpu" = "arm" \
1474
     -o "$target_cpu" = "armeb" \
1475
     -o "$target_cpu" = "m68k" \
1476
     -o "$target_cpu" = "mips" \
1477
     -o "$target_cpu" = "mipsel" \
1478
     -o "$target_cpu" = "mipsn32" \
1479
     -o "$target_cpu" = "mipsn32el" \
1480
     -o "$target_cpu" = "mips64" \
1481
     -o "$target_cpu" = "mips64el" \
1482
     -o "$target_cpu" = "sparc" \
1483
     -o "$target_cpu" = "sparc64" \
1484
     -o "$target_cpu" = "sparc32plus"; then
1485
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1486
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1487
fi
1488
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1489
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1490
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1491
fi
1492
if test "$target_user_only" = "yes" \
1493
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1494
  echo "#define USE_NPTL 1" >> $config_h
1495
fi
1496
# 32 bit ELF loader in addition to native 64 bit loader?
1497
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1498
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1499
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1500
fi
1501

    
1502
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1503

    
1504
done # for target in $targets
1505

    
1506
# build tree in object directory if source path is different from current one
1507
if test "$source_path_used" = "yes" ; then
1508
    DIRS="tests tests/cris slirp audio"
1509
    FILES="Makefile tests/Makefile"
1510
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1511
    FILES="$FILES tests/test-mmap.c"
1512
    for dir in $DIRS ; do
1513
            mkdir -p $dir
1514
    done
1515
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1516
    for f in $FILES ; do
1517
        rm -f $f
1518
        ln -s $source_path/$f $f
1519
    done
1520
fi
1521

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