Statistics
| Branch: | Revision:

root / configure @ ae6b5e5a

History | View | Annotate | Download (41 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
nptl="yes"
110
mixemu="no"
111

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

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

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

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

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

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

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

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

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

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

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

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

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

    
540

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

    
596
if test -z "$cross_prefix" ; then
597

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

    
608
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
609
$TMPE && bigendian="yes"
610
else
611
echo big/little test failed
612
fi
613

    
614
else
615

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

    
629
fi
630

    
631
# host long bits test
632
hostlongbits="32"
633
if test "$cpu" = "x86_64" \
634
     -o "$cpu" = "alpha" \
635
     -o "$cpu" = "ia64" \
636
     -o "$cpu" = "sparc64"; then
637
    hostlongbits="64"
638
fi
639

    
640
# ppc specific hostlongbits selection
641
if test "$cpu" = "powerpc" ; then
642
    cat > $TMPC <<EOF
643
int main(void){return sizeof(long);}
644
EOF
645

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

    
659
# check gcc options support
660
cat > $TMPC <<EOF
661
int main(void) {
662
}
663
EOF
664

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

    
677
if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
678
  :
679
else
680
   nptl="no"
681
fi
682

    
683
##########################################
684
# SDL probe
685

    
686
sdl_too_old=no
687

    
688
if test -z "$sdl" ; then
689
    sdl_config="sdl-config"
690
    sdl=no
691
    sdl_static=no
692

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

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

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

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

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

    
768
##########################################
769
# Sound support libraries probe
770

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

    
793
audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
794
for drv in $audio_drv_list; do
795
    case $drv in
796
    alsa)
797
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
798
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
799
    ;;
800

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

    
812
    esd)
813
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
814
    ;;
815

    
816
    pa)
817
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
818
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
819
    ;;
820

    
821
    *)
822
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
823
        echo
824
        echo "Error: Unknown driver '$drv' selected"
825
        echo "Possible drivers are: $audio_possible_drivers"
826
        echo
827
        exit 1
828
    }
829
    ;;
830

    
831
    esac
832
done
833

    
834
##########################################
835
# BrlAPI probe
836

    
837
if test -z "$brlapi" ; then
838
    brlapi=no
839
cat > $TMPC << EOF
840
#include <brlapi.h>
841
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
842
EOF
843
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
844
	    brlapi=yes
845
    fi # brlapi compile test
846
fi # -z $brlapi
847

    
848
##########################################
849
# curses probe
850

    
851
if test "$curses" = "yes" ; then
852
  curses=no
853
  cat > $TMPC << EOF
854
#include <curses.h>
855
int main(void) { return curses_version(); }
856
EOF
857
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
858
    curses=yes
859
  fi
860
fi # test "$curses"
861

    
862
# Check if tools are available to build documentation.
863
if [ -x "`which texi2html 2>/dev/null`" ] && \
864
   [ -x "`which pod2man 2>/dev/null`" ]; then
865
  build_docs="yes"
866
fi
867

    
868
if test "$mingw32" = "yes" ; then
869
  if test -z "$prefix" ; then
870
      prefix="/c/Program Files/Qemu"
871
  fi
872
  mansuffix=""
873
  datasuffix=""
874
  docsuffix=""
875
  binsuffix=""
876
else
877
  if test -z "$prefix" ; then
878
      prefix="/usr/local"
879
  fi
880
  mansuffix="/share/man"
881
  datasuffix="/share/qemu"
882
  docsuffix="/share/doc/qemu"
883
  binsuffix="/bin"
884
fi
885

    
886
echo "Install prefix    $prefix"
887
echo "BIOS directory    $prefix$datasuffix"
888
echo "binary directory  $prefix$binsuffix"
889
if test "$mingw32" = "no" ; then
890
echo "Manual directory  $prefix$mansuffix"
891
echo "ELF interp prefix $interp_prefix"
892
fi
893
echo "Source path       $source_path"
894
echo "C compiler        $cc"
895
echo "Host C compiler   $host_cc"
896
echo "ARCH_CFLAGS       $ARCH_CFLAGS"
897
echo "make              $make"
898
echo "install           $install"
899
echo "host CPU          $cpu"
900
echo "host big endian   $bigendian"
901
echo "target list       $target_list"
902
echo "gprof enabled     $gprof"
903
echo "profiler          $profiler"
904
echo "static build      $static"
905
echo "-Werror enabled   $werror"
906
if test "$darwin" = "yes" ; then
907
    echo "Cocoa support     $cocoa"
908
fi
909
echo "SDL support       $sdl"
910
if test "$sdl" != "no" ; then
911
    echo "SDL static link   $sdl_static"
912
fi
913
echo "curses support    $curses"
914
echo "mingw32 support   $mingw32"
915
echo "Audio drivers     $audio_drv_list"
916
echo "Extra audio cards $audio_card_list"
917
echo "Mixer emulation   $mixemu"
918
echo "VNC TLS support   $vnc_tls"
919
if test "$vnc_tls" = "yes" ; then
920
    echo "    TLS CFLAGS    $vnc_tls_cflags"
921
    echo "    TLS LIBS      $vnc_tls_libs"
922
fi
923
if test -n "$sparc_cpu"; then
924
    echo "Target Sparc Arch $sparc_cpu"
925
fi
926
echo "kqemu support     $kqemu"
927
echo "brlapi support    $brlapi"
928
echo "Documentation     $build_docs"
929
[ ! -z "$uname_release" ] && \
930
echo "uname -r          $uname_release"
931
echo "NPTL support      $nptl"
932
echo "vde support       $vde"
933

    
934
if test $sdl_too_old = "yes"; then
935
echo "-> Your SDL version is too old - please upgrade to have SDL support"
936
fi
937
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
938
  echo "The error log from compiling the libSDL test is: "
939
  cat /tmp/qemu-$$-sdl-config.log
940
fi
941
rm -f /tmp/qemu-$$-sdl-config.log
942
#if test "$sdl_static" = "no"; then
943
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
944
#fi
945
config_mak="config-host.mak"
946
config_h="config-host.h"
947

    
948
#echo "Creating $config_mak and $config_h"
949

    
950
test -f $config_h && mv $config_h ${config_h}~
951

    
952
echo "# Automatically generated by configure - do not modify" > $config_mak
953
echo "# Configured with: $0 $@" >> $config_mak
954
echo "/* Automatically generated by configure - do not modify */" > $config_h
955

    
956
echo "prefix=$prefix" >> $config_mak
957
echo "bindir=\${prefix}$binsuffix" >> $config_mak
958
echo "mandir=\${prefix}$mansuffix" >> $config_mak
959
echo "datadir=\${prefix}$datasuffix" >> $config_mak
960
echo "docdir=\${prefix}$docsuffix" >> $config_mak
961
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
962
echo "MAKE=$make" >> $config_mak
963
echo "INSTALL=$install" >> $config_mak
964
echo "CC=$cc" >> $config_mak
965
echo "HOST_CC=$host_cc" >> $config_mak
966
echo "AR=$ar" >> $config_mak
967
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
968
# XXX: only use CFLAGS and LDFLAGS ?  
969
# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
970
# compilation of dyngen tool (useful for win32 build on Linux host)
971
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
972
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
973
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
974
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
975
echo "CFLAGS=$CFLAGS" >> $config_mak
976
echo "LDFLAGS=$LDFLAGS" >> $config_mak
977
echo "EXESUF=$EXESUF" >> $config_mak
978
echo "AIOLIBS=$AIOLIBS" >> $config_mak
979
case "$cpu" in
980
  i386)
981
    echo "ARCH=i386" >> $config_mak
982
    echo "#define HOST_I386 1" >> $config_h
983
  ;;
984
  x86_64)
985
    echo "ARCH=x86_64" >> $config_mak
986
    echo "#define HOST_X86_64 1" >> $config_h
987
  ;;
988
  alpha)
989
    echo "ARCH=alpha" >> $config_mak
990
    echo "#define HOST_ALPHA 1" >> $config_h
991
  ;;
992
  armv4b)
993
    echo "ARCH=arm" >> $config_mak
994
    echo "#define HOST_ARM 1" >> $config_h
995
  ;;
996
  armv4l)
997
    echo "ARCH=arm" >> $config_mak
998
    echo "#define HOST_ARM 1" >> $config_h
999
  ;;
1000
  cris)
1001
    echo "ARCH=cris" >> $config_mak
1002
    echo "#define HOST_CRIS 1" >> $config_h
1003
  ;;
1004
  hppa)
1005
    echo "ARCH=hppa" >> $config_mak
1006
    echo "#define HOST_HPPA 1" >> $config_h
1007
  ;;
1008
  ia64)
1009
    echo "ARCH=ia64" >> $config_mak
1010
    echo "#define HOST_IA64 1" >> $config_h
1011
  ;;
1012
  m68k)
1013
    echo "ARCH=m68k" >> $config_mak
1014
    echo "#define HOST_M68K 1" >> $config_h
1015
  ;;
1016
  mips)
1017
    echo "ARCH=mips" >> $config_mak
1018
    echo "#define HOST_MIPS 1" >> $config_h
1019
  ;;
1020
  mips64)
1021
    echo "ARCH=mips64" >> $config_mak
1022
    echo "#define HOST_MIPS64 1" >> $config_h
1023
  ;;
1024
  powerpc)
1025
  if test "$hostlongbits" = "32"; then
1026
      echo "ARCH=ppc" >> $config_mak
1027
      echo "#define HOST_PPC 1" >> $config_h
1028
  else
1029
      echo "ARCH=ppc64" >> $config_mak
1030
      echo "#define HOST_PPC64 1" >> $config_h
1031
  fi
1032
  ;;
1033
  s390)
1034
    echo "ARCH=s390" >> $config_mak
1035
    echo "#define HOST_S390 1" >> $config_h
1036
  ;;
1037
  sparc)
1038
    echo "ARCH=sparc" >> $config_mak
1039
    echo "#define HOST_SPARC 1" >> $config_h
1040
  ;;
1041
  sparc64)
1042
    echo "ARCH=sparc64" >> $config_mak
1043
    echo "#define HOST_SPARC64 1" >> $config_h
1044
  ;;
1045
  *)
1046
    echo "Unsupported CPU = $cpu"
1047
    exit 1
1048
  ;;
1049
esac
1050
if test "$bigendian" = "yes" ; then
1051
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1052
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1053
fi
1054
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1055
if test "$mingw32" = "yes" ; then
1056
  echo "CONFIG_WIN32=yes" >> $config_mak
1057
  echo "#define CONFIG_WIN32 1" >> $config_h
1058
else
1059
  cat > $TMPC << EOF
1060
#include <byteswap.h>
1061
int main(void) { return bswap_32(0); }
1062
EOF
1063
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1064
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1065
  fi
1066
fi
1067
if test "$darwin" = "yes" ; then
1068
  echo "CONFIG_DARWIN=yes" >> $config_mak
1069
  echo "#define CONFIG_DARWIN 1" >> $config_h
1070
fi
1071
if test "$solaris" = "yes" ; then
1072
  echo "CONFIG_SOLARIS=yes" >> $config_mak
1073
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1074
  if test "$needs_libsunmath" = "yes" ; then
1075
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1076
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1077
  fi
1078
fi
1079
if test -n "$sparc_cpu"; then
1080
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1081
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1082
fi
1083
if test "$gdbstub" = "yes" ; then
1084
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1085
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1086
fi
1087
if test "$gprof" = "yes" ; then
1088
  echo "TARGET_GPROF=yes" >> $config_mak
1089
  echo "#define HAVE_GPROF 1" >> $config_h
1090
fi
1091
if test "$static" = "yes" ; then
1092
  echo "CONFIG_STATIC=yes" >> $config_mak
1093
  echo "#define CONFIG_STATIC 1" >> $config_h
1094
fi
1095
if test $profiler = "yes" ; then
1096
  echo "#define CONFIG_PROFILER 1" >> $config_h
1097
fi
1098
if test "$slirp" = "yes" ; then
1099
  echo "CONFIG_SLIRP=yes" >> $config_mak
1100
  echo "#define CONFIG_SLIRP 1" >> $config_h
1101
fi
1102
if test "$vde" = "yes" ; then
1103
  echo "CONFIG_VDE=yes" >> $config_mak
1104
  echo "#define CONFIG_VDE 1" >> $config_h
1105
  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1106
fi
1107
for card in $audio_card_list; do
1108
    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1109
    echo "$def=yes" >> $config_mak
1110
    echo "#define $def 1" >> $config_h
1111
done
1112
echo "#define AUDIO_DRIVERS \\" >> $config_h
1113
for drv in $audio_drv_list; do
1114
    echo "    &${drv}_audio_driver, \\" >>$config_h
1115
    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1116
    echo "$def=yes" >> $config_mak
1117
    if test "$drv" = "fmod"; then
1118
        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1119
        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1120
    fi
1121
done
1122
echo "" >>$config_h
1123
if test "$mixemu" = "yes" ; then
1124
  echo "CONFIG_MIXEMU=yes" >> $config_mak
1125
  echo "#define CONFIG_MIXEMU 1" >> $config_h
1126
fi
1127
if test "$vnc_tls" = "yes" ; then
1128
  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1129
  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1130
  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1131
  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1132
fi
1133
qemu_version=`head $source_path/VERSION`
1134
echo "VERSION=$qemu_version" >>$config_mak
1135
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1136

    
1137
echo "SRC_PATH=$source_path" >> $config_mak
1138
if [ "$source_path_used" = "yes" ]; then
1139
  echo "VPATH=$source_path" >> $config_mak
1140
fi
1141
echo "TARGET_DIRS=$target_list" >> $config_mak
1142
if [ "$build_docs" = "yes" ] ; then
1143
  echo "BUILD_DOCS=yes" >> $config_mak
1144
fi
1145
if test "$static" = "yes"; then
1146
  sdl1=$sdl_static
1147
else
1148
  sdl1=$sdl
1149
fi
1150
if test "$sdl1" = "yes" ; then
1151
  echo "#define CONFIG_SDL 1" >> $config_h
1152
  echo "CONFIG_SDL=yes" >> $config_mak
1153
  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1154
    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1155
  else
1156
    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1157
  fi
1158
  if [ "${aa}" = "yes" ] ; then
1159
    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1160
  else
1161
    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1162
  fi
1163
fi
1164
if test "$cocoa" = "yes" ; then
1165
  echo "#define CONFIG_COCOA 1" >> $config_h
1166
  echo "CONFIG_COCOA=yes" >> $config_mak
1167
fi
1168
if test "$curses" = "yes" ; then
1169
  echo "#define CONFIG_CURSES 1" >> $config_h
1170
  echo "CONFIG_CURSES=yes" >> $config_mak
1171
  echo "CURSES_LIBS=-lcurses" >> $config_mak
1172
fi
1173
if test "$brlapi" = "yes" ; then
1174
  echo "CONFIG_BRLAPI=yes" >> $config_mak
1175
  echo "#define CONFIG_BRLAPI 1" >> $config_h
1176
  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1177
fi
1178

    
1179
# XXX: suppress that
1180
if [ "$bsd" = "yes" ] ; then
1181
  echo "#define O_LARGEFILE 0" >> $config_h
1182
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1183
  echo "#define _BSD 1" >> $config_h
1184
fi
1185

    
1186
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1187

    
1188
tools=
1189
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1190
  tools="qemu-img\$(EXESUF) $tools"
1191
  if [ "$linux" = "yes" ] ; then
1192
      tools="qemu-nbd\$(EXESUF) $tools"
1193
  fi
1194
fi
1195
echo "TOOLS=$tools" >> $config_mak
1196

    
1197
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1198

    
1199
for target in $target_list; do
1200
target_dir="$target"
1201
config_mak=$target_dir/config.mak
1202
config_h=$target_dir/config.h
1203
target_cpu=`echo $target | cut -d '-' -f 1`
1204
target_bigendian="no"
1205
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1206
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1207
[ "$target_cpu" = "mips" ] && target_bigendian=yes
1208
[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1209
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1210
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1211
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1212
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1213
[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1214
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1215
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1216
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1217
[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1218
target_softmmu="no"
1219
target_user_only="no"
1220
target_linux_user="no"
1221
target_darwin_user="no"
1222
case "$target" in
1223
  ${target_cpu}-softmmu)
1224
    target_softmmu="yes"
1225
    ;;
1226
  ${target_cpu}-linux-user)
1227
    target_user_only="yes"
1228
    target_linux_user="yes"
1229
    ;;
1230
  ${target_cpu}-darwin-user)
1231
    target_user_only="yes"
1232
    target_darwin_user="yes"
1233
    ;;
1234
  *)
1235
    echo "ERROR: Target '$target' not recognised"
1236
    exit 1
1237
    ;;
1238
esac
1239

    
1240
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1241
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1242
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1243
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1244
    echo "Note that this will disable all output from the virtual graphics card"
1245
    echo "except through VNC or curses."
1246
    exit 1;
1247
fi
1248

    
1249
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1250

    
1251
test -f $config_h && mv $config_h ${config_h}~
1252

    
1253
mkdir -p $target_dir
1254
mkdir -p $target_dir/fpu
1255
mkdir -p $target_dir/tcg
1256
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1257
  mkdir -p $target_dir/nwfpe
1258
fi
1259

    
1260
#
1261
# don't use ln -sf as not all "ln -sf" over write the file/link
1262
#
1263
rm -f $target_dir/Makefile
1264
ln -s $source_path/Makefile.target $target_dir/Makefile
1265

    
1266

    
1267
echo "# Automatically generated by configure - do not modify" > $config_mak
1268
echo "/* Automatically generated by configure - do not modify */" > $config_h
1269

    
1270

    
1271
echo "include ../config-host.mak" >> $config_mak
1272
echo "#include \"../config-host.h\"" >> $config_h
1273

    
1274
bflt="no"
1275
elfload32="no"
1276
target_nptl="no"
1277
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1278
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1279

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

    
1442
if test "$target_cpu" = "arm" \
1443
     -o "$target_cpu" = "armeb" \
1444
     -o "$target_cpu" = "m68k" \
1445
     -o "$target_cpu" = "mips" \
1446
     -o "$target_cpu" = "mipsel" \
1447
     -o "$target_cpu" = "mipsn32" \
1448
     -o "$target_cpu" = "mipsn32el" \
1449
     -o "$target_cpu" = "mips64" \
1450
     -o "$target_cpu" = "mips64el" \
1451
     -o "$target_cpu" = "sparc" \
1452
     -o "$target_cpu" = "sparc64" \
1453
     -o "$target_cpu" = "sparc32plus"; then
1454
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1455
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1456
fi
1457
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1458
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1459
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1460
fi
1461
if test "$target_user_only" = "yes" \
1462
        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1463
  echo "#define USE_NPTL 1" >> $config_h
1464
fi
1465
# 32 bit ELF loader in addition to native 64 bit loader?
1466
if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1467
  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1468
  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1469
fi
1470

    
1471
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1472

    
1473
done # for target in $targets
1474

    
1475
# build tree in object directory if source path is different from current one
1476
if test "$source_path_used" = "yes" ; then
1477
    DIRS="tests tests/cris slirp audio"
1478
    FILES="Makefile tests/Makefile"
1479
    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1480
    FILES="$FILES tests/test-mmap.c"
1481
    for dir in $DIRS ; do
1482
            mkdir -p $dir
1483
    done
1484
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1485
    for f in $FILES ; do
1486
        rm -f $f
1487
        ln -s $source_path/$f $f
1488
    done
1489
fi
1490

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