Statistics
| Branch: | Revision:

root / configure @ ba69a08a

History | View | Annotate | Download (40.7 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="$optarg"
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
  `pkg-config gnutls` || vnc_tls="no"
741
fi
742
if test "$vnc_tls" = "yes" ; then
743
  vnc_tls_cflags=`pkg-config --cflags gnutls`
744
  vnc_tls_libs=`pkg-config --libs gnutls`
745
fi
746

    
747
##########################################
748
# vde libraries probe
749
if test "$vde" = "yes" ; then
750
  cat > $TMPC << EOF
751
#include <libvdeplug.h>
752
int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
753
EOF
754
    if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
755
        :
756
    else
757
        vde="no"
758
    fi
759
fi
760

    
761
##########################################
762
# Sound support libraries probe
763

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

    
786
for drv in $audio_drv_list; do
787
    case $drv in
788
    alsa)
789
    audio_drv_probe $drv alsa/asoundlib.h -lasound \
790
        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
791
    ;;
792

    
793
    fmod)
794
    if test -z $fmod_lib || test -z $fmod_inc; then
795
        echo
796
        echo "Error: You must specify path to FMOD library and headers"
797
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
798
        echo
799
        exit 1
800
    fi
801
    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
802
    ;;
803

    
804
    esd)
805
    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
806
    ;;
807

    
808
    pa)
809
    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
810
        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
811
    ;;
812

    
813
    *)
814
    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
815
        echo
816
        echo "Error: Unknown driver '$drv' selected"
817
        echo "Possible drivers are: $audio_possible_drivers"
818
        echo
819
        exit 1
820
    }
821
    ;;
822

    
823
    esac
824
done
825

    
826
##########################################
827
# BrlAPI probe
828

    
829
if test -z "$brlapi" ; then
830
    brlapi=no
831
cat > $TMPC << EOF
832
#include <brlapi.h>
833
int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
834
EOF
835
    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
836
	    brlapi=yes
837
    fi # brlapi compile test
838
fi # -z $brlapi
839

    
840
##########################################
841
# curses probe
842

    
843
if test "$curses" = "yes" ; then
844
  curses=no
845
  cat > $TMPC << EOF
846
#include <curses.h>
847
int main(void) { return curses_version(); }
848
EOF
849
  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
850
    curses=yes
851
  fi
852
fi # test "$curses"
853

    
854
# Check if tools are available to build documentation.
855
if [ -x "`which texi2html 2>/dev/null`" ] && \
856
   [ -x "`which pod2man 2>/dev/null`" ]; then
857
  build_docs="yes"
858
fi
859

    
860
if test "$mingw32" = "yes" ; then
861
  if test -z "$prefix" ; then
862
      prefix="/c/Program Files/Qemu"
863
  fi
864
  mansuffix=""
865
  datasuffix=""
866
  docsuffix=""
867
  binsuffix=""
868
else
869
  if test -z "$prefix" ; then
870
      prefix="/usr/local"
871
  fi
872
  mansuffix="/share/man"
873
  datasuffix="/share/qemu"
874
  docsuffix="/share/doc/qemu"
875
  binsuffix="/bin"
876
fi
877

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

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

    
940
#echo "Creating $config_mak and $config_h"
941

    
942
test -f $config_h && mv $config_h ${config_h}~
943

    
944
echo "# Automatically generated by configure - do not modify" > $config_mak
945
echo "# Configured with: $0 $@" >> $config_mak
946
echo "/* Automatically generated by configure - do not modify */" > $config_h
947

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

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

    
1171
# XXX: suppress that
1172
if [ "$bsd" = "yes" ] ; then
1173
  echo "#define O_LARGEFILE 0" >> $config_h
1174
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1175
  echo "#define _BSD 1" >> $config_h
1176
fi
1177

    
1178
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1179

    
1180
tools=
1181
if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1182
  tools="qemu-img\$(EXESUF) $tools"
1183
  if [ "$linux" = "yes" ] ; then
1184
      tools="qemu-nbd\$(EXESUF) $tools"
1185
  fi
1186
fi
1187
echo "TOOLS=$tools" >> $config_mak
1188

    
1189
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1190

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

    
1232
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1233
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1234
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1235
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1236
    echo "Note that this will disable all output from the virtual graphics card"
1237
    echo "except through VNC or curses."
1238
    exit 1;
1239
fi
1240

    
1241
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1242

    
1243
test -f $config_h && mv $config_h ${config_h}~
1244

    
1245
mkdir -p $target_dir
1246
mkdir -p $target_dir/fpu
1247
mkdir -p $target_dir/tcg
1248
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1249
  mkdir -p $target_dir/nwfpe
1250
fi
1251

    
1252
#
1253
# don't use ln -sf as not all "ln -sf" over write the file/link
1254
#
1255
rm -f $target_dir/Makefile
1256
ln -s $source_path/Makefile.target $target_dir/Makefile
1257

    
1258

    
1259
echo "# Automatically generated by configure - do not modify" > $config_mak
1260
echo "/* Automatically generated by configure - do not modify */" > $config_h
1261

    
1262

    
1263
echo "include ../config-host.mak" >> $config_mak
1264
echo "#include \"../config-host.h\"" >> $config_h
1265

    
1266
bflt="no"
1267
elfload32="no"
1268
target_nptl="no"
1269
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1270
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1271

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

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

    
1463
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1464

    
1465
done # for target in $targets
1466

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

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