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
)
117 OS_CFLAGS
="-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 --enable-gus) gus
="yes"
288 --disable-kqemu) kqemu
="no"
290 --enable-profiler) profiler
="yes"
292 --enable-cocoa) cocoa
="yes" ; coreaudio
="yes" ; sdl
="no"
294 --disable-gfx-check) check_gfx
="no"
296 --disable-gcc-check) check_gcc
="no"
298 --disable-system) softmmu
="no"
300 --enable-system) softmmu
="yes"
302 --disable-linux-user) linux_user
="no"
304 --enable-linux-user) linux_user
="yes"
306 --disable-darwin-user) darwin_user
="no"
308 --enable-darwin-user) darwin_user
="yes"
310 --enable-uname-release=*) uname_release
="$optarg"
315 v7|v8
) SP_CFLAGS
="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
316 target_cpu
="sparc"; cpu
="sparc" ;;
317 v8plus|v8plusa
) SP_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
318 target_cpu
="sparc"; cpu
="sparc" ;;
319 v9
) SP_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m64"
320 target_cpu
="sparc64"; cpu
="sparc64" ;;
321 *) echo "undefined SPARC architecture. Exiting";exit 1;;
324 --enable-werror) werror
="yes"
326 --disable-werror) werror
="no"
328 *) echo "ERROR: unknown option $opt"; show_help
="yes"
333 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
336 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
337 AIOLIBS
="-lrt -lpthread"
340 # default flags for all hosts
341 CFLAGS
="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
342 LDFLAGS
="$LDFLAGS -g"
343 if test "$werror" = "yes" ; then
344 CFLAGS
="$CFLAGS -Werror"
348 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
349 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
352 sparc
) if test -z "$sparc_cpu" ; then
353 ARCH_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
356 ARCH_CFLAGS
="${SP_CFLAGS}"
357 ARCH_LDFLAGS
="${SP_LDFLAGS}"
360 sparc64
) if test -z "$sparc_cpu" ; then
361 ARCH_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_v9__"
364 ARCH_CFLAGS
="${SP_CFLAGS}"
365 ARCH_LDFLAGS
="${SP_LDFLAGS}"
369 ARCH_CFLAGS
="-march=z900"
381 if test x
"$show_help" = x
"yes" ; then
384 Usage: configure [options]
385 Options: [defaults in brackets after descriptions]
388 echo "Standard options:"
389 echo " --help print this message"
390 echo " --prefix=PREFIX install in PREFIX [$prefix]"
391 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
392 echo " use %M for cpu name [$interp_prefix]"
393 echo " --target-list=LIST set target list [$target_list]"
395 echo "kqemu kernel acceleration support:"
396 echo " --disable-kqemu disable kqemu support"
398 echo "Advanced options (experts only):"
399 echo " --source-path=PATH path of source code [$source_path]"
400 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
401 echo " --cc=CC use C compiler CC [$cc]"
402 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
403 echo " --make=MAKE use specified make [$make]"
404 echo " --install=INSTALL use specified install [$install]"
405 echo " --static enable static build [$static]"
406 echo " --disable-werror disable compilation abort on warning"
407 echo " --disable-sdl disable SDL"
408 echo " --enable-cocoa enable COCOA (Mac OS X only)"
409 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
410 echo " --enable-adlib enable Adlib emulation"
411 echo " --enable-ac97 enable AC97 emulation"
412 echo " --enable-gus enable Gravis Ultrasound 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 "GUS support $gus"
728 echo "CoreAudio support $coreaudio"
729 echo "ALSA support $alsa"
730 echo "EsounD support $esd"
731 echo "DSound support $dsound"
732 if test "$fmod" = "yes"; then
733 if test -z $fmod_lib ||
test -z $fmod_inc; then
735 echo "Error: You must specify path to FMOD library and headers"
736 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
740 fmod_support
=" (lib='$fmod_lib' include='$fmod_inc')"
744 echo "FMOD support $fmod $fmod_support"
745 echo "OSS support $oss"
746 echo "VNC TLS support $vnc_tls"
747 if test "$vnc_tls" = "yes" ; then
748 echo " TLS CFLAGS $vnc_tls_cflags"
749 echo " TLS LIBS $vnc_tls_libs"
751 if test -n "$sparc_cpu"; then
752 echo "Target Sparc Arch $sparc_cpu"
754 echo "kqemu support $kqemu"
755 echo "Documentation $build_docs"
756 [ ! -z "$uname_release" ] && \
757 echo "uname -r $uname_release"
759 if test $sdl_too_old = "yes"; then
760 echo "-> Your SDL version is too old - please upgrade to have SDL support"
762 if [ -s /tmp
/qemu-$$
-sdl-config.log
]; then
763 echo "The error log from compiling the libSDL test is: "
764 cat /tmp
/qemu-$$
-sdl-config.log
766 rm -f /tmp
/qemu-$$
-sdl-config.log
767 #if test "$sdl_static" = "no"; then
768 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
770 config_mak
="config-host.mak"
771 config_h
="config-host.h"
773 #echo "Creating $config_mak and $config_h"
775 test -f $config_h && mv $config_h ${config_h}~
777 echo "# Automatically generated by configure - do not modify" > $config_mak
778 echo "# Configured with: $0 $@" >> $config_mak
779 echo "/* Automatically generated by configure - do not modify */" > $config_h
781 echo "prefix=$prefix" >> $config_mak
782 echo "bindir=\${prefix}$binsuffix" >> $config_mak
783 echo "mandir=\${prefix}$mansuffix" >> $config_mak
784 echo "datadir=\${prefix}$datasuffix" >> $config_mak
785 echo "docdir=\${prefix}$docsuffix" >> $config_mak
786 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
787 echo "MAKE=$make" >> $config_mak
788 echo "INSTALL=$install" >> $config_mak
789 echo "CC=$cc" >> $config_mak
790 echo "HOST_CC=$host_cc" >> $config_mak
791 echo "AR=$ar" >> $config_mak
792 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
793 # XXX: only use CFLAGS and LDFLAGS ?
794 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
795 # compilation of dyngen tool (useful for win32 build on Linux host)
796 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
797 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
798 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
799 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
800 echo "CFLAGS=$CFLAGS" >> $config_mak
801 echo "LDFLAGS=$LDFLAGS" >> $config_mak
802 echo "EXESUF=$EXESUF" >> $config_mak
803 echo "AIOLIBS=$AIOLIBS" >> $config_mak
804 if test "$cpu" = "i386" ; then
805 echo "ARCH=i386" >> $config_mak
806 echo "#define HOST_I386 1" >> $config_h
807 elif test "$cpu" = "x86_64" ; then
808 echo "ARCH=x86_64" >> $config_mak
809 echo "#define HOST_X86_64 1" >> $config_h
810 elif test "$cpu" = "armv4b" ; then
811 echo "ARCH=arm" >> $config_mak
812 echo "#define HOST_ARM 1" >> $config_h
813 elif test "$cpu" = "armv4l" ; then
814 echo "ARCH=arm" >> $config_mak
815 echo "#define HOST_ARM 1" >> $config_h
816 elif test "$cpu" = "powerpc" ; then
817 echo "ARCH=ppc" >> $config_mak
818 echo "#define HOST_PPC 1" >> $config_h
819 elif test "$cpu" = "mips" ; then
820 echo "ARCH=mips" >> $config_mak
821 echo "#define HOST_MIPS 1" >> $config_h
822 elif test "$cpu" = "mips64" ; then
823 echo "ARCH=mips64" >> $config_mak
824 echo "#define HOST_MIPS64 1" >> $config_h
825 elif test "$cpu" = "cris" ; then
826 echo "ARCH=cris" >> $config_mak
827 echo "#define HOST_CRIS 1" >> $config_h
828 elif test "$cpu" = "s390" ; then
829 echo "ARCH=s390" >> $config_mak
830 echo "#define HOST_S390 1" >> $config_h
831 elif test "$cpu" = "alpha" ; then
832 echo "ARCH=alpha" >> $config_mak
833 echo "#define HOST_ALPHA 1" >> $config_h
834 elif test "$cpu" = "sparc" ; then
835 echo "ARCH=sparc" >> $config_mak
836 echo "#define HOST_SPARC 1" >> $config_h
837 elif test "$cpu" = "sparc64" ; then
838 echo "ARCH=sparc64" >> $config_mak
839 echo "#define HOST_SPARC64 1" >> $config_h
840 elif test "$cpu" = "ia64" ; then
841 echo "ARCH=ia64" >> $config_mak
842 echo "#define HOST_IA64 1" >> $config_h
843 elif test "$cpu" = "m68k" ; then
844 echo "ARCH=m68k" >> $config_mak
845 echo "#define HOST_M68K 1" >> $config_h
847 echo "Unsupported CPU = $cpu"
850 if test "$bigendian" = "yes" ; then
851 echo "WORDS_BIGENDIAN=yes" >> $config_mak
852 echo "#define WORDS_BIGENDIAN 1" >> $config_h
854 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
855 if test "$mingw32" = "yes" ; then
856 echo "CONFIG_WIN32=yes" >> $config_mak
857 echo "#define CONFIG_WIN32 1" >> $config_h
860 #include <byteswap.h>
861 int main(void) { return bswap_32(0); }
863 if $cc -o $TMPE $TMPC 2> /dev
/null
; then
864 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
867 if test "$darwin" = "yes" ; then
868 echo "CONFIG_DARWIN=yes" >> $config_mak
869 echo "#define CONFIG_DARWIN 1" >> $config_h
871 if test "$solaris" = "yes" ; then
872 echo "CONFIG_SOLARIS=yes" >> $config_mak
873 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
874 if test "$needs_libsunmath" = "yes" ; then
875 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
876 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
879 if test -n "$sparc_cpu"; then
880 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
881 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
883 if test "$gdbstub" = "yes" ; then
884 echo "CONFIG_GDBSTUB=yes" >> $config_mak
885 echo "#define CONFIG_GDBSTUB 1" >> $config_h
887 if test "$gprof" = "yes" ; then
888 echo "TARGET_GPROF=yes" >> $config_mak
889 echo "#define HAVE_GPROF 1" >> $config_h
891 if test "$static" = "yes" ; then
892 echo "CONFIG_STATIC=yes" >> $config_mak
893 echo "#define CONFIG_STATIC 1" >> $config_h
895 if test $profiler = "yes" ; then
896 echo "#define CONFIG_PROFILER 1" >> $config_h
898 if test "$slirp" = "yes" ; then
899 echo "CONFIG_SLIRP=yes" >> $config_mak
900 echo "#define CONFIG_SLIRP 1" >> $config_h
902 if test "$adlib" = "yes" ; then
903 echo "CONFIG_ADLIB=yes" >> $config_mak
904 echo "#define CONFIG_ADLIB 1" >> $config_h
906 if test "$ac97" = "yes" ; then
907 echo "CONFIG_AC97=yes" >> $config_mak
908 echo "#define CONFIG_AC97 1" >> $config_h
910 if test "$gus" = "yes" ; then
911 echo "CONFIG_GUS=yes" >> $config_mak
912 echo "#define CONFIG_GUS 1" >> $config_h
914 if test "$oss" = "yes" ; then
915 echo "CONFIG_OSS=yes" >> $config_mak
916 echo "#define CONFIG_OSS 1" >> $config_h
918 if test "$coreaudio" = "yes" ; then
919 echo "CONFIG_COREAUDIO=yes" >> $config_mak
920 echo "#define CONFIG_COREAUDIO 1" >> $config_h
922 if test "$alsa" = "yes" ; then
923 echo "CONFIG_ALSA=yes" >> $config_mak
924 echo "#define CONFIG_ALSA 1" >> $config_h
926 if test "$esd" = "yes" ; then
927 echo "CONFIG_ESD=yes" >> $config_mak
928 echo "#define CONFIG_ESD 1" >> $config_h
930 if test "$dsound" = "yes" ; then
931 echo "CONFIG_DSOUND=yes" >> $config_mak
932 echo "#define CONFIG_DSOUND 1" >> $config_h
934 if test "$fmod" = "yes" ; then
935 echo "CONFIG_FMOD=yes" >> $config_mak
936 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
937 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
938 echo "#define CONFIG_FMOD 1" >> $config_h
940 if test "$vnc_tls" = "yes" ; then
941 echo "CONFIG_VNC_TLS=yes" >> $config_mak
942 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
943 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
944 echo "#define CONFIG_VNC_TLS 1" >> $config_h
946 qemu_version
=`head $source_path/VERSION`
947 echo "VERSION=$qemu_version" >>$config_mak
948 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
950 echo "SRC_PATH=$source_path" >> $config_mak
951 if [ "$source_path_used" = "yes" ]; then
952 echo "VPATH=$source_path" >> $config_mak
954 echo "TARGET_DIRS=$target_list" >> $config_mak
955 if [ "$build_docs" = "yes" ] ; then
956 echo "BUILD_DOCS=yes" >> $config_mak
958 if test "$static" = "yes"; then
963 if test "$sdl1" = "yes" ; then
964 echo "#define CONFIG_SDL 1" >> $config_h
965 echo "CONFIG_SDL=yes" >> $config_mak
966 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
967 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
969 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
971 if [ "${aa}" = "yes" ] ; then
972 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
974 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
977 if test "$cocoa" = "yes" ; then
978 echo "#define CONFIG_COCOA 1" >> $config_h
979 echo "CONFIG_COCOA=yes" >> $config_mak
983 if [ "$bsd" = "yes" ] ; then
984 echo "#define O_LARGEFILE 0" >> $config_h
985 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
986 echo "#define _BSD 1" >> $config_h
989 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
992 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
993 tools
="qemu-img\$(EXESUF) $tools"
995 echo "TOOLS=$tools" >> $config_mak
997 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
999 for target
in $target_list; do
1000 target_dir
="$target"
1001 config_mak
=$target_dir/config.mak
1002 config_h
=$target_dir/config.h
1003 target_cpu
=`echo $target | cut -d '-' -f 1`
1004 target_bigendian
="no"
1005 [ "$target_cpu" = "armeb" ] && target_bigendian
=yes
1006 [ "$target_cpu" = "sparc" ] && target_bigendian
=yes
1007 [ "$target_cpu" = "sparc64" ] && target_bigendian
=yes
1008 [ "$target_cpu" = "sparc32plus" ] && target_bigendian
=yes
1009 [ "$target_cpu" = "ppc" ] && target_bigendian
=yes
1010 [ "$target_cpu" = "ppcemb" ] && target_bigendian
=yes
1011 [ "$target_cpu" = "ppc64" ] && target_bigendian
=yes
1012 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian
=yes
1013 [ "$target_cpu" = "mips" ] && target_bigendian
=yes
1014 [ "$target_cpu" = "mipsn32" ] && target_bigendian
=yes
1015 [ "$target_cpu" = "mips64" ] && target_bigendian
=yes
1016 [ "$target_cpu" = "sh4eb" ] && target_bigendian
=yes
1017 [ "$target_cpu" = "m68k" ] && target_bigendian
=yes
1019 target_user_only
="no"
1020 target_linux_user
="no"
1021 target_darwin_user
="no"
1023 ${target_cpu}-softmmu)
1024 target_softmmu
="yes"
1026 ${target_cpu}-linux-user)
1027 target_user_only
="yes"
1028 target_linux_user
="yes"
1030 ${target_cpu}-darwin-user)
1031 target_user_only
="yes"
1032 target_darwin_user
="yes"
1035 echo "ERROR: Target '$target' not recognised"
1040 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1041 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1042 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1043 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1044 echo "Note that this will disable all output from the virtual graphics card."
1048 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1050 test -f $config_h && mv $config_h ${config_h}~
1052 mkdir
-p $target_dir
1053 mkdir
-p $target_dir/fpu
1054 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1055 mkdir
-p $target_dir/nwfpe
1059 # don't use ln -sf as not all "ln -sf" over write the file/link
1061 rm -f $target_dir/Makefile
1062 ln -s $source_path/Makefile.target
$target_dir/Makefile
1065 echo "# Automatically generated by configure - do not modify" > $config_mak
1066 echo "/* Automatically generated by configure - do not modify */" > $config_h
1069 echo "include ../config-host.mak" >> $config_mak
1070 echo "#include \"../config-host.h\"" >> $config_h
1074 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1075 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1077 if test "$target_cpu" = "i386" ; then
1078 echo "TARGET_ARCH=i386" >> $config_mak
1079 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1080 echo "#define TARGET_I386 1" >> $config_h
1081 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1082 echo "#define USE_KQEMU 1" >> $config_h
1084 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1085 echo "TARGET_ARCH=arm" >> $config_mak
1086 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1087 echo "#define TARGET_ARM 1" >> $config_h
1089 elif test "$target_cpu" = "sparc" ; then
1090 echo "TARGET_ARCH=sparc" >> $config_mak
1091 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1092 echo "#define TARGET_SPARC 1" >> $config_h
1093 elif test "$target_cpu" = "sparc64" ; then
1094 echo "TARGET_ARCH=sparc64" >> $config_mak
1095 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1096 echo "#define TARGET_SPARC 1" >> $config_h
1097 echo "#define TARGET_SPARC64 1" >> $config_h
1099 elif test "$target_cpu" = "sparc32plus" ; then
1100 echo "TARGET_ARCH=sparc64" >> $config_mak
1101 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1102 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1103 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1104 echo "#define TARGET_SPARC 1" >> $config_h
1105 echo "#define TARGET_SPARC64 1" >> $config_h
1106 echo "#define TARGET_ABI32 1" >> $config_h
1107 elif test "$target_cpu" = "ppc" ; then
1108 echo "TARGET_ARCH=ppc" >> $config_mak
1109 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1110 echo "#define TARGET_PPC 1" >> $config_h
1111 elif test "$target_cpu" = "ppcemb" ; then
1112 echo "TARGET_ARCH=ppcemb" >> $config_mak
1113 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1114 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1115 echo "#define TARGET_PPC 1" >> $config_h
1116 echo "#define TARGET_PPCEMB 1" >> $config_h
1117 elif test "$target_cpu" = "ppc64" ; then
1118 echo "TARGET_ARCH=ppc64" >> $config_mak
1119 echo "TARGET_ABI_DIR=ppc" >> $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 elif test "$target_cpu" = "ppc64abi32" ; then
1124 echo "TARGET_ARCH=ppc64" >> $config_mak
1125 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1126 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1127 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1128 echo "#define TARGET_PPC 1" >> $config_h
1129 echo "#define TARGET_PPC64 1" >> $config_h
1130 echo "#define TARGET_ABI32 1" >> $config_h
1131 elif test "$target_cpu" = "x86_64" ; then
1132 echo "TARGET_ARCH=x86_64" >> $config_mak
1133 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1134 echo "#define TARGET_I386 1" >> $config_h
1135 echo "#define TARGET_X86_64 1" >> $config_h
1136 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1137 echo "#define USE_KQEMU 1" >> $config_h
1139 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1140 echo "TARGET_ARCH=mips" >> $config_mak
1141 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1142 echo "#define TARGET_MIPS 1" >> $config_h
1143 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1144 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1145 echo "TARGET_ARCH=mipsn32" >> $config_mak
1146 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1147 echo "#define TARGET_MIPS 1" >> $config_h
1148 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1149 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1150 echo "TARGET_ARCH=mips64" >> $config_mak
1151 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1152 echo "#define TARGET_MIPS 1" >> $config_h
1153 echo "#define TARGET_MIPS64 1" >> $config_h
1154 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1155 elif test "$target_cpu" = "cris" ; then
1156 echo "TARGET_ARCH=cris" >> $config_mak
1157 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1158 echo "#define TARGET_CRIS 1" >> $config_h
1159 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1160 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1161 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1162 echo "TARGET_ARCH=sh4" >> $config_mak
1163 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1164 echo "#define TARGET_SH4 1" >> $config_h
1166 elif test "$target_cpu" = "m68k" ; then
1167 echo "TARGET_ARCH=m68k" >> $config_mak
1168 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1169 echo "#define TARGET_M68K 1" >> $config_h
1171 elif test "$target_cpu" = "alpha" ; then
1172 echo "TARGET_ARCH=alpha" >> $config_mak
1173 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1174 echo "#define TARGET_ALPHA 1" >> $config_h
1176 echo "Unsupported target CPU"
1179 if test "$target_bigendian" = "yes" ; then
1180 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1181 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1183 if test "$target_softmmu" = "yes" ; then
1184 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1185 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1187 if test "$target_user_only" = "yes" ; then
1188 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1189 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1191 if test "$target_linux_user" = "yes" ; then
1192 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1193 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1195 if test "$target_darwin_user" = "yes" ; then
1196 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1197 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1200 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
1201 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1202 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1204 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1205 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1206 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1208 # 32 bit ELF loader in addition to native 64 bit loader?
1209 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1210 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1211 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1214 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1216 done # for target in $targets
1218 # build tree in object directory if source path is different from current one
1219 if test "$source_path_used" = "yes" ; then
1220 DIRS
="tests tests/cris slirp audio"
1221 FILES
="Makefile tests/Makefile"
1222 FILES
="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1223 for dir
in $DIRS ; do
1226 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1227 for f
in $FILES ; do
1229 ln -s $source_path/$f $f
1233 rm -f $TMPO $TMPC $TMPE $TMPS