xref: /qemu/configure (revision 8dd77cca03ac6325bda61dbdb8b8a2021fe524c3)
1#!/bin/sh
2#
3# qemu configure script (c) 2003 Fabrice Bellard
4#
5# set temporary file name
6if test ! -z "$TMPDIR" ; then
7    TMPDIR1="${TMPDIR}"
8elif test ! -z "$TEMPDIR" ; then
9    TMPDIR1="${TEMPDIR}"
10else
11    TMPDIR1="/tmp"
12fi
13
14TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18
19# default parameters
20prefix=""
21interp_prefix="/usr/gnemul/qemu-%M"
22static="no"
23cross_prefix=""
24cc="gcc"
25gcc3_search="yes"
26gcc3_list="gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
27host_cc="gcc"
28ar="ar"
29make="make"
30install="install"
31strip="strip"
32cpu=`uname -m`
33target_list=""
34case "$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  ;;
77esac
78gprof="no"
79bigendian="no"
80mingw32="no"
81EXESUF=""
82gdbstub="yes"
83slirp="yes"
84adlib="no"
85oss="no"
86dsound="no"
87coreaudio="no"
88alsa="no"
89fmod="no"
90fmod_lib=""
91fmod_inc=""
92vnc_tls="yes"
93bsd="no"
94linux="no"
95kqemu="no"
96profiler="no"
97cocoa="no"
98check_gfx="yes"
99check_gcc="yes"
100softmmu="yes"
101linux_user="no"
102darwin_user="no"
103build_docs="no"
104uname_release=""
105
106# OS specific
107targetos=`uname -s`
108case $targetos in
109CYGWIN*)
110mingw32="yes"
111OS_CFLAGS="-mno-cygwin"
112VL_OS_LDFLAGS="-mno-cygwin"
113if [ "$cpu" = "i386" ] ; then
114    kqemu="yes"
115fi
116;;
117MINGW32*)
118mingw32="yes"
119if [ "$cpu" = "i386" ] ; then
120    kqemu="yes"
121fi
122;;
123GNU/kFreeBSD)
124oss="yes"
125if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
126    kqemu="yes"
127fi
128;;
129FreeBSD)
130bsd="yes"
131oss="yes"
132if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
133    kqemu="yes"
134fi
135;;
136NetBSD)
137bsd="yes"
138oss="yes"
139;;
140OpenBSD)
141bsd="yes"
142oss="yes"
143;;
144Darwin)
145bsd="yes"
146darwin="yes"
147darwin_user="yes"
148cocoa="yes"
149coreaudio="yes"
150OS_CFLAGS="-mdynamic-no-pic"
151;;
152SunOS)
153    solaris="yes"
154    make="gmake"
155    install="ginstall"
156    needs_libsunmath="no"
157    solarisrev=`uname -r | cut -f2 -d.`
158    # have to select again, because `uname -m` returns i86pc
159    # even on an x86_64 box.
160    solariscpu=`isainfo -k`
161    if test "${solariscpu}" = "amd64" ; then
162        cpu="x86_64"
163    fi
164    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
165        if test "$solarisrev" -le 9 ; then
166            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
167                needs_libsunmath="yes"
168            else
169                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
170                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
171                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
172                echo "Studio 11 can be downloaded from www.sun.com."
173                exit 1
174            fi
175        fi
176        if test "$solarisrev" -ge 9 ; then
177            kqemu="yes"
178        fi
179    fi
180    if test -f /usr/include/sys/soundcard.h ; then
181        oss=yes
182    fi
183;;
184*)
185oss="yes"
186linux="yes"
187linux_user="yes"
188if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
189    kqemu="yes"
190fi
191;;
192esac
193
194if [ "$bsd" = "yes" ] ; then
195  if [ "$darwin" != "yes" ] ; then
196    make="gmake"
197  fi
198fi
199
200# find source path
201source_path=`dirname "$0"`
202if [ -z "$source_path" ]; then
203    source_path=`pwd`
204else
205    source_path=`cd "$source_path"; pwd`
206fi
207if test "$source_path" = `pwd` ; then
208    source_path_used="no"
209else
210    source_path_used="yes"
211fi
212
213for opt do
214  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
215  case "$opt" in
216  --help|-h) show_help=yes
217  ;;
218  --prefix=*) prefix="$optarg"
219  ;;
220  --interp-prefix=*) interp_prefix="$optarg"
221  ;;
222  --source-path=*) source_path="$optarg"
223  source_path_used="yes"
224  ;;
225  --cross-prefix=*) cross_prefix="$optarg"
226  ;;
227  --cc=*) cc="$optarg"
228  gcc3_search="no"
229  ;;
230  --host-cc=*) host_cc="$optarg"
231  ;;
232  --make=*) make="$optarg"
233  ;;
234  --install=*) install="$optarg"
235  ;;
236  --extra-cflags=*) CFLAGS="$optarg"
237  ;;
238  --extra-ldflags=*) LDFLAGS="$optarg"
239  ;;
240  --cpu=*) cpu="$optarg"
241  ;;
242  --target-list=*) target_list="$optarg"
243  ;;
244  --enable-gprof) gprof="yes"
245  ;;
246  --static) static="yes"
247  ;;
248  --disable-sdl) sdl="no"
249  ;;
250  --enable-coreaudio) coreaudio="yes"
251  ;;
252  --enable-alsa) alsa="yes"
253  ;;
254  --enable-dsound) dsound="yes"
255  ;;
256  --enable-fmod) fmod="yes"
257  ;;
258  --fmod-lib=*) fmod_lib="$optarg"
259  ;;
260  --fmod-inc=*) fmod_inc="$optarg"
261  ;;
262  --disable-vnc-tls) vnc_tls="no"
263  ;;
264  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
265  ;;
266  --disable-slirp) slirp="no"
267  ;;
268  --enable-adlib) adlib="yes"
269  ;;
270  --disable-kqemu) kqemu="no"
271  ;;
272  --enable-profiler) profiler="yes"
273  ;;
274  --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
275  ;;
276  --disable-gfx-check) check_gfx="no"
277  ;;
278  --disable-gcc-check) check_gcc="no"
279  ;;
280  --disable-system) softmmu="no"
281  ;;
282  --enable-system) softmmu="yes"
283  ;;
284  --disable-linux-user) linux_user="no"
285  ;;
286  --enable-linux-user) linux_user="yes"
287  ;;
288  --disable-darwin-user) darwin_user="no"
289  ;;
290  --enable-darwin-user) darwin_user="yes"
291  ;;
292  --enable-uname-release=*) uname_release="$optarg"
293  ;;
294  --sparc_cpu=*)
295      sparc_cpu="$optarg"
296      case $sparc_cpu in
297        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
298                 target_cpu="sparc"; cpu="sparc" ;;
299        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
300                 target_cpu="sparc"; cpu="sparc" ;;
301        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
302                 target_cpu="sparc64"; cpu="sparc64" ;;
303        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
304      esac
305  ;;
306  esac
307done
308
309if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
310    AIOLIBS=
311else
312    AIOLIBS="-lrt"
313fi
314
315# default flags for all hosts
316CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
317LDFLAGS="$LDFLAGS -g"
318
319#
320# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
321# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
322#
323case $cpu in
324    sparc) if test -z "$sparc_cpu" ; then
325               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
326               ARCH_LDFLAGS="-m32"
327           else
328               ARCH_CFLAGS="${SP_CFLAGS}"
329               ARCH_LDFLAGS="${SP_LDFLAGS}"
330           fi
331           ;;
332    sparc64) if test -z "$sparc_cpu" ; then
333               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
334               ARCH_LDFLAGS="-m64"
335           else
336               ARCH_CFLAGS="${SP_CFLAGS}"
337               ARCH_LDFLAGS="${SP_LDFLAGS}"
338           fi
339           ;;
340esac
341
342if [ "$solaris" = "yes" -a  "$cpu" = "x86_64" ] ; then
343    CFLAGS="${CFLAGS} -m64"
344    OS_CFLAGS="${OS_CFLAGS} -m64"
345fi
346
347if [ "$solaris" = "yes" -a  "$cpu" = "i386" ] ; then
348    CFLAGS="${CFLAGS} -m32"
349    OS_CFLAGS="${OS_CFLAGS} -m32"
350fi
351
352if test x"$show_help" = x"yes" ; then
353cat << EOF
354
355Usage: configure [options]
356Options: [defaults in brackets after descriptions]
357
358EOF
359echo "Standard options:"
360echo "  --help                   print this message"
361echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
362echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
363echo "                           use %M for cpu name [$interp_prefix]"
364echo "  --target-list=LIST       set target list [$target_list]"
365echo ""
366echo "kqemu kernel acceleration support:"
367echo "  --disable-kqemu          disable kqemu support"
368echo ""
369echo "Advanced options (experts only):"
370echo "  --source-path=PATH       path of source code [$source_path]"
371echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
372echo "  --cc=CC                  use C compiler CC [$cc]"
373echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
374echo "  --make=MAKE              use specified make [$make]"
375echo "  --install=INSTALL        use specified install [$install]"
376echo "  --static                 enable static build [$static]"
377echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
378echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
379echo "  --enable-adlib           enable Adlib emulation"
380echo "  --enable-coreaudio       enable Coreaudio audio driver"
381echo "  --enable-alsa            enable ALSA audio driver"
382echo "  --enable-fmod            enable FMOD audio driver"
383echo "  --enable-dsound          enable DirectSound audio driver"
384echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
385echo "  --enable-system          enable all system emulation targets"
386echo "  --disable-system         disable all system emulation targets"
387echo "  --enable-linux-user      enable all linux usermode emulation targets"
388echo "  --disable-linux-user     disable all linux usermode emulation targets"
389echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
390echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
391echo "  --fmod-lib               path to FMOD library"
392echo "  --fmod-inc               path to FMOD includes"
393echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
394echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
395echo ""
396echo "NOTE: The object files are built at the place where configure is launched"
397exit 1
398fi
399
400cc="${cross_prefix}${cc}"
401ar="${cross_prefix}${ar}"
402strip="${cross_prefix}${strip}"
403
404# check that the C compiler works.
405cat > $TMPC <<EOF
406int main(void) {}
407EOF
408
409if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
410  : C compiler works ok
411else
412    echo "ERROR: \"$cc\" either does not exist or does not work"
413    exit 1
414fi
415
416if test "$mingw32" = "yes" ; then
417    linux="no"
418    EXESUF=".exe"
419    oss="no"
420fi
421
422# Check for gcc4, error if pre-gcc4
423if test "$check_gcc" = "yes" ; then
424    cat > $TMPC <<EOF
425#if __GNUC__ < 4
426#error gcc3
427#endif
428int main(){return 0;}
429EOF
430    if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
431	echo "WARNING: \"$cc\" looks like gcc 4.x"
432	found_compat_cc="no"
433	if test "$gcc3_search" = "yes" ; then
434	    echo "Looking for gcc 3.x"
435	    for compat_cc in $gcc3_list ; do
436		if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
437		    echo "Found \"$compat_cc\""
438		    cc="$cross_prefix$compat_cc"
439		    found_compat_cc="yes"
440		    break
441		fi
442	    done
443	    if test "$found_compat_cc" = "no" ; then
444		echo "gcc 3.x not found!"
445	    fi
446	fi
447	if test "$found_compat_cc" = "no" ; then
448	    echo "QEMU is known to have problems when compiled with gcc 4.x"
449	    echo "It is recommended that you use gcc 3.x to build QEMU"
450	    echo "To use this compiler anyway, configure with --disable-gcc-check"
451	    exit 1;
452	fi
453    fi
454fi
455
456#
457# Solaris specific configure tool chain decisions
458#
459if test "$solaris" = "yes" ; then
460  #
461  # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
462  # override the check with --disable-gcc-check
463  #
464  if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
465    solgcc=`which $cc`
466    if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
467      echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
468      echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
469      echo "or get the latest patch from SunSolve for gcc"
470      exit 1
471    fi
472  fi
473  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
474  if test -z "$solinst" ; then
475    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
476    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
477    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
478    exit 1
479  fi
480  if test "$solinst" = "/usr/sbin/install" ; then
481    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
482    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
483    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
484    exit 1
485  fi
486  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
487  if test -z "$sol_ar" ; then
488    echo "Error: No path includes ar"
489    if test -f /usr/ccs/bin/ar ; then
490      echo "Add /usr/ccs/bin to your path and rerun configure"
491    fi
492    exit 1
493  fi
494fi
495
496
497if test -z "$target_list" ; then
498# these targets are portable
499    if [ "$softmmu" = "yes" ] ; then
500        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"
501    fi
502# the following are Linux specific
503    if [ "$linux_user" = "yes" ] ; then
504        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"
505    fi
506# the following are Darwin specific
507    if [ "$darwin_user" = "yes" ] ; then
508        target_list="i386-darwin-user ppc-darwin-user $target_list"
509    fi
510else
511    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
512fi
513if test -z "$target_list" ; then
514    echo "No targets enabled"
515    exit 1
516fi
517
518if test -z "$cross_prefix" ; then
519
520# ---
521# big/little endian test
522cat > $TMPC << EOF
523#include <inttypes.h>
524int main(int argc, char ** argv){
525        volatile uint32_t i=0x01234567;
526        return (*((uint8_t*)(&i))) == 0x67;
527}
528EOF
529
530if $cc -o $TMPE $TMPC 2> /dev/null ; then
531$TMPE && bigendian="yes"
532else
533echo big/little test failed
534fi
535
536else
537
538# if cross compiling, cannot launch a program, so make a static guess
539if 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
540    bigendian="yes"
541fi
542
543fi
544
545# host long bits test
546hostlongbits="32"
547if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
548    hostlongbits="64"
549fi
550
551# check gcc options support
552cat > $TMPC <<EOF
553int main(void) {
554}
555EOF
556
557##########################################
558# SDL probe
559
560sdl_too_old=no
561
562if test -z "$sdl" ; then
563    sdl_config="sdl-config"
564    sdl=no
565    sdl_static=no
566
567    if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
568    # win32 cross compilation case
569        sdl_config="i386-mingw32msvc-sdl-config"
570        sdl=yes
571    else
572        # normal SDL probe
573cat > $TMPC << EOF
574#include <SDL.h>
575#undef main /* We don't want SDL to override our main() */
576int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
577EOF
578        if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
579            _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
580            if test "$_sdlversion" -lt 121 ; then
581                sdl_too_old=yes
582            else
583                if test "$cocoa" = "no" ; then
584                    sdl=yes
585                fi
586            fi
587
588            # static link with sdl ?
589            if test "$sdl" = "yes" ; then
590                aa="no"
591                `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
592                sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
593                if [ "$aa" = "yes" ] ; then
594                    sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
595                fi
596
597                if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
598                    sdl_static=yes
599                fi
600            fi # static link
601        fi # sdl compile test
602    fi # cross compilation
603else
604    # Make sure to disable cocoa if sdl was set
605    if test "$sdl" = "yes" ; then
606       cocoa="no"
607       coreaudio="no"
608    fi
609fi # -z $sdl
610
611##########################################
612# VNC TLS detection
613if test "$vnc_tls" = "yes" ; then
614  `pkg-config gnutls` || vnc_tls="no"
615fi
616if test "$vnc_tls" = "yes" ; then
617  vnc_tls_cflags=`pkg-config --cflags gnutls`
618  vnc_tls_libs=`pkg-config --libs gnutls`
619fi
620
621##########################################
622# alsa sound support libraries
623
624if test "$alsa" = "yes" ; then
625  cat > $TMPC << EOF
626#include <alsa/asoundlib.h>
627int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
628EOF
629  if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
630    :
631  else
632    echo
633    echo "Error: Could not find alsa"
634    echo "Make sure to have the alsa libs and headers installed."
635    echo
636    exit 1
637  fi
638fi
639
640# Check if tools are available to build documentation.
641if [ -x "`which texi2html 2>/dev/null`" ] && \
642   [ -x "`which pod2man 2>/dev/null`" ]; then
643  build_docs="yes"
644fi
645
646if test "$mingw32" = "yes" ; then
647  if test -z "$prefix" ; then
648      prefix="/c/Program Files/Qemu"
649  fi
650  mansuffix=""
651  datasuffix=""
652  docsuffix=""
653  binsuffix=""
654else
655  if test -z "$prefix" ; then
656      prefix="/usr/local"
657  fi
658  mansuffix="/share/man"
659  datasuffix="/share/qemu"
660  docsuffix="/share/doc/qemu"
661  binsuffix="/bin"
662fi
663
664echo "Install prefix    $prefix"
665echo "BIOS directory    $prefix$datasuffix"
666echo "binary directory  $prefix$binsuffix"
667if test "$mingw32" = "no" ; then
668echo "Manual directory  $prefix$mansuffix"
669echo "ELF interp prefix $interp_prefix"
670fi
671echo "Source path       $source_path"
672echo "C compiler        $cc"
673echo "Host C compiler   $host_cc"
674echo "make              $make"
675echo "install           $install"
676echo "host CPU          $cpu"
677echo "host big endian   $bigendian"
678echo "target list       $target_list"
679echo "gprof enabled     $gprof"
680echo "profiler          $profiler"
681echo "static build      $static"
682if test "$darwin" = "yes" ; then
683    echo "Cocoa support     $cocoa"
684fi
685echo "SDL support       $sdl"
686if test "$sdl" != "no" ; then
687    echo "SDL static link   $sdl_static"
688fi
689echo "mingw32 support   $mingw32"
690echo "Adlib support     $adlib"
691echo "CoreAudio support $coreaudio"
692echo "ALSA support      $alsa"
693echo "DSound support    $dsound"
694if test "$fmod" = "yes"; then
695    if test -z $fmod_lib || test -z $fmod_inc; then
696        echo
697        echo "Error: You must specify path to FMOD library and headers"
698        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
699        echo
700        exit 1
701    fi
702    fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
703else
704    fmod_support=""
705fi
706echo "FMOD support      $fmod $fmod_support"
707echo "OSS support       $oss"
708echo "VNC TLS support   $vnc_tls"
709if test "$vnc_tls" = "yes" ; then
710    echo "    TLS CFLAGS    $vnc_tls_cflags"
711    echo "    TLS LIBS      $vnc_tls_libs"
712fi
713if test -n "$sparc_cpu"; then
714    echo "Target Sparc Arch $sparc_cpu"
715fi
716echo "kqemu support     $kqemu"
717echo "Documentation     $build_docs"
718[ ! -z "$uname_release" ] && \
719echo "uname -r          $uname_release"
720
721if test $sdl_too_old = "yes"; then
722echo "-> Your SDL version is too old - please upgrade to have SDL support"
723fi
724if [ -s /tmp/qemu-$$-sdl-config.log ]; then
725  echo "The error log from compiling the libSDL test is: "
726  cat /tmp/qemu-$$-sdl-config.log
727fi
728rm -f /tmp/qemu-$$-sdl-config.log
729#if test "$sdl_static" = "no"; then
730#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
731#fi
732config_mak="config-host.mak"
733config_h="config-host.h"
734
735#echo "Creating $config_mak and $config_h"
736
737test -f $config_h && mv $config_h ${config_h}~
738
739echo "# Automatically generated by configure - do not modify" > $config_mak
740echo "# Configured with: $0 $@" >> $config_mak
741echo "/* Automatically generated by configure - do not modify */" > $config_h
742
743echo "prefix=$prefix" >> $config_mak
744echo "bindir=\${prefix}$binsuffix" >> $config_mak
745echo "mandir=\${prefix}$mansuffix" >> $config_mak
746echo "datadir=\${prefix}$datasuffix" >> $config_mak
747echo "docdir=\${prefix}$docsuffix" >> $config_mak
748echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
749echo "MAKE=$make" >> $config_mak
750echo "INSTALL=$install" >> $config_mak
751echo "CC=$cc" >> $config_mak
752echo "HOST_CC=$host_cc" >> $config_mak
753echo "AR=$ar" >> $config_mak
754echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
755echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
756echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
757echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
758echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
759echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
760echo "CFLAGS=$CFLAGS" >> $config_mak
761echo "LDFLAGS=$LDFLAGS" >> $config_mak
762echo "EXESUF=$EXESUF" >> $config_mak
763echo "AIOLIBS=$AIOLIBS" >> $config_mak
764if test "$cpu" = "i386" ; then
765  echo "ARCH=i386" >> $config_mak
766  echo "#define HOST_I386 1" >> $config_h
767elif test "$cpu" = "x86_64" ; then
768  echo "ARCH=x86_64" >> $config_mak
769  echo "#define HOST_X86_64 1" >> $config_h
770elif test "$cpu" = "armv4b" ; then
771  echo "ARCH=arm" >> $config_mak
772  echo "#define HOST_ARM 1" >> $config_h
773elif test "$cpu" = "armv4l" ; then
774  echo "ARCH=arm" >> $config_mak
775  echo "#define HOST_ARM 1" >> $config_h
776elif test "$cpu" = "powerpc" ; then
777  echo "ARCH=ppc" >> $config_mak
778  echo "#define HOST_PPC 1" >> $config_h
779elif test "$cpu" = "mips" ; then
780  echo "ARCH=mips" >> $config_mak
781  echo "#define HOST_MIPS 1" >> $config_h
782elif test "$cpu" = "mips64" ; then
783  echo "ARCH=mips64" >> $config_mak
784  echo "#define HOST_MIPS64 1" >> $config_h
785elif test "$cpu" = "s390" ; then
786  echo "ARCH=s390" >> $config_mak
787  echo "#define HOST_S390 1" >> $config_h
788elif test "$cpu" = "alpha" ; then
789  echo "ARCH=alpha" >> $config_mak
790  echo "#define HOST_ALPHA 1" >> $config_h
791elif test "$cpu" = "sparc" ; then
792  echo "ARCH=sparc" >> $config_mak
793  echo "#define HOST_SPARC 1" >> $config_h
794elif test "$cpu" = "sparc64" ; then
795  echo "ARCH=sparc64" >> $config_mak
796  echo "#define HOST_SPARC64 1" >> $config_h
797elif test "$cpu" = "ia64" ; then
798  echo "ARCH=ia64" >> $config_mak
799  echo "#define HOST_IA64 1" >> $config_h
800elif test "$cpu" = "m68k" ; then
801  echo "ARCH=m68k" >> $config_mak
802  echo "#define HOST_M68K 1" >> $config_h
803else
804  echo "Unsupported CPU = $cpu"
805  exit 1
806fi
807if test "$bigendian" = "yes" ; then
808  echo "WORDS_BIGENDIAN=yes" >> $config_mak
809  echo "#define WORDS_BIGENDIAN 1" >> $config_h
810fi
811echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
812if test "$mingw32" = "yes" ; then
813  echo "CONFIG_WIN32=yes" >> $config_mak
814  echo "#define CONFIG_WIN32 1" >> $config_h
815else
816  cat > $TMPC << EOF
817#include <byteswap.h>
818int main(void) { return bswap_32(0); }
819EOF
820  if $cc -o $TMPE $TMPC 2> /dev/null ; then
821    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
822  fi
823fi
824if test "$darwin" = "yes" ; then
825  echo "CONFIG_DARWIN=yes" >> $config_mak
826  echo "#define CONFIG_DARWIN 1" >> $config_h
827fi
828if test "$solaris" = "yes" ; then
829  echo "CONFIG_SOLARIS=yes" >> $config_mak
830  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
831  if test "$needs_libsunmath" = "yes" ; then
832    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
833    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
834  fi
835fi
836if test -n "$sparc_cpu"; then
837  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
838  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
839fi
840if test "$gdbstub" = "yes" ; then
841  echo "CONFIG_GDBSTUB=yes" >> $config_mak
842  echo "#define CONFIG_GDBSTUB 1" >> $config_h
843fi
844if test "$gprof" = "yes" ; then
845  echo "TARGET_GPROF=yes" >> $config_mak
846  echo "#define HAVE_GPROF 1" >> $config_h
847fi
848if test "$static" = "yes" ; then
849  echo "CONFIG_STATIC=yes" >> $config_mak
850  echo "#define CONFIG_STATIC 1" >> $config_h
851fi
852if test $profiler = "yes" ; then
853  echo "#define CONFIG_PROFILER 1" >> $config_h
854fi
855if test "$slirp" = "yes" ; then
856  echo "CONFIG_SLIRP=yes" >> $config_mak
857  echo "#define CONFIG_SLIRP 1" >> $config_h
858fi
859if test "$adlib" = "yes" ; then
860  echo "CONFIG_ADLIB=yes" >> $config_mak
861  echo "#define CONFIG_ADLIB 1" >> $config_h
862fi
863if test "$oss" = "yes" ; then
864  echo "CONFIG_OSS=yes" >> $config_mak
865  echo "#define CONFIG_OSS 1" >> $config_h
866fi
867if test "$coreaudio" = "yes" ; then
868  echo "CONFIG_COREAUDIO=yes" >> $config_mak
869  echo "#define CONFIG_COREAUDIO 1" >> $config_h
870fi
871if test "$alsa" = "yes" ; then
872  echo "CONFIG_ALSA=yes" >> $config_mak
873  echo "#define CONFIG_ALSA 1" >> $config_h
874fi
875if test "$dsound" = "yes" ; then
876  echo "CONFIG_DSOUND=yes" >> $config_mak
877  echo "#define CONFIG_DSOUND 1" >> $config_h
878fi
879if test "$fmod" = "yes" ; then
880  echo "CONFIG_FMOD=yes" >> $config_mak
881  echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
882  echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
883  echo "#define CONFIG_FMOD 1" >> $config_h
884fi
885if test "$vnc_tls" = "yes" ; then
886  echo "CONFIG_VNC_TLS=yes" >> $config_mak
887  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
888  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
889  echo "#define CONFIG_VNC_TLS 1" >> $config_h
890fi
891qemu_version=`head $source_path/VERSION`
892echo "VERSION=$qemu_version" >>$config_mak
893echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
894
895echo "SRC_PATH=$source_path" >> $config_mak
896if [ "$source_path_used" = "yes" ]; then
897  echo "VPATH=$source_path" >> $config_mak
898fi
899echo "TARGET_DIRS=$target_list" >> $config_mak
900if [ "$build_docs" = "yes" ] ; then
901  echo "BUILD_DOCS=yes" >> $config_mak
902fi
903
904# XXX: suppress that
905if [ "$bsd" = "yes" ] ; then
906  echo "#define O_LARGEFILE 0" >> $config_h
907  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
908  echo "#define _BSD 1" >> $config_h
909fi
910
911echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
912
913tools=
914if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
915  tools="qemu-img\$(EXESUF) $tools"
916fi
917echo "TOOLS=$tools" >> $config_mak
918
919test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
920
921for target in $target_list; do
922target_dir="$target"
923config_mak=$target_dir/config.mak
924config_h=$target_dir/config.h
925target_cpu=`echo $target | cut -d '-' -f 1`
926target_bigendian="no"
927[ "$target_cpu" = "armeb" ] && target_bigendian=yes
928[ "$target_cpu" = "sparc" ] && target_bigendian=yes
929[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
930[ "$target_cpu" = "ppc" ] && target_bigendian=yes
931[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
932[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
933[ "$target_cpu" = "mips" ] && target_bigendian=yes
934[ "$target_cpu" = "mips64" ] && target_bigendian=yes
935[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
936[ "$target_cpu" = "m68k" ] && target_bigendian=yes
937target_softmmu="no"
938target_user_only="no"
939target_linux_user="no"
940target_darwin_user="no"
941case "$target" in
942  ${target_cpu}-softmmu)
943    target_softmmu="yes"
944    ;;
945  ${target_cpu}-linux-user)
946    target_user_only="yes"
947    target_linux_user="yes"
948    ;;
949  ${target_cpu}-darwin-user)
950    target_user_only="yes"
951    target_darwin_user="yes"
952    ;;
953  *)
954    echo "ERROR: Target '$target' not recognised"
955    exit 1
956    ;;
957esac
958
959if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
960        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
961    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
962    echo "To build QEMU without graphical output configure with --disable-gfx-check"
963    echo "Note that this will disable all output from the virtual graphics card."
964    exit 1;
965fi
966
967#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
968
969test -f $config_h && mv $config_h ${config_h}~
970
971mkdir -p $target_dir
972mkdir -p $target_dir/fpu
973if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
974  mkdir -p $target_dir/nwfpe
975fi
976if test "$target_user_only" = "no" ; then
977  mkdir -p $target_dir/slirp
978fi
979
980#
981# don't use ln -sf as not all "ln -sf" over write the file/link
982#
983rm -f $target_dir/Makefile
984ln -s $source_path/Makefile.target $target_dir/Makefile
985
986
987echo "# Automatically generated by configure - do not modify" > $config_mak
988echo "/* Automatically generated by configure - do not modify */" > $config_h
989
990
991echo "include ../config-host.mak" >> $config_mak
992echo "#include \"../config-host.h\"" >> $config_h
993
994bflt="no"
995interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
996echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
997
998if test "$target_cpu" = "i386" ; then
999  echo "TARGET_ARCH=i386" >> $config_mak
1000  echo "#define TARGET_ARCH \"i386\"" >> $config_h
1001  echo "#define TARGET_I386 1" >> $config_h
1002  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1003    echo "#define USE_KQEMU 1" >> $config_h
1004  fi
1005elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1006  echo "TARGET_ARCH=arm" >> $config_mak
1007  echo "#define TARGET_ARCH \"arm\"" >> $config_h
1008  echo "#define TARGET_ARM 1" >> $config_h
1009  bflt="yes"
1010elif test "$target_cpu" = "sparc" ; then
1011  echo "TARGET_ARCH=sparc" >> $config_mak
1012  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1013  echo "#define TARGET_SPARC 1" >> $config_h
1014elif test "$target_cpu" = "sparc64" ; then
1015  echo "TARGET_ARCH=sparc64" >> $config_mak
1016  echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1017  echo "#define TARGET_SPARC 1" >> $config_h
1018  echo "#define TARGET_SPARC64 1" >> $config_h
1019elif test "$target_cpu" = "ppc" ; then
1020  echo "TARGET_ARCH=ppc" >> $config_mak
1021  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1022  echo "#define TARGET_PPC 1" >> $config_h
1023elif test "$target_cpu" = "ppc64" ; then
1024  echo "TARGET_ARCH=ppc64" >> $config_mak
1025  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1026  echo "#define TARGET_PPC 1" >> $config_h
1027  echo "#define TARGET_PPC64 1" >> $config_h
1028elif test "$target_cpu" = "ppcemb" ; then
1029  echo "TARGET_ARCH=ppcemb" >> $config_mak
1030  echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1031  echo "#define TARGET_PPC 1" >> $config_h
1032  echo "#define TARGET_PPCEMB 1" >> $config_h
1033elif test "$target_cpu" = "x86_64" ; then
1034  echo "TARGET_ARCH=x86_64" >> $config_mak
1035  echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1036  echo "#define TARGET_I386 1" >> $config_h
1037  echo "#define TARGET_X86_64 1" >> $config_h
1038  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
1039    echo "#define USE_KQEMU 1" >> $config_h
1040  fi
1041elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1042  echo "TARGET_ARCH=mips" >> $config_mak
1043  echo "#define TARGET_ARCH \"mips\"" >> $config_h
1044  echo "#define TARGET_MIPS 1" >> $config_h
1045  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1046  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1047elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1048  echo "TARGET_ARCH=mips64" >> $config_mak
1049  echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1050  echo "#define TARGET_MIPS 1" >> $config_h
1051  echo "#define TARGET_MIPS64 1" >> $config_h
1052  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1053  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1054elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1055  echo "TARGET_ARCH=sh4" >> $config_mak
1056  echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1057  echo "#define TARGET_SH4 1" >> $config_h
1058  bflt="yes"
1059elif test "$target_cpu" = "m68k" ; then
1060  echo "TARGET_ARCH=m68k" >> $config_mak
1061  echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1062  echo "#define TARGET_M68K 1" >> $config_h
1063  bflt="yes"
1064elif test "$target_cpu" = "alpha" ; then
1065  echo "TARGET_ARCH=alpha" >> $config_mak
1066  echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1067  echo "#define TARGET_ALPHA 1" >> $config_h
1068else
1069  echo "Unsupported target CPU"
1070  exit 1
1071fi
1072if test "$target_bigendian" = "yes" ; then
1073  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1074  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1075fi
1076if test "$target_softmmu" = "yes" ; then
1077  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1078  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1079fi
1080if test "$target_user_only" = "yes" ; then
1081  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1082  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1083fi
1084if test "$target_linux_user" = "yes" ; then
1085  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1086  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1087fi
1088if test "$target_darwin_user" = "yes" ; then
1089  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1090  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1091fi
1092
1093if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1094  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1095  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1096fi
1097if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1098  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1099  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1100fi
1101# sdl defines
1102
1103if test "$target_user_only" = "no"; then
1104    if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1105        sdl1=$sdl_static
1106    else
1107        sdl1=$sdl
1108    fi
1109    if test "$sdl1" = "yes" ; then
1110        echo "#define CONFIG_SDL 1" >> $config_h
1111        echo "CONFIG_SDL=yes" >> $config_mak
1112        if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1113            echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1114        else
1115            echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1116        fi
1117        if [ "${aa}" = "yes" ] ; then
1118            echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1119        else
1120            echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1121        fi
1122    fi
1123fi
1124
1125if test "$cocoa" = "yes" ; then
1126    echo "#define CONFIG_COCOA 1" >> $config_h
1127    echo "CONFIG_COCOA=yes" >> $config_mak
1128fi
1129
1130test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1131
1132done # for target in $targets
1133
1134# build tree in object directory if source path is different from current one
1135if test "$source_path_used" = "yes" ; then
1136    DIRS="tests"
1137    FILES="Makefile tests/Makefile"
1138    for dir in $DIRS ; do
1139            mkdir -p $dir
1140    done
1141    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1142    for f in $FILES ; do
1143        rm -f $f
1144        ln -s $source_path/$f $f
1145    done
1146fi
1147
1148rm -f $TMPO $TMPC $TMPE $TMPS
1149