Statistics
| Branch: | Revision:

root / configure @ d4af3de2

History | View | Annotate | Download (31.5 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 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
27
host_cc="gcc"
28
ar="ar"
29
make="make"
30
install="install"
31
strip="strip"
32
cpu=`uname -m`
33
target_list=""
34
case "$cpu" in
35
  i386|i486|i586|i686|i86pc|BePC)
36
    cpu="i386"
37
  ;;
38
  armv*b)
39
    cpu="armv4b"
40
  ;;
41
  armv*l)
42
    cpu="armv4l"
43
  ;;
44
  alpha)
45
    cpu="alpha"
46
  ;;
47
  "Power Macintosh"|ppc|ppc64)
48
    cpu="powerpc"
49
  ;;
50
  mips)
51
    cpu="mips"
52
  ;;
53
  mips64)
54
    cpu="mips64"
55
  ;;
56
  s390)
57
    cpu="s390"
58
  ;;
59
  sparc|sun4[cdmuv])
60
    cpu="sparc"
61
  ;;
62
  sparc64)
63
    cpu="sparc64"
64
  ;;
65
  ia64)
66
    cpu="ia64"
67
  ;;
68
  m68k)
69
    cpu="m68k"
70
  ;;
71
  x86_64|amd64)
72
    cpu="x86_64"
73
  ;;
74
  *)
75
    cpu="unknown"
76
  ;;
77
esac
78
gprof="no"
79
bigendian="no"
80
mingw32="no"
81
EXESUF=""
82
gdbstub="yes"
83
slirp="yes"
84
adlib="no"
85
oss="no"
86
dsound="no"
87
coreaudio="no"
88
alsa="no"
89
fmod="no"
90
fmod_lib=""
91
fmod_inc=""
92
bsd="no"
93
linux="no"
94
kqemu="no"
95
profiler="no"
96
cocoa="no"
97
check_gfx="yes"
98
check_gcc="yes"
99
softmmu="yes"
100
linux_user="no"
101
darwin_user="no"
102
build_docs="no"
103
uname_release=""
104

    
105
# OS specific
106
targetos=`uname -s`
107
case $targetos in
108
CYGWIN*)
109
mingw32="yes"
110
OS_CFLAGS="-mno-cygwin"
111
VL_OS_LDFLAGS="-mno-cygwin"
112
if [ "$cpu" = "i386" ] ; then
113
    kqemu="yes"
114
fi
115
;;
116
MINGW32*)
117
mingw32="yes"
118
if [ "$cpu" = "i386" ] ; then
119
    kqemu="yes"
120
fi
121
;;
122
GNU/kFreeBSD)
123
oss="yes"
124
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
125
    kqemu="yes"
126
fi
127
;;
128
FreeBSD)
129
bsd="yes"
130
oss="yes"
131
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
132
    kqemu="yes"
133
fi
134
;;
135
NetBSD)
136
bsd="yes"
137
oss="yes"
138
;;
139
OpenBSD)
140
bsd="yes"
141
oss="yes"
142
;;
143
Darwin)
144
bsd="yes"
145
darwin="yes"
146
darwin_user="yes"
147
cocoa="yes"
148
coreaudio="yes"
149
OS_CFLAGS="-mdynamic-no-pic"
150
;;
151
SunOS)
152
    solaris="yes"
153
    make="gmake"
154
    install="ginstall"
155
    needs_libsunmath="no"
156
    solarisrev=`uname -r | cut -f2 -d.`
157
    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
158
        if test "$solarisrev" -le 9 ; then
159
            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
160
                needs_libsunmath="yes"
161
            else
162
                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
163
                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
164
                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
165
                echo "Studio 11 can be downloaded from www.sun.com."
166
                exit 1
167
            fi
168
        fi
169
        if test "$solarisrev" -ge 9 ; then
170
            kqemu="yes"
171
        fi
172
    fi
173
    if test -f /usr/include/sys/soundcard.h ; then
174
        oss=yes
175
    fi
176
;;
177
*)
178
oss="yes"
179
linux="yes"
180
linux_user="yes"
181
if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
182
    kqemu="yes"
183
fi
184
;;
185
esac
186

    
187
if [ "$bsd" = "yes" ] ; then
188
  if [ "$darwin" != "yes" ] ; then
189
    make="gmake"
190
  fi
191
fi
192

    
193
# find source path
194
source_path=`dirname "$0"`
195
if [ -z "$source_path" ]; then
196
    source_path=`pwd`
197
else
198
    source_path=`cd "$source_path"; pwd`
199
fi
200
if test "$source_path" = `pwd` ; then
201
    source_path_used="no"
202
else
203
    source_path_used="yes"
204
fi
205

    
206
for opt do
207
  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
208
  case "$opt" in
209
  --help|-h) show_help=yes
210
  ;;
211
  --prefix=*) prefix="$optarg"
212
  ;;
213
  --interp-prefix=*) interp_prefix="$optarg"
214
  ;;
215
  --source-path=*) source_path="$optarg"
216
  source_path_used="yes"
217
  ;;
218
  --cross-prefix=*) cross_prefix="$optarg"
219
  ;;
220
  --cc=*) cc="$optarg"
221
  gcc3_search="no"
222
  ;;
223
  --host-cc=*) host_cc="$optarg"
224
  ;;
225
  --make=*) make="$optarg"
226
  ;;
227
  --install=*) install="$optarg"
228
  ;;
229
  --extra-cflags=*) CFLAGS="$optarg"
230
  ;;
231
  --extra-ldflags=*) LDFLAGS="$optarg"
232
  ;;
233
  --cpu=*) cpu="$optarg"
234
  ;;
235
  --target-list=*) target_list="$optarg"
236
  ;;
237
  --enable-gprof) gprof="yes"
238
  ;;
239
  --static) static="yes"
240
  ;;
241
  --disable-sdl) sdl="no"
242
  ;;
243
  --enable-coreaudio) coreaudio="yes"
244
  ;;
245
  --enable-alsa) alsa="yes"
246
  ;;
247
  --enable-dsound) dsound="yes"
248
  ;;
249
  --enable-fmod) fmod="yes"
250
  ;;
251
  --fmod-lib=*) fmod_lib="$optarg"
252
  ;;
253
  --fmod-inc=*) fmod_inc="$optarg"
254
  ;;
255
  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
256
  ;;
257
  --disable-slirp) slirp="no"
258
  ;;
259
  --enable-adlib) adlib="yes"
260
  ;;
261
  --disable-kqemu) kqemu="no"
262
  ;;
263
  --enable-profiler) profiler="yes"
264
  ;;
265
  --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
266
  ;;
267
  --disable-gfx-check) check_gfx="no"
268
  ;;
269
  --disable-gcc-check) check_gcc="no"
270
  ;;
271
  --disable-system) softmmu="no"
272
  ;;
273
  --enable-system) softmmu="yes"
274
  ;;
275
  --disable-linux-user) linux_user="no"
276
  ;;
277
  --enable-linux-user) linux_user="yes"
278
  ;;
279
  --disable-darwin-user) darwin_user="no"
280
  ;;
281
  --enable-darwin-user) darwin_user="yes"
282
  ;;
283
  --enable-uname-release=*) uname_release="$optarg"
284
  ;;
285
  --sparc_cpu=*)
286
      sparc_cpu="$optarg"
287
      case $sparc_cpu in
288
        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
289
                 target_cpu="sparc"; cpu="sparc" ;;
290
        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
291
                 target_cpu="sparc"; cpu="sparc" ;;
292
        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
293
                 target_cpu="sparc64"; cpu="sparc64" ;;
294
        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
295
      esac
296
  ;;
297
  esac
298
done
299

    
300
if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
301
    AIOLIBS=
302
else
303
    AIOLIBS="-lrt"
304
fi
305

    
306
# default flags for all hosts
307
CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
308
LDFLAGS="$LDFLAGS -g"
309

    
310
#
311
# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
312
# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
313
#
314
case $cpu in
315
    sparc) if test -z "$sparc_cpu" ; then
316
               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
317
               ARCH_LDFLAGS="-m32"
318
           else
319
               ARCH_CFLAGS="${SP_CFLAGS}"
320
               ARCH_LDFLAGS="${SP_LDFLAGS}"
321
           fi
322
           ;;
323
    sparc64) if test -z "$sparc_cpu" ; then
324
               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
325
               ARCH_LDFLAGS="-m64"
326
           else
327
               ARCH_CFLAGS="${SP_CFLAGS}"
328
               ARCH_LDFLAGS="${SP_LDFLAGS}"
329
           fi
330
           ;;
331
esac
332

    
333
if test x"$show_help" = x"yes" ; then
334
cat << EOF
335

    
336
Usage: configure [options]
337
Options: [defaults in brackets after descriptions]
338

    
339
EOF
340
echo "Standard options:"
341
echo "  --help                   print this message"
342
echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
343
echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
344
echo "                           use %M for cpu name [$interp_prefix]"
345
echo "  --target-list=LIST       set target list [$target_list]"
346
echo ""
347
echo "kqemu kernel acceleration support:"
348
echo "  --disable-kqemu          disable kqemu support"
349
echo ""
350
echo "Advanced options (experts only):"
351
echo "  --source-path=PATH       path of source code [$source_path]"
352
echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
353
echo "  --cc=CC                  use C compiler CC [$cc]"
354
echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
355
echo "  --make=MAKE              use specified make [$make]"
356
echo "  --install=INSTALL        use specified install [$install]"
357
echo "  --static                 enable static build [$static]"
358
echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
359
echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
360
echo "  --enable-adlib           enable Adlib emulation"
361
echo "  --enable-coreaudio       enable Coreaudio audio driver"
362
echo "  --enable-alsa            enable ALSA audio driver"
363
echo "  --enable-fmod            enable FMOD audio driver"
364
echo "  --enable-dsound          enable DirectSound audio driver"
365
echo "  --enable-system          enable all system emulation targets"
366
echo "  --disable-system         disable all system emulation targets"
367
echo "  --enable-linux-user      enable all linux usermode emulation targets"
368
echo "  --disable-linux-user     disable all linux usermode emulation targets"
369
echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
370
echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
371
echo "  --fmod-lib               path to FMOD library"
372
echo "  --fmod-inc               path to FMOD includes"
373
echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
374
echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
375
echo ""
376
echo "NOTE: The object files are built at the place where configure is launched"
377
exit 1
378
fi
379

    
380
cc="${cross_prefix}${cc}"
381
ar="${cross_prefix}${ar}"
382
strip="${cross_prefix}${strip}"
383

    
384
# check that the C compiler works.
385
cat > $TMPC <<EOF
386
int main(void) {}
387
EOF
388

    
389
if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
390
  : C compiler works ok
391
else
392
    echo "ERROR: \"$cc\" either does not exist or does not work"
393
    exit 1
394
fi
395

    
396
if test "$mingw32" = "yes" ; then
397
    linux="no"
398
    EXESUF=".exe"
399
    oss="no"
400
fi
401

    
402
# Check for gcc4, error if pre-gcc4 
403
if test "$check_gcc" = "yes" ; then
404
    cat > $TMPC <<EOF
405
#if __GNUC__ < 4
406
#error gcc3
407
#endif
408
int main(){return 0;}
409
EOF
410
    if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
411
	echo "WARNING: \"$cc\" looks like gcc 4.x"
412
	found_compat_cc="no"
413
	if test "$gcc3_search" = "yes" ; then
414
	    echo "Looking for gcc 3.x"
415
	    for compat_cc in $gcc3_list ; do
416
		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
417
		    echo "Found \"$compat_cc\""
418
		    cc="$cross_prefix$compat_cc"
419
		    found_compat_cc="yes"
420
		    break
421
		fi
422
	    done
423
	    if test "$found_compat_cc" = "no" ; then
424
		echo "gcc 3.x not found!"
425
	    fi
426
	fi
427
	if test "$found_compat_cc" = "no" ; then
428
	    echo "QEMU is known to have problems when compiled with gcc 4.x"
429
	    echo "It is recommended that you use gcc 3.x to build QEMU"
430
	    echo "To use this compiler anyway, configure with --disable-gcc-check"
431
	    exit 1;
432
	fi
433
    fi
434
fi
435

    
436
#
437
# Solaris specific configure tool chain decisions
438
#
439
if test "$solaris" = "yes" ; then
440
  #
441
  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
442
  # override the check with --disable-gcc-check
443
  # 
444
  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
445
    solgcc=`which $cc`
446
    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
447
      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
448
      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
449
      echo "or get the latest patch from SunSolve for gcc"
450
      exit 1
451
    fi
452
  fi
453
  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
454
  if test -z "$solinst" ; then
455
    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
456
    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
457
    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
458
    exit 1
459
  fi
460
  if test "$solinst" = "/usr/sbin/install" ; then
461
    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
462
    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
463
    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
464
    exit 1
465
  fi
466
  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
467
  if test -z "$sol_ar" ; then
468
    echo "Error: No path includes ar"
469
    if test -f /usr/ccs/bin/ar ; then
470
      echo "Add /usr/ccs/bin to your path and rerun configure"
471
    fi
472
    exit 1
473
  fi
474
fi 
475

    
476

    
477
if test -z "$target_list" ; then
478
# these targets are portable
479
    if [ "$softmmu" = "yes" ] ; then
480
        target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc64-softmmu ppcemb-softmmu m68k-softmmu"
481
    fi
482
# the following are Linux specific
483
    if [ "$linux_user" = "yes" ] ; then
484
        target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user ppc-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user $target_list"
485
    fi
486
# the following are Darwin specific
487
    if [ "$darwin_user" = "yes" ] ; then
488
        target_list="i386-darwin-user ppc-darwin-user $target_list"
489
    fi
490
else
491
    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
492
fi
493
if test -z "$target_list" ; then
494
    echo "No targets enabled"
495
    exit 1
496
fi
497

    
498
if test -z "$cross_prefix" ; then
499

    
500
# ---
501
# big/little endian test
502
cat > $TMPC << EOF
503
#include <inttypes.h>
504
int main(int argc, char ** argv){
505
        volatile uint32_t i=0x01234567;
506
        return (*((uint8_t*)(&i))) == 0x67;
507
}
508
EOF
509

    
510
if $cc -o $TMPE $TMPC 2> /dev/null ; then
511
$TMPE && bigendian="yes"
512
else
513
echo big/little test failed
514
fi
515

    
516
else
517

    
518
# if cross compiling, cannot launch a program, so make a static guess
519
if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "mips64" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
520
    bigendian="yes"
521
fi
522

    
523
fi
524

    
525
# host long bits test
526
hostlongbits="32"
527
if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
528
    hostlongbits="64"
529
fi
530

    
531
# check gcc options support
532
cat > $TMPC <<EOF
533
int main(void) {
534
}
535
EOF
536

    
537
##########################################
538
# SDL probe
539

    
540
sdl_too_old=no
541

    
542
if test -z "$sdl" ; then
543
    sdl_config="sdl-config"
544
    sdl=no
545
    sdl_static=no
546

    
547
    if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
548
    # win32 cross compilation case
549
        sdl_config="i386-mingw32msvc-sdl-config"
550
        sdl=yes
551
    else
552
        # normal SDL probe
553
cat > $TMPC << EOF
554
#include <SDL.h>
555
#undef main /* We don't want SDL to override our main() */
556
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
557
EOF
558
        if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
559
            _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
560
            if test "$_sdlversion" -lt 121 ; then
561
                sdl_too_old=yes
562
            else
563
                if test "$cocoa" = "no" ; then
564
                    sdl=yes
565
                fi
566
            fi
567

    
568
            # static link with sdl ?
569
            if test "$sdl" = "yes" ; then
570
                aa="no"
571
                `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
572
                sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
573
                if [ "$aa" = "yes" ] ; then
574
                    sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
575
                fi
576

    
577
                if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
578
                    sdl_static=yes
579
                fi
580
            fi # static link
581
        fi # sdl compile test
582
    fi # cross compilation
583
else
584
    # Make sure to disable cocoa if sdl was set
585
    if test "$sdl" = "yes" ; then
586
       cocoa="no"
587
       coreaudio="no"
588
    fi
589
fi # -z $sdl
590

    
591
##########################################
592
# alsa sound support libraries
593

    
594
if test "$alsa" = "yes" ; then
595
  cat > $TMPC << EOF
596
#include <alsa/asoundlib.h>
597
int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
598
EOF
599
  if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
600
    :
601
  else
602
    echo
603
    echo "Error: Could not find alsa"
604
    echo "Make sure to have the alsa libs and headers installed."
605
    echo
606
    exit 1
607
  fi
608
fi
609

    
610
# Check if tools are available to build documentation.
611
if [ -x "`which texi2html 2>/dev/null`" ] && \
612
   [ -x "`which pod2man 2>/dev/null`" ]; then
613
  build_docs="yes"
614
fi
615

    
616
if test "$mingw32" = "yes" ; then
617
  if test -z "$prefix" ; then
618
      prefix="/c/Program Files/Qemu"
619
  fi
620
  mansuffix=""
621
  datasuffix=""
622
  docsuffix=""
623
  binsuffix=""
624
else
625
  if test -z "$prefix" ; then
626
      prefix="/usr/local"
627
  fi
628
  mansuffix="/share/man"
629
  datasuffix="/share/qemu"
630
  docsuffix="/share/doc/qemu"
631
  binsuffix="/bin"
632
fi
633

    
634
echo "Install prefix    $prefix"
635
echo "BIOS directory    $prefix$datasuffix"
636
echo "binary directory  $prefix$binsuffix"
637
if test "$mingw32" = "no" ; then
638
echo "Manual directory  $prefix$mansuffix"
639
echo "ELF interp prefix $interp_prefix"
640
fi
641
echo "Source path       $source_path"
642
echo "C compiler        $cc"
643
echo "Host C compiler   $host_cc"
644
echo "make              $make"
645
echo "install           $install"
646
echo "host CPU          $cpu"
647
echo "host big endian   $bigendian"
648
echo "target list       $target_list"
649
echo "gprof enabled     $gprof"
650
echo "profiler          $profiler"
651
echo "static build      $static"
652
if test "$darwin" = "yes" ; then
653
    echo "Cocoa support     $cocoa"
654
fi
655
echo "SDL support       $sdl"
656
if test "$sdl" != "no" ; then
657
    echo "SDL static link   $sdl_static"
658
fi
659
echo "mingw32 support   $mingw32"
660
echo "Adlib support     $adlib"
661
echo "CoreAudio support $coreaudio"
662
echo "ALSA support      $alsa"
663
echo "DSound support    $dsound"
664
if test "$fmod" = "yes"; then
665
    if test -z $fmod_lib || test -z $fmod_inc; then
666
        echo
667
        echo "Error: You must specify path to FMOD library and headers"
668
        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
669
        echo
670
        exit 1
671
    fi
672
    fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
673
else
674
    fmod_support=""
675
fi
676
echo "FMOD support      $fmod $fmod_support"
677
echo "OSS support       $oss"
678
if test -n "$sparc_cpu"; then
679
    echo "Target Sparc Arch $sparc_cpu"
680
fi
681
echo "kqemu support     $kqemu"
682
echo "Documentation     $build_docs"
683
[ ! -z "$uname_release" ] && \
684
echo "uname -r          $uname_release"
685

    
686
if test $sdl_too_old = "yes"; then
687
echo "-> Your SDL version is too old - please upgrade to have SDL support"
688
fi
689
if [ -s /tmp/qemu-$$-sdl-config.log ]; then
690
  echo "The error log from compiling the libSDL test is: "
691
  cat /tmp/qemu-$$-sdl-config.log
692
fi
693
rm -f /tmp/qemu-$$-sdl-config.log
694
#if test "$sdl_static" = "no"; then
695
#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
696
#fi
697
config_mak="config-host.mak"
698
config_h="config-host.h"
699

    
700
#echo "Creating $config_mak and $config_h"
701

    
702
echo "# Automatically generated by configure - do not modify" > $config_mak
703
echo "# Configured with: $0 $@" >> $config_mak
704
echo "/* Automatically generated by configure - do not modify */" > $config_h
705

    
706
echo "prefix=$prefix" >> $config_mak
707
echo "bindir=\${prefix}$binsuffix" >> $config_mak
708
echo "mandir=\${prefix}$mansuffix" >> $config_mak
709
echo "datadir=\${prefix}$datasuffix" >> $config_mak
710
echo "docdir=\${prefix}$docsuffix" >> $config_mak
711
echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
712
echo "MAKE=$make" >> $config_mak
713
echo "INSTALL=$install" >> $config_mak
714
echo "CC=$cc" >> $config_mak
715
echo "HOST_CC=$host_cc" >> $config_mak
716
echo "AR=$ar" >> $config_mak
717
echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
718
echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
719
echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
720
echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
721
echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
722
echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
723
echo "CFLAGS=$CFLAGS" >> $config_mak
724
echo "LDFLAGS=$LDFLAGS" >> $config_mak
725
echo "EXESUF=$EXESUF" >> $config_mak
726
echo "AIOLIBS=$AIOLIBS" >> $config_mak
727
if test "$cpu" = "i386" ; then
728
  echo "ARCH=i386" >> $config_mak
729
  echo "#define HOST_I386 1" >> $config_h
730
elif test "$cpu" = "x86_64" ; then
731
  echo "ARCH=x86_64" >> $config_mak
732
  echo "#define HOST_X86_64 1" >> $config_h
733
elif test "$cpu" = "armv4b" ; then
734
  echo "ARCH=arm" >> $config_mak
735
  echo "#define HOST_ARM 1" >> $config_h
736
elif test "$cpu" = "armv4l" ; then
737
  echo "ARCH=arm" >> $config_mak
738
  echo "#define HOST_ARM 1" >> $config_h
739
elif test "$cpu" = "powerpc" ; then
740
  echo "ARCH=ppc" >> $config_mak
741
  echo "#define HOST_PPC 1" >> $config_h
742
elif test "$cpu" = "mips" ; then
743
  echo "ARCH=mips" >> $config_mak
744
  echo "#define HOST_MIPS 1" >> $config_h
745
elif test "$cpu" = "mips64" ; then
746
  echo "ARCH=mips64" >> $config_mak
747
  echo "#define HOST_MIPS64 1" >> $config_h
748
elif test "$cpu" = "s390" ; then
749
  echo "ARCH=s390" >> $config_mak
750
  echo "#define HOST_S390 1" >> $config_h
751
elif test "$cpu" = "alpha" ; then
752
  echo "ARCH=alpha" >> $config_mak
753
  echo "#define HOST_ALPHA 1" >> $config_h
754
elif test "$cpu" = "sparc" ; then
755
  echo "ARCH=sparc" >> $config_mak
756
  echo "#define HOST_SPARC 1" >> $config_h
757
elif test "$cpu" = "sparc64" ; then
758
  echo "ARCH=sparc64" >> $config_mak
759
  echo "#define HOST_SPARC64 1" >> $config_h
760
elif test "$cpu" = "ia64" ; then
761
  echo "ARCH=ia64" >> $config_mak
762
  echo "#define HOST_IA64 1" >> $config_h
763
elif test "$cpu" = "m68k" ; then
764
  echo "ARCH=m68k" >> $config_mak
765
  echo "#define HOST_M68K 1" >> $config_h
766
else
767
  echo "Unsupported CPU = $cpu"
768
  exit 1
769
fi
770
if test "$bigendian" = "yes" ; then
771
  echo "WORDS_BIGENDIAN=yes" >> $config_mak
772
  echo "#define WORDS_BIGENDIAN 1" >> $config_h
773
fi
774
echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
775
if test "$mingw32" = "yes" ; then
776
  echo "CONFIG_WIN32=yes" >> $config_mak
777
  echo "#define CONFIG_WIN32 1" >> $config_h
778
else
779
  cat > $TMPC << EOF
780
#include <byteswap.h>
781
int main(void) { return bswap_32(0); }
782
EOF
783
  if $cc -o $TMPE $TMPC 2> /dev/null ; then
784
    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
785
  fi
786
fi
787
if test "$darwin" = "yes" ; then
788
  echo "CONFIG_DARWIN=yes" >> $config_mak
789
  echo "#define CONFIG_DARWIN 1" >> $config_h
790
fi
791
if test "$solaris" = "yes" ; then
792
  echo "CONFIG_SOLARIS=yes" >> $config_mak
793
  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
794
  if test "$needs_libsunmath" = "yes" ; then
795
    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
796
    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
797
  fi
798
fi
799
if test -n "$sparc_cpu"; then
800
  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
801
  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
802
fi
803
if test "$gdbstub" = "yes" ; then
804
  echo "CONFIG_GDBSTUB=yes" >> $config_mak
805
  echo "#define CONFIG_GDBSTUB 1" >> $config_h
806
fi
807
if test "$gprof" = "yes" ; then
808
  echo "TARGET_GPROF=yes" >> $config_mak
809
  echo "#define HAVE_GPROF 1" >> $config_h
810
fi
811
if test "$static" = "yes" ; then
812
  echo "CONFIG_STATIC=yes" >> $config_mak
813
  echo "#define CONFIG_STATIC 1" >> $config_h
814
fi
815
if test $profiler = "yes" ; then
816
  echo "#define CONFIG_PROFILER 1" >> $config_h
817
fi
818
if test "$slirp" = "yes" ; then
819
  echo "CONFIG_SLIRP=yes" >> $config_mak
820
  echo "#define CONFIG_SLIRP 1" >> $config_h
821
fi
822
if test "$adlib" = "yes" ; then
823
  echo "CONFIG_ADLIB=yes" >> $config_mak
824
  echo "#define CONFIG_ADLIB 1" >> $config_h
825
fi
826
if test "$oss" = "yes" ; then
827
  echo "CONFIG_OSS=yes" >> $config_mak
828
  echo "#define CONFIG_OSS 1" >> $config_h
829
fi
830
if test "$coreaudio" = "yes" ; then
831
  echo "CONFIG_COREAUDIO=yes" >> $config_mak
832
  echo "#define CONFIG_COREAUDIO 1" >> $config_h
833
fi
834
if test "$alsa" = "yes" ; then
835
  echo "CONFIG_ALSA=yes" >> $config_mak
836
  echo "#define CONFIG_ALSA 1" >> $config_h
837
fi
838
if test "$dsound" = "yes" ; then
839
  echo "CONFIG_DSOUND=yes" >> $config_mak
840
  echo "#define CONFIG_DSOUND 1" >> $config_h
841
fi
842
if test "$fmod" = "yes" ; then
843
  echo "CONFIG_FMOD=yes" >> $config_mak
844
  echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
845
  echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
846
  echo "#define CONFIG_FMOD 1" >> $config_h
847
fi
848
qemu_version=`head $source_path/VERSION`
849
echo "VERSION=$qemu_version" >>$config_mak
850
echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
851

    
852
echo "SRC_PATH=$source_path" >> $config_mak
853
if [ "$source_path_used" = "yes" ]; then
854
  echo "VPATH=$source_path" >> $config_mak
855
fi
856
echo "TARGET_DIRS=$target_list" >> $config_mak
857
if [ "$build_docs" = "yes" ] ; then
858
  echo "BUILD_DOCS=yes" >> $config_mak
859
fi
860

    
861
# XXX: suppress that
862
if [ "$bsd" = "yes" ] ; then
863
  echo "#define O_LARGEFILE 0" >> $config_h
864
  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
865
  echo "#define _BSD 1" >> $config_h
866
fi
867

    
868
echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
869

    
870
for target in $target_list; do
871
target_dir="$target"
872
config_mak=$target_dir/config.mak
873
config_h=$target_dir/config.h
874
target_cpu=`echo $target | cut -d '-' -f 1`
875
target_bigendian="no"
876
[ "$target_cpu" = "armeb" ] && target_bigendian=yes
877
[ "$target_cpu" = "sparc" ] && target_bigendian=yes
878
[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
879
[ "$target_cpu" = "ppc" ] && target_bigendian=yes
880
[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
881
[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
882
[ "$target_cpu" = "mips" ] && target_bigendian=yes
883
[ "$target_cpu" = "mips64" ] && target_bigendian=yes
884
[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
885
[ "$target_cpu" = "m68k" ] && target_bigendian=yes
886
target_softmmu="no"
887
target_user_only="no"
888
target_linux_user="no"
889
target_darwin_user="no"
890
case "$target" in
891
  ${target_cpu}-softmmu)
892
    target_softmmu="yes"
893
    ;;
894
  ${target_cpu}-linux-user)
895
    target_user_only="yes"
896
    target_linux_user="yes"
897
    ;;
898
  ${target_cpu}-darwin-user)
899
    target_user_only="yes"
900
    target_darwin_user="yes"
901
    ;;
902
  *)
903
    echo "ERROR: Target '$target' not recognised"
904
    exit 1
905
    ;;
906
esac
907

    
908
if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
909
        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
910
    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
911
    echo "To build QEMU without graphical output configure with --disable-gfx-check"
912
    echo "Note that this will disable all output from the virtual graphics card."
913
    exit 1;
914
fi
915

    
916
#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
917

    
918
mkdir -p $target_dir
919
mkdir -p $target_dir/fpu
920
if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
921
  mkdir -p $target_dir/nwfpe
922
fi
923
if test "$target_user_only" = "no" ; then
924
  mkdir -p $target_dir/slirp
925
fi
926

    
927
#
928
# don't use ln -sf as not all "ln -sf" over write the file/link
929
#
930
rm -f $target_dir/Makefile
931
ln -s $source_path/Makefile.target $target_dir/Makefile
932

    
933

    
934
echo "# Automatically generated by configure - do not modify" > $config_mak
935
echo "/* Automatically generated by configure - do not modify */" > $config_h
936

    
937

    
938
echo "include ../config-host.mak" >> $config_mak
939
echo "#include \"../config-host.h\"" >> $config_h
940

    
941
bflt="no"
942
interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
943
echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
944

    
945
if test "$target_cpu" = "i386" ; then
946
  echo "TARGET_ARCH=i386" >> $config_mak
947
  echo "#define TARGET_ARCH \"i386\"" >> $config_h
948
  echo "#define TARGET_I386 1" >> $config_h
949
  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
950
    echo "#define USE_KQEMU 1" >> $config_h
951
  fi
952
elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
953
  echo "TARGET_ARCH=arm" >> $config_mak
954
  echo "#define TARGET_ARCH \"arm\"" >> $config_h
955
  echo "#define TARGET_ARM 1" >> $config_h
956
  bflt="yes"
957
elif test "$target_cpu" = "sparc" ; then
958
  echo "TARGET_ARCH=sparc" >> $config_mak
959
  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
960
  echo "#define TARGET_SPARC 1" >> $config_h
961
elif test "$target_cpu" = "sparc64" ; then
962
  echo "TARGET_ARCH=sparc64" >> $config_mak
963
  echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
964
  echo "#define TARGET_SPARC 1" >> $config_h
965
  echo "#define TARGET_SPARC64 1" >> $config_h
966
elif test "$target_cpu" = "ppc" ; then
967
  echo "TARGET_ARCH=ppc" >> $config_mak
968
  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
969
  echo "#define TARGET_PPC 1" >> $config_h
970
elif test "$target_cpu" = "ppc64" ; then
971
  echo "TARGET_ARCH=ppc64" >> $config_mak
972
  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
973
  echo "#define TARGET_PPC 1" >> $config_h
974
  echo "#define TARGET_PPC64 1" >> $config_h
975
elif test "$target_cpu" = "ppcemb" ; then
976
  echo "TARGET_ARCH=ppcemb" >> $config_mak
977
  echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
978
  echo "#define TARGET_PPC 1" >> $config_h
979
  echo "#define TARGET_PPCEMB 1" >> $config_h
980
elif test "$target_cpu" = "x86_64" ; then
981
  echo "TARGET_ARCH=x86_64" >> $config_mak
982
  echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
983
  echo "#define TARGET_I386 1" >> $config_h
984
  echo "#define TARGET_X86_64 1" >> $config_h
985
  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
986
    echo "#define USE_KQEMU 1" >> $config_h
987
  fi
988
elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
989
  echo "TARGET_ARCH=mips" >> $config_mak
990
  echo "#define TARGET_ARCH \"mips\"" >> $config_h
991
  echo "#define TARGET_MIPS 1" >> $config_h
992
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
993
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
994
elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
995
  echo "TARGET_ARCH=mips64" >> $config_mak
996
  echo "#define TARGET_ARCH \"mips64\"" >> $config_h
997
  echo "#define TARGET_MIPS 1" >> $config_h
998
  echo "#define TARGET_MIPS64 1" >> $config_h
999
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1000
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1001
elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1002
  echo "TARGET_ARCH=sh4" >> $config_mak
1003
  echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1004
  echo "#define TARGET_SH4 1" >> $config_h
1005
  bflt="yes"
1006
elif test "$target_cpu" = "m68k" ; then
1007
  echo "TARGET_ARCH=m68k" >> $config_mak
1008
  echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1009
  echo "#define TARGET_M68K 1" >> $config_h
1010
  bflt="yes"
1011
elif test "$target_cpu" = "alpha" ; then
1012
  echo "TARGET_ARCH=alpha" >> $config_mak
1013
  echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1014
  echo "#define TARGET_ALPHA 1" >> $config_h
1015
else
1016
  echo "Unsupported target CPU"
1017
  exit 1
1018
fi
1019
if test "$target_bigendian" = "yes" ; then
1020
  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1021
  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1022
fi
1023
if test "$target_softmmu" = "yes" ; then
1024
  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1025
  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1026
fi
1027
if test "$target_user_only" = "yes" ; then
1028
  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1029
  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1030
fi
1031
if test "$target_linux_user" = "yes" ; then
1032
  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1033
  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1034
fi
1035
if test "$target_darwin_user" = "yes" ; then
1036
  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1037
  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1038
fi
1039

    
1040
if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1041
  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1042
  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1043
fi
1044
if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1045
  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1046
  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1047
fi
1048
# sdl defines
1049

    
1050
if test "$target_user_only" = "no"; then
1051
    if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1052
        sdl1=$sdl_static
1053
    else
1054
        sdl1=$sdl
1055
    fi
1056
    if test "$sdl1" = "yes" ; then
1057
        echo "#define CONFIG_SDL 1" >> $config_h
1058
        echo "CONFIG_SDL=yes" >> $config_mak
1059
        if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1060
            echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1061
        else
1062
            echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1063
        fi
1064
        if [ "${aa}" = "yes" ] ; then
1065
            echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1066
        else
1067
            echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1068
        fi
1069
    fi
1070
fi
1071

    
1072
if test "$cocoa" = "yes" ; then
1073
    echo "#define CONFIG_COCOA 1" >> $config_h
1074
    echo "CONFIG_COCOA=yes" >> $config_mak
1075
fi
1076

    
1077
done # for target in $targets
1078

    
1079
# build tree in object directory if source path is different from current one
1080
if test "$source_path_used" = "yes" ; then
1081
    DIRS="tests"
1082
    FILES="Makefile tests/Makefile"
1083
    for dir in $DIRS ; do
1084
            mkdir -p $dir
1085
    done
1086
    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1087
    for f in $FILES ; do
1088
        rm -f $f
1089
        ln -s $source_path/$f $f
1090
    done
1091
fi
1092

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