Remove leftover file, should have happened in the Linux loader rewrite commit.
[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     if test -f /usr/include/sys/soundcard.h ; then
161         oss=yes
162     fi
163 ;;
164 *)
165 oss="yes"
166 linux="yes"
167 linux_user="yes"
168 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
169     kqemu="yes"
170 fi
171 ;;
172 esac
173
174 if [ "$bsd" = "yes" ] ; then
175   if [ "$darwin" != "yes" ] ; then
176     make="gmake"
177   fi
178 fi
179
180 # find source path
181 source_path=`dirname "$0"`
182 if [ -z "$source_path" ]; then
183     source_path=`pwd`
184 else
185     source_path=`cd "$source_path"; pwd`
186 fi
187 if test "$source_path" = `pwd` ; then
188     source_path_used="no"
189 else
190     source_path_used="yes"
191 fi
192
193 for opt do
194   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
195   case "$opt" in
196   --help|-h) show_help=yes
197   ;;
198   --prefix=*) prefix="$optarg"
199   ;;
200   --interp-prefix=*) interp_prefix="$optarg"
201   ;;
202   --source-path=*) source_path="$optarg"
203   source_path_used="yes"
204   ;;
205   --cross-prefix=*) cross_prefix="$optarg"
206   ;;
207   --cc=*) cc="$optarg"
208   gcc3_search="no"
209   ;;
210   --host-cc=*) host_cc="$optarg"
211   ;;
212   --make=*) make="$optarg"
213   ;;
214   --install=*) install="$optarg"
215   ;;
216   --extra-cflags=*) CFLAGS="$optarg"
217   ;;
218   --extra-ldflags=*) LDFLAGS="$optarg"
219   ;;
220   --cpu=*) cpu="$optarg"
221   ;;
222   --target-list=*) target_list="$optarg"
223   ;;
224   --enable-gprof) gprof="yes"
225   ;;
226   --static) static="yes"
227   ;;
228   --disable-sdl) sdl="no"
229   ;;
230   --enable-coreaudio) coreaudio="yes"
231   ;;
232   --enable-alsa) alsa="yes"
233   ;;
234   --enable-dsound) dsound="yes"
235   ;;
236   --enable-fmod) fmod="yes"
237   ;;
238   --fmod-lib=*) fmod_lib="$optarg"
239   ;;
240   --fmod-inc=*) fmod_inc="$optarg"
241   ;;
242   --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
243   ;;
244   --disable-slirp) slirp="no"
245   ;;
246   --enable-adlib) adlib="yes"
247   ;;
248   --disable-kqemu) kqemu="no"
249   ;;
250   --enable-profiler) profiler="yes"
251   ;;
252   --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
253   ;;
254   --disable-gfx-check) check_gfx="no"
255   ;;
256   --disable-gcc-check) check_gcc="no"
257   ;;
258   --disable-system) softmmu="no"
259   ;;
260   --enable-system) softmmu="yes"
261   ;;
262   --disable-linux-user) linux_user="no"
263   ;;
264   --enable-linux-user) linux_user="yes"
265   ;;
266   --disable-darwin-user) darwin_user="no"
267   ;;
268   --enable-darwin-user) darwin_user="yes"
269   ;;
270   --enable-uname-release=*) uname_release="$optarg"
271   ;;
272   --sparc_cpu=*)
273       sparc_cpu="$optarg"
274       case $sparc_cpu in
275         v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
276                  target_cpu="sparc"; cpu="sparc" ;;
277         v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
278                  target_cpu="sparc"; cpu="sparc" ;;
279         v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
280                  target_cpu="sparc64"; cpu="sparc64" ;;
281         *)     echo "undefined SPARC architecture. Exiting";exit 1;;
282       esac
283   ;;
284   esac
285 done
286
287 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
288     AIOLIBS=
289 else
290     AIOLIBS="-lrt"
291 fi
292
293 # default flags for all hosts
294 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
295 LDFLAGS="$LDFLAGS -g"
296
297 #
298 # If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
299 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
300 #
301 case $cpu in
302     sparc) if test -z "$sparc_cpu" ; then
303                ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
304                ARCH_LDFLAGS="-m32"
305            else
306                ARCH_CFLAGS="${SP_CFLAGS}"
307                ARCH_LDFLAGS="${SP_LDFLAGS}"
308            fi
309            ;;
310     sparc64) if test -z "$sparc_cpu" ; then
311                ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
312                ARCH_LDFLAGS="-m64"
313            else
314                ARCH_CFLAGS="${SP_CFLAGS}"
315                ARCH_LDFLAGS="${SP_LDFLAGS}"
316            fi
317            ;;
318 esac
319
320 if test x"$show_help" = x"yes" ; then
321 cat << EOF
322
323 Usage: configure [options]
324 Options: [defaults in brackets after descriptions]
325
326 EOF
327 echo "Standard options:"
328 echo "  --help                   print this message"
329 echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
330 echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
331 echo "                           use %M for cpu name [$interp_prefix]"
332 echo "  --target-list=LIST       set target list [$target_list]"
333 echo ""
334 echo "kqemu kernel acceleration support:"
335 echo "  --disable-kqemu          disable kqemu support"
336 echo ""
337 echo "Advanced options (experts only):"
338 echo "  --source-path=PATH       path of source code [$source_path]"
339 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
340 echo "  --cc=CC                  use C compiler CC [$cc]"
341 echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
342 echo "  --make=MAKE              use specified make [$make]"
343 echo "  --install=INSTALL        use specified install [$install]"
344 echo "  --static                 enable static build [$static]"
345 echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
346 echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
347 echo "  --enable-adlib           enable Adlib emulation"
348 echo "  --enable-coreaudio       enable Coreaudio audio driver"
349 echo "  --enable-alsa            enable ALSA audio driver"
350 echo "  --enable-fmod            enable FMOD audio driver"
351 echo "  --enable-dsound          enable DirectSound audio driver"
352 echo "  --enable-system          enable all system emulation targets"
353 echo "  --disable-system         disable all system emulation targets"
354 echo "  --enable-linux-user      enable all linux usermode emulation targets"
355 echo "  --disable-linux-user     disable all linux usermode emulation targets"
356 echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
357 echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
358 echo "  --fmod-lib               path to FMOD library"
359 echo "  --fmod-inc               path to FMOD includes"
360 echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
361 echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
362 echo ""
363 echo "NOTE: The object files are built at the place where configure is launched"
364 exit 1
365 fi
366
367 cc="${cross_prefix}${cc}"
368 ar="${cross_prefix}${ar}"
369 strip="${cross_prefix}${strip}"
370
371 # check that the C compiler works.
372 cat > $TMPC <<EOF
373 int main(void) {}
374 EOF
375
376 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
377   : C compiler works ok
378 else
379     echo "ERROR: \"$cc\" either does not exist or does not work"
380     exit 1
381 fi
382
383 if test "$mingw32" = "yes" ; then
384     linux="no"
385     EXESUF=".exe"
386     oss="no"
387     if [ "$cpu" = "i386" ] ; then
388         kqemu="yes"
389     fi
390 fi
391
392 # Check for gcc4, error if pre-gcc4 
393 if test "$check_gcc" = "yes" ; then
394     cat > $TMPC <<EOF
395 #if __GNUC__ < 4
396 #error gcc3
397 #endif
398 int main(){return 0;}
399 EOF
400     if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
401         echo "WARNING: \"$cc\" looks like gcc 4.x"
402         found_compat_cc="no"
403         if test "$gcc3_search" = "yes" ; then
404             echo "Looking for gcc 3.x"
405             for compat_cc in $gcc3_list ; do
406                 if "$cross_prefix$compat_cc" --version > /dev/null 2>&1 ; then
407                     echo "Found \"$compat_cc\""
408                     cc="$cross_prefix$compat_cc"
409                     found_compat_cc="yes"
410                     break
411                 fi
412             done
413             if test "$found_compat_cc" = "no" ; then
414                 echo "gcc 3.x not found!"
415             fi
416         fi
417         if test "$found_compat_cc" = "no" ; then
418             echo "QEMU is known to have problems when compiled with gcc 4.x"
419             echo "It is recommended that you use gcc 3.x to build QEMU"
420             echo "To use this compiler anyway, configure with --disable-gcc-check"
421             exit 1;
422         fi
423     fi
424 fi
425
426 #
427 # Solaris specific configure tool chain decisions
428 #
429 if test "$solaris" = "yes" ; then
430   #
431   # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
432   # override the check with --disable-gcc-check
433   # 
434   if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
435     solgcc=`which $cc`
436     if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
437       echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
438       echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
439       echo "or get the latest patch from SunSolve for gcc"
440       exit 1
441     fi
442   fi
443   solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
444   if test -z "$solinst" ; then
445     echo "Solaris install program not found. Use --install=/usr/ucb/install or"
446     echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
447     echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
448     exit 1
449   fi
450   if test "$solinst" = "/usr/sbin/install" ; then
451     echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
452     echo "try ginstall from the GNU fileutils available from www.blastwave.org"
453     echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
454     exit 1
455   fi
456   sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
457   if test -z "$sol_ar" ; then
458     echo "Error: No path includes ar"
459     if test -f /usr/ccs/bin/ar ; then
460       echo "Add /usr/ccs/bin to your path and rerun configure"
461     fi
462     exit 1
463   fi
464 fi 
465
466
467 if test -z "$target_list" ; then
468 # these targets are portable
469     if [ "$softmmu" = "yes" ] ; then
470         target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc64-softmmu ppcemb-softmmu "
471     fi
472 # the following are Linux specific
473     if [ "$linux_user" = "yes" ] ; then
474         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"
475     fi
476 # the following are Darwin specific
477     if [ "$darwin_user" = "yes" ] ; then
478         target_list="i386-darwin-user ppc-darwin-user $target_list"
479     fi
480 else
481     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
482 fi
483 if test -z "$target_list" ; then
484     echo "No targets enabled"
485     exit 1
486 fi
487
488 if test -z "$cross_prefix" ; then
489
490 # ---
491 # big/little endian test
492 cat > $TMPC << EOF
493 #include <inttypes.h>
494 int main(int argc, char ** argv){
495         volatile uint32_t i=0x01234567;
496         return (*((uint8_t*)(&i))) == 0x67;
497 }
498 EOF
499
500 if $cc -o $TMPE $TMPC 2> /dev/null ; then
501 $TMPE && bigendian="yes"
502 else
503 echo big/little test failed
504 fi
505
506 else
507
508 # if cross compiling, cannot launch a program, so make a static guess
509 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
510     bigendian="yes"
511 fi
512
513 fi
514
515 # host long bits test
516 hostlongbits="32"
517 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
518     hostlongbits="64"
519 fi
520
521 # check gcc options support
522 cat > $TMPC <<EOF
523 int main(void) {
524 }
525 EOF
526
527 ##########################################
528 # SDL probe
529
530 sdl_too_old=no
531
532 if test -z "$sdl" ; then
533
534 sdl_config="sdl-config"
535 sdl=no
536 sdl_static=no
537
538 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
539 # win32 cross compilation case
540     sdl_config="i386-mingw32msvc-sdl-config"
541     sdl=yes
542 else
543 # normal SDL probe
544 cat > $TMPC << EOF
545 #include <SDL.h>
546 #undef main /* We don't want SDL to override our main() */
547 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
548 EOF
549
550 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
551 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
552 if test "$_sdlversion" -lt 121 ; then
553 sdl_too_old=yes
554 else
555  if test "$cocoa" = "no" ; then
556    sdl=yes
557  fi
558 fi
559
560 # static link with sdl ?
561 if test "$sdl" = "yes" ; then
562 aa="no"
563 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
564 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
565 if [ "$aa" = "yes" ] ; then
566   sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
567 fi
568
569 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
570   sdl_static=yes
571 fi
572
573 fi # static link
574
575 fi # sdl compile test
576
577 fi # cross compilation
578
579 else
580  # Make sure to disable cocoa if sdl was set
581  if test "$sdl" = "yes" ; then
582    cocoa="no"
583    coreaudio="no"
584  fi
585 fi # -z $sdl
586
587 ##########################################
588 # alsa sound support libraries
589
590 if test "$alsa" = "yes" ; then
591   cat > $TMPC << EOF
592 #include <alsa/asoundlib.h>
593 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
594 EOF
595   if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
596     :
597   else
598     echo
599     echo "Error: Could not find alsa"
600     echo "Make sure to have the alsa libs and headers installed."
601     echo
602     exit 1
603   fi
604 fi
605
606 # Check if tools are available to build documentation.
607 if [ -x "`which texi2html 2>/dev/null`" ] && \
608    [ -x "`which pod2man 2>/dev/null`" ]; then
609   build_docs="yes"
610 fi
611
612 if test "$mingw32" = "yes" ; then
613   if test -z "$prefix" ; then
614       prefix="/c/Program Files/Qemu"
615   fi
616   mansuffix=""
617   datasuffix=""
618   docsuffix=""
619   binsuffix=""
620 else
621   if test -z "$prefix" ; then
622       prefix="/usr/local"
623   fi
624   mansuffix="/share/man"
625   datasuffix="/share/qemu"
626   docsuffix="/share/doc/qemu"
627   binsuffix="/bin"
628 fi
629
630 echo "Install prefix    $prefix"
631 echo "BIOS directory    $prefix$datasuffix"
632 echo "binary directory  $prefix$binsuffix"
633 if test "$mingw32" = "no" ; then
634 echo "Manual directory  $prefix$mansuffix"
635 echo "ELF interp prefix $interp_prefix"
636 fi
637 echo "Source path       $source_path"
638 echo "C compiler        $cc"
639 echo "Host C compiler   $host_cc"
640 echo "make              $make"
641 echo "install           $install"
642 echo "host CPU          $cpu"
643 echo "host big endian   $bigendian"
644 echo "target list       $target_list"
645 echo "gprof enabled     $gprof"
646 echo "profiler          $profiler"
647 echo "static build      $static"
648 if test "$darwin" = "yes" ; then
649     echo "Cocoa support     $cocoa"
650 fi
651 echo "SDL support       $sdl"
652 if test "$sdl" != "no" ; then
653     echo "SDL static link   $sdl_static"
654 fi
655 echo "mingw32 support   $mingw32"
656 echo "Adlib support     $adlib"
657 echo "CoreAudio support $coreaudio"
658 echo "ALSA support      $alsa"
659 echo "DSound support    $dsound"
660 if test "$fmod" = "yes"; then
661     if test -z $fmod_lib || test -z $fmod_inc; then
662         echo
663         echo "Error: You must specify path to FMOD library and headers"
664         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
665         echo
666         exit 1
667     fi
668     fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
669 else
670     fmod_support=""
671 fi
672 echo "FMOD support      $fmod $fmod_support"
673 echo "OSS support       $oss"
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" = "ppcemb" ] && target_bigendian=yes
872 [ "$target_cpu" = "mips" ] && target_bigendian=yes
873 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
874 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
875 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
876 target_softmmu="no"
877 if expr $target : '.*-softmmu' > /dev/null ; then
878   target_softmmu="yes"
879 fi
880 target_user_only="no"
881 if expr $target : '.*-user' > /dev/null ; then
882   target_user_only="yes"
883 fi
884
885 target_linux_user="no"
886 if expr $target : '.*-linux-user' > /dev/null ; then
887   target_linux_user="yes"
888 fi
889
890 target_darwin_user="no"
891 if expr $target : '.*-darwin-user' > /dev/null ; then
892   target_darwin_user="yes"
893 fi
894
895 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
896         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
897     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
898     echo "To build QEMU without graphical output configure with --disable-gfx-check"
899     echo "Note that this will disable all output from the virtual graphics card."
900     exit 1;
901 fi
902
903 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
904
905 mkdir -p $target_dir
906 mkdir -p $target_dir/fpu
907 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
908   mkdir -p $target_dir/nwfpe
909 fi
910 if test "$target_user_only" = "no" ; then
911   mkdir -p $target_dir/slirp
912 fi
913
914 #
915 # don't use ln -sf as not all "ln -sf" over write the file/link
916 #
917 rm -f $target_dir/Makefile
918 ln -s $source_path/Makefile.target $target_dir/Makefile
919
920
921 echo "# Automatically generated by configure - do not modify" > $config_mak
922 echo "/* Automatically generated by configure - do not modify */" > $config_h
923
924
925 echo "include ../config-host.mak" >> $config_mak
926 echo "#include \"../config-host.h\"" >> $config_h
927
928 bflt="no"
929 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
930 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
931
932 if test "$target_cpu" = "i386" ; then
933   echo "TARGET_ARCH=i386" >> $config_mak
934   echo "#define TARGET_ARCH \"i386\"" >> $config_h
935   echo "#define TARGET_I386 1" >> $config_h
936   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
937     echo "#define USE_KQEMU 1" >> $config_h
938   fi
939 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
940   echo "TARGET_ARCH=arm" >> $config_mak
941   echo "#define TARGET_ARCH \"arm\"" >> $config_h
942   echo "#define TARGET_ARM 1" >> $config_h
943   bflt="yes"
944 elif test "$target_cpu" = "sparc" ; then
945   echo "TARGET_ARCH=sparc" >> $config_mak
946   echo "#define TARGET_ARCH \"sparc\"" >> $config_h
947   echo "#define TARGET_SPARC 1" >> $config_h
948 elif test "$target_cpu" = "sparc64" ; then
949   echo "TARGET_ARCH=sparc64" >> $config_mak
950   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
951   echo "#define TARGET_SPARC 1" >> $config_h
952   echo "#define TARGET_SPARC64 1" >> $config_h
953 elif test "$target_cpu" = "ppc" ; then
954   echo "TARGET_ARCH=ppc" >> $config_mak
955   echo "#define TARGET_ARCH \"ppc\"" >> $config_h
956   echo "#define TARGET_PPC 1" >> $config_h
957 elif test "$target_cpu" = "ppc64" ; then
958   echo "TARGET_ARCH=ppc64" >> $config_mak
959   echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
960   echo "#define TARGET_PPC 1" >> $config_h
961   echo "#define TARGET_PPC64 1" >> $config_h
962 elif test "$target_cpu" = "ppcemb" ; then
963   echo "TARGET_ARCH=ppcemb" >> $config_mak
964   echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
965   echo "#define TARGET_PPC 1" >> $config_h
966   echo "#define TARGET_PPCEMB 1" >> $config_h
967 elif test "$target_cpu" = "x86_64" ; then
968   echo "TARGET_ARCH=x86_64" >> $config_mak
969   echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
970   echo "#define TARGET_I386 1" >> $config_h
971   echo "#define TARGET_X86_64 1" >> $config_h
972   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
973     echo "#define USE_KQEMU 1" >> $config_h
974   fi
975 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
976   echo "TARGET_ARCH=mips" >> $config_mak
977   echo "#define TARGET_ARCH \"mips\"" >> $config_h
978   echo "#define TARGET_MIPS 1" >> $config_h
979   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
980   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
981 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
982   echo "TARGET_ARCH=mips64" >> $config_mak
983   echo "#define TARGET_ARCH \"mips64\"" >> $config_h
984   echo "#define TARGET_MIPS 1" >> $config_h
985   echo "#define TARGET_MIPS64 1" >> $config_h
986   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
987   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
988 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
989   echo "TARGET_ARCH=sh4" >> $config_mak
990   echo "#define TARGET_ARCH \"sh4\"" >> $config_h
991   echo "#define TARGET_SH4 1" >> $config_h
992   bflt="yes"
993 elif test "$target_cpu" = "m68k" ; then
994   echo "TARGET_ARCH=m68k" >> $config_mak
995   echo "#define TARGET_ARCH \"m68k\"" >> $config_h
996   echo "#define TARGET_M68K 1" >> $config_h
997   bflt="yes"
998 elif test "$target_cpu" = "alpha" ; then
999   echo "TARGET_ARCH=alpha" >> $config_mak
1000   echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1001   echo "#define TARGET_ALPHA 1" >> $config_h
1002 else
1003   echo "Unsupported target CPU"
1004   exit 1
1005 fi
1006 if test "$target_bigendian" = "yes" ; then
1007   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1008   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1009 fi
1010 if test "$target_softmmu" = "yes" ; then
1011   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1012   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1013 fi
1014 if test "$target_user_only" = "yes" ; then
1015   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1016   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1017 fi
1018 if test "$target_linux_user" = "yes" ; then
1019   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1020   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1021 fi
1022 if test "$target_darwin_user" = "yes" ; then
1023   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1024   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1025 fi
1026
1027 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1028   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1029   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1030 fi
1031 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1032   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1033   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1034 fi
1035 # sdl defines
1036
1037 if test "$target_user_only" = "no"; then
1038     if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1039         sdl1=$sdl_static
1040     else
1041         sdl1=$sdl
1042     fi
1043     if test "$sdl1" = "yes" ; then
1044         echo "#define CONFIG_SDL 1" >> $config_h
1045         echo "CONFIG_SDL=yes" >> $config_mak
1046         if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1047             echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1048         else
1049             echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1050         fi
1051         if [ "${aa}" = "yes" ] ; then
1052             echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1053         else
1054             echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1055         fi
1056     fi
1057 fi
1058
1059 if test "$cocoa" = "yes" ; then
1060     echo "#define CONFIG_COCOA 1" >> $config_h
1061     echo "CONFIG_COCOA=yes" >> $config_mak
1062 fi
1063
1064 done # for target in $targets
1065
1066 # build tree in object directory if source path is different from current one
1067 if test "$source_path_used" = "yes" ; then
1068     DIRS="tests"
1069     FILES="Makefile tests/Makefile"
1070     for dir in $DIRS ; do
1071             mkdir -p $dir
1072     done
1073     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1074     for f in $FILES ; do
1075         rm -f $f
1076         ln -s $source_path/$f $f
1077     done
1078 fi
1079
1080 rm -f $TMPO $TMPC $TMPE $TMPS