3 # qemu configure script (c) 2003 Fabrice Bellard
5 # set temporary file name
6 if test ! -z "$TMPDIR" ; then
8 elif test ! -z "$TEMPDIR" ; then
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"
21 interp_prefix="/usr/gnemul/qemu-%M"
26 gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
35 i386|i486|i586|i686|i86pc|BePC)
47 "Power Macintosh"|ppc|ppc64)
116 OS_CFLAGS="-mno-cygwin"
117 VL_OS_LDFLAGS="-mno-cygwin"
118 if [ "$cpu" = "i386" ] ; then
124 if [ "$cpu" = "i386" ] ; then
130 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
137 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
155 OS_CFLAGS="-mdynamic-no-pic"
156 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
162 needs_libsunmath="no"
163 solarisrev=`uname -r | cut -f2 -d.`
164 # have to select again, because `uname -m` returns i86pc
165 # even on an x86_64 box.
166 solariscpu=`isainfo -k`
167 if test "${solariscpu}" = "amd64" ; then
170 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
171 if test "$solarisrev" -le 9 ; then
172 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
173 needs_libsunmath="yes"
175 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
176 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
177 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
178 echo "Studio 11 can be downloaded from www.sun.com."
182 if test "$solarisrev" -ge 9 ; then
186 if test -f /usr/include/sys/soundcard.h ; then
194 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
200 if [ "$bsd" = "yes" ] ; then
201 if [ "$darwin" != "yes" ] ; then
207 source_path=`dirname "$0"`
208 if [ -z "$source_path" ]; then
211 source_path=`cd "$source_path"; pwd`
213 if test "$source_path" = `pwd` ; then
214 source_path_used="no"
216 source_path_used="yes"
220 # generate compile errors on warnings for development builds
221 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
226 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
228 --help|-h) show_help=yes
230 --prefix=*) prefix="$optarg"
232 --interp-prefix=*) interp_prefix="$optarg"
234 --source-path=*) source_path="$optarg"
235 source_path_used="yes"
237 --cross-prefix=*) cross_prefix="$optarg"
242 --host-cc=*) host_cc="$optarg"
244 --make=*) make="$optarg"
246 --install=*) install="$optarg"
248 --extra-cflags=*) CFLAGS="$optarg"
250 --extra-ldflags=*) LDFLAGS="$optarg"
252 --cpu=*) cpu="$optarg"
254 --target-list=*) target_list="$optarg"
256 --enable-gprof) gprof="yes"
258 --static) static="yes"
260 --disable-sdl) sdl="no"
262 --enable-coreaudio) coreaudio="yes"
264 --enable-alsa) alsa="yes"
266 --enable-esd) esd="yes"
268 --enable-dsound) dsound="yes"
270 --enable-fmod) fmod="yes"
272 --fmod-lib=*) fmod_lib="$optarg"
274 --fmod-inc=*) fmod_inc="$optarg"
276 --disable-vnc-tls) vnc_tls="no"
278 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
280 --disable-slirp) slirp="no"
282 --enable-adlib) adlib="yes"
284 --enable-ac97) ac97="yes"
286 --disable-kqemu) kqemu="no"
288 --enable-profiler) profiler="yes"
290 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
292 --disable-gfx-check) check_gfx="no"
294 --disable-gcc-check) check_gcc="no"
296 --disable-system) softmmu="no"
298 --enable-system) softmmu="yes"
300 --disable-linux-user) linux_user="no"
302 --enable-linux-user) linux_user="yes"
304 --disable-darwin-user) darwin_user="no"
306 --enable-darwin-user) darwin_user="yes"
308 --enable-uname-release=*) uname_release="$optarg"
313 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
314 target_cpu="sparc"; cpu="sparc" ;;
315 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
316 target_cpu="sparc"; cpu="sparc" ;;
317 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
318 target_cpu="sparc64"; cpu="sparc64" ;;
319 *) echo "undefined SPARC architecture. Exiting";exit 1;;
322 --enable-werror) werror="yes"
324 --disable-werror) werror="no"
326 *) echo "ERROR: unknown option $opt"; show_help="yes"
331 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
334 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
335 AIOLIBS="-lrt -lpthread"
338 # default flags for all hosts
339 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
340 LDFLAGS="$LDFLAGS -g"
341 if test "$werror" = "yes" ; then
342 CFLAGS="$CFLAGS -Werror"
346 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
347 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
350 sparc) if test -z "$sparc_cpu" ; then
351 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
354 ARCH_CFLAGS="${SP_CFLAGS}"
355 ARCH_LDFLAGS="${SP_LDFLAGS}"
358 sparc64) if test -z "$sparc_cpu" ; then
359 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
362 ARCH_CFLAGS="${SP_CFLAGS}"
363 ARCH_LDFLAGS="${SP_LDFLAGS}"
367 ARCH_CFLAGS="-march=z900"
371 if [ "$solaris" = "yes" -a "$cpu" = "x86_64" ] ; then
372 CFLAGS="${CFLAGS} -m64"
373 OS_CFLAGS="${OS_CFLAGS} -m64"
374 OS_LDFLAGS="${OS_LDFLAGS} -m64"
377 if [ "$solaris" = "yes" -a "$cpu" = "i386" ] ; then
378 CFLAGS="${CFLAGS} -m32"
379 OS_CFLAGS="${OS_CFLAGS} -m32"
382 if test x"$show_help" = x"yes" ; then
385 Usage: configure [options]
386 Options: [defaults in brackets after descriptions]
389 echo "Standard options:"
390 echo " --help print this message"
391 echo " --prefix=PREFIX install in PREFIX [$prefix]"
392 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
393 echo " use %M for cpu name [$interp_prefix]"
394 echo " --target-list=LIST set target list [$target_list]"
396 echo "kqemu kernel acceleration support:"
397 echo " --disable-kqemu disable kqemu support"
399 echo "Advanced options (experts only):"
400 echo " --source-path=PATH path of source code [$source_path]"
401 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
402 echo " --cc=CC use C compiler CC [$cc]"
403 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
404 echo " --make=MAKE use specified make [$make]"
405 echo " --install=INSTALL use specified install [$install]"
406 echo " --static enable static build [$static]"
407 echo " --disable-werror disable compilation abort on warning"
408 echo " --disable-sdl disable SDL"
409 echo " --enable-cocoa enable COCOA (Mac OS X only)"
410 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
411 echo " --enable-adlib enable Adlib emulation"
412 echo " --enable-ac97 enable AC97 emulation"
413 echo " --enable-coreaudio enable Coreaudio audio driver"
414 echo " --enable-alsa enable ALSA audio driver"
415 echo " --enable-esd enable EsoundD audio driver"
416 echo " --enable-fmod enable FMOD audio driver"
417 echo " --enable-dsound enable DirectSound audio driver"
418 echo " --disable-vnc-tls disable TLS encryption for VNC server"
419 echo " --enable-system enable all system emulation targets"
420 echo " --disable-system disable all system emulation targets"
421 echo " --enable-linux-user enable all linux usermode emulation targets"
422 echo " --disable-linux-user disable all linux usermode emulation targets"
423 echo " --enable-darwin-user enable all darwin usermode emulation targets"
424 echo " --disable-darwin-user disable all darwin usermode emulation targets"
425 echo " --fmod-lib path to FMOD library"
426 echo " --fmod-inc path to FMOD includes"
427 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
428 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
430 echo "NOTE: The object files are built at the place where configure is launched"
434 cc="${cross_prefix}${cc}"
435 ar="${cross_prefix}${ar}"
436 strip="${cross_prefix}${strip}"
438 # check that the C compiler works.
443 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
444 : C compiler works ok
446 echo "ERROR: \"$cc\" either does not exist or does not work"
450 if test "$mingw32" = "yes" ; then
456 # Check for gcc4, error if pre-gcc4
457 if test "$check_gcc" = "yes" ; then
462 int main(){return 0;}
464 if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
465 echo "WARNING: \"$cc\" looks like gcc 4.x"
467 if test "$gcc3_search" = "yes" ; then
468 echo "Looking for gcc 3.x"
469 for compat_cc in $gcc3_list ; do
470 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
471 echo "Found \"$compat_cc\""
472 cc="$cross_prefix$compat_cc"
473 found_compat_cc="yes"
477 if test "$found_compat_cc" = "no" ; then
478 echo "gcc 3.x not found!"
481 if test "$found_compat_cc" = "no" ; then
482 echo "QEMU is known to have problems when compiled with gcc 4.x"
483 echo "It is recommended that you use gcc 3.x to build QEMU"
484 echo "To use this compiler anyway, configure with --disable-gcc-check"
491 # Solaris specific configure tool chain decisions
493 if test "$solaris" = "yes" ; then
495 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
496 # override the check with --disable-gcc-check
498 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
500 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
501 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
502 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
503 echo "or get the latest patch from SunSolve for gcc"
507 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
508 if test -z "$solinst" ; then
509 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
510 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
511 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
514 if test "$solinst" = "/usr/sbin/install" ; then
515 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
516 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
517 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
520 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
521 if test -z "$sol_ar" ; then
522 echo "Error: No path includes ar"
523 if test -f /usr/ccs/bin/ar ; then
524 echo "Add /usr/ccs/bin to your path and rerun configure"
531 if test -z "$target_list" ; then
532 # these targets are portable
533 if [ "$softmmu" = "yes" ] ; then
534 target_list="i386-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc-softmmu ppcemb-softmmu ppc64-softmmu m68k-softmmu sh4-softmmu sh4eb-softmmu cris-softmmu"
536 # the following are Linux specific
537 if [ "$linux_user" = "yes" ] ; then
538 target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user sparc64-linux-user sparc32plus-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user sh4-linux-user sh4eb-linux-user ppc-linux-user ppc64-linux-user ppc64abi32-linux-user x86_64-linux-user cris-linux-user $target_list"
540 # the following are Darwin specific
541 if [ "$darwin_user" = "yes" ] ; then
542 target_list="i386-darwin-user ppc-darwin-user $target_list"
545 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
547 if test -z "$target_list" ; then
548 echo "No targets enabled"
552 if test -z "$cross_prefix" ; then
555 # big/little endian test
557 #include <inttypes.h>
558 int main(int argc, char ** argv){
559 volatile uint32_t i=0x01234567;
560 return (*((uint8_t*)(&i))) == 0x67;
564 if $cc -o $TMPE $TMPC 2> /dev/null ; then
565 $TMPE && bigendian="yes"
567 echo big/little test failed
572 # if cross compiling, cannot launch a program, so make a static guess
573 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
579 # host long bits test
581 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
585 # check gcc options support
591 ##########################################
596 if test -z "$sdl" ; then
597 sdl_config="sdl-config"
601 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
602 # win32 cross compilation case
603 sdl_config="i386-mingw32msvc-sdl-config"
609 #undef main /* We don't want SDL to override our main() */
610 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
612 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
613 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
614 if test "$_sdlversion" -lt 121 ; then
617 if test "$cocoa" = "no" ; then
622 # static link with sdl ?
623 if test "$sdl" = "yes" ; then
625 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
626 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
627 if [ "$aa" = "yes" ] ; then
628 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
631 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
635 fi # sdl compile test
636 fi # cross compilation
638 # Make sure to disable cocoa if sdl was set
639 if test "$sdl" = "yes" ; then
645 ##########################################
647 if test "$vnc_tls" = "yes" ; then
648 `pkg-config gnutls` || vnc_tls="no"
650 if test "$vnc_tls" = "yes" ; then
651 vnc_tls_cflags=`pkg-config --cflags gnutls`
652 vnc_tls_libs=`pkg-config --libs gnutls`
655 ##########################################
656 # alsa sound support libraries
658 if test "$alsa" = "yes" ; then
660 #include <alsa/asoundlib.h>
661 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
663 if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
667 echo "Error: Could not find alsa"
668 echo "Make sure to have the alsa libs and headers installed."
674 # Check if tools are available to build documentation.
675 if [ -x "`which texi2html 2>/dev/null`" ] && \
676 [ -x "`which pod2man 2>/dev/null`" ]; then
680 if test "$mingw32" = "yes" ; then
681 if test -z "$prefix" ; then
682 prefix="/c/Program Files/Qemu"
689 if test -z "$prefix" ; then
692 mansuffix="/share/man"
693 datasuffix="/share/qemu"
694 docsuffix="/share/doc/qemu"
698 echo "Install prefix $prefix"
699 echo "BIOS directory $prefix$datasuffix"
700 echo "binary directory $prefix$binsuffix"
701 if test "$mingw32" = "no" ; then
702 echo "Manual directory $prefix$mansuffix"
703 echo "ELF interp prefix $interp_prefix"
705 echo "Source path $source_path"
706 echo "C compiler $cc"
707 echo "Host C compiler $host_cc"
709 echo "install $install"
711 echo "host big endian $bigendian"
712 echo "target list $target_list"
713 echo "gprof enabled $gprof"
714 echo "profiler $profiler"
715 echo "static build $static"
716 echo "-Werror enabled $werror"
717 if test "$darwin" = "yes" ; then
718 echo "Cocoa support $cocoa"
720 echo "SDL support $sdl"
721 if test "$sdl" != "no" ; then
722 echo "SDL static link $sdl_static"
724 echo "mingw32 support $mingw32"
725 echo "Adlib support $adlib"
726 echo "AC97 support $ac97"
727 echo "CoreAudio support $coreaudio"
728 echo "ALSA support $alsa"
729 echo "EsounD support $esd"
730 echo "DSound support $dsound"
731 if test "$fmod" = "yes"; then
732 if test -z $fmod_lib || test -z $fmod_inc; then
734 echo "Error: You must specify path to FMOD library and headers"
735 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
739 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
743 echo "FMOD support $fmod $fmod_support"
744 echo "OSS support $oss"
745 echo "VNC TLS support $vnc_tls"
746 if test "$vnc_tls" = "yes" ; then
747 echo " TLS CFLAGS $vnc_tls_cflags"
748 echo " TLS LIBS $vnc_tls_libs"
750 if test -n "$sparc_cpu"; then
751 echo "Target Sparc Arch $sparc_cpu"
753 echo "kqemu support $kqemu"
754 echo "Documentation $build_docs"
755 [ ! -z "$uname_release" ] && \
756 echo "uname -r $uname_release"
758 if test $sdl_too_old = "yes"; then
759 echo "-> Your SDL version is too old - please upgrade to have SDL support"
761 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
762 echo "The error log from compiling the libSDL test is: "
763 cat /tmp/qemu-$$-sdl-config.log
765 rm -f /tmp/qemu-$$-sdl-config.log
766 #if test "$sdl_static" = "no"; then
767 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
769 config_mak="config-host.mak"
770 config_h="config-host.h"
772 #echo "Creating $config_mak and $config_h"
774 test -f $config_h && mv $config_h ${config_h}~
776 echo "# Automatically generated by configure - do not modify" > $config_mak
777 echo "# Configured with: $0 $@" >> $config_mak
778 echo "/* Automatically generated by configure - do not modify */" > $config_h
780 echo "prefix=$prefix" >> $config_mak
781 echo "bindir=\${prefix}$binsuffix" >> $config_mak
782 echo "mandir=\${prefix}$mansuffix" >> $config_mak
783 echo "datadir=\${prefix}$datasuffix" >> $config_mak
784 echo "docdir=\${prefix}$docsuffix" >> $config_mak
785 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
786 echo "MAKE=$make" >> $config_mak
787 echo "INSTALL=$install" >> $config_mak
788 echo "CC=$cc" >> $config_mak
789 echo "HOST_CC=$host_cc" >> $config_mak
790 echo "AR=$ar" >> $config_mak
791 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
792 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
793 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
794 echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
795 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
796 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
797 echo "CFLAGS=$CFLAGS" >> $config_mak
798 echo "LDFLAGS=$LDFLAGS" >> $config_mak
799 echo "EXESUF=$EXESUF" >> $config_mak
800 echo "AIOLIBS=$AIOLIBS" >> $config_mak
801 if test "$cpu" = "i386" ; then
802 echo "ARCH=i386" >> $config_mak
803 echo "#define HOST_I386 1" >> $config_h
804 elif test "$cpu" = "x86_64" ; then
805 echo "ARCH=x86_64" >> $config_mak
806 echo "#define HOST_X86_64 1" >> $config_h
807 elif test "$cpu" = "armv4b" ; then
808 echo "ARCH=arm" >> $config_mak
809 echo "#define HOST_ARM 1" >> $config_h
810 elif test "$cpu" = "armv4l" ; then
811 echo "ARCH=arm" >> $config_mak
812 echo "#define HOST_ARM 1" >> $config_h
813 elif test "$cpu" = "powerpc" ; then
814 echo "ARCH=ppc" >> $config_mak
815 echo "#define HOST_PPC 1" >> $config_h
816 elif test "$cpu" = "mips" ; then
817 echo "ARCH=mips" >> $config_mak
818 echo "#define HOST_MIPS 1" >> $config_h
819 elif test "$cpu" = "mips64" ; then
820 echo "ARCH=mips64" >> $config_mak
821 echo "#define HOST_MIPS64 1" >> $config_h
822 elif test "$cpu" = "cris" ; then
823 echo "ARCH=cris" >> $config_mak
824 echo "#define HOST_CRIS 1" >> $config_h
825 elif test "$cpu" = "s390" ; then
826 echo "ARCH=s390" >> $config_mak
827 echo "#define HOST_S390 1" >> $config_h
828 elif test "$cpu" = "alpha" ; then
829 echo "ARCH=alpha" >> $config_mak
830 echo "#define HOST_ALPHA 1" >> $config_h
831 elif test "$cpu" = "sparc" ; then
832 echo "ARCH=sparc" >> $config_mak
833 echo "#define HOST_SPARC 1" >> $config_h
834 elif test "$cpu" = "sparc64" ; then
835 echo "ARCH=sparc64" >> $config_mak
836 echo "#define HOST_SPARC64 1" >> $config_h
837 elif test "$cpu" = "ia64" ; then
838 echo "ARCH=ia64" >> $config_mak
839 echo "#define HOST_IA64 1" >> $config_h
840 elif test "$cpu" = "m68k" ; then
841 echo "ARCH=m68k" >> $config_mak
842 echo "#define HOST_M68K 1" >> $config_h
844 echo "Unsupported CPU = $cpu"
847 if test "$bigendian" = "yes" ; then
848 echo "WORDS_BIGENDIAN=yes" >> $config_mak
849 echo "#define WORDS_BIGENDIAN 1" >> $config_h
851 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
852 if test "$mingw32" = "yes" ; then
853 echo "CONFIG_WIN32=yes" >> $config_mak
854 echo "#define CONFIG_WIN32 1" >> $config_h
857 #include <byteswap.h>
858 int main(void) { return bswap_32(0); }
860 if $cc -o $TMPE $TMPC 2> /dev/null ; then
861 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
864 if test "$darwin" = "yes" ; then
865 echo "CONFIG_DARWIN=yes" >> $config_mak
866 echo "#define CONFIG_DARWIN 1" >> $config_h
868 if test "$solaris" = "yes" ; then
869 echo "CONFIG_SOLARIS=yes" >> $config_mak
870 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
871 if test "$needs_libsunmath" = "yes" ; then
872 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
873 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
876 if test -n "$sparc_cpu"; then
877 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
878 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
880 if test "$gdbstub" = "yes" ; then
881 echo "CONFIG_GDBSTUB=yes" >> $config_mak
882 echo "#define CONFIG_GDBSTUB 1" >> $config_h
884 if test "$gprof" = "yes" ; then
885 echo "TARGET_GPROF=yes" >> $config_mak
886 echo "#define HAVE_GPROF 1" >> $config_h
888 if test "$static" = "yes" ; then
889 echo "CONFIG_STATIC=yes" >> $config_mak
890 echo "#define CONFIG_STATIC 1" >> $config_h
892 if test $profiler = "yes" ; then
893 echo "#define CONFIG_PROFILER 1" >> $config_h
895 if test "$slirp" = "yes" ; then
896 echo "CONFIG_SLIRP=yes" >> $config_mak
897 echo "#define CONFIG_SLIRP 1" >> $config_h
899 if test "$adlib" = "yes" ; then
900 echo "CONFIG_ADLIB=yes" >> $config_mak
901 echo "#define CONFIG_ADLIB 1" >> $config_h
903 if test "$ac97" = "yes" ; then
904 echo "CONFIG_AC97=yes" >> $config_mak
905 echo "#define CONFIG_AC97 1" >> $config_h
907 if test "$oss" = "yes" ; then
908 echo "CONFIG_OSS=yes" >> $config_mak
909 echo "#define CONFIG_OSS 1" >> $config_h
911 if test "$coreaudio" = "yes" ; then
912 echo "CONFIG_COREAUDIO=yes" >> $config_mak
913 echo "#define CONFIG_COREAUDIO 1" >> $config_h
915 if test "$alsa" = "yes" ; then
916 echo "CONFIG_ALSA=yes" >> $config_mak
917 echo "#define CONFIG_ALSA 1" >> $config_h
919 if test "$esd" = "yes" ; then
920 echo "CONFIG_ESD=yes" >> $config_mak
921 echo "#define CONFIG_ESD 1" >> $config_h
923 if test "$dsound" = "yes" ; then
924 echo "CONFIG_DSOUND=yes" >> $config_mak
925 echo "#define CONFIG_DSOUND 1" >> $config_h
927 if test "$fmod" = "yes" ; then
928 echo "CONFIG_FMOD=yes" >> $config_mak
929 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
930 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
931 echo "#define CONFIG_FMOD 1" >> $config_h
933 if test "$vnc_tls" = "yes" ; then
934 echo "CONFIG_VNC_TLS=yes" >> $config_mak
935 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
936 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
937 echo "#define CONFIG_VNC_TLS 1" >> $config_h
939 qemu_version=`head $source_path/VERSION`
940 echo "VERSION=$qemu_version" >>$config_mak
941 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
943 echo "SRC_PATH=$source_path" >> $config_mak
944 if [ "$source_path_used" = "yes" ]; then
945 echo "VPATH=$source_path" >> $config_mak
947 echo "TARGET_DIRS=$target_list" >> $config_mak
948 if [ "$build_docs" = "yes" ] ; then
949 echo "BUILD_DOCS=yes" >> $config_mak
951 if test "$static" = "yes"; then
956 if test "$sdl1" = "yes" ; then
957 echo "#define CONFIG_SDL 1" >> $config_h
958 echo "CONFIG_SDL=yes" >> $config_mak
959 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
960 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
962 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
964 if [ "${aa}" = "yes" ] ; then
965 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
967 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
970 if test "$cocoa" = "yes" ; then
971 echo "#define CONFIG_COCOA 1" >> $config_h
972 echo "CONFIG_COCOA=yes" >> $config_mak
976 if [ "$bsd" = "yes" ] ; then
977 echo "#define O_LARGEFILE 0" >> $config_h
978 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
979 echo "#define _BSD 1" >> $config_h
982 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
985 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
986 tools="qemu-img\$(EXESUF) $tools"
988 echo "TOOLS=$tools" >> $config_mak
990 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
992 for target in $target_list; do
994 config_mak=$target_dir/config.mak
995 config_h=$target_dir/config.h
996 target_cpu=`echo $target | cut -d '-' -f 1`
997 target_bigendian="no"
998 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
999 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1000 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1001 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1002 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1003 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1004 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1005 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1006 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1007 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1008 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1009 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1010 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1012 target_user_only="no"
1013 target_linux_user="no"
1014 target_darwin_user="no"
1016 ${target_cpu}-softmmu)
1017 target_softmmu="yes"
1019 ${target_cpu}-linux-user)
1020 target_user_only="yes"
1021 target_linux_user="yes"
1023 ${target_cpu}-darwin-user)
1024 target_user_only="yes"
1025 target_darwin_user="yes"
1028 echo "ERROR: Target '$target' not recognised"
1033 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1034 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1035 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1036 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1037 echo "Note that this will disable all output from the virtual graphics card."
1041 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1043 test -f $config_h && mv $config_h ${config_h}~
1045 mkdir -p $target_dir
1046 mkdir -p $target_dir/fpu
1047 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1048 mkdir -p $target_dir/nwfpe
1052 # don't use ln -sf as not all "ln -sf" over write the file/link
1054 rm -f $target_dir/Makefile
1055 ln -s $source_path/Makefile.target $target_dir/Makefile
1058 echo "# Automatically generated by configure - do not modify" > $config_mak
1059 echo "/* Automatically generated by configure - do not modify */" > $config_h
1062 echo "include ../config-host.mak" >> $config_mak
1063 echo "#include \"../config-host.h\"" >> $config_h
1067 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1068 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1070 if test "$target_cpu" = "i386" ; then
1071 echo "TARGET_ARCH=i386" >> $config_mak
1072 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1073 echo "#define TARGET_I386 1" >> $config_h
1074 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1075 echo "#define USE_KQEMU 1" >> $config_h
1077 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1078 echo "TARGET_ARCH=arm" >> $config_mak
1079 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1080 echo "#define TARGET_ARM 1" >> $config_h
1082 elif test "$target_cpu" = "sparc" ; then
1083 echo "TARGET_ARCH=sparc" >> $config_mak
1084 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1085 echo "#define TARGET_SPARC 1" >> $config_h
1086 elif test "$target_cpu" = "sparc64" ; then
1087 echo "TARGET_ARCH=sparc64" >> $config_mak
1088 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1089 echo "#define TARGET_SPARC 1" >> $config_h
1090 echo "#define TARGET_SPARC64 1" >> $config_h
1092 elif test "$target_cpu" = "sparc32plus" ; then
1093 echo "TARGET_ARCH=sparc64" >> $config_mak
1094 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1095 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1096 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1097 echo "#define TARGET_SPARC 1" >> $config_h
1098 echo "#define TARGET_SPARC64 1" >> $config_h
1099 echo "#define TARGET_ABI32 1" >> $config_h
1100 elif test "$target_cpu" = "ppc" ; then
1101 echo "TARGET_ARCH=ppc" >> $config_mak
1102 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1103 echo "#define TARGET_PPC 1" >> $config_h
1104 elif test "$target_cpu" = "ppcemb" ; then
1105 echo "TARGET_ARCH=ppcemb" >> $config_mak
1106 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1107 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1108 echo "#define TARGET_PPC 1" >> $config_h
1109 echo "#define TARGET_PPCEMB 1" >> $config_h
1110 elif test "$target_cpu" = "ppc64" ; then
1111 echo "TARGET_ARCH=ppc64" >> $config_mak
1112 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1113 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1114 echo "#define TARGET_PPC 1" >> $config_h
1115 echo "#define TARGET_PPC64 1" >> $config_h
1116 elif test "$target_cpu" = "ppc64abi32" ; then
1117 echo "TARGET_ARCH=ppc64" >> $config_mak
1118 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1119 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1120 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1121 echo "#define TARGET_PPC 1" >> $config_h
1122 echo "#define TARGET_PPC64 1" >> $config_h
1123 echo "#define TARGET_ABI32 1" >> $config_h
1124 elif test "$target_cpu" = "x86_64" ; then
1125 echo "TARGET_ARCH=x86_64" >> $config_mak
1126 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1127 echo "#define TARGET_I386 1" >> $config_h
1128 echo "#define TARGET_X86_64 1" >> $config_h
1129 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1130 echo "#define USE_KQEMU 1" >> $config_h
1132 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1133 echo "TARGET_ARCH=mips" >> $config_mak
1134 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1135 echo "#define TARGET_MIPS 1" >> $config_h
1136 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1137 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1138 echo "TARGET_ARCH=mipsn32" >> $config_mak
1139 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1140 echo "#define TARGET_MIPS 1" >> $config_h
1141 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1142 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1143 echo "TARGET_ARCH=mips64" >> $config_mak
1144 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1145 echo "#define TARGET_MIPS 1" >> $config_h
1146 echo "#define TARGET_MIPS64 1" >> $config_h
1147 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1148 elif test "$target_cpu" = "cris" ; then
1149 echo "TARGET_ARCH=cris" >> $config_mak
1150 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1151 echo "#define TARGET_CRIS 1" >> $config_h
1152 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1153 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1154 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1155 echo "TARGET_ARCH=sh4" >> $config_mak
1156 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1157 echo "#define TARGET_SH4 1" >> $config_h
1159 elif test "$target_cpu" = "m68k" ; then
1160 echo "TARGET_ARCH=m68k" >> $config_mak
1161 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1162 echo "#define TARGET_M68K 1" >> $config_h
1164 elif test "$target_cpu" = "alpha" ; then
1165 echo "TARGET_ARCH=alpha" >> $config_mak
1166 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1167 echo "#define TARGET_ALPHA 1" >> $config_h
1169 echo "Unsupported target CPU"
1172 if test "$target_bigendian" = "yes" ; then
1173 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1174 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1176 if test "$target_softmmu" = "yes" ; then
1177 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1178 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1180 if test "$target_user_only" = "yes" ; then
1181 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1182 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1184 if test "$target_linux_user" = "yes" ; then
1185 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1186 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1188 if test "$target_darwin_user" = "yes" ; then
1189 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1190 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1193 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "sparc32plus" -o "$target_cpu" = "m68k" -o "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" -o "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" -o "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el"; then
1194 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1195 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1197 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1198 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1199 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1201 # 32 bit ELF loader in addition to native 64 bit loader?
1202 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1203 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1204 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1207 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1209 done # for target in $targets
1211 # build tree in object directory if source path is different from current one
1212 if test "$source_path_used" = "yes" ; then
1213 DIRS="tests tests/cris slirp audio"
1214 FILES="Makefile tests/Makefile"
1215 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1216 for dir in $DIRS ; do
1219 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1220 for f in $FILES ; do
1222 ln -s $source_path/$f $f
1226 rm -f $TMPO $TMPC $TMPE $TMPS