xref: /openbmc/qemu/configure (revision 1d6198c3b01619151f3227c6461b3d53eeb711e5)
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"
18TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
19TMPSDLLOG="${TMPDIR1}/qemu-conf-sdl-$$-${RANDOM}.log"
20
21trap "rm -f $TMPC $TMPO $TMPE $TMPS $TMPI $TMPSDLLOG; exit" 0 2 3 15
22
23# default parameters
24prefix=""
25interp_prefix="/usr/gnemul/qemu-%M"
26static="no"
27cross_prefix=""
28cc="gcc"
29audio_drv_list=""
30audio_card_list=""
31host_cc="gcc"
32ar="ar"
33make="make"
34install="install"
35strip="strip"
36cpu=`test $(uname -s) = AIX && uname -p || uname -m`
37target_list=""
38case "$cpu" in
39  i386|i486|i586|i686|i86pc|BePC)
40    cpu="i386"
41  ;;
42  x86_64|amd64)
43    cpu="x86_64"
44  ;;
45  alpha)
46    cpu="alpha"
47  ;;
48  armv*b)
49    cpu="armv4b"
50  ;;
51  armv*l)
52    cpu="armv4l"
53  ;;
54  cris)
55    cpu="cris"
56  ;;
57  parisc|parisc64)
58    cpu="hppa"
59  ;;
60  ia64)
61    cpu="ia64"
62  ;;
63  m68k)
64    cpu="m68k"
65  ;;
66  mips)
67    cpu="mips"
68  ;;
69  mips64)
70    cpu="mips64"
71  ;;
72  "Power Macintosh"|ppc|ppc64|powerpc)
73    cpu="powerpc"
74  ;;
75  s390*)
76    cpu="s390"
77  ;;
78  sparc|sun4[cdmuv])
79    cpu="sparc"
80  ;;
81  sparc64)
82    cpu="sparc64"
83  ;;
84  *)
85    cpu="unknown"
86  ;;
87esac
88gprof="no"
89sparse="no"
90bigendian="no"
91mingw32="no"
92EXESUF=""
93gdbstub="yes"
94slirp="yes"
95vde="yes"
96fmod_lib=""
97fmod_inc=""
98oss_lib=""
99vnc_tls="yes"
100bsd="no"
101linux="no"
102solaris="no"
103kqemu="no"
104profiler="no"
105cocoa="no"
106check_gfx="yes"
107softmmu="yes"
108linux_user="no"
109darwin_user="no"
110bsd_user="no"
111build_docs="no"
112uname_release=""
113curses="yes"
114aio="yes"
115nptl="yes"
116mixemu="no"
117bluez="yes"
118kvm="yes"
119kerneldir=""
120aix="no"
121blobs="yes"
122
123# OS specific
124targetos=`uname -s`
125case $targetos in
126CYGWIN*)
127mingw32="yes"
128OS_CFLAGS="-mno-cygwin"
129if [ "$cpu" = "i386" ] ; then
130    kqemu="yes"
131fi
132audio_possible_drivers="sdl"
133;;
134MINGW32*)
135mingw32="yes"
136if [ "$cpu" = "i386" ] ; then
137    kqemu="yes"
138fi
139audio_possible_drivers="dsound sdl fmod"
140;;
141GNU/kFreeBSD)
142audio_drv_list="oss"
143audio_possible_drivers="oss sdl esd pa"
144if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
145    kqemu="yes"
146fi
147;;
148FreeBSD)
149bsd="yes"
150audio_drv_list="oss"
151audio_possible_drivers="oss sdl esd pa"
152if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
153    kqemu="yes"
154fi
155;;
156NetBSD)
157bsd="yes"
158audio_drv_list="oss"
159audio_possible_drivers="oss sdl esd"
160oss_lib="-lossaudio"
161;;
162OpenBSD)
163bsd="yes"
164openbsd="yes"
165audio_drv_list="oss"
166audio_possible_drivers="oss sdl esd"
167oss_lib="-lossaudio"
168;;
169Darwin)
170bsd="yes"
171darwin="yes"
172darwin_user="yes"
173cocoa="yes"
174audio_drv_list="coreaudio"
175audio_possible_drivers="coreaudio sdl fmod"
176OS_CFLAGS="-mdynamic-no-pic"
177OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
178;;
179SunOS)
180    solaris="yes"
181    make="gmake"
182    install="ginstall"
183    needs_libsunmath="no"
184    solarisrev=`uname -r | cut -f2 -d.`
185    # have to select again, because `uname -m` returns i86pc
186    # even on an x86_64 box.
187    solariscpu=`isainfo -k`
188    if test "${solariscpu}" = "amd64" ; then
189        cpu="x86_64"
190    fi
191    if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
192        if test "$solarisrev" -le 9 ; then
193            if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
194                needs_libsunmath="yes"
195            else
196                echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
197                echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
198                echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
199                echo "Studio 11 can be downloaded from www.sun.com."
200                exit 1
201            fi
202        fi
203        if test "$solarisrev" -ge 9 ; then
204            kqemu="yes"
205        fi
206    fi
207    if test -f /usr/include/sys/soundcard.h ; then
208        audio_drv_list="oss"
209    fi
210    audio_possible_drivers="oss sdl"
211;;
212AIX)
213aix="yes"
214make="gmake"
215;;
216*)
217audio_drv_list="oss"
218audio_possible_drivers="oss alsa sdl esd pa"
219linux="yes"
220linux_user="yes"
221usb="linux"
222if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
223    kqemu="yes"
224    audio_possible_drivers="$audio_possible_drivers fmod"
225fi
226;;
227esac
228
229if [ "$bsd" = "yes" ] ; then
230  if [ "$darwin" != "yes" ] ; then
231    make="gmake"
232    usb="bsd"
233  fi
234  bsd_user="yes"
235fi
236
237# find source path
238source_path=`dirname "$0"`
239source_path_used="no"
240workdir=`pwd`
241if [ -z "$source_path" ]; then
242    source_path=$workdir
243else
244    source_path=`cd "$source_path"; pwd`
245fi
246[ -f "$workdir/vl.c" ] || source_path_used="yes"
247
248werror="no"
249# generate compile errors on warnings for development builds
250#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
251#werror="yes";
252#fi
253
254for opt do
255  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
256  case "$opt" in
257  --help|-h) show_help=yes
258  ;;
259  --prefix=*) prefix="$optarg"
260  ;;
261  --interp-prefix=*) interp_prefix="$optarg"
262  ;;
263  --source-path=*) source_path="$optarg"
264  source_path_used="yes"
265  ;;
266  --cross-prefix=*) cross_prefix="$optarg"
267  ;;
268  --cc=*) cc="$optarg"
269  ;;
270  --host-cc=*) host_cc="$optarg"
271  ;;
272  --make=*) make="$optarg"
273  ;;
274  --install=*) install="$optarg"
275  ;;
276  --extra-cflags=*) CFLAGS="$optarg"
277  ;;
278  --extra-ldflags=*) LDFLAGS="$optarg"
279  ;;
280  --cpu=*) cpu="$optarg"
281  ;;
282  --target-list=*) target_list="$optarg"
283  ;;
284  --enable-gprof) gprof="yes"
285  ;;
286  --static) static="yes"
287  ;;
288  --disable-sdl) sdl="no"
289  ;;
290  --fmod-lib=*) fmod_lib="$optarg"
291  ;;
292  --fmod-inc=*) fmod_inc="$optarg"
293  ;;
294  --oss-lib=*) oss_lib="$optarg"
295  ;;
296  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
297  ;;
298  --audio-drv-list=*) audio_drv_list="$optarg"
299  ;;
300  --enable-sparse) sparse="yes"
301  ;;
302  --disable-sparse) sparse="no"
303  ;;
304  --disable-vnc-tls) vnc_tls="no"
305  ;;
306  --disable-slirp) slirp="no"
307  ;;
308  --disable-vde) vde="no"
309  ;;
310  --disable-kqemu) kqemu="no"
311  ;;
312  --disable-brlapi) brlapi="no"
313  ;;
314  --disable-bluez) bluez="no"
315  ;;
316  --disable-kvm) kvm="no"
317  ;;
318  --enable-profiler) profiler="yes"
319  ;;
320  --enable-cocoa)
321      cocoa="yes" ;
322      sdl="no" ;
323      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
324  ;;
325  --disable-gfx-check) check_gfx="no"
326  ;;
327  --disable-system) softmmu="no"
328  ;;
329  --enable-system) softmmu="yes"
330  ;;
331  --disable-linux-user) linux_user="no"
332  ;;
333  --enable-linux-user) linux_user="yes"
334  ;;
335  --disable-darwin-user) darwin_user="no"
336  ;;
337  --enable-darwin-user) darwin_user="yes"
338  ;;
339  --disable-bsd-user) bsd_user="no"
340  ;;
341  --enable-bsd-user) bsd_user="yes"
342  ;;
343  --enable-uname-release=*) uname_release="$optarg"
344  ;;
345  --sparc_cpu=*)
346      sparc_cpu="$optarg"
347      case $sparc_cpu in
348        v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
349                 target_cpu="sparc"; cpu="sparc" ;;
350        v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
351                 target_cpu="sparc"; cpu="sparc" ;;
352        v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
353                 target_cpu="sparc64"; cpu="sparc64" ;;
354        *)     echo "undefined SPARC architecture. Exiting";exit 1;;
355      esac
356  ;;
357  --enable-werror) werror="yes"
358  ;;
359  --disable-werror) werror="no"
360  ;;
361  --disable-curses) curses="no"
362  ;;
363  --disable-nptl) nptl="no"
364  ;;
365  --enable-mixemu) mixemu="yes"
366  ;;
367  --disable-aio) aio="no"
368  ;;
369  --disable-blobs) blobs="no"
370  ;;
371  --kerneldir=*) kerneldir="$optarg"
372  ;;
373  *) echo "ERROR: unknown option $opt"; show_help="yes"
374  ;;
375  esac
376done
377
378# default flags for all hosts
379CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
380CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
381LDFLAGS="$LDFLAGS -g"
382if test "$werror" = "yes" ; then
383CFLAGS="$CFLAGS -Werror"
384fi
385
386if test "$solaris" = "no" ; then
387    if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
388        LDFLAGS="$LDFLAGS -Wl,--warn-common"
389    fi
390fi
391
392#
393# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
394# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
395#
396case "$cpu" in
397    sparc) if test -z "$sparc_cpu" ; then
398               ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
399               ARCH_LDFLAGS="-m32"
400           else
401               ARCH_CFLAGS="${SP_CFLAGS}"
402               ARCH_LDFLAGS="${SP_LDFLAGS}"
403           fi
404           ;;
405    sparc64) if test -z "$sparc_cpu" ; then
406               ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
407               ARCH_LDFLAGS="-m64"
408           else
409               ARCH_CFLAGS="${SP_CFLAGS}"
410               ARCH_LDFLAGS="${SP_LDFLAGS}"
411           fi
412           ;;
413    s390)
414           ARCH_CFLAGS="-march=z900"
415           ;;
416    i386)
417           ARCH_CFLAGS="-m32"
418           ARCH_LDFLAGS="-m32"
419           ;;
420    x86_64)
421           ARCH_CFLAGS="-m64"
422           ARCH_LDFLAGS="-m64"
423           ;;
424esac
425
426if test x"$show_help" = x"yes" ; then
427cat << EOF
428
429Usage: configure [options]
430Options: [defaults in brackets after descriptions]
431
432EOF
433echo "Standard options:"
434echo "  --help                   print this message"
435echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
436echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
437echo "                           use %M for cpu name [$interp_prefix]"
438echo "  --target-list=LIST       set target list [$target_list]"
439echo ""
440echo "kqemu kernel acceleration support:"
441echo "  --disable-kqemu          disable kqemu support"
442echo ""
443echo "Advanced options (experts only):"
444echo "  --source-path=PATH       path of source code [$source_path]"
445echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
446echo "  --cc=CC                  use C compiler CC [$cc]"
447echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
448echo "  --make=MAKE              use specified make [$make]"
449echo "  --install=INSTALL        use specified install [$install]"
450echo "  --static                 enable static build [$static]"
451echo "  --enable-sparse          enable sparse checker"
452echo "  --disable-sparse         disable sparse checker (default)"
453echo "  --disable-werror         disable compilation abort on warning"
454echo "  --disable-sdl            disable SDL"
455echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
456echo "  --audio-drv-list=LIST    set audio drivers list:"
457echo "                           Available drivers: $audio_possible_drivers"
458echo "  --audio-card-list=LIST   set list of additional emulated audio cards"
459echo "                           Available cards: ac97 adlib cs4231a gus"
460echo "  --enable-mixemu          enable mixer emulation"
461echo "  --disable-brlapi         disable BrlAPI"
462echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
463echo "  --disable-curses         disable curses output"
464echo "  --disable-bluez          disable bluez stack connectivity"
465echo "  --disable-kvm            disable KVM acceleration support"
466echo "  --disable-nptl           disable usermode NPTL support"
467echo "  --enable-system          enable all system emulation targets"
468echo "  --disable-system         disable all system emulation targets"
469echo "  --enable-linux-user      enable all linux usermode emulation targets"
470echo "  --disable-linux-user     disable all linux usermode emulation targets"
471echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
472echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
473echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
474echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
475echo "  --fmod-lib               path to FMOD library"
476echo "  --fmod-inc               path to FMOD includes"
477echo "  --oss-lib                path to OSS library"
478echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
479echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
480echo "  --disable-vde            disable support for vde network"
481echo "  --disable-aio            disable AIO support"
482echo "  --disable-blobs          disable installing provided firmware blobs"
483echo "  --kerneldir=PATH         look for kernel includes in PATH"
484echo ""
485echo "NOTE: The object files are built at the place where configure is launched"
486exit 1
487fi
488
489cc="${cross_prefix}${cc}"
490ar="${cross_prefix}${ar}"
491strip="${cross_prefix}${strip}"
492
493# check that the C compiler works.
494cat > $TMPC <<EOF
495int main(void) {}
496EOF
497
498if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
499  : C compiler works ok
500else
501    echo "ERROR: \"$cc\" either does not exist or does not work"
502    exit 1
503fi
504
505# check compiler to see if we're on mingw32
506cat > $TMPC <<EOF
507#include <windows.h>
508#ifndef _WIN32
509#error not windows
510#endif
511int main(void) {}
512EOF
513
514if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
515    mingw32="yes"
516fi
517
518if test "$mingw32" = "yes" ; then
519    linux="no"
520    EXESUF=".exe"
521    oss="no"
522    linux_user="no"
523    bsd_user="no"
524fi
525
526if test ! -x "$(which cgcc 2>/dev/null)"; then
527    sparse="no"
528fi
529
530#
531# Solaris specific configure tool chain decisions
532#
533if test "$solaris" = "yes" ; then
534  solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
535  if test -z "$solinst" ; then
536    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
537    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
538    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
539    exit 1
540  fi
541  if test "$solinst" = "/usr/sbin/install" ; then
542    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
543    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
544    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
545    exit 1
546  fi
547  sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
548  if test -z "$sol_ar" ; then
549    echo "Error: No path includes ar"
550    if test -f /usr/ccs/bin/ar ; then
551      echo "Add /usr/ccs/bin to your path and rerun configure"
552    fi
553    exit 1
554  fi
555fi
556
557
558if test -z "$target_list" ; then
559# these targets are portable
560    if [ "$softmmu" = "yes" ] ; then
561        target_list="\
562i386-softmmu \
563x86_64-softmmu \
564arm-softmmu \
565cris-softmmu \
566m68k-softmmu \
567mips-softmmu \
568mipsel-softmmu \
569mips64-softmmu \
570mips64el-softmmu \
571ppc-softmmu \
572ppcemb-softmmu \
573ppc64-softmmu \
574sh4-softmmu \
575sh4eb-softmmu \
576sparc-softmmu \
577"
578    fi
579# the following are Linux specific
580    if [ "$linux_user" = "yes" ] ; then
581        target_list="${target_list}\
582i386-linux-user \
583x86_64-linux-user \
584alpha-linux-user \
585arm-linux-user \
586armeb-linux-user \
587cris-linux-user \
588m68k-linux-user \
589mips-linux-user \
590mipsel-linux-user \
591ppc-linux-user \
592ppc64-linux-user \
593ppc64abi32-linux-user \
594sh4-linux-user \
595sh4eb-linux-user \
596sparc-linux-user \
597sparc64-linux-user \
598sparc32plus-linux-user \
599"
600    fi
601# the following are Darwin specific
602    if [ "$darwin_user" = "yes" ] ; then
603        target_list="$target_list i386-darwin-user ppc-darwin-user"
604    fi
605# the following are BSD specific
606    if [ "$bsd_user" = "yes" ] ; then
607        target_list="${target_list}\
608sparc64-bsd-user \
609"
610    fi
611else
612    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
613fi
614if test -z "$target_list" ; then
615    echo "No targets enabled"
616    exit 1
617fi
618
619if test -z "$cross_prefix" ; then
620
621# ---
622# big/little endian test
623cat > $TMPC << EOF
624#include <inttypes.h>
625int main(int argc, char ** argv){
626        volatile uint32_t i=0x01234567;
627        return (*((uint8_t*)(&i))) == 0x67;
628}
629EOF
630
631if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
632$TMPE && bigendian="yes"
633else
634echo big/little test failed
635fi
636
637else
638
639# if cross compiling, cannot launch a program, so make a static guess
640if test "$cpu" = "armv4b" \
641     -o "$cpu" = "hppa" \
642     -o "$cpu" = "m68k" \
643     -o "$cpu" = "mips" \
644     -o "$cpu" = "mips64" \
645     -o "$cpu" = "powerpc" \
646     -o "$cpu" = "s390" \
647     -o "$cpu" = "sparc" \
648     -o "$cpu" = "sparc64"; then
649    bigendian="yes"
650fi
651
652fi
653
654# host long bits test
655hostlongbits="32"
656if test "$cpu" = "x86_64" \
657     -o "$cpu" = "alpha" \
658     -o "$cpu" = "ia64" \
659     -o "$cpu" = "sparc64"; then
660    hostlongbits="64"
661fi
662
663# ppc specific hostlongbits selection
664if test "$cpu" = "powerpc" ; then
665    if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
666        grep -q __powerpc64__ $TMPI && hostlongbits=64
667    else
668        echo hostlongbits test failed
669        exit 1
670    fi
671fi
672
673# check gcc options support
674cat > $TMPC <<EOF
675int main(void) {
676}
677EOF
678
679# Check host NPTL support
680cat > $TMPC <<EOF
681#include <sched.h>
682#include <linux/futex.h>
683void foo()
684{
685#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
686#error bork
687#endif
688}
689EOF
690
691if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
692  :
693else
694   nptl="no"
695fi
696
697##########################################
698# zlib check
699
700cat > $TMPC << EOF
701#include <zlib.h>
702int main(void) { zlibVersion(); return 0; }
703EOF
704if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
705    :
706else
707    echo
708    echo "Error: zlib check failed"
709    echo "Make sure to have the zlib libs and headers installed."
710    echo
711    exit 1
712fi
713
714##########################################
715# SDL probe
716
717sdl_too_old=no
718
719if test -z "$sdl" ; then
720    sdl_config="sdl-config"
721    sdl=no
722    sdl_static=no
723
724cat > $TMPC << EOF
725#include <SDL.h>
726#undef main /* We don't want SDL to override our main() */
727int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
728EOF
729    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> $TMPSDLLOG ; then
730        _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
731        if test "$_sdlversion" -lt 121 ; then
732            sdl_too_old=yes
733        else
734            if test "$cocoa" = "no" ; then
735                sdl=yes
736            fi
737        fi
738
739        # static link with sdl ?
740        if test "$sdl" = "yes" ; then
741            aa="no"
742            `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
743            sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
744            if [ "$aa" = "yes" ] ; then
745                sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
746            fi
747
748            if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
749                sdl_static=yes
750            fi
751        fi # static link
752    fi # sdl compile test
753else
754    # Make sure to disable cocoa if sdl was set
755    if test "$sdl" = "yes" ; then
756       cocoa="no"
757       audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
758    fi
759fi # -z $sdl
760
761##########################################
762# VNC TLS detection
763if test "$vnc_tls" = "yes" ; then
764cat > $TMPC <<EOF
765#include <gnutls/gnutls.h>
766int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
767EOF
768    vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
769    vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
770    if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
771           $vnc_tls_libs 2> /dev/null ; then
772	:
773    else
774	vnc_tls="no"
775    fi
776fi
777
778##########################################
779# vde libraries probe
780if test "$vde" = "yes" ; then
781  cat > $TMPC << EOF
782#include <libvdeplug.h>
783int main(void)
784{
785    struct vde_open_args a = {0, 0, 0};
786    vde_open("", "", &a);
787    return 0;
788}
789EOF
790    if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
791        :
792    else
793        vde="no"
794    fi
795fi
796
797##########################################
798# Sound support libraries probe
799
800audio_drv_probe()
801{
802    drv=$1
803    hdr=$2
804    lib=$3
805    exp=$4
806    cfl=$5
807        cat > $TMPC << EOF
808#include <$hdr>
809int main(void) { $exp }
810EOF
811    if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
812        :
813    else
814        echo
815        echo "Error: $drv check failed"
816        echo "Make sure to have the $drv libs and headers installed."
817        echo
818        exit 1
819    fi
820}
821
822audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
823for drv in $audio_drv_list; do
824    case $drv in
825    alsa)
826    audio_drv_probe $drv alsa/asoundlib.h -lasound \
827        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
828    ;;
829
830    fmod)
831    if test -z $fmod_lib || test -z $fmod_inc; then
832        echo
833        echo "Error: You must specify path to FMOD library and headers"
834        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
835        echo
836        exit 1
837    fi
838    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
839    ;;
840
841    esd)
842    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
843    ;;
844
845    pa)
846    audio_drv_probe $drv pulse/simple.h -lpulse-simple \
847        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
848    ;;
849
850    oss|sdl|core|wav|dsound)
851    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
852    ;;
853
854    *)
855    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
856        echo
857        echo "Error: Unknown driver '$drv' selected"
858        echo "Possible drivers are: $audio_possible_drivers"
859        echo
860        exit 1
861    }
862    ;;
863    esac
864done
865
866##########################################
867# BrlAPI probe
868
869if test -z "$brlapi" ; then
870    brlapi=no
871cat > $TMPC << EOF
872#include <brlapi.h>
873int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
874EOF
875    if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
876	    brlapi=yes
877    fi # brlapi compile test
878fi # -z $brlapi
879
880##########################################
881# curses probe
882
883if test "$curses" = "yes" ; then
884  curses=no
885  cat > $TMPC << EOF
886#include <curses.h>
887int main(void) { return curses_version(); }
888EOF
889  if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
890    curses=yes
891  fi
892fi # test "$curses"
893
894##########################################
895# bluez support probe
896if test "$bluez" = "yes" ; then
897  `pkg-config bluez` || bluez="no"
898fi
899if test "$bluez" = "yes" ; then
900  cat > $TMPC << EOF
901#include <bluetooth/bluetooth.h>
902int main(void) { return bt_error(0); }
903EOF
904  bluez_cflags=`pkg-config --cflags bluez`
905  bluez_libs=`pkg-config --libs bluez`
906  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
907      $bluez_libs 2> /dev/null ; then
908    :
909  else
910    bluez="no"
911  fi
912fi
913
914##########################################
915# kvm probe
916if test "$kvm" = "yes" ; then
917    cat > $TMPC <<EOF
918#include <linux/kvm.h>
919#if !defined(KVM_API_VERSION) || \
920    KVM_API_VERSION < 12 || \
921    KVM_API_VERSION > 12 || \
922    !defined(KVM_CAP_USER_MEMORY) || \
923    !defined(KVM_CAP_SET_TSS_ADDR) || \
924    !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
925#error Invalid KVM version
926#endif
927int main(void) { return 0; }
928EOF
929  if test "$kerneldir" != "" ; then
930      kvm_cflags=-I"$kerneldir"/include
931  else
932      kvm_cflags=""
933  fi
934  if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
935      2>/dev/null ; then
936    :
937  else
938    kvm="no"
939  fi
940fi
941
942##########################################
943# AIO probe
944AIOLIBS=""
945
946if test "$aio" = "yes" ; then
947  aio=no
948  cat > $TMPC << EOF
949#include <pthread.h>
950int main(void) { pthread_mutex_t lock; return 0; }
951EOF
952  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
953    aio=yes
954    AIOLIBS="-lpthread"
955  fi
956fi
957
958##########################################
959# iovec probe
960cat > $TMPC <<EOF
961#include <sys/uio.h>
962int main(void) { struct iovec iov; return 0; }
963EOF
964iovec=no
965if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
966  iovec=yes
967fi
968
969# Check if tools are available to build documentation.
970if [ -x "`which texi2html 2>/dev/null`" ] && \
971   [ -x "`which pod2man 2>/dev/null`" ]; then
972  build_docs="yes"
973fi
974
975##########################################
976# Do we need librt
977cat > $TMPC <<EOF
978#include <signal.h>
979#include <time.h>
980int main(void) { clockid_t id; return clock_gettime(id, NULL); }
981EOF
982
983rt=no
984if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
985  :
986elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt 2> /dev/null ; then
987  rt=yes
988fi
989
990if test "$rt" = "yes" ; then
991  # Hack, we should have a general purpose LIBS for this sort of thing
992  AIOLIBS="$AIOLIBS -lrt"
993fi
994
995if test "$mingw32" = "yes" ; then
996  if test -z "$prefix" ; then
997      prefix="c:\\\\Program Files\\\\Qemu"
998  fi
999  mansuffix=""
1000  datasuffix=""
1001  docsuffix=""
1002  binsuffix=""
1003else
1004  if test -z "$prefix" ; then
1005      prefix="/usr/local"
1006  fi
1007  mansuffix="/share/man"
1008  datasuffix="/share/qemu"
1009  docsuffix="/share/doc/qemu"
1010  binsuffix="/bin"
1011fi
1012
1013echo "Install prefix    $prefix"
1014echo "BIOS directory    $prefix$datasuffix"
1015echo "binary directory  $prefix$binsuffix"
1016if test "$mingw32" = "no" ; then
1017echo "Manual directory  $prefix$mansuffix"
1018echo "ELF interp prefix $interp_prefix"
1019fi
1020echo "Source path       $source_path"
1021echo "C compiler        $cc"
1022echo "Host C compiler   $host_cc"
1023echo "ARCH_CFLAGS       $ARCH_CFLAGS"
1024echo "make              $make"
1025echo "install           $install"
1026echo "host CPU          $cpu"
1027echo "host big endian   $bigendian"
1028echo "target list       $target_list"
1029echo "gprof enabled     $gprof"
1030echo "sparse enabled    $sparse"
1031echo "profiler          $profiler"
1032echo "static build      $static"
1033echo "-Werror enabled   $werror"
1034if test "$darwin" = "yes" ; then
1035    echo "Cocoa support     $cocoa"
1036fi
1037echo "SDL support       $sdl"
1038if test "$sdl" != "no" ; then
1039    echo "SDL static link   $sdl_static"
1040fi
1041echo "curses support    $curses"
1042echo "mingw32 support   $mingw32"
1043echo "Audio drivers     $audio_drv_list"
1044echo "Extra audio cards $audio_card_list"
1045echo "Mixer emulation   $mixemu"
1046echo "VNC TLS support   $vnc_tls"
1047if test "$vnc_tls" = "yes" ; then
1048    echo "    TLS CFLAGS    $vnc_tls_cflags"
1049    echo "    TLS LIBS      $vnc_tls_libs"
1050fi
1051if test -n "$sparc_cpu"; then
1052    echo "Target Sparc Arch $sparc_cpu"
1053fi
1054echo "kqemu support     $kqemu"
1055echo "brlapi support    $brlapi"
1056echo "Documentation     $build_docs"
1057[ ! -z "$uname_release" ] && \
1058echo "uname -r          $uname_release"
1059echo "NPTL support      $nptl"
1060echo "vde support       $vde"
1061echo "AIO support       $aio"
1062echo "Install blobs     $blobs"
1063echo "KVM support       $kvm"
1064
1065if test $sdl_too_old = "yes"; then
1066echo "-> Your SDL version is too old - please upgrade to have SDL support"
1067fi
1068if [ -s $TMPSDLLOG ]; then
1069  echo "The error log from compiling the libSDL test is: "
1070  cat $TMPSDLLOG
1071fi
1072#if test "$sdl_static" = "no"; then
1073#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1074#fi
1075config_mak="config-host.mak"
1076config_h="config-host.h"
1077
1078#echo "Creating $config_mak and $config_h"
1079
1080test -f $config_h && mv $config_h ${config_h}~
1081
1082echo "# Automatically generated by configure - do not modify" > $config_mak
1083echo -n "# Configured with:" >> $config_mak
1084printf " '%s'" "$0" "$@" >> $config_mak
1085echo >> $config_mak
1086echo "/* Automatically generated by configure - do not modify */" > $config_h
1087
1088echo "prefix=$prefix" >> $config_mak
1089echo "bindir=\${prefix}$binsuffix" >> $config_mak
1090echo "mandir=\${prefix}$mansuffix" >> $config_mak
1091echo "datadir=\${prefix}$datasuffix" >> $config_mak
1092echo "docdir=\${prefix}$docsuffix" >> $config_mak
1093echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1094echo "MAKE=$make" >> $config_mak
1095echo "INSTALL=$install" >> $config_mak
1096echo "CC=$cc" >> $config_mak
1097echo "HOST_CC=$host_cc" >> $config_mak
1098echo "AR=$ar" >> $config_mak
1099echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1100# XXX: only use CFLAGS and LDFLAGS ?
1101# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1102# compilation of dyngen tool (useful for win32 build on Linux host)
1103echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1104echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1105echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1106echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1107echo "CFLAGS=$CFLAGS" >> $config_mak
1108echo "LDFLAGS=$LDFLAGS" >> $config_mak
1109echo "EXESUF=$EXESUF" >> $config_mak
1110echo "AIOLIBS=$AIOLIBS" >> $config_mak
1111case "$cpu" in
1112  i386)
1113    echo "ARCH=i386" >> $config_mak
1114    echo "#define HOST_I386 1" >> $config_h
1115  ;;
1116  x86_64)
1117    echo "ARCH=x86_64" >> $config_mak
1118    echo "#define HOST_X86_64 1" >> $config_h
1119  ;;
1120  alpha)
1121    echo "ARCH=alpha" >> $config_mak
1122    echo "#define HOST_ALPHA 1" >> $config_h
1123  ;;
1124  armv4b)
1125    echo "ARCH=arm" >> $config_mak
1126    echo "#define HOST_ARM 1" >> $config_h
1127  ;;
1128  armv4l)
1129    echo "ARCH=arm" >> $config_mak
1130    echo "#define HOST_ARM 1" >> $config_h
1131  ;;
1132  cris)
1133    echo "ARCH=cris" >> $config_mak
1134    echo "#define HOST_CRIS 1" >> $config_h
1135  ;;
1136  hppa)
1137    echo "ARCH=hppa" >> $config_mak
1138    echo "#define HOST_HPPA 1" >> $config_h
1139  ;;
1140  ia64)
1141    echo "ARCH=ia64" >> $config_mak
1142    echo "#define HOST_IA64 1" >> $config_h
1143  ;;
1144  m68k)
1145    echo "ARCH=m68k" >> $config_mak
1146    echo "#define HOST_M68K 1" >> $config_h
1147  ;;
1148  mips)
1149    echo "ARCH=mips" >> $config_mak
1150    echo "#define HOST_MIPS 1" >> $config_h
1151  ;;
1152  mips64)
1153    echo "ARCH=mips64" >> $config_mak
1154    echo "#define HOST_MIPS64 1" >> $config_h
1155  ;;
1156  powerpc)
1157  if test "$hostlongbits" = "32"; then
1158      echo "ARCH=ppc" >> $config_mak
1159      echo "#define HOST_PPC 1" >> $config_h
1160  else
1161      echo "ARCH=ppc64" >> $config_mak
1162      echo "#define HOST_PPC64 1" >> $config_h
1163  fi
1164  ;;
1165  s390)
1166    echo "ARCH=s390" >> $config_mak
1167    echo "#define HOST_S390 1" >> $config_h
1168  ;;
1169  sparc)
1170    echo "ARCH=sparc" >> $config_mak
1171    echo "#define HOST_SPARC 1" >> $config_h
1172  ;;
1173  sparc64)
1174    echo "ARCH=sparc64" >> $config_mak
1175    echo "#define HOST_SPARC64 1" >> $config_h
1176  ;;
1177  *)
1178    echo "Unsupported CPU = $cpu"
1179    exit 1
1180  ;;
1181esac
1182if test "$sparse" = "yes" ; then
1183  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_mak
1184  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_mak
1185  echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1186fi
1187if test "$bigendian" = "yes" ; then
1188  echo "WORDS_BIGENDIAN=yes" >> $config_mak
1189  echo "#define WORDS_BIGENDIAN 1" >> $config_h
1190fi
1191echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1192if test "$mingw32" = "yes" ; then
1193  echo "CONFIG_WIN32=yes" >> $config_mak
1194  echo "#define CONFIG_WIN32 1" >> $config_h
1195else
1196  cat > $TMPC << EOF
1197#include <byteswap.h>
1198int main(void) { return bswap_32(0); }
1199EOF
1200  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1201    echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1202  fi
1203  cat > $TMPC << EOF
1204#include <sys/endian.h>
1205#include <sys/types.h>
1206#include <machine/bswap.h>
1207int main(void) { return bswap32(0); }
1208EOF
1209  if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1210    echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
1211  fi
1212fi
1213
1214if [ "$openbsd" = "yes" ] ; then
1215  echo "#define ENOTSUP 4096" >> $config_h
1216fi
1217
1218if test "$darwin" = "yes" ; then
1219  echo "CONFIG_DARWIN=yes" >> $config_mak
1220  echo "#define CONFIG_DARWIN 1" >> $config_h
1221fi
1222
1223if test "$aix" = "yes" ; then
1224  echo "CONFIG_AIX=yes" >> $config_mak
1225  echo "#define CONFIG_AIX 1" >> $config_h
1226fi
1227
1228if test "$solaris" = "yes" ; then
1229  echo "CONFIG_SOLARIS=yes" >> $config_mak
1230  echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1231  if test "$needs_libsunmath" = "yes" ; then
1232    echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1233    echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1234  fi
1235fi
1236if test -n "$sparc_cpu"; then
1237  echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1238  echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1239fi
1240if test "$gdbstub" = "yes" ; then
1241  echo "CONFIG_GDBSTUB=yes" >> $config_mak
1242  echo "#define CONFIG_GDBSTUB 1" >> $config_h
1243fi
1244if test "$gprof" = "yes" ; then
1245  echo "TARGET_GPROF=yes" >> $config_mak
1246  echo "#define HAVE_GPROF 1" >> $config_h
1247fi
1248if test "$static" = "yes" ; then
1249  echo "CONFIG_STATIC=yes" >> $config_mak
1250  echo "#define CONFIG_STATIC 1" >> $config_h
1251fi
1252if test $profiler = "yes" ; then
1253  echo "#define CONFIG_PROFILER 1" >> $config_h
1254fi
1255if test "$slirp" = "yes" ; then
1256  echo "CONFIG_SLIRP=yes" >> $config_mak
1257  echo "#define CONFIG_SLIRP 1" >> $config_h
1258fi
1259if test "$vde" = "yes" ; then
1260  echo "CONFIG_VDE=yes" >> $config_mak
1261  echo "#define CONFIG_VDE 1" >> $config_h
1262  echo "VDE_LIBS=-lvdeplug" >> $config_mak
1263fi
1264for card in $audio_card_list; do
1265    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1266    echo "$def=yes" >> $config_mak
1267    echo "#define $def 1" >> $config_h
1268done
1269echo "#define AUDIO_DRIVERS \\" >> $config_h
1270for drv in $audio_drv_list; do
1271    echo "    &${drv}_audio_driver, \\" >>$config_h
1272    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1273    echo "$def=yes" >> $config_mak
1274    if test "$drv" = "fmod"; then
1275        echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1276        echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1277    elif test "$drv" = "oss"; then
1278        echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1279    fi
1280done
1281echo "" >>$config_h
1282if test "$mixemu" = "yes" ; then
1283  echo "CONFIG_MIXEMU=yes" >> $config_mak
1284  echo "#define CONFIG_MIXEMU 1" >> $config_h
1285fi
1286if test "$vnc_tls" = "yes" ; then
1287  echo "CONFIG_VNC_TLS=yes" >> $config_mak
1288  echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1289  echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1290  echo "#define CONFIG_VNC_TLS 1" >> $config_h
1291fi
1292qemu_version=`head $source_path/VERSION`
1293echo "VERSION=$qemu_version" >>$config_mak
1294echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1295
1296echo "SRC_PATH=$source_path" >> $config_mak
1297if [ "$source_path_used" = "yes" ]; then
1298  echo "VPATH=$source_path" >> $config_mak
1299fi
1300echo "TARGET_DIRS=$target_list" >> $config_mak
1301if [ "$build_docs" = "yes" ] ; then
1302  echo "BUILD_DOCS=yes" >> $config_mak
1303fi
1304if test "$static" = "yes"; then
1305  sdl1=$sdl_static
1306else
1307  sdl1=$sdl
1308fi
1309if test "$sdl1" = "yes" ; then
1310  echo "#define CONFIG_SDL 1" >> $config_h
1311  echo "CONFIG_SDL=yes" >> $config_mak
1312  if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1313    echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1314  else
1315    echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1316  fi
1317  if [ "${aa}" = "yes" ] ; then
1318    echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1319  else
1320    echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1321  fi
1322fi
1323if test "$cocoa" = "yes" ; then
1324  echo "#define CONFIG_COCOA 1" >> $config_h
1325  echo "CONFIG_COCOA=yes" >> $config_mak
1326fi
1327if test "$curses" = "yes" ; then
1328  echo "#define CONFIG_CURSES 1" >> $config_h
1329  echo "CONFIG_CURSES=yes" >> $config_mak
1330  echo "CURSES_LIBS=-lcurses" >> $config_mak
1331fi
1332if test "$brlapi" = "yes" ; then
1333  echo "CONFIG_BRLAPI=yes" >> $config_mak
1334  echo "#define CONFIG_BRLAPI 1" >> $config_h
1335  echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1336fi
1337if test "$bluez" = "yes" ; then
1338  echo "CONFIG_BLUEZ=yes" >> $config_mak
1339  echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1340  echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1341  echo "#define CONFIG_BLUEZ 1" >> $config_h
1342fi
1343if test "$aio" = "yes" ; then
1344  echo "#define CONFIG_AIO 1" >> $config_h
1345  echo "CONFIG_AIO=yes" >> $config_mak
1346fi
1347if test "$blobs" = "yes" ; then
1348  echo "INSTALL_BLOBS=yes" >> $config_mak
1349fi
1350if test "$iovec" = "yes" ; then
1351  echo "#define HAVE_IOVEC 1" >> $config_h
1352fi
1353
1354# XXX: suppress that
1355if [ "$bsd" = "yes" ] ; then
1356  echo "#define O_LARGEFILE 0" >> $config_h
1357  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1358  echo "#define _BSD 1" >> $config_h
1359fi
1360
1361echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1362
1363# USB host support
1364case "$usb" in
1365linux)
1366  echo "HOST_USB=linux" >> $config_mak
1367;;
1368bsd)
1369  echo "HOST_USB=bsd" >> $config_mak
1370;;
1371*)
1372  echo "HOST_USB=stub" >> $config_mak
1373;;
1374esac
1375
1376tools=
1377if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1378  tools="qemu-img\$(EXESUF) $tools"
1379  if [ "$linux" = "yes" ] ; then
1380      tools="qemu-nbd\$(EXESUF) $tools"
1381  fi
1382fi
1383echo "TOOLS=$tools" >> $config_mak
1384
1385test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1386
1387for target in $target_list; do
1388target_dir="$target"
1389config_mak=$target_dir/config.mak
1390config_h=$target_dir/config.h
1391target_cpu=`echo $target | cut -d '-' -f 1`
1392target_bigendian="no"
1393[ "$target_cpu" = "armeb" ] && target_bigendian=yes
1394[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1395[ "$target_cpu" = "mips" ] && target_bigendian=yes
1396[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1397[ "$target_cpu" = "mips64" ] && target_bigendian=yes
1398[ "$target_cpu" = "ppc" ] && target_bigendian=yes
1399[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1400[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1401[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1402[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1403[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1404[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1405[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1406target_softmmu="no"
1407target_user_only="no"
1408target_linux_user="no"
1409target_darwin_user="no"
1410target_bsd_user="no"
1411case "$target" in
1412  ${target_cpu}-softmmu)
1413    target_softmmu="yes"
1414    ;;
1415  ${target_cpu}-linux-user)
1416    target_user_only="yes"
1417    target_linux_user="yes"
1418    ;;
1419  ${target_cpu}-darwin-user)
1420    target_user_only="yes"
1421    target_darwin_user="yes"
1422    ;;
1423  ${target_cpu}-bsd-user)
1424    target_user_only="yes"
1425    target_bsd_user="yes"
1426    ;;
1427  *)
1428    echo "ERROR: Target '$target' not recognised"
1429    exit 1
1430    ;;
1431esac
1432
1433if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1434        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1435    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1436    echo "To build QEMU without graphical output configure with --disable-gfx-check"
1437    echo "Note that this will disable all output from the virtual graphics card"
1438    echo "except through VNC or curses."
1439    exit 1;
1440fi
1441
1442#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1443
1444test -f $config_h && mv $config_h ${config_h}~
1445
1446mkdir -p $target_dir
1447mkdir -p $target_dir/fpu
1448mkdir -p $target_dir/tcg
1449if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1450  mkdir -p $target_dir/nwfpe
1451fi
1452
1453#
1454# don't use ln -sf as not all "ln -sf" over write the file/link
1455#
1456rm -f $target_dir/Makefile
1457ln -s $source_path/Makefile.target $target_dir/Makefile
1458
1459
1460echo "# Automatically generated by configure - do not modify" > $config_mak
1461echo "/* Automatically generated by configure - do not modify */" > $config_h
1462
1463
1464echo "include ../config-host.mak" >> $config_mak
1465echo "#include \"../config-host.h\"" >> $config_h
1466
1467bflt="no"
1468elfload32="no"
1469target_nptl="no"
1470interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1471echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1472gdb_xml_files=""
1473
1474# Make sure the target and host cpus are compatible
1475if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1476  \( "$target_cpu" = "x86_64" -a "$cpu" = "i386"   \) -o \
1477  \( "$target_cpu" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
1478  kvm="no"
1479fi
1480# Disable KVM for linux-user
1481if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1482  kvm="no"
1483fi
1484
1485case "$target_cpu" in
1486  i386)
1487    echo "TARGET_ARCH=i386" >> $config_mak
1488    echo "#define TARGET_ARCH \"i386\"" >> $config_h
1489    echo "#define TARGET_I386 1" >> $config_h
1490    if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1491    then
1492      echo "#define USE_KQEMU 1" >> $config_h
1493    fi
1494    if test "$kvm" = "yes" ; then
1495      echo "CONFIG_KVM=yes" >> $config_mak
1496      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1497      echo "#define CONFIG_KVM 1" >> $config_h
1498    fi
1499  ;;
1500  x86_64)
1501    echo "TARGET_ARCH=x86_64" >> $config_mak
1502    echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1503    echo "#define TARGET_I386 1" >> $config_h
1504    echo "#define TARGET_X86_64 1" >> $config_h
1505    if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1506    then
1507      echo "#define USE_KQEMU 1" >> $config_h
1508    fi
1509    if test "$kvm" = "yes" ; then
1510      echo "CONFIG_KVM=yes" >> $config_mak
1511      echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1512      echo "#define CONFIG_KVM 1" >> $config_h
1513    fi
1514  ;;
1515  alpha)
1516    echo "TARGET_ARCH=alpha" >> $config_mak
1517    echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1518    echo "#define TARGET_ALPHA 1" >> $config_h
1519  ;;
1520  arm|armeb)
1521    echo "TARGET_ARCH=arm" >> $config_mak
1522    echo "#define TARGET_ARCH \"arm\"" >> $config_h
1523    echo "#define TARGET_ARM 1" >> $config_h
1524    bflt="yes"
1525    target_nptl="yes"
1526    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1527  ;;
1528  cris)
1529    echo "TARGET_ARCH=cris" >> $config_mak
1530    echo "#define TARGET_ARCH \"cris\"" >> $config_h
1531    echo "#define TARGET_CRIS 1" >> $config_h
1532  ;;
1533  m68k)
1534    echo "TARGET_ARCH=m68k" >> $config_mak
1535    echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1536    echo "#define TARGET_M68K 1" >> $config_h
1537    bflt="yes"
1538    gdb_xml_files="cf-core.xml cf-fp.xml"
1539  ;;
1540  mips|mipsel)
1541    echo "TARGET_ARCH=mips" >> $config_mak
1542    echo "#define TARGET_ARCH \"mips\"" >> $config_h
1543    echo "#define TARGET_MIPS 1" >> $config_h
1544    echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1545  ;;
1546  mipsn32|mipsn32el)
1547    echo "TARGET_ARCH=mipsn32" >> $config_mak
1548    echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1549    echo "#define TARGET_MIPS 1" >> $config_h
1550    echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1551  ;;
1552  mips64|mips64el)
1553    echo "TARGET_ARCH=mips64" >> $config_mak
1554    echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1555    echo "#define TARGET_MIPS 1" >> $config_h
1556    echo "#define TARGET_MIPS64 1" >> $config_h
1557    echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1558  ;;
1559  ppc)
1560    echo "TARGET_ARCH=ppc" >> $config_mak
1561    echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1562    echo "#define TARGET_PPC 1" >> $config_h
1563  ;;
1564  ppcemb)
1565    echo "TARGET_ARCH=ppcemb" >> $config_mak
1566    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1567    echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1568    echo "#define TARGET_PPC 1" >> $config_h
1569    echo "#define TARGET_PPCEMB 1" >> $config_h
1570  ;;
1571  ppc64)
1572    echo "TARGET_ARCH=ppc64" >> $config_mak
1573    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1574    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1575    echo "#define TARGET_PPC 1" >> $config_h
1576    echo "#define TARGET_PPC64 1" >> $config_h
1577  ;;
1578  ppc64abi32)
1579    echo "TARGET_ARCH=ppc64" >> $config_mak
1580    echo "TARGET_ABI_DIR=ppc" >> $config_mak
1581    echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1582    echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1583    echo "#define TARGET_PPC 1" >> $config_h
1584    echo "#define TARGET_PPC64 1" >> $config_h
1585    echo "#define TARGET_ABI32 1" >> $config_h
1586  ;;
1587  sh4|sh4eb)
1588    echo "TARGET_ARCH=sh4" >> $config_mak
1589    echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1590    echo "#define TARGET_SH4 1" >> $config_h
1591    bflt="yes"
1592    target_nptl="yes"
1593  ;;
1594  sparc)
1595    echo "TARGET_ARCH=sparc" >> $config_mak
1596    echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1597    echo "#define TARGET_SPARC 1" >> $config_h
1598  ;;
1599  sparc64)
1600    echo "TARGET_ARCH=sparc64" >> $config_mak
1601    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1602    echo "#define TARGET_SPARC 1" >> $config_h
1603    echo "#define TARGET_SPARC64 1" >> $config_h
1604    elfload32="yes"
1605  ;;
1606  sparc32plus)
1607    echo "TARGET_ARCH=sparc64" >> $config_mak
1608    echo "TARGET_ABI_DIR=sparc" >> $config_mak
1609    echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1610    echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1611    echo "#define TARGET_SPARC 1" >> $config_h
1612    echo "#define TARGET_SPARC64 1" >> $config_h
1613    echo "#define TARGET_ABI32 1" >> $config_h
1614  ;;
1615  *)
1616    echo "Unsupported target CPU"
1617    exit 1
1618  ;;
1619esac
1620if test "$target_bigendian" = "yes" ; then
1621  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1622  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1623fi
1624if test "$target_softmmu" = "yes" ; then
1625  echo "CONFIG_SOFTMMU=yes" >> $config_mak
1626  echo "#define CONFIG_SOFTMMU 1" >> $config_h
1627fi
1628if test "$target_user_only" = "yes" ; then
1629  echo "CONFIG_USER_ONLY=yes" >> $config_mak
1630  echo "#define CONFIG_USER_ONLY 1" >> $config_h
1631fi
1632if test "$target_linux_user" = "yes" ; then
1633  echo "CONFIG_LINUX_USER=yes" >> $config_mak
1634  echo "#define CONFIG_LINUX_USER 1" >> $config_h
1635fi
1636if test "$target_darwin_user" = "yes" ; then
1637  echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1638  echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1639fi
1640list=""
1641if test ! -z "$gdb_xml_files" ; then
1642  for x in $gdb_xml_files; do
1643    list="$list $source_path/gdb-xml/$x"
1644  done
1645fi
1646echo "TARGET_XML_FILES=$list" >> $config_mak
1647
1648if test "$target_cpu" = "arm" \
1649     -o "$target_cpu" = "armeb" \
1650     -o "$target_cpu" = "m68k" \
1651     -o "$target_cpu" = "mips" \
1652     -o "$target_cpu" = "mipsel" \
1653     -o "$target_cpu" = "mipsn32" \
1654     -o "$target_cpu" = "mipsn32el" \
1655     -o "$target_cpu" = "mips64" \
1656     -o "$target_cpu" = "mips64el" \
1657     -o "$target_cpu" = "sparc" \
1658     -o "$target_cpu" = "sparc64" \
1659     -o "$target_cpu" = "sparc32plus"; then
1660  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1661  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1662fi
1663if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1664  echo "TARGET_HAS_BFLT=yes" >> $config_mak
1665  echo "#define TARGET_HAS_BFLT 1" >> $config_h
1666fi
1667if test "$target_user_only" = "yes" \
1668        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1669  echo "#define USE_NPTL 1" >> $config_h
1670fi
1671# 32 bit ELF loader in addition to native 64 bit loader?
1672if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1673  echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1674  echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1675fi
1676if test "$target_bsd_user" = "yes" ; then
1677  echo "CONFIG_BSD_USER=yes" >> $config_mak
1678  echo "#define CONFIG_BSD_USER 1" >> $config_h
1679fi
1680
1681test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1682
1683done # for target in $targets
1684
1685# build tree in object directory if source path is different from current one
1686if test "$source_path_used" = "yes" ; then
1687    DIRS="tests tests/cris slirp audio"
1688    FILES="Makefile tests/Makefile"
1689    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1690    FILES="$FILES tests/test-mmap.c"
1691    for dir in $DIRS ; do
1692            mkdir -p $dir
1693    done
1694    # remove the link and recreate it, as not all "ln -sf" overwrite the link
1695    for f in $FILES ; do
1696        rm -f $f
1697        ln -s $source_path/$f $f
1698    done
1699fi
1700