Suppress warning messages from "which".
[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 ppcemb-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 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
566 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
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 2>/dev/null`" ] && \
610    [ -x "`which pod2man 2>/dev/null`" ]; then
611   build_docs="yes"
612 fi
613
614 if test "$mingw32" = "yes" ; then
615   if test -z "$prefix" ; then
616       prefix="/c/Program Files/Qemu"
617   fi
618   mansuffix=""
619   datasuffix=""
620   docsuffix=""
621   binsuffix=""
622 else
623   if test -z "$prefix" ; then
624       prefix="/usr/local"
625   fi
626   mansuffix="/share/man"
627   datasuffix="/share/qemu"
628   docsuffix="/share/doc/qemu"
629   binsuffix="/bin"
630 fi
631
632 echo "Install prefix    $prefix"
633 echo "BIOS directory    $prefix$datasuffix"
634 echo "binary directory  $prefix$binsuffix"
635 if test "$mingw32" = "no" ; then
636 echo "Manual directory  $prefix$mansuffix"
637 echo "ELF interp prefix $interp_prefix"
638 fi
639 echo "Source path       $source_path"
640 echo "C compiler        $cc"
641 echo "Host C compiler   $host_cc"
642 echo "make              $make"
643 echo "install           $install"
644 echo "host CPU          $cpu"
645 echo "host big endian   $bigendian"
646 echo "target list       $target_list"
647 echo "gprof enabled     $gprof"
648 echo "profiler          $profiler"
649 echo "static build      $static"
650 if test "$darwin" = "yes" ; then
651     echo "Cocoa support     $cocoa"
652 fi
653 echo "SDL support       $sdl"
654 if test "$sdl" != "no" ; then
655     echo "SDL static link   $sdl_static"
656 fi
657 echo "mingw32 support   $mingw32"
658 echo "Adlib support     $adlib"
659 echo "CoreAudio support $coreaudio"
660 echo "ALSA support      $alsa"
661 echo "DSound support    $dsound"
662 if test "$fmod" = "yes"; then
663     if test -z $fmod_lib || test -z $fmod_inc; then
664         echo
665         echo "Error: You must specify path to FMOD library and headers"
666         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
667         echo
668         exit 1
669     fi
670     fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
671 else
672     fmod_support=""
673 fi
674 echo "FMOD support      $fmod $fmod_support"
675 if test -n "$sparc_cpu"; then
676     echo "Target Sparc Arch $sparc_cpu"
677 fi
678 echo "kqemu support     $kqemu"
679 echo "Documentation     $build_docs"
680 [ ! -z "$uname_release" ] && \
681 echo "uname -r          $uname_release"
682
683 if test $sdl_too_old = "yes"; then
684 echo "-> Your SDL version is too old - please upgrade to have SDL support"
685 fi
686 #if test "$sdl_static" = "no"; then
687 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
688 #fi
689 config_mak="config-host.mak"
690 config_h="config-host.h"
691
692 #echo "Creating $config_mak and $config_h"
693
694 echo "# Automatically generated by configure - do not modify" > $config_mak
695 echo "# Configured with: $0 $@" >> $config_mak
696 echo "/* Automatically generated by configure - do not modify */" > $config_h
697
698 echo "prefix=$prefix" >> $config_mak
699 echo "bindir=\${prefix}$binsuffix" >> $config_mak
700 echo "mandir=\${prefix}$mansuffix" >> $config_mak
701 echo "datadir=\${prefix}$datasuffix" >> $config_mak
702 echo "docdir=\${prefix}$docsuffix" >> $config_mak
703 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
704 echo "MAKE=$make" >> $config_mak
705 echo "INSTALL=$install" >> $config_mak
706 echo "CC=$cc" >> $config_mak
707 echo "HOST_CC=$host_cc" >> $config_mak
708 echo "AR=$ar" >> $config_mak
709 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
710 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
711 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
712 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
713 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
714 echo "CFLAGS=$CFLAGS" >> $config_mak
715 echo "LDFLAGS=$LDFLAGS" >> $config_mak
716 echo "EXESUF=$EXESUF" >> $config_mak
717 echo "AIOLIBS=$AIOLIBS" >> $config_mak
718 if test "$cpu" = "i386" ; then
719   echo "ARCH=i386" >> $config_mak
720   echo "#define HOST_I386 1" >> $config_h
721 elif test "$cpu" = "x86_64" ; then
722   echo "ARCH=x86_64" >> $config_mak
723   echo "#define HOST_X86_64 1" >> $config_h
724 elif test "$cpu" = "armv4b" ; then
725   echo "ARCH=arm" >> $config_mak
726   echo "#define HOST_ARM 1" >> $config_h
727 elif test "$cpu" = "armv4l" ; then
728   echo "ARCH=arm" >> $config_mak
729   echo "#define HOST_ARM 1" >> $config_h
730 elif test "$cpu" = "powerpc" ; then
731   echo "ARCH=ppc" >> $config_mak
732   echo "#define HOST_PPC 1" >> $config_h
733 elif test "$cpu" = "mips" ; then
734   echo "ARCH=mips" >> $config_mak
735   echo "#define HOST_MIPS 1" >> $config_h
736 elif test "$cpu" = "mips64" ; then
737   echo "ARCH=mips64" >> $config_mak
738   echo "#define HOST_MIPS64 1" >> $config_h
739 elif test "$cpu" = "s390" ; then
740   echo "ARCH=s390" >> $config_mak
741   echo "#define HOST_S390 1" >> $config_h
742 elif test "$cpu" = "alpha" ; then
743   echo "ARCH=alpha" >> $config_mak
744   echo "#define HOST_ALPHA 1" >> $config_h
745 elif test "$cpu" = "sparc" ; then
746   echo "ARCH=sparc" >> $config_mak
747   echo "#define HOST_SPARC 1" >> $config_h
748 elif test "$cpu" = "sparc64" ; then
749   echo "ARCH=sparc64" >> $config_mak
750   echo "#define HOST_SPARC64 1" >> $config_h
751 elif test "$cpu" = "ia64" ; then
752   echo "ARCH=ia64" >> $config_mak
753   echo "#define HOST_IA64 1" >> $config_h
754 elif test "$cpu" = "m68k" ; then
755   echo "ARCH=m68k" >> $config_mak
756   echo "#define HOST_M68K 1" >> $config_h
757 else
758   echo "Unsupported CPU = $cpu"
759   exit 1
760 fi
761 if test "$bigendian" = "yes" ; then
762   echo "WORDS_BIGENDIAN=yes" >> $config_mak
763   echo "#define WORDS_BIGENDIAN 1" >> $config_h
764 fi
765 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
766 if test "$mingw32" = "yes" ; then
767   echo "CONFIG_WIN32=yes" >> $config_mak
768   echo "#define CONFIG_WIN32 1" >> $config_h
769 else
770   cat > $TMPC << EOF
771 #include <byteswap.h>
772 int main(void) { return bswap_32(0); }
773 EOF
774   if $cc -o $TMPE $TMPC 2> /dev/null ; then
775     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
776   fi
777 fi
778 if test "$darwin" = "yes" ; then
779   echo "CONFIG_DARWIN=yes" >> $config_mak
780   echo "#define CONFIG_DARWIN 1" >> $config_h
781 fi
782 if test "$solaris" = "yes" ; then
783   echo "CONFIG_SOLARIS=yes" >> $config_mak
784   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
785   if test "$needs_libsunmath" = "yes" ; then
786     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
787     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
788   fi
789 fi
790 if test -n "$sparc_cpu"; then
791   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
792   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
793 fi
794 if test "$gdbstub" = "yes" ; then
795   echo "CONFIG_GDBSTUB=yes" >> $config_mak
796   echo "#define CONFIG_GDBSTUB 1" >> $config_h
797 fi
798 if test "$gprof" = "yes" ; then
799   echo "TARGET_GPROF=yes" >> $config_mak
800   echo "#define HAVE_GPROF 1" >> $config_h
801 fi
802 if test "$static" = "yes" ; then
803   echo "CONFIG_STATIC=yes" >> $config_mak
804   echo "#define CONFIG_STATIC 1" >> $config_h
805 fi
806 if test $profiler = "yes" ; then
807   echo "#define CONFIG_PROFILER 1" >> $config_h
808 fi
809 if test "$slirp" = "yes" ; then
810   echo "CONFIG_SLIRP=yes" >> $config_mak
811   echo "#define CONFIG_SLIRP 1" >> $config_h
812 fi
813 if test "$adlib" = "yes" ; then
814   echo "CONFIG_ADLIB=yes" >> $config_mak
815   echo "#define CONFIG_ADLIB 1" >> $config_h
816 fi
817 if test "$oss" = "yes" ; then
818   echo "CONFIG_OSS=yes" >> $config_mak
819   echo "#define CONFIG_OSS 1" >> $config_h
820 fi
821 if test "$coreaudio" = "yes" ; then
822   echo "CONFIG_COREAUDIO=yes" >> $config_mak
823   echo "#define CONFIG_COREAUDIO 1" >> $config_h
824 fi
825 if test "$alsa" = "yes" ; then
826   echo "CONFIG_ALSA=yes" >> $config_mak
827   echo "#define CONFIG_ALSA 1" >> $config_h
828 fi
829 if test "$dsound" = "yes" ; then
830   echo "CONFIG_DSOUND=yes" >> $config_mak
831   echo "#define CONFIG_DSOUND 1" >> $config_h
832 fi
833 if test "$fmod" = "yes" ; then
834   echo "CONFIG_FMOD=yes" >> $config_mak
835   echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
836   echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
837   echo "#define CONFIG_FMOD 1" >> $config_h
838 fi
839 qemu_version=`head $source_path/VERSION`
840 echo "VERSION=$qemu_version" >>$config_mak
841 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
842
843 echo "SRC_PATH=$source_path" >> $config_mak
844 if [ "$source_path_used" = "yes" ]; then
845   echo "VPATH=$source_path" >> $config_mak
846 fi
847 echo "TARGET_DIRS=$target_list" >> $config_mak
848 if [ "$build_docs" = "yes" ] ; then
849   echo "BUILD_DOCS=yes" >> $config_mak
850 fi
851
852 # XXX: suppress that
853 if [ "$bsd" = "yes" ] ; then
854   echo "#define O_LARGEFILE 0" >> $config_h
855   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
856   echo "#define _BSD 1" >> $config_h
857 fi
858
859 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
860
861 for target in $target_list; do
862 target_dir="$target"
863 config_mak=$target_dir/config.mak
864 config_h=$target_dir/config.h
865 target_cpu=`echo $target | cut -d '-' -f 1`
866 target_bigendian="no"
867 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
868 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
869 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
870 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
871 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
872 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
873 [ "$target_cpu" = "mips" ] && target_bigendian=yes
874 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
875 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
876 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
877 target_softmmu="no"
878 if expr $target : '.*-softmmu' > /dev/null ; then
879   target_softmmu="yes"
880 fi
881 target_user_only="no"
882 if expr $target : '.*-user' > /dev/null ; then
883   target_user_only="yes"
884 fi
885
886 target_linux_user="no"
887 if expr $target : '.*-linux-user' > /dev/null ; then
888   target_linux_user="yes"
889 fi
890
891 target_darwin_user="no"
892 if expr $target : '.*-darwin-user' > /dev/null ; then
893   target_darwin_user="yes"
894 fi
895
896 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
897         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
898     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
899     echo "To build QEMU without graphical output configure with --disable-gfx-check"
900     echo "Note that this will disable all output from the virtual graphics card."
901     exit 1;
902 fi
903
904 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
905
906 mkdir -p $target_dir
907 mkdir -p $target_dir/fpu
908 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
909   mkdir -p $target_dir/nwfpe
910 fi
911 if test "$target_user_only" = "no" ; then
912   mkdir -p $target_dir/slirp
913 fi
914
915 #
916 # don't use ln -sf as not all "ln -sf" over write the file/link
917 #
918 rm -f $target_dir/Makefile
919 ln -s $source_path/Makefile.target $target_dir/Makefile
920
921
922 echo "# Automatically generated by configure - do not modify" > $config_mak
923 echo "/* Automatically generated by configure - do not modify */" > $config_h
924
925
926 echo "include ../config-host.mak" >> $config_mak
927 echo "#include \"../config-host.h\"" >> $config_h
928
929 bflt="no"
930 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
931 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
932
933 if test "$target_cpu" = "i386" ; then
934   echo "TARGET_ARCH=i386" >> $config_mak
935   echo "#define TARGET_ARCH \"i386\"" >> $config_h
936   echo "#define TARGET_I386 1" >> $config_h
937   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
938     echo "#define USE_KQEMU 1" >> $config_h
939   fi
940 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
941   echo "TARGET_ARCH=arm" >> $config_mak
942   echo "#define TARGET_ARCH \"arm\"" >> $config_h
943   echo "#define TARGET_ARM 1" >> $config_h
944   bflt="yes"
945 elif test "$target_cpu" = "sparc" ; then
946   echo "TARGET_ARCH=sparc" >> $config_mak
947   echo "#define TARGET_ARCH \"sparc\"" >> $config_h
948   echo "#define TARGET_SPARC 1" >> $config_h
949 elif test "$target_cpu" = "sparc64" ; then
950   echo "TARGET_ARCH=sparc64" >> $config_mak
951   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
952   echo "#define TARGET_SPARC 1" >> $config_h
953   echo "#define TARGET_SPARC64 1" >> $config_h
954 elif test "$target_cpu" = "ppc" ; then
955   echo "TARGET_ARCH=ppc" >> $config_mak
956   echo "#define TARGET_ARCH \"ppc\"" >> $config_h
957   echo "#define TARGET_PPC 1" >> $config_h
958 elif test "$target_cpu" = "ppc64" ; then
959   echo "TARGET_ARCH=ppc64" >> $config_mak
960   echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
961   echo "#define TARGET_PPC 1" >> $config_h
962   echo "#define TARGET_PPC64 1" >> $config_h
963 elif test "$target_cpu" = "ppcemb" ; then
964   echo "TARGET_ARCH=ppcemb" >> $config_mak
965   echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
966   echo "#define TARGET_PPC 1" >> $config_h
967   echo "#define TARGET_PPCEMB 1" >> $config_h
968 elif test "$target_cpu" = "x86_64" ; then
969   echo "TARGET_ARCH=x86_64" >> $config_mak
970   echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
971   echo "#define TARGET_I386 1" >> $config_h
972   echo "#define TARGET_X86_64 1" >> $config_h
973   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
974     echo "#define USE_KQEMU 1" >> $config_h
975   fi
976 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
977   echo "TARGET_ARCH=mips" >> $config_mak
978   echo "#define TARGET_ARCH \"mips\"" >> $config_h
979   echo "#define TARGET_MIPS 1" >> $config_h
980   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
981   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
982 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
983   echo "TARGET_ARCH=mips64" >> $config_mak
984   echo "#define TARGET_ARCH \"mips64\"" >> $config_h
985   echo "#define TARGET_MIPS 1" >> $config_h
986   echo "#define TARGET_MIPS64 1" >> $config_h
987   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
988   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
989 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
990   echo "TARGET_ARCH=sh4" >> $config_mak
991   echo "#define TARGET_ARCH \"sh4\"" >> $config_h
992   echo "#define TARGET_SH4 1" >> $config_h
993   bflt="yes"
994 elif test "$target_cpu" = "m68k" ; then
995   echo "TARGET_ARCH=m68k" >> $config_mak
996   echo "#define TARGET_ARCH \"m68k\"" >> $config_h
997   echo "#define TARGET_M68K 1" >> $config_h
998   bflt="yes"
999 elif test "$target_cpu" = "alpha" ; then
1000   echo "TARGET_ARCH=alpha" >> $config_mak
1001   echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1002   echo "#define TARGET_ALPHA 1" >> $config_h
1003 else
1004   echo "Unsupported target CPU"
1005   exit 1
1006 fi
1007 if test "$target_bigendian" = "yes" ; then
1008   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1009   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1010 fi
1011 if test "$target_softmmu" = "yes" ; then
1012   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1013   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1014 fi
1015 if test "$target_user_only" = "yes" ; then
1016   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1017   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1018 fi
1019 if test "$target_linux_user" = "yes" ; then
1020   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1021   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1022 fi
1023 if test "$target_darwin_user" = "yes" ; then
1024   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1025   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1026 fi
1027
1028 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1029   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1030   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1031 fi
1032 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1033   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1034   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1035 fi
1036 # sdl defines
1037
1038 if test "$target_user_only" = "no"; then
1039     if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1040         sdl1=$sdl_static
1041     else
1042         sdl1=$sdl
1043     fi
1044     if test "$sdl1" = "yes" ; then
1045         echo "#define CONFIG_SDL 1" >> $config_h
1046         echo "CONFIG_SDL=yes" >> $config_mak
1047         if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1048             echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1049         else
1050             echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1051         fi
1052         if [ "${aa}" = "yes" ] ; then
1053             echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1054         else
1055             echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1056         fi
1057     fi
1058 fi
1059
1060 if test "$cocoa" = "yes" ; then
1061     echo "#define CONFIG_COCOA 1" >> $config_h
1062     echo "CONFIG_COCOA=yes" >> $config_mak
1063 fi
1064
1065 done # for target in $targets
1066
1067 # build tree in object directory if source path is different from current one
1068 if test "$source_path_used" = "yes" ; then
1069     DIRS="tests"
1070     FILES="Makefile tests/Makefile"
1071     for dir in $DIRS ; do
1072             mkdir -p $dir
1073     done
1074     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1075     for f in $FILES ; do
1076         rm -f $f
1077         ln -s $source_path/$f $f
1078     done
1079 fi
1080
1081 rm -f $TMPO $TMPC $TMPE $TMPS