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