Statistics
| Branch: | Revision:

root / configure @ c5fdf07b

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
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

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

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

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

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

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

    
348
# default flags for all hosts
349
CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -O2 -g -fno-strict-aliasing"
350
LDFLAGS="$LDFLAGS -g"
351
if test "$werror" = "yes" ; then
352
CFLAGS="$CFLAGS -Werror"
353
fi
354

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

    
389
if test x"$show_help" = x"yes" ; then
390
cat << EOF
391

    
392
Usage: configure [options]
393
Options: [defaults in brackets after descriptions]
394

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

    
444
cc="${cross_prefix}${cc}"
445
ar="${cross_prefix}${ar}"
446
strip="${cross_prefix}${strip}"
447

    
448
# check that the C compiler works.
449
cat > $TMPC <<EOF
450
int main(void) {}
451
EOF
452

    
453
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
454
  : C compiler works ok
455
else
456
    echo "ERROR: \"$cc\" either does not exist or does not work"
457
    exit 1
458
fi
459

    
460
# check compiler to see if we're on mingw32
461
cat > $TMPC <<EOF
462
#include <windows.h>
463
#ifndef _WIN32
464
#error not windows
465
#endif
466
int main(void) {}
467
EOF
468

    
469
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
470
    mingw32="yes"
471
fi
472

    
473
if test "$mingw32" = "yes" ; then
474
    linux="no"
475
    EXESUF=".exe"
476
    oss="no"
477
    linux_user="no"
478
fi
479

    
480
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
481
    AIOLIBS=
482
else
483
    # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
484
    AIOLIBS="-lrt -lpthread"
485
fi
486

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

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

    
561

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

    
617
if test -z "$cross_prefix" ; then
618

    
619
# ---
620
# big/little endian test
621
cat > $TMPC << EOF
622
#include <inttypes.h>
623
int main(int argc, char ** argv){
624
        volatile uint32_t i=0x01234567;
625
        return (*((uint8_t*)(&i))) == 0x67;
626
}
627
EOF
628

    
629
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
630
$TMPE && bigendian="yes"
631
else
632
echo big/little test failed
633
fi
634

    
635
else
636

    
637
# if cross compiling, cannot launch a program, so make a static guess
638
if test "$cpu" = "armv4b" \
639
     -o "$cpu" = "hppa" \
640
     -o "$cpu" = "m68k" \
641
     -o "$cpu" = "mips" \
642
     -o "$cpu" = "mips64" \
643
     -o "$cpu" = "powerpc" \
644
     -o "$cpu" = "s390" \
645
     -o "$cpu" = "sparc" \
646
     -o "$cpu" = "sparc64"; then
647
    bigendian="yes"
648
fi
649

    
650
fi
651

    
652
# host long bits test
653
hostlongbits="32"
654
if test "$cpu" = "x86_64" \
655
     -o "$cpu" = "alpha" \
656
     -o "$cpu" = "ia64" \
657
     -o "$cpu" = "sparc64"; then
658
    hostlongbits="64"
659
fi
660

    
661
# ppc specific hostlongbits selection
662
if test "$cpu" = "powerpc" ; then
663
    cat > $TMPC <<EOF
664
int main(void){return sizeof(long);}
665
EOF
666

    
667
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
668
        $TMPE
669
        case $? in
670
            4) hostlongbits="32";;
671
            8) hostlongbits="64";;
672
            *) echo "Couldn't determine bits per long value"; exit 1;;
673
        esac
674
    else
675
        echo hostlongbits test failed
676
        exit 1
677
    fi
678
fi
679

    
680
# check gcc options support
681
cat > $TMPC <<EOF
682
int main(void) {
683
}
684
EOF
685

    
686
# Check host NPTL support
687
cat > $TMPC <<EOF
688
#include <sched.h>
689
#include <linux/futex.h>
690
void foo()
691
{
692
#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
693
#error bork
694
#endif
695
}
696
EOF
697

    
698
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
699
  :
700
else
701
   nptl="no"
702
fi
703

    
704
##########################################
705
# SDL probe
706

    
707
sdl_too_old=no
708

    
709
if test -z "$sdl" ; then
710
    sdl_config="sdl-config"
711
    sdl=no
712
    sdl_static=no
713

    
714
cat > $TMPC << EOF
715
#include <SDL.h>
716
#undef main /* We don't want SDL to override our main() */
717
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
718
EOF
719
    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
720
        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
721
        if test "$_sdlversion" -lt 121 ; then
722
            sdl_too_old=yes
723
        else
724
            if test "$cocoa" = "no" ; then
725
                sdl=yes
726
            fi
727
        fi
728

    
729
        # static link with sdl ?
730
        if test "$sdl" = "yes" ; then
731
            aa="no"
732
            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
733
            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
734
            if [ "$aa" = "yes" ] ; then
735
                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
736
            fi
737

    
738
            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
739
                sdl_static=yes
740
            fi
741
        fi # static link
742
    fi # sdl compile test
743
else
744
    # Make sure to disable cocoa if sdl was set
745
    if test "$sdl" = "yes" ; then
746
       cocoa="no"
747
       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
748
    fi
749
fi # -z $sdl
750

    
751
##########################################
752
# VNC TLS detection
753
if test "$vnc_tls" = "yes" ; then
754
cat > $TMPC <<EOF
755
#include <gnutls/gnutls.h>
756
int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
757
EOF
758
    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
759
    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
760
    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
761
           $vnc_tls_libs 2> /dev/null ; then
762
	:
763
    else
764
	vnc_tls="no"
765
    fi
766
fi
767

    
768
##########################################
769
# vde libraries probe
770
if test "$vde" = "yes" ; then
771
  cat > $TMPC << EOF
772
#include <libvdeplug.h>
773
int main(void)
774
{
775
    struct vde_open_args a = {0, 0, 0};
776
    vde_open("", "", &a);
777
    return 0;
778
}
779
EOF
780
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
781
        :
782
    else
783
        vde="no"
784
    fi
785
fi
786

    
787
##########################################
788
# Sound support libraries probe
789

    
790
audio_drv_probe()
791
{
792
    drv=$1
793
    hdr=$2
794
    lib=$3
795
    exp=$4
796
    cfl=$5
797
        cat > $TMPC << EOF
798
#include <$hdr>
799
int main(void) { $exp }
800
EOF
801
    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
802
        :
803
    else
804
        echo
805
        echo "Error: $drv check failed"
806
        echo "Make sure to have the $drv libs and headers installed."
807
        echo
808
        exit 1
809
    fi
810
}
811

    
812
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
813
for drv in $audio_drv_list; do
814
    case $drv in
815
    alsa)
816
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
817
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
818
    ;;
819

    
820
    fmod)
821
    if test -z $fmod_lib || test -z $fmod_inc; then
822
        echo
823
        echo "Error: You must specify path to FMOD library and headers"
824
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
825
        echo
826
        exit 1
827
    fi
828
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
829
    ;;
830

    
831
    esd)
832
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
833
    ;;
834

    
835
    pa)
836
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
837
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
838
    ;;
839

    
840
    oss|sdl|core|wav|dsound)
841
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
842
    ;;
843

    
844
    *)
845
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
846
        echo
847
        echo "Error: Unknown driver '$drv' selected"
848
        echo "Possible drivers are: $audio_possible_drivers"
849
        echo
850
        exit 1
851
    }
852
    ;;
853
    esac
854
done
855

    
856
##########################################
857
# BrlAPI probe
858

    
859
if test -z "$brlapi" ; then
860
    brlapi=no
861
cat > $TMPC << EOF
862
#include <brlapi.h>
863
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
864
EOF
865
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
866
	    brlapi=yes
867
    fi # brlapi compile test
868
fi # -z $brlapi
869

    
870
##########################################
871
# curses probe
872

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

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

    
897
# Check if tools are available to build documentation.
898
if [ -x "`which texi2html 2>/dev/null`" ] && \
899
   [ -x "`which pod2man 2>/dev/null`" ]; then
900
  build_docs="yes"
901
fi
902

    
903
if test "$mingw32" = "yes" ; then
904
  if test -z "$prefix" ; then
905
      prefix="/c/Program Files/Qemu"
906
  fi
907
  mansuffix=""
908
  datasuffix=""
909
  docsuffix=""
910
  binsuffix=""
911
else
912
  if test -z "$prefix" ; then
913
      prefix="/usr/local"
914
  fi
915
  mansuffix="/share/man"
916
  datasuffix="/share/qemu"
917
  docsuffix="/share/doc/qemu"
918
  binsuffix="/bin"
919
fi
920

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

    
970
if test $sdl_too_old = "yes"; then
971
echo "-> Your SDL version is too old - please upgrade to have SDL support"
972
fi
973
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
974
  echo "The error log from compiling the libSDL test is: "
975
  cat /tmp/qemu-$$-sdl-config.log
976
fi
977
rm -f /tmp/qemu-$$-sdl-config.log
978
#if test "$sdl_static" = "no"; then
979
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
980
#fi
981
config_mak="config-host.mak"
982
config_h="config-host.h"
983

    
984
#echo "Creating $config_mak and $config_h"
985

    
986
test -f $config_h && mv $config_h ${config_h}~
987

    
988
echo "# Automatically generated by configure - do not modify" > $config_mak
989
echo "# Configured with: $0 $@" >> $config_mak
990
echo "/* Automatically generated by configure - do not modify */" > $config_h
991

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

    
1104
if [ "$openbsd" = "yes" ] ; then
1105
  echo "#define ENOTSUP 4096" >> $config_h
1106
fi
1107

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

    
1180
echo "SRC_PATH=$source_path" >> $config_mak
1181
if [ "$source_path_used" = "yes" ]; then
1182
  echo "VPATH=$source_path" >> $config_mak
1183
fi
1184
echo "TARGET_DIRS=$target_list" >> $config_mak
1185
if [ "$build_docs" = "yes" ] ; then
1186
  echo "BUILD_DOCS=yes" >> $config_mak
1187
fi
1188
if test "$static" = "yes"; then
1189
  sdl1=$sdl_static
1190
else
1191
  sdl1=$sdl
1192
fi
1193
if test "$sdl1" = "yes" ; then
1194
  echo "#define CONFIG_SDL 1" >> $config_h
1195
  echo "CONFIG_SDL=yes" >> $config_mak
1196
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1197
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1198
  else
1199
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1200
  fi
1201
  if [ "${aa}" = "yes" ] ; then
1202
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1203
  else
1204
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1205
  fi
1206
fi
1207
if test "$cocoa" = "yes" ; then
1208
  echo "#define CONFIG_COCOA 1" >> $config_h
1209
  echo "CONFIG_COCOA=yes" >> $config_mak
1210
fi
1211
if test "$curses" = "yes" ; then
1212
  echo "#define CONFIG_CURSES 1" >> $config_h
1213
  echo "CONFIG_CURSES=yes" >> $config_mak
1214
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1215
fi
1216
if test "$brlapi" = "yes" ; then
1217
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1218
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1219
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1220
fi
1221
if test "$aio" = "yes" ; then
1222
  echo "#define CONFIG_AIO 1" >> $config_h
1223
  echo "CONFIG_AIO=yes" >> $config_mak
1224
fi
1225

    
1226
# XXX: suppress that
1227
if [ "$bsd" = "yes" ] ; then
1228
  echo "#define O_LARGEFILE 0" >> $config_h
1229
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1230
  echo "#define _BSD 1" >> $config_h
1231
fi
1232

    
1233
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1234

    
1235
tools=
1236
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1237
  tools="qemu-img\$(EXESUF) $tools"
1238
  if [ "$linux" = "yes" ] ; then
1239
      tools="qemu-nbd\$(EXESUF) $tools"
1240
  fi
1241
fi
1242
echo "TOOLS=$tools" >> $config_mak
1243

    
1244
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1245

    
1246
for target in $target_list; do
1247
target_dir="$target"
1248
config_mak=$target_dir/config.mak
1249
config_h=$target_dir/config.h
1250
target_cpu=`echo $target | cut -d '-' -f 1`
1251
target_bigendian="no"
1252
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1253
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1254
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1255
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1256
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1257
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1258
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1259
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1260
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1261
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1262
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1263
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1264
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1265
target_softmmu="no"
1266
target_user_only="no"
1267
target_linux_user="no"
1268
target_darwin_user="no"
1269
case "$target" in
1270
  ${target_cpu}-softmmu)
1271
    target_softmmu="yes"
1272
    ;;
1273
  ${target_cpu}-linux-user)
1274
    target_user_only="yes"
1275
    target_linux_user="yes"
1276
    ;;
1277
  ${target_cpu}-darwin-user)
1278
    target_user_only="yes"
1279
    target_darwin_user="yes"
1280
    ;;
1281
  *)
1282
    echo "ERROR: Target '$target' not recognised"
1283
    exit 1
1284
    ;;
1285
esac
1286

    
1287
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1288
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1289
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1290
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1291
    echo "Note that this will disable all output from the virtual graphics card"
1292
    echo "except through VNC or curses."
1293
    exit 1;
1294
fi
1295

    
1296
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1297

    
1298
test -f $config_h && mv $config_h ${config_h}~
1299

    
1300
mkdir -p $target_dir
1301
mkdir -p $target_dir/fpu
1302
mkdir -p $target_dir/tcg
1303
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1304
  mkdir -p $target_dir/nwfpe
1305
fi
1306

    
1307
#
1308
# don't use ln -sf as not all "ln -sf" over write the file/link
1309
#
1310
rm -f $target_dir/Makefile
1311
ln -s $source_path/Makefile.target $target_dir/Makefile
1312

    
1313

    
1314
echo "# Automatically generated by configure - do not modify" > $config_mak
1315
echo "/* Automatically generated by configure - do not modify */" > $config_h
1316

    
1317

    
1318
echo "include ../config-host.mak" >> $config_mak
1319
echo "#include \"../config-host.h\"" >> $config_h
1320

    
1321
bflt="no"
1322
elfload32="no"
1323
target_nptl="no"
1324
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1325
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1326

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

    
1487
if test "$target_cpu" = "arm" \
1488
     -o "$target_cpu" = "armeb" \
1489
     -o "$target_cpu" = "m68k" \
1490
     -o "$target_cpu" = "mips" \
1491
     -o "$target_cpu" = "mipsel" \
1492
     -o "$target_cpu" = "mipsn32" \
1493
     -o "$target_cpu" = "mipsn32el" \
1494
     -o "$target_cpu" = "mips64" \
1495
     -o "$target_cpu" = "mips64el" \
1496
     -o "$target_cpu" = "sparc" \
1497
     -o "$target_cpu" = "sparc64" \
1498
     -o "$target_cpu" = "sparc32plus"; then
1499
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1500
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1501
fi
1502
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1503
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1504
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1505
fi
1506
if test "$target_user_only" = "yes" \
1507
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1508
  echo "#define USE_NPTL 1" >> $config_h
1509
fi
1510
# 32 bit ELF loader in addition to native 64 bit loader?
1511
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1512
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1513
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1514
fi
1515

    
1516
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1517

    
1518
done # for target in $targets
1519

    
1520
# build tree in object directory if source path is different from current one
1521
if test "$source_path_used" = "yes" ; then
1522
    DIRS="tests tests/cris slirp audio"
1523
    FILES="Makefile tests/Makefile"
1524
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1525
    FILES="$FILES tests/test-mmap.c"
1526
    for dir in $DIRS ; do
1527
            mkdir -p $dir
1528
    done
1529
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1530
    for f in $FILES ; do
1531
        rm -f $f
1532
        ln -s $source_path/$f $f
1533
    done
1534
fi
1535

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