Statistics
| Branch: | Revision:

root / configure @ 16b98a97

History | View | Annotate | Download (41.1 kB)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
460
if test "$mingw32" = "yes" ; then
461
    linux="no"
462
    EXESUF=".exe"
463
    oss="no"
464
fi
465

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

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

    
540

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

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

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

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

    
614
else
615

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

    
629
fi
630

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

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

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

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

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

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

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

    
686
sdl_too_old=no
687

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

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

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

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

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

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

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

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

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

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

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

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

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

    
831
    oss|sdl|core|wav|dsound)
832
    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
833
    ;;
834

    
835
    esac
836
done
837

    
838
##########################################
839
# BrlAPI probe
840

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

    
852
##########################################
853
# curses probe
854

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

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

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

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

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

    
952
#echo "Creating $config_mak and $config_h"
953

    
954
test -f $config_h && mv $config_h ${config_h}~
955

    
956
echo "# Automatically generated by configure - do not modify" > $config_mak
957
echo "# Configured with: $0 $@" >> $config_mak
958
echo "/* Automatically generated by configure - do not modify */" > $config_h
959

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

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

    
1183
# XXX: suppress that
1184
if [ "$bsd" = "yes" ] ; then
1185
  echo "#define O_LARGEFILE 0" >> $config_h
1186
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1187
  echo "#define _BSD 1" >> $config_h
1188
fi
1189

    
1190
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1191

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

    
1201
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1202

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

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

    
1253
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1254

    
1255
test -f $config_h && mv $config_h ${config_h}~
1256

    
1257
mkdir -p $target_dir
1258
mkdir -p $target_dir/fpu
1259
mkdir -p $target_dir/tcg
1260
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1261
  mkdir -p $target_dir/nwfpe
1262
fi
1263

    
1264
#
1265
# don't use ln -sf as not all "ln -sf" over write the file/link
1266
#
1267
rm -f $target_dir/Makefile
1268
ln -s $source_path/Makefile.target $target_dir/Makefile
1269

    
1270

    
1271
echo "# Automatically generated by configure - do not modify" > $config_mak
1272
echo "/* Automatically generated by configure - do not modify */" > $config_h
1273

    
1274

    
1275
echo "include ../config-host.mak" >> $config_mak
1276
echo "#include \"../config-host.h\"" >> $config_h
1277

    
1278
bflt="no"
1279
elfload32="no"
1280
target_nptl="no"
1281
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1282
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1283

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

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

    
1475
test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1476

    
1477
done # for target in $targets
1478

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

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