Statistics
| Branch: | Revision:

root / configure @ 810260a8

History | View | Annotate | Download (40.6 kB)

1
#!/bin/sh
2
#
3
# qemu configure script (c) 2003 Fabrice Bellard
4
#
5
# set temporary file name
6
if test ! -z "$TMPDIR" ; then
7
    TMPDIR1="${TMPDIR}"
8
elif test ! -z "$TEMPDIR" ; then
9
    TMPDIR1="${TEMPDIR}"
10
else
11
    TMPDIR1="/tmp"
12
fi
13

    
14
TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15
TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16
TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17
TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18

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

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

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

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

    
682
##########################################
683
# SDL probe
684

    
685
sdl_too_old=no
686

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

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

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

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

    
736
##########################################
737
# VNC TLS detection
738
if test "$vnc_tls" = "yes" ; then
739
  `pkg-config gnutls` || vnc_tls="no"
740
fi
741
if test "$vnc_tls" = "yes" ; then
742
  vnc_tls_cflags=`pkg-config --cflags gnutls`
743
  vnc_tls_libs=`pkg-config --libs gnutls`
744
fi
745

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

    
760
##########################################
761
# Sound support libraries probe
762

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

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

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

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

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

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

    
822
    esac
823
done
824

    
825
##########################################
826
# BrlAPI probe
827

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

    
839
##########################################
840
# curses probe
841

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
1257

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

    
1261

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

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

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

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

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

    
1464
done # for target in $targets
1465

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

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