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 --disable-brlapi) brlapi="no"
291 --enable-profiler) profiler="yes"
293 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
295 --disable-gfx-check) check_gfx="no"
297 --disable-gcc-check) check_gcc="no"
299 --disable-system) softmmu="no"
301 --enable-system) softmmu="yes"
303 --disable-linux-user) linux_user="no"
305 --enable-linux-user) linux_user="yes"
307 --disable-darwin-user) darwin_user="no"
309 --enable-darwin-user) darwin_user="yes"
311 --enable-uname-release=*) uname_release="$optarg"
316 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
317 target_cpu="sparc"; cpu="sparc" ;;
318 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
319 target_cpu="sparc"; cpu="sparc" ;;
320 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
321 target_cpu="sparc64"; cpu="sparc64" ;;
322 *) echo "undefined SPARC architecture. Exiting";exit 1;;
325 --enable-werror) werror="yes"
327 --disable-werror) werror="no"
329 --disable-curses) curses="no"
331 *) echo "ERROR: unknown option $opt"; show_help="yes"
336 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
339 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
340 AIOLIBS="-lrt -lpthread"
343 # default flags for all hosts
344 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
345 LDFLAGS="$LDFLAGS -g"
346 if test "$werror" = "yes" ; then
347 CFLAGS="$CFLAGS -Werror"
351 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
352 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
355 sparc) if test -z "$sparc_cpu" ; then
356 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
359 ARCH_CFLAGS="${SP_CFLAGS}"
360 ARCH_LDFLAGS="${SP_LDFLAGS}"
363 sparc64) if test -z "$sparc_cpu" ; then
364 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
367 ARCH_CFLAGS="${SP_CFLAGS}"
368 ARCH_LDFLAGS="${SP_LDFLAGS}"
372 ARCH_CFLAGS="-march=z900"
384 if test x"$show_help" = x"yes" ; then
387 Usage: configure [options]
388 Options: [defaults in brackets after descriptions]
391 echo "Standard options:"
392 echo " --help print this message"
393 echo " --prefix=PREFIX install in PREFIX [$prefix]"
394 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
395 echo " use %M for cpu name [$interp_prefix]"
396 echo " --target-list=LIST set target list [$target_list]"
398 echo "kqemu kernel acceleration support:"
399 echo " --disable-kqemu disable kqemu support"
401 echo "Advanced options (experts only):"
402 echo " --source-path=PATH path of source code [$source_path]"
403 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
404 echo " --cc=CC use C compiler CC [$cc]"
405 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
406 echo " --make=MAKE use specified make [$make]"
407 echo " --install=INSTALL use specified install [$install]"
408 echo " --static enable static build [$static]"
409 echo " --disable-werror disable compilation abort on warning"
410 echo " --disable-sdl disable SDL"
411 echo " --enable-cocoa enable COCOA (Mac OS X only)"
412 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
413 echo " --enable-adlib enable Adlib emulation"
414 echo " --enable-ac97 enable AC97 emulation"
415 echo " --enable-gus enable Gravis Ultrasound emulation"
416 echo " --enable-coreaudio enable Coreaudio audio driver"
417 echo " --enable-alsa enable ALSA audio driver"
418 echo " --enable-esd enable EsoundD audio driver"
419 echo " --enable-fmod enable FMOD audio driver"
420 echo " --enable-dsound enable DirectSound audio driver"
421 echo " --disable-brlapi disable BrlAPI"
422 echo " --disable-vnc-tls disable TLS encryption for VNC server"
423 echo " --disable-curses disable curses output"
424 echo " --enable-system enable all system emulation targets"
425 echo " --disable-system disable all system emulation targets"
426 echo " --enable-linux-user enable all linux usermode emulation targets"
427 echo " --disable-linux-user disable all linux usermode emulation targets"
428 echo " --enable-darwin-user enable all darwin usermode emulation targets"
429 echo " --disable-darwin-user disable all darwin usermode emulation targets"
430 echo " --fmod-lib path to FMOD library"
431 echo " --fmod-inc path to FMOD includes"
432 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
433 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
435 echo "NOTE: The object files are built at the place where configure is launched"
439 cc="${cross_prefix}${cc}"
440 ar="${cross_prefix}${ar}"
441 strip="${cross_prefix}${strip}"
443 # check that the C compiler works.
448 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
449 : C compiler works ok
451 echo "ERROR: \"$cc\" either does not exist or does not work"
455 if test "$mingw32" = "yes" ; then
461 # Check for gcc4, error if pre-gcc4
462 if test "$check_gcc" = "yes" ; then
467 int main(){return 0;}
469 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
470 echo "WARNING: \"$cc\" looks like gcc 4.x"
472 if test "$gcc3_search" = "yes" ; then
473 echo "Looking for gcc 3.x"
474 for compat_cc in $gcc3_list ; do
475 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
476 echo "Found \"$compat_cc\""
477 cc="$cross_prefix$compat_cc"
478 found_compat_cc="yes"
482 if test "$found_compat_cc" = "no" ; then
483 echo "gcc 3.x not found!"
486 if test "$found_compat_cc" = "no" ; then
487 echo "QEMU is known to have problems when compiled with gcc 4.x"
488 echo "It is recommended that you use gcc 3.x to build QEMU"
489 echo "To use this compiler anyway, configure with --disable-gcc-check"
496 # Solaris specific configure tool chain decisions
498 if test "$solaris" = "yes" ; then
500 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
501 # override the check with --disable-gcc-check
503 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
505 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
506 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
507 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
508 echo "or get the latest patch from SunSolve for gcc"
512 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
513 if test -z "$solinst" ; then
514 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
515 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
516 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
519 if test "$solinst" = "/usr/sbin/install" ; then
520 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
521 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
522 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
525 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
526 if test -z "$sol_ar" ; then
527 echo "Error: No path includes ar"
528 if test -f /usr/ccs/bin/ar ; then
529 echo "Add /usr/ccs/bin to your path and rerun configure"
536 if test -z "$target_list" ; then
537 # these targets are portable
538 if [ "$softmmu" = "yes" ] ; then
539 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"
541 # the following are Linux specific
542 if [ "$linux_user" = "yes" ] ; then
543 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"
545 # the following are Darwin specific
546 if [ "$darwin_user" = "yes" ] ; then
547 target_list="i386-darwin-user ppc-darwin-user $target_list"
550 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
552 if test -z "$target_list" ; then
553 echo "No targets enabled"
557 if test -z "$cross_prefix" ; then
560 # big/little endian test
562 #include <inttypes.h>
563 int main(int argc, char ** argv){
564 volatile uint32_t i=0x01234567;
565 return (*((uint8_t*)(&i))) == 0x67;
569 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
570 $TMPE && bigendian="yes"
572 echo big/little test failed
577 # if cross compiling, cannot launch a program, so make a static guess
578 if test "$cpu" = "armv4b" \
581 -o "$cpu" = "mips64" \
582 -o "$cpu" = "powerpc" \
584 -o "$cpu" = "sparc" \
585 -o "$cpu" = "sparc64"; then
591 # host long bits test
593 if test "$cpu" = "x86_64" \
594 -o "$cpu" = "alpha" \
596 -o "$cpu" = "sparc64"; then
600 # check gcc options support
606 ##########################################
611 if test -z "$sdl" ; then
612 sdl_config="sdl-config"
616 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
617 # win32 cross compilation case
618 sdl_config="i386-mingw32msvc-sdl-config"
624 #undef main /* We don't want SDL to override our main() */
625 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
627 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
628 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
629 if test "$_sdlversion" -lt 121 ; then
632 if test "$cocoa" = "no" ; then
637 # static link with sdl ?
638 if test "$sdl" = "yes" ; then
640 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
641 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
642 if [ "$aa" = "yes" ] ; then
643 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
646 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
650 fi # sdl compile test
651 fi # cross compilation
653 # Make sure to disable cocoa if sdl was set
654 if test "$sdl" = "yes" ; then
660 ##########################################
662 if test "$vnc_tls" = "yes" ; then
663 `pkg-config gnutls` || vnc_tls="no"
665 if test "$vnc_tls" = "yes" ; then
666 vnc_tls_cflags=`pkg-config --cflags gnutls`
667 vnc_tls_libs=`pkg-config --libs gnutls`
670 ##########################################
671 # alsa sound support libraries
673 if test "$alsa" = "yes" ; then
675 #include <alsa/asoundlib.h>
676 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
678 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev/null ; then
682 echo "Error: Could not find alsa"
683 echo "Make sure to have the alsa libs and headers installed."
689 ##########################################
692 if test -z "$brlapi" ; then
696 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
698 if $cc -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /tmp/qemu-$$-brlapi.log ; then
700 fi # brlapi compile test
703 ##########################################
706 if test "$curses" = "yes" ; then
710 int main(void) { return curses_version(); }
712 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
717 # Check if tools are available to build documentation.
718 if [ -x "`which texi2html 2>/dev/null`" ] && \
719 [ -x "`which pod2man 2>/dev/null`" ]; then
723 if test "$mingw32" = "yes" ; then
724 if test -z "$prefix" ; then
725 prefix="/c/Program Files/Qemu"
732 if test -z "$prefix" ; then
735 mansuffix="/share/man"
736 datasuffix="/share/qemu"
737 docsuffix="/share/doc/qemu"
741 echo "Install prefix $prefix"
742 echo "BIOS directory $prefix$datasuffix"
743 echo "binary directory $prefix$binsuffix"
744 if test "$mingw32" = "no" ; then
745 echo "Manual directory $prefix$mansuffix"
746 echo "ELF interp prefix $interp_prefix"
748 echo "Source path $source_path"
749 echo "C compiler $cc"
750 echo "Host C compiler $host_cc"
751 echo "ARCH_CFLAGS $ARCH_CFLAGS"
753 echo "install $install"
755 echo "host big endian $bigendian"
756 echo "target list $target_list"
757 echo "gprof enabled $gprof"
758 echo "profiler $profiler"
759 echo "static build $static"
760 echo "-Werror enabled $werror"
761 if test "$darwin" = "yes" ; then
762 echo "Cocoa support $cocoa"
764 echo "SDL support $sdl"
765 if test "$sdl" != "no" ; then
766 echo "SDL static link $sdl_static"
768 echo "curses support $curses"
769 echo "mingw32 support $mingw32"
770 echo "Adlib support $adlib"
771 echo "AC97 support $ac97"
772 echo "GUS support $gus"
773 echo "CoreAudio support $coreaudio"
774 echo "ALSA support $alsa"
775 echo "EsounD support $esd"
776 echo "DSound support $dsound"
777 if test "$fmod" = "yes"; then
778 if test -z $fmod_lib || test -z $fmod_inc; then
780 echo "Error: You must specify path to FMOD library and headers"
781 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
785 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
789 echo "FMOD support $fmod $fmod_support"
790 echo "OSS support $oss"
791 echo "VNC TLS support $vnc_tls"
792 if test "$vnc_tls" = "yes" ; then
793 echo " TLS CFLAGS $vnc_tls_cflags"
794 echo " TLS LIBS $vnc_tls_libs"
796 if test -n "$sparc_cpu"; then
797 echo "Target Sparc Arch $sparc_cpu"
799 echo "kqemu support $kqemu"
800 echo "brlapi support $brlapi"
801 echo "Documentation $build_docs"
802 [ ! -z "$uname_release" ] && \
803 echo "uname -r $uname_release"
805 if test $sdl_too_old = "yes"; then
806 echo "-> Your SDL version is too old - please upgrade to have SDL support"
808 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
809 echo "The error log from compiling the libSDL test is: "
810 cat /tmp/qemu-$$-sdl-config.log
812 rm -f /tmp/qemu-$$-sdl-config.log
813 #if test "$sdl_static" = "no"; then
814 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
816 config_mak="config-host.mak"
817 config_h="config-host.h"
819 #echo "Creating $config_mak and $config_h"
821 test -f $config_h && mv $config_h ${config_h}~
823 echo "# Automatically generated by configure - do not modify" > $config_mak
824 echo "# Configured with: $0 $@" >> $config_mak
825 echo "/* Automatically generated by configure - do not modify */" > $config_h
827 echo "prefix=$prefix" >> $config_mak
828 echo "bindir=\${prefix}$binsuffix" >> $config_mak
829 echo "mandir=\${prefix}$mansuffix" >> $config_mak
830 echo "datadir=\${prefix}$datasuffix" >> $config_mak
831 echo "docdir=\${prefix}$docsuffix" >> $config_mak
832 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
833 echo "MAKE=$make" >> $config_mak
834 echo "INSTALL=$install" >> $config_mak
835 echo "CC=$cc" >> $config_mak
836 echo "HOST_CC=$host_cc" >> $config_mak
837 echo "AR=$ar" >> $config_mak
838 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
839 # XXX: only use CFLAGS and LDFLAGS ?
840 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
841 # compilation of dyngen tool (useful for win32 build on Linux host)
842 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
843 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
844 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
845 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
846 echo "CFLAGS=$CFLAGS" >> $config_mak
847 echo "LDFLAGS=$LDFLAGS" >> $config_mak
848 echo "EXESUF=$EXESUF" >> $config_mak
849 echo "AIOLIBS=$AIOLIBS" >> $config_mak
850 if test "$cpu" = "i386" ; then
851 echo "ARCH=i386" >> $config_mak
852 echo "#define HOST_I386 1" >> $config_h
853 elif test "$cpu" = "x86_64" ; then
854 echo "ARCH=x86_64" >> $config_mak
855 echo "#define HOST_X86_64 1" >> $config_h
856 elif test "$cpu" = "alpha" ; then
857 echo "ARCH=alpha" >> $config_mak
858 echo "#define HOST_ALPHA 1" >> $config_h
859 elif test "$cpu" = "armv4b" ; then
860 echo "ARCH=arm" >> $config_mak
861 echo "#define HOST_ARM 1" >> $config_h
862 elif test "$cpu" = "armv4l" ; then
863 echo "ARCH=arm" >> $config_mak
864 echo "#define HOST_ARM 1" >> $config_h
865 elif test "$cpu" = "cris" ; then
866 echo "ARCH=cris" >> $config_mak
867 echo "#define HOST_CRIS 1" >> $config_h
868 elif test "$cpu" = "ia64" ; then
869 echo "ARCH=ia64" >> $config_mak
870 echo "#define HOST_IA64 1" >> $config_h
871 elif test "$cpu" = "m68k" ; then
872 echo "ARCH=m68k" >> $config_mak
873 echo "#define HOST_M68K 1" >> $config_h
874 elif test "$cpu" = "mips" ; then
875 echo "ARCH=mips" >> $config_mak
876 echo "#define HOST_MIPS 1" >> $config_h
877 elif test "$cpu" = "mips64" ; then
878 echo "ARCH=mips64" >> $config_mak
879 echo "#define HOST_MIPS64 1" >> $config_h
880 elif test "$cpu" = "powerpc" ; then
881 echo "ARCH=ppc" >> $config_mak
882 echo "#define HOST_PPC 1" >> $config_h
883 elif test "$cpu" = "s390" ; then
884 echo "ARCH=s390" >> $config_mak
885 echo "#define HOST_S390 1" >> $config_h
886 elif test "$cpu" = "sparc" ; then
887 echo "ARCH=sparc" >> $config_mak
888 echo "#define HOST_SPARC 1" >> $config_h
889 elif test "$cpu" = "sparc64" ; then
890 echo "ARCH=sparc64" >> $config_mak
891 echo "#define HOST_SPARC64 1" >> $config_h
893 echo "Unsupported CPU = $cpu"
896 if test "$bigendian" = "yes" ; then
897 echo "WORDS_BIGENDIAN=yes" >> $config_mak
898 echo "#define WORDS_BIGENDIAN 1" >> $config_h
900 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
901 if test "$mingw32" = "yes" ; then
902 echo "CONFIG_WIN32=yes" >> $config_mak
903 echo "#define CONFIG_WIN32 1" >> $config_h
906 #include <byteswap.h>
907 int main(void) { return bswap_32(0); }
909 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
910 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
913 if test "$darwin" = "yes" ; then
914 echo "CONFIG_DARWIN=yes" >> $config_mak
915 echo "#define CONFIG_DARWIN 1" >> $config_h
917 if test "$solaris" = "yes" ; then
918 echo "CONFIG_SOLARIS=yes" >> $config_mak
919 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
920 if test "$needs_libsunmath" = "yes" ; then
921 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
922 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
925 if test -n "$sparc_cpu"; then
926 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
927 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
929 if test "$gdbstub" = "yes" ; then
930 echo "CONFIG_GDBSTUB=yes" >> $config_mak
931 echo "#define CONFIG_GDBSTUB 1" >> $config_h
933 if test "$gprof" = "yes" ; then
934 echo "TARGET_GPROF=yes" >> $config_mak
935 echo "#define HAVE_GPROF 1" >> $config_h
937 if test "$static" = "yes" ; then
938 echo "CONFIG_STATIC=yes" >> $config_mak
939 echo "#define CONFIG_STATIC 1" >> $config_h
941 if test $profiler = "yes" ; then
942 echo "#define CONFIG_PROFILER 1" >> $config_h
944 if test "$slirp" = "yes" ; then
945 echo "CONFIG_SLIRP=yes" >> $config_mak
946 echo "#define CONFIG_SLIRP 1" >> $config_h
948 if test "$adlib" = "yes" ; then
949 echo "CONFIG_ADLIB=yes" >> $config_mak
950 echo "#define CONFIG_ADLIB 1" >> $config_h
952 if test "$ac97" = "yes" ; then
953 echo "CONFIG_AC97=yes" >> $config_mak
954 echo "#define CONFIG_AC97 1" >> $config_h
956 if test "$gus" = "yes" ; then
957 echo "CONFIG_GUS=yes" >> $config_mak
958 echo "#define CONFIG_GUS 1" >> $config_h
960 if test "$oss" = "yes" ; then
961 echo "CONFIG_OSS=yes" >> $config_mak
962 echo "#define CONFIG_OSS 1" >> $config_h
964 if test "$coreaudio" = "yes" ; then
965 echo "CONFIG_COREAUDIO=yes" >> $config_mak
966 echo "#define CONFIG_COREAUDIO 1" >> $config_h
968 if test "$alsa" = "yes" ; then
969 echo "CONFIG_ALSA=yes" >> $config_mak
970 echo "#define CONFIG_ALSA 1" >> $config_h
972 if test "$esd" = "yes" ; then
973 echo "CONFIG_ESD=yes" >> $config_mak
974 echo "#define CONFIG_ESD 1" >> $config_h
976 if test "$dsound" = "yes" ; then
977 echo "CONFIG_DSOUND=yes" >> $config_mak
978 echo "#define CONFIG_DSOUND 1" >> $config_h
980 if test "$fmod" = "yes" ; then
981 echo "CONFIG_FMOD=yes" >> $config_mak
982 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
983 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
984 echo "#define CONFIG_FMOD 1" >> $config_h
986 if test "$vnc_tls" = "yes" ; then
987 echo "CONFIG_VNC_TLS=yes" >> $config_mak
988 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
989 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
990 echo "#define CONFIG_VNC_TLS 1" >> $config_h
992 qemu_version=`head $source_path/VERSION`
993 echo "VERSION=$qemu_version" >>$config_mak
994 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
996 echo "SRC_PATH=$source_path" >> $config_mak
997 if [ "$source_path_used" = "yes" ]; then
998 echo "VPATH=$source_path" >> $config_mak
1000 echo "TARGET_DIRS=$target_list" >> $config_mak
1001 if [ "$build_docs" = "yes" ] ; then
1002 echo "BUILD_DOCS=yes" >> $config_mak
1004 if test "$static" = "yes"; then
1009 if test "$sdl1" = "yes" ; then
1010 echo "#define CONFIG_SDL 1" >> $config_h
1011 echo "CONFIG_SDL=yes" >> $config_mak
1012 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1013 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1015 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1017 if [ "${aa}" = "yes" ] ; then
1018 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1020 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1023 if test "$cocoa" = "yes" ; then
1024 echo "#define CONFIG_COCOA 1" >> $config_h
1025 echo "CONFIG_COCOA=yes" >> $config_mak
1027 if test "$curses" = "yes" ; then
1028 echo "#define CONFIG_CURSES 1" >> $config_h
1029 echo "CONFIG_CURSES=yes" >> $config_mak
1030 echo "CURSES_LIBS=-lcurses" >> $config_mak
1032 if test "$brlapi" = "yes" ; then
1033 echo "CONFIG_BRLAPI=yes" >> $config_mak
1034 echo "#define CONFIG_BRLAPI 1" >> $config_h
1035 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1038 # XXX: suppress that
1039 if [ "$bsd" = "yes" ] ; then
1040 echo "#define O_LARGEFILE 0" >> $config_h
1041 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1042 echo "#define _BSD 1" >> $config_h
1045 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1048 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1049 tools="qemu-img\$(EXESUF) $tools"
1051 echo "TOOLS=$tools" >> $config_mak
1053 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1055 for target in $target_list; do
1056 target_dir="$target"
1057 config_mak=$target_dir/config.mak
1058 config_h=$target_dir/config.h
1059 target_cpu=`echo $target | cut -d '-' -f 1`
1060 target_bigendian="no"
1061 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1062 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1063 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1064 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1065 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1066 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1067 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1068 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1069 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1070 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1071 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1072 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1073 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1075 target_user_only="no"
1076 target_linux_user="no"
1077 target_darwin_user="no"
1079 ${target_cpu}-softmmu)
1080 target_softmmu="yes"
1082 ${target_cpu}-linux-user)
1083 target_user_only="yes"
1084 target_linux_user="yes"
1086 ${target_cpu}-darwin-user)
1087 target_user_only="yes"
1088 target_darwin_user="yes"
1091 echo "ERROR: Target '$target' not recognised"
1096 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1097 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1098 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1099 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1100 echo "Note that this will disable all output from the virtual graphics card"
1101 echo "except through VNC or curses."
1105 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1107 test -f $config_h && mv $config_h ${config_h}~
1109 mkdir -p $target_dir
1110 mkdir -p $target_dir/fpu
1111 mkdir -p $target_dir/tcg
1112 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1113 mkdir -p $target_dir/nwfpe
1117 # don't use ln -sf as not all "ln -sf" over write the file/link
1119 rm -f $target_dir/Makefile
1120 ln -s $source_path/Makefile.target $target_dir/Makefile
1123 echo "# Automatically generated by configure - do not modify" > $config_mak
1124 echo "/* Automatically generated by configure - do not modify */" > $config_h
1127 echo "include ../config-host.mak" >> $config_mak
1128 echo "#include \"../config-host.h\"" >> $config_h
1132 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1133 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1135 if test "$target_cpu" = "i386" ; then
1136 echo "TARGET_ARCH=i386" >> $config_mak
1137 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1138 echo "#define TARGET_I386 1" >> $config_h
1139 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1140 echo "#define USE_KQEMU 1" >> $config_h
1142 elif test "$target_cpu" = "x86_64" ; then
1143 echo "TARGET_ARCH=x86_64" >> $config_mak
1144 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1145 echo "#define TARGET_I386 1" >> $config_h
1146 echo "#define TARGET_X86_64 1" >> $config_h
1147 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1148 echo "#define USE_KQEMU 1" >> $config_h
1150 elif test "$target_cpu" = "alpha" ; then
1151 echo "TARGET_ARCH=alpha" >> $config_mak
1152 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1153 echo "#define TARGET_ALPHA 1" >> $config_h
1154 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1155 echo "TARGET_ARCH=arm" >> $config_mak
1156 echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1157 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1158 echo "#define TARGET_ARM 1" >> $config_h
1159 echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1161 elif test "$target_cpu" = "cris" ; then
1162 echo "TARGET_ARCH=cris" >> $config_mak
1163 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1164 echo "#define TARGET_CRIS 1" >> $config_h
1165 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1166 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1167 elif test "$target_cpu" = "m68k" ; then
1168 echo "TARGET_ARCH=m68k" >> $config_mak
1169 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1170 echo "#define TARGET_M68K 1" >> $config_h
1172 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1173 echo "TARGET_ARCH=mips" >> $config_mak
1174 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1175 echo "#define TARGET_MIPS 1" >> $config_h
1176 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1177 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1178 echo "TARGET_ARCH=mipsn32" >> $config_mak
1179 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1180 echo "#define TARGET_MIPS 1" >> $config_h
1181 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1182 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1183 echo "TARGET_ARCH=mips64" >> $config_mak
1184 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1185 echo "#define TARGET_MIPS 1" >> $config_h
1186 echo "#define TARGET_MIPS64 1" >> $config_h
1187 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1188 elif test "$target_cpu" = "ppc" ; then
1189 echo "TARGET_ARCH=ppc" >> $config_mak
1190 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1191 echo "#define TARGET_PPC 1" >> $config_h
1192 elif test "$target_cpu" = "ppcemb" ; then
1193 echo "TARGET_ARCH=ppcemb" >> $config_mak
1194 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1195 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1196 echo "#define TARGET_PPC 1" >> $config_h
1197 echo "#define TARGET_PPCEMB 1" >> $config_h
1198 elif test "$target_cpu" = "ppc64" ; then
1199 echo "TARGET_ARCH=ppc64" >> $config_mak
1200 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1201 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1202 echo "#define TARGET_PPC 1" >> $config_h
1203 echo "#define TARGET_PPC64 1" >> $config_h
1204 elif test "$target_cpu" = "ppc64abi32" ; then
1205 echo "TARGET_ARCH=ppc64" >> $config_mak
1206 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1207 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1208 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1209 echo "#define TARGET_PPC 1" >> $config_h
1210 echo "#define TARGET_PPC64 1" >> $config_h
1211 echo "#define TARGET_ABI32 1" >> $config_h
1212 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1213 echo "TARGET_ARCH=sh4" >> $config_mak
1214 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1215 echo "#define TARGET_SH4 1" >> $config_h
1217 elif test "$target_cpu" = "sparc" ; then
1218 echo "TARGET_ARCH=sparc" >> $config_mak
1219 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1220 echo "#define TARGET_SPARC 1" >> $config_h
1221 elif test "$target_cpu" = "sparc64" ; then
1222 echo "TARGET_ARCH=sparc64" >> $config_mak
1223 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1224 echo "#define TARGET_SPARC 1" >> $config_h
1225 echo "#define TARGET_SPARC64 1" >> $config_h
1227 elif test "$target_cpu" = "sparc32plus" ; then
1228 echo "TARGET_ARCH=sparc64" >> $config_mak
1229 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1230 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1231 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1232 echo "#define TARGET_SPARC 1" >> $config_h
1233 echo "#define TARGET_SPARC64 1" >> $config_h
1234 echo "#define TARGET_ABI32 1" >> $config_h
1236 echo "Unsupported target CPU"
1239 if test "$target_bigendian" = "yes" ; then
1240 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1241 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1243 if test "$target_softmmu" = "yes" ; then
1244 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1245 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1247 if test "$target_user_only" = "yes" ; then
1248 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1249 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1251 if test "$target_linux_user" = "yes" ; then
1252 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1253 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1255 if test "$target_darwin_user" = "yes" ; then
1256 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1257 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1260 if test "$target_cpu" = "arm" \
1261 -o "$target_cpu" = "armeb" \
1262 -o "$target_cpu" = "m68k" \
1263 -o "$target_cpu" = "mips" \
1264 -o "$target_cpu" = "mipsel" \
1265 -o "$target_cpu" = "mipsn32" \
1266 -o "$target_cpu" = "mipsn32el" \
1267 -o "$target_cpu" = "mips64" \
1268 -o "$target_cpu" = "mips64el" \
1269 -o "$target_cpu" = "sparc" \
1270 -o "$target_cpu" = "sparc64" \
1271 -o "$target_cpu" = "sparc32plus"; then
1272 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1273 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1275 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1276 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1277 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1279 # 32 bit ELF loader in addition to native 64 bit loader?
1280 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1281 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1282 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1285 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1287 done # for target in $targets
1289 # build tree in object directory if source path is different from current one
1290 if test "$source_path_used" = "yes" ; then
1291 DIRS="tests tests/cris slirp audio"
1292 FILES="Makefile tests/Makefile"
1293 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1294 FILES="$FILES tests/test-mmap.c"
1295 for dir in $DIRS ; do
1298 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1299 for f in $FILES ; do
1301 ln -s $source_path/$f $f
1305 rm -f $TMPO $TMPC $TMPE $TMPS