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
)
118 OS_CFLAGS
="-mno-cygwin"
119 if [ "$cpu" = "i386" ] ; then
125 if [ "$cpu" = "i386" ] ; then
131 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
138 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
156 OS_CFLAGS
="-mdynamic-no-pic"
157 OS_LDFLAGS
="-framework CoreFoundation -framework IOKit"
163 needs_libsunmath
="no"
164 solarisrev
=`uname -r | cut -f2 -d.`
165 # have to select again, because `uname -m` returns i86pc
166 # even on an x86_64 box.
167 solariscpu
=`isainfo -k`
168 if test "${solariscpu}" = "amd64" ; then
171 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
172 if test "$solarisrev" -le 9 ; then
173 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
174 needs_libsunmath
="yes"
176 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
177 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
178 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
179 echo "Studio 11 can be downloaded from www.sun.com."
183 if test "$solarisrev" -ge 9 ; then
187 if test -f /usr
/include
/sys
/soundcard.h
; then
195 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
201 if [ "$bsd" = "yes" ] ; then
202 if [ "$darwin" != "yes" ] ; then
208 source_path
=`dirname "$0"`
209 source_path_used
="no"
211 if [ -z "$source_path" ]; then
214 source_path
=`cd "$source_path"; pwd`
216 [ -f "$workdir/vl.c" ] || source_path_used
="yes"
219 # generate compile errors on warnings for development builds
220 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
225 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
227 --help|
-h) show_help
=yes
229 --prefix=*) prefix
="$optarg"
231 --interp-prefix=*) interp_prefix
="$optarg"
233 --source-path=*) source_path
="$optarg"
234 source_path_used
="yes"
236 --cross-prefix=*) cross_prefix
="$optarg"
241 --host-cc=*) host_cc
="$optarg"
243 --make=*) make="$optarg"
245 --install=*) install="$optarg"
247 --extra-cflags=*) CFLAGS
="$optarg"
249 --extra-ldflags=*) LDFLAGS
="$optarg"
251 --cpu=*) cpu
="$optarg"
253 --target-list=*) target_list
="$optarg"
255 --enable-gprof) gprof
="yes"
257 --static) static
="yes"
259 --disable-sdl) sdl
="no"
261 --enable-coreaudio) coreaudio
="yes"
263 --enable-alsa) alsa
="yes"
265 --enable-esd) esd
="yes"
267 --enable-dsound) dsound
="yes"
269 --enable-fmod) fmod
="yes"
271 --fmod-lib=*) fmod_lib
="$optarg"
273 --fmod-inc=*) fmod_inc
="$optarg"
275 --disable-vnc-tls) vnc_tls
="no"
277 --enable-mingw32) mingw32
="yes" ; cross_prefix
="i386-mingw32-" ; linux_user
="no"
279 --disable-slirp) slirp
="no"
281 --enable-adlib) adlib
="yes"
283 --enable-ac97) ac97
="yes"
285 --enable-gus) gus
="yes"
287 --disable-kqemu) kqemu
="no"
289 --enable-profiler) profiler
="yes"
291 --enable-cocoa) cocoa
="yes" ; coreaudio
="yes" ; sdl
="no"
293 --disable-gfx-check) check_gfx
="no"
295 --disable-gcc-check) check_gcc
="no"
297 --disable-system) softmmu
="no"
299 --enable-system) softmmu
="yes"
301 --disable-linux-user) linux_user
="no"
303 --enable-linux-user) linux_user
="yes"
305 --disable-darwin-user) darwin_user
="no"
307 --enable-darwin-user) darwin_user
="yes"
309 --enable-uname-release=*) uname_release
="$optarg"
314 v7|v8
) SP_CFLAGS
="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
315 target_cpu
="sparc"; cpu
="sparc" ;;
316 v8plus|v8plusa
) SP_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
317 target_cpu
="sparc"; cpu
="sparc" ;;
318 v9
) SP_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m64"
319 target_cpu
="sparc64"; cpu
="sparc64" ;;
320 *) echo "undefined SPARC architecture. Exiting";exit 1;;
323 --enable-werror) werror
="yes"
325 --disable-werror) werror
="no"
327 --disable-curses) curses
="no"
329 *) echo "ERROR: unknown option $opt"; show_help
="yes"
334 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
337 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
338 AIOLIBS
="-lrt -lpthread"
341 # default flags for all hosts
342 CFLAGS
="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
343 LDFLAGS
="$LDFLAGS -g"
344 if test "$werror" = "yes" ; then
345 CFLAGS
="$CFLAGS -Werror"
349 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
350 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
353 sparc
) if test -z "$sparc_cpu" ; then
354 ARCH_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
357 ARCH_CFLAGS
="${SP_CFLAGS}"
358 ARCH_LDFLAGS
="${SP_LDFLAGS}"
361 sparc64
) if test -z "$sparc_cpu" ; then
362 ARCH_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_v9__"
365 ARCH_CFLAGS
="${SP_CFLAGS}"
366 ARCH_LDFLAGS
="${SP_LDFLAGS}"
370 ARCH_CFLAGS
="-march=z900"
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-gus enable Gravis Ultrasound emulation"
414 echo " --enable-coreaudio enable Coreaudio audio driver"
415 echo " --enable-alsa enable ALSA audio driver"
416 echo " --enable-esd enable EsoundD audio driver"
417 echo " --enable-fmod enable FMOD audio driver"
418 echo " --enable-dsound enable DirectSound audio driver"
419 echo " --disable-vnc-tls disable TLS encryption for VNC server"
420 echo " --disable-curses disable curses output"
421 echo " --enable-system enable all system emulation targets"
422 echo " --disable-system disable all system emulation targets"
423 echo " --enable-linux-user enable all linux usermode emulation targets"
424 echo " --disable-linux-user disable all linux usermode emulation targets"
425 echo " --enable-darwin-user enable all darwin usermode emulation targets"
426 echo " --disable-darwin-user disable all darwin usermode emulation targets"
427 echo " --fmod-lib path to FMOD library"
428 echo " --fmod-inc path to FMOD includes"
429 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
430 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
432 echo "NOTE: The object files are built at the place where configure is launched"
436 cc
="${cross_prefix}${cc}"
437 ar="${cross_prefix}${ar}"
438 strip
="${cross_prefix}${strip}"
440 # check that the C compiler works.
445 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev
/null
; then
446 : C compiler works ok
448 echo "ERROR: \"$cc\" either does not exist or does not work"
452 if test "$mingw32" = "yes" ; then
458 # Check for gcc4, error if pre-gcc4
459 if test "$check_gcc" = "yes" ; then
464 int main(){return 0;}
466 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
467 echo "WARNING: \"$cc\" looks like gcc 4.x"
469 if test "$gcc3_search" = "yes" ; then
470 echo "Looking for gcc 3.x"
471 for compat_cc
in $gcc3_list ; do
472 if "$cross_prefix$compat_cc" --version 2> /dev
/null | fgrep
'(GCC) 3.' > /dev
/null
2>&1 ; then
473 echo "Found \"$compat_cc\""
474 cc
="$cross_prefix$compat_cc"
475 found_compat_cc
="yes"
479 if test "$found_compat_cc" = "no" ; then
480 echo "gcc 3.x not found!"
483 if test "$found_compat_cc" = "no" ; then
484 echo "QEMU is known to have problems when compiled with gcc 4.x"
485 echo "It is recommended that you use gcc 3.x to build QEMU"
486 echo "To use this compiler anyway, configure with --disable-gcc-check"
493 # Solaris specific configure tool chain decisions
495 if test "$solaris" = "yes" ; then
497 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
498 # override the check with --disable-gcc-check
500 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
502 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
503 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
504 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
505 echo "or get the latest patch from SunSolve for gcc"
509 solinst
=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
510 if test -z "$solinst" ; then
511 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
512 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
513 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
516 if test "$solinst" = "/usr/sbin/install" ; then
517 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
518 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
519 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
522 sol_ar
=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
523 if test -z "$sol_ar" ; then
524 echo "Error: No path includes ar"
525 if test -f /usr
/ccs
/bin
/ar ; then
526 echo "Add /usr/ccs/bin to your path and rerun configure"
533 if test -z "$target_list" ; then
534 # these targets are portable
535 if [ "$softmmu" = "yes" ] ; then
536 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"
538 # the following are Linux specific
539 if [ "$linux_user" = "yes" ] ; then
540 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"
542 # the following are Darwin specific
543 if [ "$darwin_user" = "yes" ] ; then
544 target_list
="i386-darwin-user ppc-darwin-user $target_list"
547 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
549 if test -z "$target_list" ; then
550 echo "No targets enabled"
554 if test -z "$cross_prefix" ; then
557 # big/little endian test
559 #include <inttypes.h>
560 int main(int argc, char ** argv){
561 volatile uint32_t i=0x01234567;
562 return (*((uint8_t*)(&i))) == 0x67;
566 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
567 $TMPE && bigendian
="yes"
569 echo big
/little
test failed
574 # if cross compiling, cannot launch a program, so make a static guess
575 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
581 # host long bits test
583 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
587 # check gcc options support
593 ##########################################
598 if test -z "$sdl" ; then
599 sdl_config
="sdl-config"
603 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
604 # win32 cross compilation case
605 sdl_config
="i386-mingw32msvc-sdl-config"
611 #undef main /* We don't want SDL to override our main() */
612 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
614 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp
/qemu-$$
-sdl-config.log
; then
615 _sdlversion
=`$sdl_config --version | sed 's/[^0-9]//g'`
616 if test "$_sdlversion" -lt 121 ; then
619 if test "$cocoa" = "no" ; then
624 # static link with sdl ?
625 if test "$sdl" = "yes" ; then
627 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa
="yes"
628 sdl_static_libs
=`$sdl_config --static-libs 2>/dev/null`
629 if [ "$aa" = "yes" ] ; then
630 sdl_static_libs
="$sdl_static_libs `aalib-config --static-libs`"
633 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev
/null
; then
637 fi # sdl compile test
638 fi # cross compilation
640 # Make sure to disable cocoa if sdl was set
641 if test "$sdl" = "yes" ; then
647 ##########################################
649 if test "$vnc_tls" = "yes" ; then
650 `pkg-config gnutls` || vnc_tls
="no"
652 if test "$vnc_tls" = "yes" ; then
653 vnc_tls_cflags
=`pkg-config --cflags gnutls`
654 vnc_tls_libs
=`pkg-config --libs gnutls`
657 ##########################################
658 # alsa sound support libraries
660 if test "$alsa" = "yes" ; then
662 #include <alsa/asoundlib.h>
663 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
665 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev
/null
; then
669 echo "Error: Could not find alsa"
670 echo "Make sure to have the alsa libs and headers installed."
676 ##########################################
679 if test "$curses" = "yes" ; then
683 int main(void) { return curses_version(); }
685 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev
/null
; then
690 # Check if tools are available to build documentation.
691 if [ -x "`which texi2html 2>/dev/null`" ] && \
692 [ -x "`which pod2man 2>/dev/null`" ]; then
696 if test "$mingw32" = "yes" ; then
697 if test -z "$prefix" ; then
698 prefix
="/c/Program Files/Qemu"
705 if test -z "$prefix" ; then
708 mansuffix
="/share/man"
709 datasuffix
="/share/qemu"
710 docsuffix
="/share/doc/qemu"
714 echo "Install prefix $prefix"
715 echo "BIOS directory $prefix$datasuffix"
716 echo "binary directory $prefix$binsuffix"
717 if test "$mingw32" = "no" ; then
718 echo "Manual directory $prefix$mansuffix"
719 echo "ELF interp prefix $interp_prefix"
721 echo "Source path $source_path"
722 echo "C compiler $cc"
723 echo "Host C compiler $host_cc"
724 echo "ARCH_CFLAGS $ARCH_CFLAGS"
726 echo "install $install"
728 echo "host big endian $bigendian"
729 echo "target list $target_list"
730 echo "gprof enabled $gprof"
731 echo "profiler $profiler"
732 echo "static build $static"
733 echo "-Werror enabled $werror"
734 if test "$darwin" = "yes" ; then
735 echo "Cocoa support $cocoa"
737 echo "SDL support $sdl"
738 if test "$sdl" != "no" ; then
739 echo "SDL static link $sdl_static"
741 echo "curses support $curses"
742 echo "mingw32 support $mingw32"
743 echo "Adlib support $adlib"
744 echo "AC97 support $ac97"
745 echo "GUS support $gus"
746 echo "CoreAudio support $coreaudio"
747 echo "ALSA support $alsa"
748 echo "EsounD support $esd"
749 echo "DSound support $dsound"
750 if test "$fmod" = "yes"; then
751 if test -z $fmod_lib ||
test -z $fmod_inc; then
753 echo "Error: You must specify path to FMOD library and headers"
754 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
758 fmod_support
=" (lib='$fmod_lib' include='$fmod_inc')"
762 echo "FMOD support $fmod $fmod_support"
763 echo "OSS support $oss"
764 echo "VNC TLS support $vnc_tls"
765 if test "$vnc_tls" = "yes" ; then
766 echo " TLS CFLAGS $vnc_tls_cflags"
767 echo " TLS LIBS $vnc_tls_libs"
769 if test -n "$sparc_cpu"; then
770 echo "Target Sparc Arch $sparc_cpu"
772 echo "kqemu support $kqemu"
773 echo "Documentation $build_docs"
774 [ ! -z "$uname_release" ] && \
775 echo "uname -r $uname_release"
777 if test $sdl_too_old = "yes"; then
778 echo "-> Your SDL version is too old - please upgrade to have SDL support"
780 if [ -s /tmp
/qemu-$$
-sdl-config.log
]; then
781 echo "The error log from compiling the libSDL test is: "
782 cat /tmp
/qemu-$$
-sdl-config.log
784 rm -f /tmp
/qemu-$$
-sdl-config.log
785 #if test "$sdl_static" = "no"; then
786 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
788 config_mak
="config-host.mak"
789 config_h
="config-host.h"
791 #echo "Creating $config_mak and $config_h"
793 test -f $config_h && mv $config_h ${config_h}~
795 echo "# Automatically generated by configure - do not modify" > $config_mak
796 echo "# Configured with: $0 $@" >> $config_mak
797 echo "/* Automatically generated by configure - do not modify */" > $config_h
799 echo "prefix=$prefix" >> $config_mak
800 echo "bindir=\${prefix}$binsuffix" >> $config_mak
801 echo "mandir=\${prefix}$mansuffix" >> $config_mak
802 echo "datadir=\${prefix}$datasuffix" >> $config_mak
803 echo "docdir=\${prefix}$docsuffix" >> $config_mak
804 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
805 echo "MAKE=$make" >> $config_mak
806 echo "INSTALL=$install" >> $config_mak
807 echo "CC=$cc" >> $config_mak
808 echo "HOST_CC=$host_cc" >> $config_mak
809 echo "AR=$ar" >> $config_mak
810 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
811 # XXX: only use CFLAGS and LDFLAGS ?
812 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
813 # compilation of dyngen tool (useful for win32 build on Linux host)
814 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
815 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
816 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
817 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
818 echo "CFLAGS=$CFLAGS" >> $config_mak
819 echo "LDFLAGS=$LDFLAGS" >> $config_mak
820 echo "EXESUF=$EXESUF" >> $config_mak
821 echo "AIOLIBS=$AIOLIBS" >> $config_mak
822 if test "$cpu" = "i386" ; then
823 echo "ARCH=i386" >> $config_mak
824 echo "#define HOST_I386 1" >> $config_h
825 elif test "$cpu" = "x86_64" ; then
826 echo "ARCH=x86_64" >> $config_mak
827 echo "#define HOST_X86_64 1" >> $config_h
828 elif test "$cpu" = "armv4b" ; then
829 echo "ARCH=arm" >> $config_mak
830 echo "#define HOST_ARM 1" >> $config_h
831 elif test "$cpu" = "armv4l" ; then
832 echo "ARCH=arm" >> $config_mak
833 echo "#define HOST_ARM 1" >> $config_h
834 elif test "$cpu" = "powerpc" ; then
835 echo "ARCH=ppc" >> $config_mak
836 echo "#define HOST_PPC 1" >> $config_h
837 elif test "$cpu" = "mips" ; then
838 echo "ARCH=mips" >> $config_mak
839 echo "#define HOST_MIPS 1" >> $config_h
840 elif test "$cpu" = "mips64" ; then
841 echo "ARCH=mips64" >> $config_mak
842 echo "#define HOST_MIPS64 1" >> $config_h
843 elif test "$cpu" = "cris" ; then
844 echo "ARCH=cris" >> $config_mak
845 echo "#define HOST_CRIS 1" >> $config_h
846 elif test "$cpu" = "s390" ; then
847 echo "ARCH=s390" >> $config_mak
848 echo "#define HOST_S390 1" >> $config_h
849 elif test "$cpu" = "alpha" ; then
850 echo "ARCH=alpha" >> $config_mak
851 echo "#define HOST_ALPHA 1" >> $config_h
852 elif test "$cpu" = "sparc" ; then
853 echo "ARCH=sparc" >> $config_mak
854 echo "#define HOST_SPARC 1" >> $config_h
855 elif test "$cpu" = "sparc64" ; then
856 echo "ARCH=sparc64" >> $config_mak
857 echo "#define HOST_SPARC64 1" >> $config_h
858 elif test "$cpu" = "ia64" ; then
859 echo "ARCH=ia64" >> $config_mak
860 echo "#define HOST_IA64 1" >> $config_h
861 elif test "$cpu" = "m68k" ; then
862 echo "ARCH=m68k" >> $config_mak
863 echo "#define HOST_M68K 1" >> $config_h
865 echo "Unsupported CPU = $cpu"
868 if test "$bigendian" = "yes" ; then
869 echo "WORDS_BIGENDIAN=yes" >> $config_mak
870 echo "#define WORDS_BIGENDIAN 1" >> $config_h
872 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
873 if test "$mingw32" = "yes" ; then
874 echo "CONFIG_WIN32=yes" >> $config_mak
875 echo "#define CONFIG_WIN32 1" >> $config_h
878 #include <byteswap.h>
879 int main(void) { return bswap_32(0); }
881 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
882 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
885 if test "$darwin" = "yes" ; then
886 echo "CONFIG_DARWIN=yes" >> $config_mak
887 echo "#define CONFIG_DARWIN 1" >> $config_h
889 if test "$solaris" = "yes" ; then
890 echo "CONFIG_SOLARIS=yes" >> $config_mak
891 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
892 if test "$needs_libsunmath" = "yes" ; then
893 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
894 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
897 if test -n "$sparc_cpu"; then
898 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
899 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
901 if test "$gdbstub" = "yes" ; then
902 echo "CONFIG_GDBSTUB=yes" >> $config_mak
903 echo "#define CONFIG_GDBSTUB 1" >> $config_h
905 if test "$gprof" = "yes" ; then
906 echo "TARGET_GPROF=yes" >> $config_mak
907 echo "#define HAVE_GPROF 1" >> $config_h
909 if test "$static" = "yes" ; then
910 echo "CONFIG_STATIC=yes" >> $config_mak
911 echo "#define CONFIG_STATIC 1" >> $config_h
913 if test $profiler = "yes" ; then
914 echo "#define CONFIG_PROFILER 1" >> $config_h
916 if test "$slirp" = "yes" ; then
917 echo "CONFIG_SLIRP=yes" >> $config_mak
918 echo "#define CONFIG_SLIRP 1" >> $config_h
920 if test "$adlib" = "yes" ; then
921 echo "CONFIG_ADLIB=yes" >> $config_mak
922 echo "#define CONFIG_ADLIB 1" >> $config_h
924 if test "$ac97" = "yes" ; then
925 echo "CONFIG_AC97=yes" >> $config_mak
926 echo "#define CONFIG_AC97 1" >> $config_h
928 if test "$gus" = "yes" ; then
929 echo "CONFIG_GUS=yes" >> $config_mak
930 echo "#define CONFIG_GUS 1" >> $config_h
932 if test "$oss" = "yes" ; then
933 echo "CONFIG_OSS=yes" >> $config_mak
934 echo "#define CONFIG_OSS 1" >> $config_h
936 if test "$coreaudio" = "yes" ; then
937 echo "CONFIG_COREAUDIO=yes" >> $config_mak
938 echo "#define CONFIG_COREAUDIO 1" >> $config_h
940 if test "$alsa" = "yes" ; then
941 echo "CONFIG_ALSA=yes" >> $config_mak
942 echo "#define CONFIG_ALSA 1" >> $config_h
944 if test "$esd" = "yes" ; then
945 echo "CONFIG_ESD=yes" >> $config_mak
946 echo "#define CONFIG_ESD 1" >> $config_h
948 if test "$dsound" = "yes" ; then
949 echo "CONFIG_DSOUND=yes" >> $config_mak
950 echo "#define CONFIG_DSOUND 1" >> $config_h
952 if test "$fmod" = "yes" ; then
953 echo "CONFIG_FMOD=yes" >> $config_mak
954 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
955 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
956 echo "#define CONFIG_FMOD 1" >> $config_h
958 if test "$vnc_tls" = "yes" ; then
959 echo "CONFIG_VNC_TLS=yes" >> $config_mak
960 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
961 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
962 echo "#define CONFIG_VNC_TLS 1" >> $config_h
964 qemu_version
=`head $source_path/VERSION`
965 echo "VERSION=$qemu_version" >>$config_mak
966 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
968 echo "SRC_PATH=$source_path" >> $config_mak
969 if [ "$source_path_used" = "yes" ]; then
970 echo "VPATH=$source_path" >> $config_mak
972 echo "TARGET_DIRS=$target_list" >> $config_mak
973 if [ "$build_docs" = "yes" ] ; then
974 echo "BUILD_DOCS=yes" >> $config_mak
976 if test "$static" = "yes"; then
981 if test "$sdl1" = "yes" ; then
982 echo "#define CONFIG_SDL 1" >> $config_h
983 echo "CONFIG_SDL=yes" >> $config_mak
984 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
985 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
987 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
989 if [ "${aa}" = "yes" ] ; then
990 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
992 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
995 if test "$cocoa" = "yes" ; then
996 echo "#define CONFIG_COCOA 1" >> $config_h
997 echo "CONFIG_COCOA=yes" >> $config_mak
999 if test "$curses" = "yes" ; then
1000 echo "#define CONFIG_CURSES 1" >> $config_h
1001 echo "CONFIG_CURSES=yes" >> $config_mak
1002 echo "CURSES_LIBS=-lcurses" >> $config_mak
1005 # XXX: suppress that
1006 if [ "$bsd" = "yes" ] ; then
1007 echo "#define O_LARGEFILE 0" >> $config_h
1008 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1009 echo "#define _BSD 1" >> $config_h
1012 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1015 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1016 tools
="qemu-img\$(EXESUF) $tools"
1018 echo "TOOLS=$tools" >> $config_mak
1020 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1022 for target
in $target_list; do
1023 target_dir
="$target"
1024 config_mak
=$target_dir/config.mak
1025 config_h
=$target_dir/config.h
1026 target_cpu
=`echo $target | cut -d '-' -f 1`
1027 target_bigendian
="no"
1028 [ "$target_cpu" = "armeb" ] && target_bigendian
=yes
1029 [ "$target_cpu" = "sparc" ] && target_bigendian
=yes
1030 [ "$target_cpu" = "sparc64" ] && target_bigendian
=yes
1031 [ "$target_cpu" = "sparc32plus" ] && target_bigendian
=yes
1032 [ "$target_cpu" = "ppc" ] && target_bigendian
=yes
1033 [ "$target_cpu" = "ppcemb" ] && target_bigendian
=yes
1034 [ "$target_cpu" = "ppc64" ] && target_bigendian
=yes
1035 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian
=yes
1036 [ "$target_cpu" = "mips" ] && target_bigendian
=yes
1037 [ "$target_cpu" = "mipsn32" ] && target_bigendian
=yes
1038 [ "$target_cpu" = "mips64" ] && target_bigendian
=yes
1039 [ "$target_cpu" = "sh4eb" ] && target_bigendian
=yes
1040 [ "$target_cpu" = "m68k" ] && target_bigendian
=yes
1042 target_user_only
="no"
1043 target_linux_user
="no"
1044 target_darwin_user
="no"
1046 ${target_cpu}-softmmu)
1047 target_softmmu
="yes"
1049 ${target_cpu}-linux-user)
1050 target_user_only
="yes"
1051 target_linux_user
="yes"
1053 ${target_cpu}-darwin-user)
1054 target_user_only
="yes"
1055 target_darwin_user
="yes"
1058 echo "ERROR: Target '$target' not recognised"
1063 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1064 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1065 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1066 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1067 echo "Note that this will disable all output from the virtual graphics card"
1068 echo "except through VNC or curses."
1072 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1074 test -f $config_h && mv $config_h ${config_h}~
1076 mkdir
-p $target_dir
1077 mkdir
-p $target_dir/fpu
1078 mkdir
-p $target_dir/tcg
1079 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1080 mkdir
-p $target_dir/nwfpe
1084 # don't use ln -sf as not all "ln -sf" over write the file/link
1086 rm -f $target_dir/Makefile
1087 ln -s $source_path/Makefile.target
$target_dir/Makefile
1090 echo "# Automatically generated by configure - do not modify" > $config_mak
1091 echo "/* Automatically generated by configure - do not modify */" > $config_h
1094 echo "include ../config-host.mak" >> $config_mak
1095 echo "#include \"../config-host.h\"" >> $config_h
1099 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1100 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1102 if test "$target_cpu" = "i386" ; then
1103 echo "TARGET_ARCH=i386" >> $config_mak
1104 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1105 echo "#define TARGET_I386 1" >> $config_h
1106 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1107 echo "#define USE_KQEMU 1" >> $config_h
1109 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1110 echo "TARGET_ARCH=arm" >> $config_mak
1111 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1112 echo "#define TARGET_ARM 1" >> $config_h
1114 elif test "$target_cpu" = "sparc" ; then
1115 echo "TARGET_ARCH=sparc" >> $config_mak
1116 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1117 echo "#define TARGET_SPARC 1" >> $config_h
1118 elif test "$target_cpu" = "sparc64" ; then
1119 echo "TARGET_ARCH=sparc64" >> $config_mak
1120 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1121 echo "#define TARGET_SPARC 1" >> $config_h
1122 echo "#define TARGET_SPARC64 1" >> $config_h
1124 elif test "$target_cpu" = "sparc32plus" ; then
1125 echo "TARGET_ARCH=sparc64" >> $config_mak
1126 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1127 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1128 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1129 echo "#define TARGET_SPARC 1" >> $config_h
1130 echo "#define TARGET_SPARC64 1" >> $config_h
1131 echo "#define TARGET_ABI32 1" >> $config_h
1132 elif test "$target_cpu" = "ppc" ; then
1133 echo "TARGET_ARCH=ppc" >> $config_mak
1134 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1135 echo "#define TARGET_PPC 1" >> $config_h
1136 elif test "$target_cpu" = "ppcemb" ; then
1137 echo "TARGET_ARCH=ppcemb" >> $config_mak
1138 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1139 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1140 echo "#define TARGET_PPC 1" >> $config_h
1141 echo "#define TARGET_PPCEMB 1" >> $config_h
1142 elif test "$target_cpu" = "ppc64" ; then
1143 echo "TARGET_ARCH=ppc64" >> $config_mak
1144 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1145 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1146 echo "#define TARGET_PPC 1" >> $config_h
1147 echo "#define TARGET_PPC64 1" >> $config_h
1148 elif test "$target_cpu" = "ppc64abi32" ; then
1149 echo "TARGET_ARCH=ppc64" >> $config_mak
1150 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1151 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1152 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1153 echo "#define TARGET_PPC 1" >> $config_h
1154 echo "#define TARGET_PPC64 1" >> $config_h
1155 echo "#define TARGET_ABI32 1" >> $config_h
1156 elif test "$target_cpu" = "x86_64" ; then
1157 echo "TARGET_ARCH=x86_64" >> $config_mak
1158 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1159 echo "#define TARGET_I386 1" >> $config_h
1160 echo "#define TARGET_X86_64 1" >> $config_h
1161 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1162 echo "#define USE_KQEMU 1" >> $config_h
1164 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1165 echo "TARGET_ARCH=mips" >> $config_mak
1166 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1167 echo "#define TARGET_MIPS 1" >> $config_h
1168 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1169 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1170 echo "TARGET_ARCH=mipsn32" >> $config_mak
1171 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1172 echo "#define TARGET_MIPS 1" >> $config_h
1173 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1174 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1175 echo "TARGET_ARCH=mips64" >> $config_mak
1176 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1177 echo "#define TARGET_MIPS 1" >> $config_h
1178 echo "#define TARGET_MIPS64 1" >> $config_h
1179 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1180 elif test "$target_cpu" = "cris" ; then
1181 echo "TARGET_ARCH=cris" >> $config_mak
1182 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1183 echo "#define TARGET_CRIS 1" >> $config_h
1184 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1185 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1186 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1187 echo "TARGET_ARCH=sh4" >> $config_mak
1188 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1189 echo "#define TARGET_SH4 1" >> $config_h
1191 elif test "$target_cpu" = "m68k" ; then
1192 echo "TARGET_ARCH=m68k" >> $config_mak
1193 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1194 echo "#define TARGET_M68K 1" >> $config_h
1196 elif test "$target_cpu" = "alpha" ; then
1197 echo "TARGET_ARCH=alpha" >> $config_mak
1198 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1199 echo "#define TARGET_ALPHA 1" >> $config_h
1201 echo "Unsupported target CPU"
1204 if test "$target_bigendian" = "yes" ; then
1205 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1206 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1208 if test "$target_softmmu" = "yes" ; then
1209 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1210 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1212 if test "$target_user_only" = "yes" ; then
1213 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1214 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1216 if test "$target_linux_user" = "yes" ; then
1217 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1218 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1220 if test "$target_darwin_user" = "yes" ; then
1221 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1222 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1225 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
1226 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1227 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1229 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1230 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1231 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1233 # 32 bit ELF loader in addition to native 64 bit loader?
1234 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1235 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1236 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1239 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1241 done # for target in $targets
1243 # build tree in object directory if source path is different from current one
1244 if test "$source_path_used" = "yes" ; then
1245 DIRS
="tests tests/cris slirp audio"
1246 FILES
="Makefile tests/Makefile"
1247 FILES
="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1248 FILES
="$FILES tests/test-mmap.c"
1249 for dir
in $DIRS ; do
1252 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1253 for f
in $FILES ; do
1255 ln -s $source_path/$f $f
1259 rm -f $TMPO $TMPC $TMPE $TMPS