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