Avoid use of which to detect gcc, as it is broken on darwin. Patch by
[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     if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
398         echo "WARNING: \"$cc\" looks like gcc 4.x"
399         found_compat_cc="no"
400         if test "$gcc3_search" = "yes" ; then
401             echo "Looking for gcc 3.x"
402             for compat_cc in $gcc3_list ; do
403                 if "$cross_prefix$compat_cc" --version > /dev/null 2>&1 ; then
404                     echo "Found \"$compat_cc\""
405                     cc="$cross_prefix$compat_cc"
406                     found_compat_cc="yes"
407                     break
408                 fi
409             done
410             if test "$found_compat_cc" = "no" ; then
411                 echo "gcc 3.x not found!"
412             fi
413         fi
414         if test "$found_compat_cc" = "no" ; then
415             echo "QEMU is known to have problems when compiled with gcc 4.x"
416             echo "It is recommended that you use gcc 3.x to build QEMU"
417             echo "To use this compiler anyway, configure with --disable-gcc-check"
418             exit 1;
419         fi
420     fi
421 fi
422
423 #
424 # Solaris specific configure tool chain decisions
425 #
426 if test "$solaris" = "yes" ; then
427   #
428   # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
429   # override the check with --disable-gcc-check
430   # 
431   if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
432     solgcc=`which $cc`
433     if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
434       echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
435       echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
436       echo "or get the latest patch from SunSolve for gcc"
437       exit 1
438     fi
439   fi
440   solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
441   if test -z "$solinst" ; then
442     echo "Solaris install program not found. Use --install=/usr/ucb/install or"
443     echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
444     echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
445     exit 1
446   fi
447   if test "$solinst" = "/usr/sbin/install" ; then
448     echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
449     echo "try ginstall from the GNU fileutils available from www.blastwave.org"
450     echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
451     exit 1
452   fi
453   sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
454   if test -z "$sol_ar" ; then
455     echo "Error: No path includes ar"
456     if test -f /usr/ccs/bin/ar ; then
457       echo "Add /usr/ccs/bin to your path and rerun configure"
458     fi
459     exit 1
460   fi
461 fi 
462
463
464 if test -z "$target_list" ; then
465 # these targets are portable
466     if [ "$softmmu" = "yes" ] ; then
467         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 "
468     fi
469 # the following are Linux specific
470     if [ "$linux_user" = "yes" ] ; then
471         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"
472     fi
473 # the following are Darwin specific
474     if [ "$darwin_user" = "yes" ] ; then
475         target_list="i386-darwin-user ppc-darwin-user $target_list"
476     fi
477 else
478     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
479 fi
480 if test -z "$target_list" ; then
481     echo "No targets enabled"
482     exit 1
483 fi
484
485 if test -z "$cross_prefix" ; then
486
487 # ---
488 # big/little endian test
489 cat > $TMPC << EOF
490 #include <inttypes.h>
491 int main(int argc, char ** argv){
492         volatile uint32_t i=0x01234567;
493         return (*((uint8_t*)(&i))) == 0x67;
494 }
495 EOF
496
497 if $cc -o $TMPE $TMPC 2> /dev/null ; then
498 $TMPE && bigendian="yes"
499 else
500 echo big/little test failed
501 fi
502
503 else
504
505 # if cross compiling, cannot launch a program, so make a static guess
506 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
507     bigendian="yes"
508 fi
509
510 fi
511
512 # host long bits test
513 hostlongbits="32"
514 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
515     hostlongbits="64"
516 fi
517
518 # check gcc options support
519 cat > $TMPC <<EOF
520 int main(void) {
521 }
522 EOF
523
524 ##########################################
525 # SDL probe
526
527 sdl_too_old=no
528
529 if test -z "$sdl" ; then
530
531 sdl_config="sdl-config"
532 sdl=no
533 sdl_static=no
534
535 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
536 # win32 cross compilation case
537     sdl_config="i386-mingw32msvc-sdl-config"
538     sdl=yes
539 else
540 # normal SDL probe
541 cat > $TMPC << EOF
542 #include <SDL.h>
543 #undef main /* We don't want SDL to override our main() */
544 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
545 EOF
546
547 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
548 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
549 if test "$_sdlversion" -lt 121 ; then
550 sdl_too_old=yes
551 else
552  if test "$cocoa" = "no" ; then
553    sdl=yes
554  fi
555 fi
556
557 # static link with sdl ?
558 if test "$sdl" = "yes" ; then
559 aa="no"
560 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
561 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
562 if [ "$aa" = "yes" ] ; then
563   sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
564 fi
565
566 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
567   sdl_static=yes
568 fi
569
570 fi # static link
571
572 fi # sdl compile test
573
574 fi # cross compilation
575
576 else
577  # Make sure to disable cocoa if sdl was set
578  if test "$sdl" = "yes" ; then
579    cocoa="no"
580    coreaudio="no"
581  fi
582 fi # -z $sdl
583
584 ##########################################
585 # alsa sound support libraries
586
587 if test "$alsa" = "yes" ; then
588   cat > $TMPC << EOF
589 #include <alsa/asoundlib.h>
590 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
591 EOF
592   if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
593     :
594   else
595     echo
596     echo "Error: Could not find alsa"
597     echo "Make sure to have the alsa libs and headers installed."
598     echo
599     exit 1
600   fi
601 fi
602
603 # Check if tools are available to build documentation.
604 if [ -x "`which texi2html 2>/dev/null`" ] && \
605    [ -x "`which pod2man 2>/dev/null`" ]; then
606   build_docs="yes"
607 fi
608
609 if test "$mingw32" = "yes" ; then
610   if test -z "$prefix" ; then
611       prefix="/c/Program Files/Qemu"
612   fi
613   mansuffix=""
614   datasuffix=""
615   docsuffix=""
616   binsuffix=""
617 else
618   if test -z "$prefix" ; then
619       prefix="/usr/local"
620   fi
621   mansuffix="/share/man"
622   datasuffix="/share/qemu"
623   docsuffix="/share/doc/qemu"
624   binsuffix="/bin"
625 fi
626
627 echo "Install prefix    $prefix"
628 echo "BIOS directory    $prefix$datasuffix"
629 echo "binary directory  $prefix$binsuffix"
630 if test "$mingw32" = "no" ; then
631 echo "Manual directory  $prefix$mansuffix"
632 echo "ELF interp prefix $interp_prefix"
633 fi
634 echo "Source path       $source_path"
635 echo "C compiler        $cc"
636 echo "Host C compiler   $host_cc"
637 echo "make              $make"
638 echo "install           $install"
639 echo "host CPU          $cpu"
640 echo "host big endian   $bigendian"
641 echo "target list       $target_list"
642 echo "gprof enabled     $gprof"
643 echo "profiler          $profiler"
644 echo "static build      $static"
645 if test "$darwin" = "yes" ; then
646     echo "Cocoa support     $cocoa"
647 fi
648 echo "SDL support       $sdl"
649 if test "$sdl" != "no" ; then
650     echo "SDL static link   $sdl_static"
651 fi
652 echo "mingw32 support   $mingw32"
653 echo "Adlib support     $adlib"
654 echo "CoreAudio support $coreaudio"
655 echo "ALSA support      $alsa"
656 echo "DSound support    $dsound"
657 if test "$fmod" = "yes"; then
658     if test -z $fmod_lib || test -z $fmod_inc; then
659         echo
660         echo "Error: You must specify path to FMOD library and headers"
661         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
662         echo
663         exit 1
664     fi
665     fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
666 else
667     fmod_support=""
668 fi
669 echo "FMOD support      $fmod $fmod_support"
670 if test -n "$sparc_cpu"; then
671     echo "Target Sparc Arch $sparc_cpu"
672 fi
673 echo "kqemu support     $kqemu"
674 echo "Documentation     $build_docs"
675 [ ! -z "$uname_release" ] && \
676 echo "uname -r          $uname_release"
677
678 if test $sdl_too_old = "yes"; then
679 echo "-> Your SDL version is too old - please upgrade to have SDL support"
680 fi
681 #if test "$sdl_static" = "no"; then
682 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
683 #fi
684 config_mak="config-host.mak"
685 config_h="config-host.h"
686
687 #echo "Creating $config_mak and $config_h"
688
689 echo "# Automatically generated by configure - do not modify" > $config_mak
690 echo "# Configured with: $0 $@" >> $config_mak
691 echo "/* Automatically generated by configure - do not modify */" > $config_h
692
693 echo "prefix=$prefix" >> $config_mak
694 echo "bindir=\${prefix}$binsuffix" >> $config_mak
695 echo "mandir=\${prefix}$mansuffix" >> $config_mak
696 echo "datadir=\${prefix}$datasuffix" >> $config_mak
697 echo "docdir=\${prefix}$docsuffix" >> $config_mak
698 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
699 echo "MAKE=$make" >> $config_mak
700 echo "INSTALL=$install" >> $config_mak
701 echo "CC=$cc" >> $config_mak
702 echo "HOST_CC=$host_cc" >> $config_mak
703 echo "AR=$ar" >> $config_mak
704 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
705 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
706 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
707 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
708 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
709 echo "CFLAGS=$CFLAGS" >> $config_mak
710 echo "LDFLAGS=$LDFLAGS" >> $config_mak
711 echo "EXESUF=$EXESUF" >> $config_mak
712 echo "AIOLIBS=$AIOLIBS" >> $config_mak
713 if test "$cpu" = "i386" ; then
714   echo "ARCH=i386" >> $config_mak
715   echo "#define HOST_I386 1" >> $config_h
716 elif test "$cpu" = "x86_64" ; then
717   echo "ARCH=x86_64" >> $config_mak
718   echo "#define HOST_X86_64 1" >> $config_h
719 elif test "$cpu" = "armv4b" ; then
720   echo "ARCH=arm" >> $config_mak
721   echo "#define HOST_ARM 1" >> $config_h
722 elif test "$cpu" = "armv4l" ; then
723   echo "ARCH=arm" >> $config_mak
724   echo "#define HOST_ARM 1" >> $config_h
725 elif test "$cpu" = "powerpc" ; then
726   echo "ARCH=ppc" >> $config_mak
727   echo "#define HOST_PPC 1" >> $config_h
728 elif test "$cpu" = "mips" ; then
729   echo "ARCH=mips" >> $config_mak
730   echo "#define HOST_MIPS 1" >> $config_h
731 elif test "$cpu" = "mips64" ; then
732   echo "ARCH=mips64" >> $config_mak
733   echo "#define HOST_MIPS64 1" >> $config_h
734 elif test "$cpu" = "s390" ; then
735   echo "ARCH=s390" >> $config_mak
736   echo "#define HOST_S390 1" >> $config_h
737 elif test "$cpu" = "alpha" ; then
738   echo "ARCH=alpha" >> $config_mak
739   echo "#define HOST_ALPHA 1" >> $config_h
740 elif test "$cpu" = "sparc" ; then
741   echo "ARCH=sparc" >> $config_mak
742   echo "#define HOST_SPARC 1" >> $config_h
743 elif test "$cpu" = "sparc64" ; then
744   echo "ARCH=sparc64" >> $config_mak
745   echo "#define HOST_SPARC64 1" >> $config_h
746 elif test "$cpu" = "ia64" ; then
747   echo "ARCH=ia64" >> $config_mak
748   echo "#define HOST_IA64 1" >> $config_h
749 elif test "$cpu" = "m68k" ; then
750   echo "ARCH=m68k" >> $config_mak
751   echo "#define HOST_M68K 1" >> $config_h
752 else
753   echo "Unsupported CPU = $cpu"
754   exit 1
755 fi
756 if test "$bigendian" = "yes" ; then
757   echo "WORDS_BIGENDIAN=yes" >> $config_mak
758   echo "#define WORDS_BIGENDIAN 1" >> $config_h
759 fi
760 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
761 if test "$mingw32" = "yes" ; then
762   echo "CONFIG_WIN32=yes" >> $config_mak
763   echo "#define CONFIG_WIN32 1" >> $config_h
764 else
765   cat > $TMPC << EOF
766 #include <byteswap.h>
767 int main(void) { return bswap_32(0); }
768 EOF
769   if $cc -o $TMPE $TMPC 2> /dev/null ; then
770     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
771   fi
772 fi
773 if test "$darwin" = "yes" ; then
774   echo "CONFIG_DARWIN=yes" >> $config_mak
775   echo "#define CONFIG_DARWIN 1" >> $config_h
776 fi
777 if test "$solaris" = "yes" ; then
778   echo "CONFIG_SOLARIS=yes" >> $config_mak
779   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
780   if test "$needs_libsunmath" = "yes" ; then
781     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
782     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
783   fi
784 fi
785 if test -n "$sparc_cpu"; then
786   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
787   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
788 fi
789 if test "$gdbstub" = "yes" ; then
790   echo "CONFIG_GDBSTUB=yes" >> $config_mak
791   echo "#define CONFIG_GDBSTUB 1" >> $config_h
792 fi
793 if test "$gprof" = "yes" ; then
794   echo "TARGET_GPROF=yes" >> $config_mak
795   echo "#define HAVE_GPROF 1" >> $config_h
796 fi
797 if test "$static" = "yes" ; then
798   echo "CONFIG_STATIC=yes" >> $config_mak
799   echo "#define CONFIG_STATIC 1" >> $config_h
800 fi
801 if test $profiler = "yes" ; then
802   echo "#define CONFIG_PROFILER 1" >> $config_h
803 fi
804 if test "$slirp" = "yes" ; then
805   echo "CONFIG_SLIRP=yes" >> $config_mak
806   echo "#define CONFIG_SLIRP 1" >> $config_h
807 fi
808 if test "$adlib" = "yes" ; then
809   echo "CONFIG_ADLIB=yes" >> $config_mak
810   echo "#define CONFIG_ADLIB 1" >> $config_h
811 fi
812 if test "$oss" = "yes" ; then
813   echo "CONFIG_OSS=yes" >> $config_mak
814   echo "#define CONFIG_OSS 1" >> $config_h
815 fi
816 if test "$coreaudio" = "yes" ; then
817   echo "CONFIG_COREAUDIO=yes" >> $config_mak
818   echo "#define CONFIG_COREAUDIO 1" >> $config_h
819 fi
820 if test "$alsa" = "yes" ; then
821   echo "CONFIG_ALSA=yes" >> $config_mak
822   echo "#define CONFIG_ALSA 1" >> $config_h
823 fi
824 if test "$dsound" = "yes" ; then
825   echo "CONFIG_DSOUND=yes" >> $config_mak
826   echo "#define CONFIG_DSOUND 1" >> $config_h
827 fi
828 if test "$fmod" = "yes" ; then
829   echo "CONFIG_FMOD=yes" >> $config_mak
830   echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
831   echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
832   echo "#define CONFIG_FMOD 1" >> $config_h
833 fi
834 qemu_version=`head $source_path/VERSION`
835 echo "VERSION=$qemu_version" >>$config_mak
836 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
837
838 echo "SRC_PATH=$source_path" >> $config_mak
839 if [ "$source_path_used" = "yes" ]; then
840   echo "VPATH=$source_path" >> $config_mak
841 fi
842 echo "TARGET_DIRS=$target_list" >> $config_mak
843 if [ "$build_docs" = "yes" ] ; then
844   echo "BUILD_DOCS=yes" >> $config_mak
845 fi
846
847 # XXX: suppress that
848 if [ "$bsd" = "yes" ] ; then
849   echo "#define O_LARGEFILE 0" >> $config_h
850   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
851   echo "#define _BSD 1" >> $config_h
852 fi
853
854 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
855
856 for target in $target_list; do
857 target_dir="$target"
858 config_mak=$target_dir/config.mak
859 config_h=$target_dir/config.h
860 target_cpu=`echo $target | cut -d '-' -f 1`
861 target_bigendian="no"
862 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
863 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
864 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
865 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
866 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
867 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
868 [ "$target_cpu" = "mips" ] && target_bigendian=yes
869 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
870 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
871 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
872 target_softmmu="no"
873 if expr $target : '.*-softmmu' > /dev/null ; then
874   target_softmmu="yes"
875 fi
876 target_user_only="no"
877 if expr $target : '.*-user' > /dev/null ; then
878   target_user_only="yes"
879 fi
880
881 target_linux_user="no"
882 if expr $target : '.*-linux-user' > /dev/null ; then
883   target_linux_user="yes"
884 fi
885
886 target_darwin_user="no"
887 if expr $target : '.*-darwin-user' > /dev/null ; then
888   target_darwin_user="yes"
889 fi
890
891 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
892         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
893     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
894     echo "To build QEMU without graphical output configure with --disable-gfx-check"
895     echo "Note that this will disable all output from the virtual graphics card."
896     exit 1;
897 fi
898
899 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
900
901 mkdir -p $target_dir
902 mkdir -p $target_dir/fpu
903 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
904   mkdir -p $target_dir/nwfpe
905 fi
906 if test "$target_user_only" = "no" ; then
907   mkdir -p $target_dir/slirp
908 fi
909
910 #
911 # don't use ln -sf as not all "ln -sf" over write the file/link
912 #
913 rm -f $target_dir/Makefile
914 ln -s $source_path/Makefile.target $target_dir/Makefile
915
916
917 echo "# Automatically generated by configure - do not modify" > $config_mak
918 echo "/* Automatically generated by configure - do not modify */" > $config_h
919
920
921 echo "include ../config-host.mak" >> $config_mak
922 echo "#include \"../config-host.h\"" >> $config_h
923
924 bflt="no"
925 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
926 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
927
928 if test "$target_cpu" = "i386" ; then
929   echo "TARGET_ARCH=i386" >> $config_mak
930   echo "#define TARGET_ARCH \"i386\"" >> $config_h
931   echo "#define TARGET_I386 1" >> $config_h
932   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
933     echo "#define USE_KQEMU 1" >> $config_h
934   fi
935 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
936   echo "TARGET_ARCH=arm" >> $config_mak
937   echo "#define TARGET_ARCH \"arm\"" >> $config_h
938   echo "#define TARGET_ARM 1" >> $config_h
939   bflt="yes"
940 elif test "$target_cpu" = "sparc" ; then
941   echo "TARGET_ARCH=sparc" >> $config_mak
942   echo "#define TARGET_ARCH \"sparc\"" >> $config_h
943   echo "#define TARGET_SPARC 1" >> $config_h
944 elif test "$target_cpu" = "sparc64" ; then
945   echo "TARGET_ARCH=sparc64" >> $config_mak
946   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
947   echo "#define TARGET_SPARC 1" >> $config_h
948   echo "#define TARGET_SPARC64 1" >> $config_h
949 elif test "$target_cpu" = "ppc" ; then
950   echo "TARGET_ARCH=ppc" >> $config_mak
951   echo "#define TARGET_ARCH \"ppc\"" >> $config_h
952   echo "#define TARGET_PPC 1" >> $config_h
953 elif test "$target_cpu" = "ppc64" ; then
954   echo "TARGET_ARCH=ppc64" >> $config_mak
955   echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
956   echo "#define TARGET_PPC 1" >> $config_h
957   echo "#define TARGET_PPC64 1" >> $config_h
958 elif test "$target_cpu" = "ppcemb" ; then
959   echo "TARGET_ARCH=ppcemb" >> $config_mak
960   echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
961   echo "#define TARGET_PPC 1" >> $config_h
962   echo "#define TARGET_PPCEMB 1" >> $config_h
963 elif test "$target_cpu" = "x86_64" ; then
964   echo "TARGET_ARCH=x86_64" >> $config_mak
965   echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
966   echo "#define TARGET_I386 1" >> $config_h
967   echo "#define TARGET_X86_64 1" >> $config_h
968   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
969     echo "#define USE_KQEMU 1" >> $config_h
970   fi
971 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
972   echo "TARGET_ARCH=mips" >> $config_mak
973   echo "#define TARGET_ARCH \"mips\"" >> $config_h
974   echo "#define TARGET_MIPS 1" >> $config_h
975   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
976   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
977 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
978   echo "TARGET_ARCH=mips64" >> $config_mak
979   echo "#define TARGET_ARCH \"mips64\"" >> $config_h
980   echo "#define TARGET_MIPS 1" >> $config_h
981   echo "#define TARGET_MIPS64 1" >> $config_h
982   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
983   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
984 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
985   echo "TARGET_ARCH=sh4" >> $config_mak
986   echo "#define TARGET_ARCH \"sh4\"" >> $config_h
987   echo "#define TARGET_SH4 1" >> $config_h
988   bflt="yes"
989 elif test "$target_cpu" = "m68k" ; then
990   echo "TARGET_ARCH=m68k" >> $config_mak
991   echo "#define TARGET_ARCH \"m68k\"" >> $config_h
992   echo "#define TARGET_M68K 1" >> $config_h
993   bflt="yes"
994 elif test "$target_cpu" = "alpha" ; then
995   echo "TARGET_ARCH=alpha" >> $config_mak
996   echo "#define TARGET_ARCH \"alpha\"" >> $config_h
997   echo "#define TARGET_ALPHA 1" >> $config_h
998 else
999   echo "Unsupported target CPU"
1000   exit 1
1001 fi
1002 if test "$target_bigendian" = "yes" ; then
1003   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1004   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1005 fi
1006 if test "$target_softmmu" = "yes" ; then
1007   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1008   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1009 fi
1010 if test "$target_user_only" = "yes" ; then
1011   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1012   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1013 fi
1014 if test "$target_linux_user" = "yes" ; then
1015   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1016   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1017 fi
1018 if test "$target_darwin_user" = "yes" ; then
1019   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1020   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1021 fi
1022
1023 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1024   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1025   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1026 fi
1027 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1028   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1029   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1030 fi
1031 # sdl defines
1032
1033 if test "$target_user_only" = "no"; then
1034     if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1035         sdl1=$sdl_static
1036     else
1037         sdl1=$sdl
1038     fi
1039     if test "$sdl1" = "yes" ; then
1040         echo "#define CONFIG_SDL 1" >> $config_h
1041         echo "CONFIG_SDL=yes" >> $config_mak
1042         if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1043             echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1044         else
1045             echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1046         fi
1047         if [ "${aa}" = "yes" ] ; then
1048             echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1049         else
1050             echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1051         fi
1052     fi
1053 fi
1054
1055 if test "$cocoa" = "yes" ; then
1056     echo "#define CONFIG_COCOA 1" >> $config_h
1057     echo "CONFIG_COCOA=yes" >> $config_mak
1058 fi
1059
1060 done # for target in $targets
1061
1062 # build tree in object directory if source path is different from current one
1063 if test "$source_path_used" = "yes" ; then
1064     DIRS="tests"
1065     FILES="Makefile tests/Makefile"
1066     for dir in $DIRS ; do
1067             mkdir -p $dir
1068     done
1069     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1070     for f in $FILES ; do
1071         rm -f $f
1072         ln -s $source_path/$f $f
1073     done
1074 fi
1075
1076 rm -f $TMPO $TMPC $TMPE $TMPS