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
)
68 "Power Macintosh"|ppc|ppc64
)
122 OS_CFLAGS
="-mno-cygwin"
123 if [ "$cpu" = "i386" ] ; then
129 if [ "$cpu" = "i386" ] ; then
135 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
142 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
160 OS_CFLAGS
="-mdynamic-no-pic"
161 OS_LDFLAGS
="-framework CoreFoundation -framework IOKit"
167 needs_libsunmath
="no"
168 solarisrev
=`uname -r | cut -f2 -d.`
169 # have to select again, because `uname -m` returns i86pc
170 # even on an x86_64 box.
171 solariscpu
=`isainfo -k`
172 if test "${solariscpu}" = "amd64" ; then
175 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
176 if test "$solarisrev" -le 9 ; then
177 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
178 needs_libsunmath
="yes"
180 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
181 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
182 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
183 echo "Studio 11 can be downloaded from www.sun.com."
187 if test "$solarisrev" -ge 9 ; then
191 if test -f /usr
/include
/sys
/soundcard.h
; then
199 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
205 if [ "$bsd" = "yes" ] ; then
206 if [ "$darwin" != "yes" ] ; then
212 source_path
=`dirname "$0"`
213 source_path_used
="no"
215 if [ -z "$source_path" ]; then
218 source_path
=`cd "$source_path"; pwd`
220 [ -f "$workdir/vl.c" ] || source_path_used
="yes"
223 # generate compile errors on warnings for development builds
224 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
229 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
231 --help|
-h) show_help
=yes
233 --prefix=*) prefix
="$optarg"
235 --interp-prefix=*) interp_prefix
="$optarg"
237 --source-path=*) source_path
="$optarg"
238 source_path_used
="yes"
240 --cross-prefix=*) cross_prefix
="$optarg"
245 --host-cc=*) host_cc
="$optarg"
247 --make=*) make="$optarg"
249 --install=*) install="$optarg"
251 --extra-cflags=*) CFLAGS
="$optarg"
253 --extra-ldflags=*) LDFLAGS
="$optarg"
255 --cpu=*) cpu
="$optarg"
257 --target-list=*) target_list
="$optarg"
259 --enable-gprof) gprof
="yes"
261 --static) static
="yes"
263 --disable-sdl) sdl
="no"
265 --enable-coreaudio) coreaudio
="yes"
267 --enable-alsa) alsa
="yes"
269 --enable-esd) esd
="yes"
271 --enable-dsound) dsound
="yes"
273 --enable-fmod) fmod
="yes"
275 --fmod-lib=*) fmod_lib
="$optarg"
277 --fmod-inc=*) fmod_inc
="$optarg"
279 --disable-vnc-tls) vnc_tls
="no"
281 --enable-mingw32) mingw32
="yes" ; cross_prefix
="i386-mingw32-" ; linux_user
="no"
283 --disable-slirp) slirp
="no"
285 --enable-adlib) adlib
="yes"
287 --enable-ac97) ac97
="yes"
289 --enable-gus) gus
="yes"
291 --disable-kqemu) kqemu
="no"
293 --disable-brlapi) brlapi
="no"
295 --enable-profiler) profiler
="yes"
297 --enable-cocoa) cocoa
="yes" ; coreaudio
="yes" ; sdl
="no"
299 --disable-gfx-check) check_gfx
="no"
301 --disable-gcc-check) check_gcc
="no"
303 --disable-system) softmmu
="no"
305 --enable-system) softmmu
="yes"
307 --disable-linux-user) linux_user
="no"
309 --enable-linux-user) linux_user
="yes"
311 --disable-darwin-user) darwin_user
="no"
313 --enable-darwin-user) darwin_user
="yes"
315 --enable-uname-release=*) uname_release
="$optarg"
320 v7|v8
) SP_CFLAGS
="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
321 target_cpu
="sparc"; cpu
="sparc" ;;
322 v8plus|v8plusa
) SP_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
323 target_cpu
="sparc"; cpu
="sparc" ;;
324 v9
) SP_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m64"
325 target_cpu
="sparc64"; cpu
="sparc64" ;;
326 *) echo "undefined SPARC architecture. Exiting";exit 1;;
329 --enable-werror) werror
="yes"
331 --disable-werror) werror
="no"
333 --disable-curses) curses
="no"
335 --disable-nptl) nptl
="no"
337 *) echo "ERROR: unknown option $opt"; show_help
="yes"
342 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
345 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
346 AIOLIBS
="-lrt -lpthread"
349 # default flags for all hosts
350 CFLAGS
="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
351 LDFLAGS
="$LDFLAGS -g"
352 if test "$werror" = "yes" ; then
353 CFLAGS
="$CFLAGS -Werror"
357 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
358 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
361 sparc
) if test -z "$sparc_cpu" ; then
362 ARCH_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
365 ARCH_CFLAGS
="${SP_CFLAGS}"
366 ARCH_LDFLAGS
="${SP_LDFLAGS}"
369 sparc64
) if test -z "$sparc_cpu" ; then
370 ARCH_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_v9__"
373 ARCH_CFLAGS
="${SP_CFLAGS}"
374 ARCH_LDFLAGS
="${SP_LDFLAGS}"
378 ARCH_CFLAGS
="-march=z900"
390 if test x
"$show_help" = x
"yes" ; then
393 Usage: configure [options]
394 Options: [defaults in brackets after descriptions]
397 echo "Standard options:"
398 echo " --help print this message"
399 echo " --prefix=PREFIX install in PREFIX [$prefix]"
400 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
401 echo " use %M for cpu name [$interp_prefix]"
402 echo " --target-list=LIST set target list [$target_list]"
404 echo "kqemu kernel acceleration support:"
405 echo " --disable-kqemu disable kqemu support"
407 echo "Advanced options (experts only):"
408 echo " --source-path=PATH path of source code [$source_path]"
409 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
410 echo " --cc=CC use C compiler CC [$cc]"
411 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
412 echo " --make=MAKE use specified make [$make]"
413 echo " --install=INSTALL use specified install [$install]"
414 echo " --static enable static build [$static]"
415 echo " --disable-werror disable compilation abort on warning"
416 echo " --disable-sdl disable SDL"
417 echo " --enable-cocoa enable COCOA (Mac OS X only)"
418 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
419 echo " --enable-adlib enable Adlib emulation"
420 echo " --enable-ac97 enable AC97 emulation"
421 echo " --enable-gus enable Gravis Ultrasound emulation"
422 echo " --enable-coreaudio enable Coreaudio audio driver"
423 echo " --enable-alsa enable ALSA audio driver"
424 echo " --enable-esd enable EsoundD audio driver"
425 echo " --enable-fmod enable FMOD audio driver"
426 echo " --enable-dsound enable DirectSound audio driver"
427 echo " --disable-brlapi disable BrlAPI"
428 echo " --disable-vnc-tls disable TLS encryption for VNC server"
429 echo " --disable-curses disable curses output"
430 echo " --disable-nptl disable usermode NPTL support"
431 echo " --enable-system enable all system emulation targets"
432 echo " --disable-system disable all system emulation targets"
433 echo " --enable-linux-user enable all linux usermode emulation targets"
434 echo " --disable-linux-user disable all linux usermode emulation targets"
435 echo " --enable-darwin-user enable all darwin usermode emulation targets"
436 echo " --disable-darwin-user disable all darwin usermode emulation targets"
437 echo " --fmod-lib path to FMOD library"
438 echo " --fmod-inc path to FMOD includes"
439 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
440 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
442 echo "NOTE: The object files are built at the place where configure is launched"
446 cc
="${cross_prefix}${cc}"
447 ar="${cross_prefix}${ar}"
448 strip
="${cross_prefix}${strip}"
450 # check that the C compiler works.
455 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev
/null
; then
456 : C compiler works ok
458 echo "ERROR: \"$cc\" either does not exist or does not work"
462 if test "$mingw32" = "yes" ; then
468 # Check for gcc4, error if pre-gcc4
469 if test "$check_gcc" = "yes" ; then
474 int main(){return 0;}
476 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
477 echo "WARNING: \"$cc\" looks like gcc 4.x"
479 if test "$gcc3_search" = "yes" ; then
480 echo "Looking for gcc 3.x"
481 for compat_cc
in $gcc3_list ; do
482 if "$cross_prefix$compat_cc" --version 2> /dev
/null | fgrep
'(GCC) 3.' > /dev
/null
2>&1 ; then
483 echo "Found \"$compat_cc\""
484 cc
="$cross_prefix$compat_cc"
485 found_compat_cc
="yes"
489 if test "$found_compat_cc" = "no" ; then
490 echo "gcc 3.x not found!"
493 if test "$found_compat_cc" = "no" ; then
494 echo "QEMU is known to have problems when compiled with gcc 4.x"
495 echo "It is recommended that you use gcc 3.x to build QEMU"
496 echo "To use this compiler anyway, configure with --disable-gcc-check"
503 # Solaris specific configure tool chain decisions
505 if test "$solaris" = "yes" ; then
507 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
508 # override the check with --disable-gcc-check
510 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
512 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
513 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
514 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
515 echo "or get the latest patch from SunSolve for gcc"
519 solinst
=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
520 if test -z "$solinst" ; then
521 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
522 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
523 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
526 if test "$solinst" = "/usr/sbin/install" ; then
527 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
528 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
529 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
532 sol_ar
=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
533 if test -z "$sol_ar" ; then
534 echo "Error: No path includes ar"
535 if test -f /usr
/ccs
/bin
/ar ; then
536 echo "Add /usr/ccs/bin to your path and rerun configure"
543 if test -z "$target_list" ; then
544 # these targets are portable
545 if [ "$softmmu" = "yes" ] ; then
564 # the following are Linux specific
565 if [ "$linux_user" = "yes" ] ; then
566 target_list
="${target_list}\
578 ppc64abi32-linux-user \
583 sparc32plus-linux-user \
586 # the following are Darwin specific
587 if [ "$darwin_user" = "yes" ] ; then
588 target_list
="$target_list i386-darwin-user ppc-darwin-user"
591 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
593 if test -z "$target_list" ; then
594 echo "No targets enabled"
598 if test -z "$cross_prefix" ; then
601 # big/little endian test
603 #include <inttypes.h>
604 int main(int argc, char ** argv){
605 volatile uint32_t i=0x01234567;
606 return (*((uint8_t*)(&i))) == 0x67;
610 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
611 $TMPE && bigendian
="yes"
613 echo big
/little
test failed
618 # if cross compiling, cannot launch a program, so make a static guess
619 if test "$cpu" = "armv4b" \
623 -o "$cpu" = "mips64" \
624 -o "$cpu" = "powerpc" \
626 -o "$cpu" = "sparc" \
627 -o "$cpu" = "sparc64"; then
633 # host long bits test
635 if test "$cpu" = "x86_64" \
636 -o "$cpu" = "alpha" \
638 -o "$cpu" = "sparc64"; then
642 # check gcc options support
648 # Check host NPTL support
651 #include <linux/futex.h>
654 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
660 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev
/null
; then
666 ##########################################
671 if test -z "$sdl" ; then
672 sdl_config
="sdl-config"
676 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
677 # win32 cross compilation case
678 sdl_config
="i386-mingw32msvc-sdl-config"
684 #undef main /* We don't want SDL to override our main() */
685 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
687 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
688 _sdlversion
=`$sdl_config --version | sed 's/[^0-9]//g'`
689 if test "$_sdlversion" -lt 121 ; then
692 if test "$cocoa" = "no" ; then
697 # static link with sdl ?
698 if test "$sdl" = "yes" ; then
700 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa
="yes"
701 sdl_static_libs
=`$sdl_config --static-libs 2>/dev/null`
702 if [ "$aa" = "yes" ] ; then
703 sdl_static_libs
="$sdl_static_libs `aalib-config --static-libs`"
706 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev
/null
; then
710 fi # sdl compile test
711 fi # cross compilation
713 # Make sure to disable cocoa if sdl was set
714 if test "$sdl" = "yes" ; then
720 ##########################################
722 if test "$vnc_tls" = "yes" ; then
723 `pkg-config gnutls` || vnc_tls
="no"
725 if test "$vnc_tls" = "yes" ; then
726 vnc_tls_cflags
=`pkg-config --cflags gnutls`
727 vnc_tls_libs
=`pkg-config --libs gnutls`
730 ##########################################
731 # alsa sound support libraries
733 if test "$alsa" = "yes" ; then
735 #include <alsa/asoundlib.h>
736 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
738 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev
/null
; then
742 echo "Error: Could not find alsa"
743 echo "Make sure to have the alsa libs and headers installed."
749 ##########################################
752 if test -z "$brlapi" ; then
756 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
758 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev
/null
; then
760 fi # brlapi compile test
763 ##########################################
766 if test "$curses" = "yes" ; then
770 int main(void) { return curses_version(); }
772 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev
/null
; then
777 # Check if tools are available to build documentation.
778 if [ -x "`which texi2html 2>/dev/null`" ] && \
779 [ -x "`which pod2man 2>/dev/null`" ]; then
783 if test "$mingw32" = "yes" ; then
784 if test -z "$prefix" ; then
785 prefix
="/c/Program Files/Qemu"
792 if test -z "$prefix" ; then
795 mansuffix
="/share/man"
796 datasuffix
="/share/qemu"
797 docsuffix
="/share/doc/qemu"
801 echo "Install prefix $prefix"
802 echo "BIOS directory $prefix$datasuffix"
803 echo "binary directory $prefix$binsuffix"
804 if test "$mingw32" = "no" ; then
805 echo "Manual directory $prefix$mansuffix"
806 echo "ELF interp prefix $interp_prefix"
808 echo "Source path $source_path"
809 echo "C compiler $cc"
810 echo "Host C compiler $host_cc"
811 echo "ARCH_CFLAGS $ARCH_CFLAGS"
813 echo "install $install"
815 echo "host big endian $bigendian"
816 echo "target list $target_list"
817 echo "gprof enabled $gprof"
818 echo "profiler $profiler"
819 echo "static build $static"
820 echo "-Werror enabled $werror"
821 if test "$darwin" = "yes" ; then
822 echo "Cocoa support $cocoa"
824 echo "SDL support $sdl"
825 if test "$sdl" != "no" ; then
826 echo "SDL static link $sdl_static"
828 echo "curses support $curses"
829 echo "mingw32 support $mingw32"
830 echo "Adlib support $adlib"
831 echo "AC97 support $ac97"
832 echo "GUS support $gus"
833 echo "CoreAudio support $coreaudio"
834 echo "ALSA support $alsa"
835 echo "EsounD support $esd"
836 echo "DSound support $dsound"
837 if test "$fmod" = "yes"; then
838 if test -z $fmod_lib ||
test -z $fmod_inc; then
840 echo "Error: You must specify path to FMOD library and headers"
841 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
845 fmod_support
=" (lib='$fmod_lib' include='$fmod_inc')"
849 echo "FMOD support $fmod $fmod_support"
850 echo "OSS support $oss"
851 echo "VNC TLS support $vnc_tls"
852 if test "$vnc_tls" = "yes" ; then
853 echo " TLS CFLAGS $vnc_tls_cflags"
854 echo " TLS LIBS $vnc_tls_libs"
856 if test -n "$sparc_cpu"; then
857 echo "Target Sparc Arch $sparc_cpu"
859 echo "kqemu support $kqemu"
860 echo "brlapi support $brlapi"
861 echo "Documentation $build_docs"
862 [ ! -z "$uname_release" ] && \
863 echo "uname -r $uname_release"
864 echo "NPTL support $nptl"
866 if test $sdl_too_old = "yes"; then
867 echo "-> Your SDL version is too old - please upgrade to have SDL support"
869 if [ -s /tmp
/qemu-$$
-sdl-config.log
]; then
870 echo "The error log from compiling the libSDL test is: "
871 cat /tmp
/qemu-$$
-sdl-config.log
873 rm -f /tmp
/qemu-$$
-sdl-config.log
874 #if test "$sdl_static" = "no"; then
875 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
877 config_mak
="config-host.mak"
878 config_h
="config-host.h"
880 #echo "Creating $config_mak and $config_h"
882 test -f $config_h && mv $config_h ${config_h}~
884 echo "# Automatically generated by configure - do not modify" > $config_mak
885 echo "# Configured with: $0 $@" >> $config_mak
886 echo "/* Automatically generated by configure - do not modify */" > $config_h
888 echo "prefix=$prefix" >> $config_mak
889 echo "bindir=\${prefix}$binsuffix" >> $config_mak
890 echo "mandir=\${prefix}$mansuffix" >> $config_mak
891 echo "datadir=\${prefix}$datasuffix" >> $config_mak
892 echo "docdir=\${prefix}$docsuffix" >> $config_mak
893 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
894 echo "MAKE=$make" >> $config_mak
895 echo "INSTALL=$install" >> $config_mak
896 echo "CC=$cc" >> $config_mak
897 echo "HOST_CC=$host_cc" >> $config_mak
898 echo "AR=$ar" >> $config_mak
899 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
900 # XXX: only use CFLAGS and LDFLAGS ?
901 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
902 # compilation of dyngen tool (useful for win32 build on Linux host)
903 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
904 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
905 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
906 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
907 echo "CFLAGS=$CFLAGS" >> $config_mak
908 echo "LDFLAGS=$LDFLAGS" >> $config_mak
909 echo "EXESUF=$EXESUF" >> $config_mak
910 echo "AIOLIBS=$AIOLIBS" >> $config_mak
913 echo "ARCH=i386" >> $config_mak
914 echo "#define HOST_I386 1" >> $config_h
917 echo "ARCH=x86_64" >> $config_mak
918 echo "#define HOST_X86_64 1" >> $config_h
921 echo "ARCH=alpha" >> $config_mak
922 echo "#define HOST_ALPHA 1" >> $config_h
925 echo "ARCH=arm" >> $config_mak
926 echo "#define HOST_ARM 1" >> $config_h
929 echo "ARCH=arm" >> $config_mak
930 echo "#define HOST_ARM 1" >> $config_h
933 echo "ARCH=cris" >> $config_mak
934 echo "#define HOST_CRIS 1" >> $config_h
937 echo "ARCH=hppa" >> $config_mak
938 echo "#define HOST_HPPA 1" >> $config_h
941 echo "ARCH=ia64" >> $config_mak
942 echo "#define HOST_IA64 1" >> $config_h
945 echo "ARCH=m68k" >> $config_mak
946 echo "#define HOST_M68K 1" >> $config_h
949 echo "ARCH=mips" >> $config_mak
950 echo "#define HOST_MIPS 1" >> $config_h
953 echo "ARCH=mips64" >> $config_mak
954 echo "#define HOST_MIPS64 1" >> $config_h
957 echo "ARCH=ppc" >> $config_mak
958 echo "#define HOST_PPC 1" >> $config_h
961 echo "ARCH=s390" >> $config_mak
962 echo "#define HOST_S390 1" >> $config_h
965 echo "ARCH=sparc" >> $config_mak
966 echo "#define HOST_SPARC 1" >> $config_h
969 echo "ARCH=sparc64" >> $config_mak
970 echo "#define HOST_SPARC64 1" >> $config_h
973 echo "Unsupported CPU = $cpu"
977 if test "$bigendian" = "yes" ; then
978 echo "WORDS_BIGENDIAN=yes" >> $config_mak
979 echo "#define WORDS_BIGENDIAN 1" >> $config_h
981 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
982 if test "$mingw32" = "yes" ; then
983 echo "CONFIG_WIN32=yes" >> $config_mak
984 echo "#define CONFIG_WIN32 1" >> $config_h
987 #include <byteswap.h>
988 int main(void) { return bswap_32(0); }
990 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
991 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
994 if test "$darwin" = "yes" ; then
995 echo "CONFIG_DARWIN=yes" >> $config_mak
996 echo "#define CONFIG_DARWIN 1" >> $config_h
998 if test "$solaris" = "yes" ; then
999 echo "CONFIG_SOLARIS=yes" >> $config_mak
1000 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1001 if test "$needs_libsunmath" = "yes" ; then
1002 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1003 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1006 if test -n "$sparc_cpu"; then
1007 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1008 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1010 if test "$gdbstub" = "yes" ; then
1011 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1012 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1014 if test "$gprof" = "yes" ; then
1015 echo "TARGET_GPROF=yes" >> $config_mak
1016 echo "#define HAVE_GPROF 1" >> $config_h
1018 if test "$static" = "yes" ; then
1019 echo "CONFIG_STATIC=yes" >> $config_mak
1020 echo "#define CONFIG_STATIC 1" >> $config_h
1022 if test $profiler = "yes" ; then
1023 echo "#define CONFIG_PROFILER 1" >> $config_h
1025 if test "$slirp" = "yes" ; then
1026 echo "CONFIG_SLIRP=yes" >> $config_mak
1027 echo "#define CONFIG_SLIRP 1" >> $config_h
1029 if test "$adlib" = "yes" ; then
1030 echo "CONFIG_ADLIB=yes" >> $config_mak
1031 echo "#define CONFIG_ADLIB 1" >> $config_h
1033 if test "$ac97" = "yes" ; then
1034 echo "CONFIG_AC97=yes" >> $config_mak
1035 echo "#define CONFIG_AC97 1" >> $config_h
1037 if test "$gus" = "yes" ; then
1038 echo "CONFIG_GUS=yes" >> $config_mak
1039 echo "#define CONFIG_GUS 1" >> $config_h
1041 if test "$oss" = "yes" ; then
1042 echo "CONFIG_OSS=yes" >> $config_mak
1043 echo "#define CONFIG_OSS 1" >> $config_h
1045 if test "$coreaudio" = "yes" ; then
1046 echo "CONFIG_COREAUDIO=yes" >> $config_mak
1047 echo "#define CONFIG_COREAUDIO 1" >> $config_h
1049 if test "$alsa" = "yes" ; then
1050 echo "CONFIG_ALSA=yes" >> $config_mak
1051 echo "#define CONFIG_ALSA 1" >> $config_h
1053 if test "$esd" = "yes" ; then
1054 echo "CONFIG_ESD=yes" >> $config_mak
1055 echo "#define CONFIG_ESD 1" >> $config_h
1057 if test "$dsound" = "yes" ; then
1058 echo "CONFIG_DSOUND=yes" >> $config_mak
1059 echo "#define CONFIG_DSOUND 1" >> $config_h
1061 if test "$fmod" = "yes" ; then
1062 echo "CONFIG_FMOD=yes" >> $config_mak
1063 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1064 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1065 echo "#define CONFIG_FMOD 1" >> $config_h
1067 if test "$vnc_tls" = "yes" ; then
1068 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1069 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1070 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1071 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1073 qemu_version
=`head $source_path/VERSION`
1074 echo "VERSION=$qemu_version" >>$config_mak
1075 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1077 echo "SRC_PATH=$source_path" >> $config_mak
1078 if [ "$source_path_used" = "yes" ]; then
1079 echo "VPATH=$source_path" >> $config_mak
1081 echo "TARGET_DIRS=$target_list" >> $config_mak
1082 if [ "$build_docs" = "yes" ] ; then
1083 echo "BUILD_DOCS=yes" >> $config_mak
1085 if test "$static" = "yes"; then
1090 if test "$sdl1" = "yes" ; then
1091 echo "#define CONFIG_SDL 1" >> $config_h
1092 echo "CONFIG_SDL=yes" >> $config_mak
1093 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1094 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1096 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1098 if [ "${aa}" = "yes" ] ; then
1099 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1101 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1104 if test "$cocoa" = "yes" ; then
1105 echo "#define CONFIG_COCOA 1" >> $config_h
1106 echo "CONFIG_COCOA=yes" >> $config_mak
1108 if test "$curses" = "yes" ; then
1109 echo "#define CONFIG_CURSES 1" >> $config_h
1110 echo "CONFIG_CURSES=yes" >> $config_mak
1111 echo "CURSES_LIBS=-lcurses" >> $config_mak
1113 if test "$brlapi" = "yes" ; then
1114 echo "CONFIG_BRLAPI=yes" >> $config_mak
1115 echo "#define CONFIG_BRLAPI 1" >> $config_h
1116 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1119 # XXX: suppress that
1120 if [ "$bsd" = "yes" ] ; then
1121 echo "#define O_LARGEFILE 0" >> $config_h
1122 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1123 echo "#define _BSD 1" >> $config_h
1126 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1129 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1130 tools
="qemu-img\$(EXESUF) $tools"
1131 if [ "$linux" = "yes" ] ; then
1132 tools
="qemu-nbd\$(EXESUF) $tools"
1135 echo "TOOLS=$tools" >> $config_mak
1137 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1139 for target
in $target_list; do
1140 target_dir
="$target"
1141 config_mak
=$target_dir/config.mak
1142 config_h
=$target_dir/config.h
1143 target_cpu
=`echo $target | cut -d '-' -f 1`
1144 target_bigendian
="no"
1145 [ "$target_cpu" = "armeb" ] && target_bigendian
=yes
1146 [ "$target_cpu" = "m68k" ] && target_bigendian
=yes
1147 [ "$target_cpu" = "mips" ] && target_bigendian
=yes
1148 [ "$target_cpu" = "mipsn32" ] && target_bigendian
=yes
1149 [ "$target_cpu" = "mips64" ] && target_bigendian
=yes
1150 [ "$target_cpu" = "ppc" ] && target_bigendian
=yes
1151 [ "$target_cpu" = "ppcemb" ] && target_bigendian
=yes
1152 [ "$target_cpu" = "ppc64" ] && target_bigendian
=yes
1153 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian
=yes
1154 [ "$target_cpu" = "sh4eb" ] && target_bigendian
=yes
1155 [ "$target_cpu" = "sparc" ] && target_bigendian
=yes
1156 [ "$target_cpu" = "sparc64" ] && target_bigendian
=yes
1157 [ "$target_cpu" = "sparc32plus" ] && target_bigendian
=yes
1159 target_user_only
="no"
1160 target_linux_user
="no"
1161 target_darwin_user
="no"
1163 ${target_cpu}-softmmu)
1164 target_softmmu
="yes"
1166 ${target_cpu}-linux-user)
1167 target_user_only
="yes"
1168 target_linux_user
="yes"
1170 ${target_cpu}-darwin-user)
1171 target_user_only
="yes"
1172 target_darwin_user
="yes"
1175 echo "ERROR: Target '$target' not recognised"
1180 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1181 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1182 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1183 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1184 echo "Note that this will disable all output from the virtual graphics card"
1185 echo "except through VNC or curses."
1189 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1191 test -f $config_h && mv $config_h ${config_h}~
1193 mkdir
-p $target_dir
1194 mkdir
-p $target_dir/fpu
1195 mkdir
-p $target_dir/tcg
1196 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1197 mkdir
-p $target_dir/nwfpe
1201 # don't use ln -sf as not all "ln -sf" over write the file/link
1203 rm -f $target_dir/Makefile
1204 ln -s $source_path/Makefile.target
$target_dir/Makefile
1207 echo "# Automatically generated by configure - do not modify" > $config_mak
1208 echo "/* Automatically generated by configure - do not modify */" > $config_h
1211 echo "include ../config-host.mak" >> $config_mak
1212 echo "#include \"../config-host.h\"" >> $config_h
1217 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1218 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1220 case "$target_cpu" in
1222 echo "TARGET_ARCH=i386" >> $config_mak
1223 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1224 echo "#define TARGET_I386 1" >> $config_h
1225 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1227 echo "#define USE_KQEMU 1" >> $config_h
1229 gcc3minver
=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1230 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1232 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1234 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1238 echo "TARGET_ARCH=x86_64" >> $config_mak
1239 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1240 echo "#define TARGET_I386 1" >> $config_h
1241 echo "#define TARGET_X86_64 1" >> $config_h
1242 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1244 echo "#define USE_KQEMU 1" >> $config_h
1248 echo "TARGET_ARCH=alpha" >> $config_mak
1249 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1250 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1251 echo "#define TARGET_ALPHA 1" >> $config_h
1252 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1255 echo "TARGET_ARCH=arm" >> $config_mak
1256 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1257 echo "#define TARGET_ARM 1" >> $config_h
1262 echo "TARGET_ARCH=cris" >> $config_mak
1263 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1264 echo "#define TARGET_CRIS 1" >> $config_h
1267 echo "TARGET_ARCH=m68k" >> $config_mak
1268 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1269 echo "#define TARGET_M68K 1" >> $config_h
1273 echo "TARGET_ARCH=mips" >> $config_mak
1274 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1275 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1276 echo "#define TARGET_MIPS 1" >> $config_h
1277 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1278 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1281 echo "TARGET_ARCH=mipsn32" >> $config_mak
1282 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1283 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1284 echo "#define TARGET_MIPS 1" >> $config_h
1285 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1286 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1289 echo "TARGET_ARCH=mips64" >> $config_mak
1290 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1291 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1292 echo "#define TARGET_MIPS 1" >> $config_h
1293 echo "#define TARGET_MIPS64 1" >> $config_h
1294 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1295 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1298 echo "TARGET_ARCH=ppc" >> $config_mak
1299 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1300 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1301 echo "#define TARGET_PPC 1" >> $config_h
1302 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1305 echo "TARGET_ARCH=ppcemb" >> $config_mak
1306 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1307 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1308 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1309 echo "#define TARGET_PPC 1" >> $config_h
1310 echo "#define TARGET_PPCEMB 1" >> $config_h
1311 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1314 echo "TARGET_ARCH=ppc64" >> $config_mak
1315 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1316 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1317 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1318 echo "#define TARGET_PPC 1" >> $config_h
1319 echo "#define TARGET_PPC64 1" >> $config_h
1320 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1323 echo "TARGET_ARCH=ppc64" >> $config_mak
1324 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1325 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1326 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1327 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1328 echo "#define TARGET_PPC 1" >> $config_h
1329 echo "#define TARGET_PPC64 1" >> $config_h
1330 echo "#define TARGET_ABI32 1" >> $config_h
1331 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1334 echo "TARGET_ARCH=sh4" >> $config_mak
1335 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1336 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1337 echo "#define TARGET_SH4 1" >> $config_h
1338 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1342 echo "TARGET_ARCH=sparc" >> $config_mak
1343 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1344 echo "#define TARGET_SPARC 1" >> $config_h
1347 echo "TARGET_ARCH=sparc64" >> $config_mak
1348 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1349 echo "#define TARGET_SPARC 1" >> $config_h
1350 echo "#define TARGET_SPARC64 1" >> $config_h
1354 echo "TARGET_ARCH=sparc64" >> $config_mak
1355 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1356 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1357 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1358 echo "#define TARGET_SPARC 1" >> $config_h
1359 echo "#define TARGET_SPARC64 1" >> $config_h
1360 echo "#define TARGET_ABI32 1" >> $config_h
1363 echo "Unsupported target CPU"
1367 if test "$target_bigendian" = "yes" ; then
1368 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1369 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1371 if test "$target_softmmu" = "yes" ; then
1372 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1373 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1375 if test "$target_user_only" = "yes" ; then
1376 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1377 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1379 if test "$target_linux_user" = "yes" ; then
1380 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1381 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1383 if test "$target_darwin_user" = "yes" ; then
1384 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1385 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1388 if test "$target_cpu" = "arm" \
1389 -o "$target_cpu" = "armeb" \
1390 -o "$target_cpu" = "m68k" \
1391 -o "$target_cpu" = "mips" \
1392 -o "$target_cpu" = "mipsel" \
1393 -o "$target_cpu" = "mipsn32" \
1394 -o "$target_cpu" = "mipsn32el" \
1395 -o "$target_cpu" = "mips64" \
1396 -o "$target_cpu" = "mips64el" \
1397 -o "$target_cpu" = "sparc" \
1398 -o "$target_cpu" = "sparc64" \
1399 -o "$target_cpu" = "sparc32plus"; then
1400 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1401 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1403 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1404 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1405 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1407 if test "$target_user_only" = "yes" \
1408 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1409 echo "#define USE_NPTL 1" >> $config_h
1411 # 32 bit ELF loader in addition to native 64 bit loader?
1412 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1413 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1414 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1417 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1419 done # for target in $targets
1421 # build tree in object directory if source path is different from current one
1422 if test "$source_path_used" = "yes" ; then
1423 DIRS
="tests tests/cris slirp audio"
1424 FILES
="Makefile tests/Makefile"
1425 FILES
="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1426 FILES
="$FILES tests/test-mmap.c"
1427 for dir
in $DIRS ; do
1430 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1431 for f
in $FILES ; do
1433 ln -s $source_path/$f $f
1437 rm -f $TMPO $TMPC $TMPE $TMPS