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"
37 i386|i486|i586|i686|i86pc|BePC
)
70 "Power Macintosh"|ppc|ppc64
)
116 OS_CFLAGS
="-mno-cygwin"
117 if [ "$cpu" = "i386" ] ; then
120 audio_possible_drivers
="sdl"
124 if [ "$cpu" = "i386" ] ; then
127 audio_possible_drivers
="dsound sdl fmod"
131 audio_possible_drivers
="oss sdl esd"
132 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
139 audio_possible_drivers
="oss sdl esd"
140 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
147 audio_possible_drivers
="oss sdl esd"
152 audio_possible_drivers
="oss sdl esd"
159 audio_drv_list
="coreaudio"
160 audio_possible_drivers
="coreaudio sdl fmod"
161 OS_CFLAGS
="-mdynamic-no-pic"
162 OS_LDFLAGS
="-framework CoreFoundation -framework IOKit"
168 needs_libsunmath
="no"
169 solarisrev
=`uname -r | cut -f2 -d.`
170 # have to select again, because `uname -m` returns i86pc
171 # even on an x86_64 box.
172 solariscpu
=`isainfo -k`
173 if test "${solariscpu}" = "amd64" ; then
176 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
177 if test "$solarisrev" -le 9 ; then
178 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
179 needs_libsunmath
="yes"
181 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
182 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
183 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
184 echo "Studio 11 can be downloaded from www.sun.com."
188 if test "$solarisrev" -ge 9 ; then
192 if test -f /usr
/include
/sys
/soundcard.h
; then
195 audio_possible_drivers
="oss sdl"
199 audio_possible_drivers
="oss alsa sdl esd pa"
202 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
204 audio_possible_drivers
="$audio_possible_drivers fmod"
209 if [ "$bsd" = "yes" ] ; then
210 if [ "$darwin" != "yes" ] ; then
216 source_path
=`dirname "$0"`
217 source_path_used
="no"
219 if [ -z "$source_path" ]; then
222 source_path
=`cd "$source_path"; pwd`
224 [ -f "$workdir/vl.c" ] || source_path_used
="yes"
227 # generate compile errors on warnings for development builds
228 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
233 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
235 --help|
-h) show_help
=yes
237 --prefix=*) prefix
="$optarg"
239 --interp-prefix=*) interp_prefix
="$optarg"
241 --source-path=*) source_path
="$optarg"
242 source_path_used
="yes"
244 --cross-prefix=*) cross_prefix
="$optarg"
249 --host-cc=*) host_cc
="$optarg"
251 --make=*) make="$optarg"
253 --install=*) install="$optarg"
255 --extra-cflags=*) CFLAGS
="$optarg"
257 --extra-ldflags=*) LDFLAGS
="$optarg"
259 --cpu=*) cpu
="$optarg"
261 --target-list=*) target_list
="$optarg"
263 --enable-gprof) gprof
="yes"
265 --static) static
="yes"
267 --disable-sdl) sdl
="no"
269 --fmod-lib=*) fmod_lib
="$optarg"
271 --fmod-inc=*) fmod_inc
="$optarg"
273 --audio-card-list=*) audio_card_list
="$optarg"
275 --audio-drv-list=*) audio_drv_list
="$optarg"
277 --disable-vnc-tls) vnc_tls
="no"
279 --enable-mingw32) mingw32
="yes" ; cross_prefix
="i386-mingw32-" ; linux_user
="no"
281 --disable-slirp) slirp
="no"
283 --disable-kqemu) kqemu
="no"
285 --disable-brlapi) brlapi
="no"
287 --enable-profiler) profiler
="yes"
292 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
294 --disable-gfx-check) check_gfx
="no"
296 --disable-gcc-check) check_gcc
="no"
298 --disable-system) softmmu
="no"
300 --enable-system) softmmu
="yes"
302 --disable-linux-user) linux_user
="no"
304 --enable-linux-user) linux_user
="yes"
306 --disable-darwin-user) darwin_user
="no"
308 --enable-darwin-user) darwin_user
="yes"
310 --enable-uname-release=*) uname_release
="$optarg"
315 v7|v8
) SP_CFLAGS
="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
316 target_cpu
="sparc"; cpu
="sparc" ;;
317 v8plus|v8plusa
) SP_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
318 target_cpu
="sparc"; cpu
="sparc" ;;
319 v9
) SP_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m64"
320 target_cpu
="sparc64"; cpu
="sparc64" ;;
321 *) echo "undefined SPARC architecture. Exiting";exit 1;;
324 --enable-werror) werror
="yes"
326 --disable-werror) werror
="no"
328 --disable-curses) curses
="no"
330 --disable-nptl) nptl
="no"
332 --enable-mixemu) mixemu
="yes"
334 *) echo "ERROR: unknown option $opt"; show_help
="yes"
339 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
342 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
343 AIOLIBS
="-lrt -lpthread"
346 # default flags for all hosts
347 CFLAGS
="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
348 LDFLAGS
="$LDFLAGS -g"
349 if test "$werror" = "yes" ; then
350 CFLAGS
="$CFLAGS -Werror"
354 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
355 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
358 sparc
) if test -z "$sparc_cpu" ; then
359 ARCH_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
362 ARCH_CFLAGS
="${SP_CFLAGS}"
363 ARCH_LDFLAGS
="${SP_LDFLAGS}"
366 sparc64
) if test -z "$sparc_cpu" ; then
367 ARCH_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_v9__"
370 ARCH_CFLAGS
="${SP_CFLAGS}"
371 ARCH_LDFLAGS
="${SP_LDFLAGS}"
375 ARCH_CFLAGS
="-march=z900"
387 if test x
"$show_help" = x
"yes" ; then
390 Usage: configure [options]
391 Options: [defaults in brackets after descriptions]
394 echo "Standard options:"
395 echo " --help print this message"
396 echo " --prefix=PREFIX install in PREFIX [$prefix]"
397 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
398 echo " use %M for cpu name [$interp_prefix]"
399 echo " --target-list=LIST set target list [$target_list]"
401 echo "kqemu kernel acceleration support:"
402 echo " --disable-kqemu disable kqemu support"
404 echo "Advanced options (experts only):"
405 echo " --source-path=PATH path of source code [$source_path]"
406 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
407 echo " --cc=CC use C compiler CC [$cc]"
408 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
409 echo " --make=MAKE use specified make [$make]"
410 echo " --install=INSTALL use specified install [$install]"
411 echo " --static enable static build [$static]"
412 echo " --disable-werror disable compilation abort on warning"
413 echo " --disable-sdl disable SDL"
414 echo " --enable-cocoa enable COCOA (Mac OS X only)"
415 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
416 echo " --audio-drv-list=LIST set audio drivers list:"
417 echo " Available drivers: $audio_possible_drivers"
418 echo " --audio-card-list=LIST set list of additional emulated audio cards"
419 echo " Available cards: ac97 adlib cs4231a gus"
420 echo " --enable-mixemu enable mixer emulation"
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 " --disable-nptl disable usermode NPTL support"
425 echo " --enable-system enable all system emulation targets"
426 echo " --disable-system disable all system emulation targets"
427 echo " --enable-linux-user enable all linux usermode emulation targets"
428 echo " --disable-linux-user disable all linux usermode emulation targets"
429 echo " --enable-darwin-user enable all darwin usermode emulation targets"
430 echo " --disable-darwin-user disable all darwin usermode emulation targets"
431 echo " --fmod-lib path to FMOD library"
432 echo " --fmod-inc path to FMOD includes"
433 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
434 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
436 echo "NOTE: The object files are built at the place where configure is launched"
440 cc
="${cross_prefix}${cc}"
441 ar="${cross_prefix}${ar}"
442 strip
="${cross_prefix}${strip}"
444 # check that the C compiler works.
449 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev
/null
; then
450 : C compiler works ok
452 echo "ERROR: \"$cc\" either does not exist or does not work"
456 if test "$mingw32" = "yes" ; then
462 # Check for gcc4, error if pre-gcc4
463 if test "$check_gcc" = "yes" ; then
468 int main(){return 0;}
470 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
471 echo "WARNING: \"$cc\" looks like gcc 4.x"
473 if test "$gcc3_search" = "yes" ; then
474 echo "Looking for gcc 3.x"
475 for compat_cc
in $gcc3_list ; do
476 if "$cross_prefix$compat_cc" --version 2> /dev
/null | fgrep
'(GCC) 3.' > /dev
/null
2>&1 ; then
477 echo "Found \"$compat_cc\""
478 cc
="$cross_prefix$compat_cc"
479 found_compat_cc
="yes"
483 if test "$found_compat_cc" = "no" ; then
484 echo "gcc 3.x not found!"
487 if test "$found_compat_cc" = "no" ; then
488 echo "QEMU is known to have problems when compiled with gcc 4.x"
489 echo "It is recommended that you use gcc 3.x to build QEMU"
490 echo "To use this compiler anyway, configure with --disable-gcc-check"
497 # Solaris specific configure tool chain decisions
499 if test "$solaris" = "yes" ; then
501 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
502 # override the check with --disable-gcc-check
504 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
506 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
507 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
508 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
509 echo "or get the latest patch from SunSolve for gcc"
513 solinst
=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
514 if test -z "$solinst" ; then
515 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
516 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
517 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
520 if test "$solinst" = "/usr/sbin/install" ; then
521 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
522 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
523 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
526 sol_ar
=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
527 if test -z "$sol_ar" ; then
528 echo "Error: No path includes ar"
529 if test -f /usr
/ccs
/bin
/ar ; then
530 echo "Add /usr/ccs/bin to your path and rerun configure"
537 if test -z "$target_list" ; then
538 # these targets are portable
539 if [ "$softmmu" = "yes" ] ; then
558 # the following are Linux specific
559 if [ "$linux_user" = "yes" ] ; then
560 target_list
="${target_list}\
572 ppc64abi32-linux-user \
577 sparc32plus-linux-user \
580 # the following are Darwin specific
581 if [ "$darwin_user" = "yes" ] ; then
582 target_list
="$target_list i386-darwin-user ppc-darwin-user"
585 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
587 if test -z "$target_list" ; then
588 echo "No targets enabled"
592 if test -z "$cross_prefix" ; then
595 # big/little endian test
597 #include <inttypes.h>
598 int main(int argc, char ** argv){
599 volatile uint32_t i=0x01234567;
600 return (*((uint8_t*)(&i))) == 0x67;
604 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
605 $TMPE && bigendian
="yes"
607 echo big
/little
test failed
612 # if cross compiling, cannot launch a program, so make a static guess
613 if test "$cpu" = "armv4b" \
617 -o "$cpu" = "mips64" \
618 -o "$cpu" = "powerpc" \
620 -o "$cpu" = "sparc" \
621 -o "$cpu" = "sparc64"; then
627 # host long bits test
629 if test "$cpu" = "x86_64" \
630 -o "$cpu" = "alpha" \
632 -o "$cpu" = "sparc64"; then
636 # check gcc options support
642 # Check host NPTL support
645 #include <linux/futex.h>
648 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
654 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev
/null
; then
660 ##########################################
665 if test -z "$sdl" ; then
666 sdl_config
="sdl-config"
670 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
671 # win32 cross compilation case
672 sdl_config
="i386-mingw32msvc-sdl-config"
678 #undef main /* We don't want SDL to override our main() */
679 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
681 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
682 _sdlversion
=`$sdl_config --version | sed 's/[^0-9]//g'`
683 if test "$_sdlversion" -lt 121 ; then
686 if test "$cocoa" = "no" ; then
691 # static link with sdl ?
692 if test "$sdl" = "yes" ; then
694 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa
="yes"
695 sdl_static_libs
=`$sdl_config --static-libs 2>/dev/null`
696 if [ "$aa" = "yes" ] ; then
697 sdl_static_libs
="$sdl_static_libs `aalib-config --static-libs`"
700 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev
/null
; then
704 fi # sdl compile test
705 fi # cross compilation
707 # Make sure to disable cocoa if sdl was set
708 if test "$sdl" = "yes" ; then
710 audio_drv_list
="`echo $audio_drv_list | sed s,coreaudio,,g`"
714 ##########################################
716 if test "$vnc_tls" = "yes" ; then
717 `pkg-config gnutls` || vnc_tls
="no"
719 if test "$vnc_tls" = "yes" ; then
720 vnc_tls_cflags
=`pkg-config --cflags gnutls`
721 vnc_tls_libs
=`pkg-config --libs gnutls`
724 ##########################################
725 # Sound support libraries probe
736 int main(void) { $exp }
738 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev
/null
; then
742 echo "Error: $drv check failed"
743 echo "Make sure to have the $drv libs and headers installed."
749 for drv
in $audio_drv_list; do
752 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
753 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
757 if test -z $fmod_lib ||
test -z $fmod_inc; then
759 echo "Error: You must specify path to FMOD library and headers"
760 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
764 audio_drv_probe
$drv fmod.h
$fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
768 audio_drv_probe
$drv esd.h
-lesd 'return esd_play_stream(0, 0, "", 0);'
772 audio_drv_probe
$drv pulse
/simple.h
-lpulse-simple \
773 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
779 ##########################################
782 if test -z "$brlapi" ; then
786 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
788 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev
/null
; then
790 fi # brlapi compile test
793 ##########################################
796 if test "$curses" = "yes" ; then
800 int main(void) { return curses_version(); }
802 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev
/null
; then
807 # Check if tools are available to build documentation.
808 if [ -x "`which texi2html 2>/dev/null`" ] && \
809 [ -x "`which pod2man 2>/dev/null`" ]; then
813 if test "$mingw32" = "yes" ; then
814 if test -z "$prefix" ; then
815 prefix
="/c/Program Files/Qemu"
822 if test -z "$prefix" ; then
825 mansuffix
="/share/man"
826 datasuffix
="/share/qemu"
827 docsuffix
="/share/doc/qemu"
831 echo "Install prefix $prefix"
832 echo "BIOS directory $prefix$datasuffix"
833 echo "binary directory $prefix$binsuffix"
834 if test "$mingw32" = "no" ; then
835 echo "Manual directory $prefix$mansuffix"
836 echo "ELF interp prefix $interp_prefix"
838 echo "Source path $source_path"
839 echo "C compiler $cc"
840 echo "Host C compiler $host_cc"
841 echo "ARCH_CFLAGS $ARCH_CFLAGS"
843 echo "install $install"
845 echo "host big endian $bigendian"
846 echo "target list $target_list"
847 echo "gprof enabled $gprof"
848 echo "profiler $profiler"
849 echo "static build $static"
850 echo "-Werror enabled $werror"
851 if test "$darwin" = "yes" ; then
852 echo "Cocoa support $cocoa"
854 echo "SDL support $sdl"
855 if test "$sdl" != "no" ; then
856 echo "SDL static link $sdl_static"
858 echo "curses support $curses"
859 echo "mingw32 support $mingw32"
860 echo "Audio drivers $audio_drv_list"
861 echo "Extra audio cards $audio_card_list"
862 echo "Mixer emulation $mixemu"
863 echo "VNC TLS support $vnc_tls"
864 if test "$vnc_tls" = "yes" ; then
865 echo " TLS CFLAGS $vnc_tls_cflags"
866 echo " TLS LIBS $vnc_tls_libs"
868 if test -n "$sparc_cpu"; then
869 echo "Target Sparc Arch $sparc_cpu"
871 echo "kqemu support $kqemu"
872 echo "brlapi support $brlapi"
873 echo "Documentation $build_docs"
874 [ ! -z "$uname_release" ] && \
875 echo "uname -r $uname_release"
876 echo "NPTL support $nptl"
878 if test $sdl_too_old = "yes"; then
879 echo "-> Your SDL version is too old - please upgrade to have SDL support"
881 if [ -s /tmp
/qemu-$$
-sdl-config.log
]; then
882 echo "The error log from compiling the libSDL test is: "
883 cat /tmp
/qemu-$$
-sdl-config.log
885 rm -f /tmp
/qemu-$$
-sdl-config.log
886 #if test "$sdl_static" = "no"; then
887 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
889 config_mak
="config-host.mak"
890 config_h
="config-host.h"
892 #echo "Creating $config_mak and $config_h"
894 test -f $config_h && mv $config_h ${config_h}~
896 echo "# Automatically generated by configure - do not modify" > $config_mak
897 echo "# Configured with: $0 $@" >> $config_mak
898 echo "/* Automatically generated by configure - do not modify */" > $config_h
900 echo "prefix=$prefix" >> $config_mak
901 echo "bindir=\${prefix}$binsuffix" >> $config_mak
902 echo "mandir=\${prefix}$mansuffix" >> $config_mak
903 echo "datadir=\${prefix}$datasuffix" >> $config_mak
904 echo "docdir=\${prefix}$docsuffix" >> $config_mak
905 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
906 echo "MAKE=$make" >> $config_mak
907 echo "INSTALL=$install" >> $config_mak
908 echo "CC=$cc" >> $config_mak
909 echo "HOST_CC=$host_cc" >> $config_mak
910 echo "AR=$ar" >> $config_mak
911 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
912 # XXX: only use CFLAGS and LDFLAGS ?
913 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
914 # compilation of dyngen tool (useful for win32 build on Linux host)
915 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
916 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
917 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
918 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
919 echo "CFLAGS=$CFLAGS" >> $config_mak
920 echo "LDFLAGS=$LDFLAGS" >> $config_mak
921 echo "EXESUF=$EXESUF" >> $config_mak
922 echo "AIOLIBS=$AIOLIBS" >> $config_mak
925 echo "ARCH=i386" >> $config_mak
926 echo "#define HOST_I386 1" >> $config_h
929 echo "ARCH=x86_64" >> $config_mak
930 echo "#define HOST_X86_64 1" >> $config_h
933 echo "ARCH=alpha" >> $config_mak
934 echo "#define HOST_ALPHA 1" >> $config_h
937 echo "ARCH=arm" >> $config_mak
938 echo "#define HOST_ARM 1" >> $config_h
941 echo "ARCH=arm" >> $config_mak
942 echo "#define HOST_ARM 1" >> $config_h
945 echo "ARCH=cris" >> $config_mak
946 echo "#define HOST_CRIS 1" >> $config_h
949 echo "ARCH=hppa" >> $config_mak
950 echo "#define HOST_HPPA 1" >> $config_h
953 echo "ARCH=ia64" >> $config_mak
954 echo "#define HOST_IA64 1" >> $config_h
957 echo "ARCH=m68k" >> $config_mak
958 echo "#define HOST_M68K 1" >> $config_h
961 echo "ARCH=mips" >> $config_mak
962 echo "#define HOST_MIPS 1" >> $config_h
965 echo "ARCH=mips64" >> $config_mak
966 echo "#define HOST_MIPS64 1" >> $config_h
969 echo "ARCH=ppc" >> $config_mak
970 echo "#define HOST_PPC 1" >> $config_h
973 echo "ARCH=s390" >> $config_mak
974 echo "#define HOST_S390 1" >> $config_h
977 echo "ARCH=sparc" >> $config_mak
978 echo "#define HOST_SPARC 1" >> $config_h
981 echo "ARCH=sparc64" >> $config_mak
982 echo "#define HOST_SPARC64 1" >> $config_h
985 echo "Unsupported CPU = $cpu"
989 if test "$bigendian" = "yes" ; then
990 echo "WORDS_BIGENDIAN=yes" >> $config_mak
991 echo "#define WORDS_BIGENDIAN 1" >> $config_h
993 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
994 if test "$mingw32" = "yes" ; then
995 echo "CONFIG_WIN32=yes" >> $config_mak
996 echo "#define CONFIG_WIN32 1" >> $config_h
999 #include <byteswap.h>
1000 int main(void) { return bswap_32(0); }
1002 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
1003 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1006 if test "$darwin" = "yes" ; then
1007 echo "CONFIG_DARWIN=yes" >> $config_mak
1008 echo "#define CONFIG_DARWIN 1" >> $config_h
1010 if test "$solaris" = "yes" ; then
1011 echo "CONFIG_SOLARIS=yes" >> $config_mak
1012 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1013 if test "$needs_libsunmath" = "yes" ; then
1014 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1015 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1018 if test -n "$sparc_cpu"; then
1019 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1020 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1022 if test "$gdbstub" = "yes" ; then
1023 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1024 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1026 if test "$gprof" = "yes" ; then
1027 echo "TARGET_GPROF=yes" >> $config_mak
1028 echo "#define HAVE_GPROF 1" >> $config_h
1030 if test "$static" = "yes" ; then
1031 echo "CONFIG_STATIC=yes" >> $config_mak
1032 echo "#define CONFIG_STATIC 1" >> $config_h
1034 if test $profiler = "yes" ; then
1035 echo "#define CONFIG_PROFILER 1" >> $config_h
1037 if test "$slirp" = "yes" ; then
1038 echo "CONFIG_SLIRP=yes" >> $config_mak
1039 echo "#define CONFIG_SLIRP 1" >> $config_h
1041 for card
in $audio_card_list; do
1042 def
=CONFIG_
`echo $card | tr '[:lower:]' '[:upper:]'`
1043 echo "$def=yes" >> $config_mak
1044 echo "#define $def 1" >> $config_h
1046 echo "#define AUDIO_DRIVERS \\" >> $config_h
1047 for drv
in $audio_drv_list; do
1048 echo " &${drv}_audio_driver, \\" >>$config_h
1049 def
=CONFIG_
`echo $drv | tr '[:lower:]' '[:upper:]'`
1050 echo "$def=yes" >> $config_mak
1051 if test "$drv" = "fmod"; then
1052 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1053 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1057 if test "$mixemu" = "yes" ; then
1058 echo "CONFIG_MIXEMU=yes" >> $config_mak
1059 echo "#define CONFIG_MIXEMU 1" >> $config_h
1061 if test "$vnc_tls" = "yes" ; then
1062 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1063 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1064 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1065 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1067 qemu_version
=`head $source_path/VERSION`
1068 echo "VERSION=$qemu_version" >>$config_mak
1069 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1071 echo "SRC_PATH=$source_path" >> $config_mak
1072 if [ "$source_path_used" = "yes" ]; then
1073 echo "VPATH=$source_path" >> $config_mak
1075 echo "TARGET_DIRS=$target_list" >> $config_mak
1076 if [ "$build_docs" = "yes" ] ; then
1077 echo "BUILD_DOCS=yes" >> $config_mak
1079 if test "$static" = "yes"; then
1084 if test "$sdl1" = "yes" ; then
1085 echo "#define CONFIG_SDL 1" >> $config_h
1086 echo "CONFIG_SDL=yes" >> $config_mak
1087 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1088 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1090 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1092 if [ "${aa}" = "yes" ] ; then
1093 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1095 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1098 if test "$cocoa" = "yes" ; then
1099 echo "#define CONFIG_COCOA 1" >> $config_h
1100 echo "CONFIG_COCOA=yes" >> $config_mak
1102 if test "$curses" = "yes" ; then
1103 echo "#define CONFIG_CURSES 1" >> $config_h
1104 echo "CONFIG_CURSES=yes" >> $config_mak
1105 echo "CURSES_LIBS=-lcurses" >> $config_mak
1107 if test "$brlapi" = "yes" ; then
1108 echo "CONFIG_BRLAPI=yes" >> $config_mak
1109 echo "#define CONFIG_BRLAPI 1" >> $config_h
1110 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1113 # XXX: suppress that
1114 if [ "$bsd" = "yes" ] ; then
1115 echo "#define O_LARGEFILE 0" >> $config_h
1116 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1117 echo "#define _BSD 1" >> $config_h
1120 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1123 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1124 tools
="qemu-img\$(EXESUF) $tools"
1125 if [ "$linux" = "yes" ] ; then
1126 tools
="qemu-nbd\$(EXESUF) $tools"
1129 echo "TOOLS=$tools" >> $config_mak
1131 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1133 for target
in $target_list; do
1134 target_dir
="$target"
1135 config_mak
=$target_dir/config.mak
1136 config_h
=$target_dir/config.h
1137 target_cpu
=`echo $target | cut -d '-' -f 1`
1138 target_bigendian
="no"
1139 [ "$target_cpu" = "armeb" ] && target_bigendian
=yes
1140 [ "$target_cpu" = "m68k" ] && target_bigendian
=yes
1141 [ "$target_cpu" = "mips" ] && target_bigendian
=yes
1142 [ "$target_cpu" = "mipsn32" ] && target_bigendian
=yes
1143 [ "$target_cpu" = "mips64" ] && target_bigendian
=yes
1144 [ "$target_cpu" = "ppc" ] && target_bigendian
=yes
1145 [ "$target_cpu" = "ppcemb" ] && target_bigendian
=yes
1146 [ "$target_cpu" = "ppc64" ] && target_bigendian
=yes
1147 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian
=yes
1148 [ "$target_cpu" = "sh4eb" ] && target_bigendian
=yes
1149 [ "$target_cpu" = "sparc" ] && target_bigendian
=yes
1150 [ "$target_cpu" = "sparc64" ] && target_bigendian
=yes
1151 [ "$target_cpu" = "sparc32plus" ] && target_bigendian
=yes
1153 target_user_only
="no"
1154 target_linux_user
="no"
1155 target_darwin_user
="no"
1157 ${target_cpu}-softmmu)
1158 target_softmmu
="yes"
1160 ${target_cpu}-linux-user)
1161 target_user_only
="yes"
1162 target_linux_user
="yes"
1164 ${target_cpu}-darwin-user)
1165 target_user_only
="yes"
1166 target_darwin_user
="yes"
1169 echo "ERROR: Target '$target' not recognised"
1174 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1175 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1176 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1177 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1178 echo "Note that this will disable all output from the virtual graphics card"
1179 echo "except through VNC or curses."
1183 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1185 test -f $config_h && mv $config_h ${config_h}~
1187 mkdir
-p $target_dir
1188 mkdir
-p $target_dir/fpu
1189 mkdir
-p $target_dir/tcg
1190 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1191 mkdir
-p $target_dir/nwfpe
1195 # don't use ln -sf as not all "ln -sf" over write the file/link
1197 rm -f $target_dir/Makefile
1198 ln -s $source_path/Makefile.target
$target_dir/Makefile
1201 echo "# Automatically generated by configure - do not modify" > $config_mak
1202 echo "/* Automatically generated by configure - do not modify */" > $config_h
1205 echo "include ../config-host.mak" >> $config_mak
1206 echo "#include \"../config-host.h\"" >> $config_h
1211 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1212 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1214 case "$target_cpu" in
1216 echo "TARGET_ARCH=i386" >> $config_mak
1217 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1218 echo "#define TARGET_I386 1" >> $config_h
1219 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1221 echo "#define USE_KQEMU 1" >> $config_h
1223 gcc3minver
=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1224 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1226 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1228 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1232 echo "TARGET_ARCH=x86_64" >> $config_mak
1233 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1234 echo "#define TARGET_I386 1" >> $config_h
1235 echo "#define TARGET_X86_64 1" >> $config_h
1236 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1238 echo "#define USE_KQEMU 1" >> $config_h
1242 echo "TARGET_ARCH=alpha" >> $config_mak
1243 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1244 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1245 echo "#define TARGET_ALPHA 1" >> $config_h
1246 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1249 echo "TARGET_ARCH=arm" >> $config_mak
1250 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1251 echo "#define TARGET_ARM 1" >> $config_h
1256 echo "TARGET_ARCH=cris" >> $config_mak
1257 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1258 echo "#define TARGET_CRIS 1" >> $config_h
1261 echo "TARGET_ARCH=m68k" >> $config_mak
1262 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1263 echo "#define TARGET_M68K 1" >> $config_h
1267 echo "TARGET_ARCH=mips" >> $config_mak
1268 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1269 echo "#define TARGET_MIPS 1" >> $config_h
1270 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1273 echo "TARGET_ARCH=mipsn32" >> $config_mak
1274 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1275 echo "#define TARGET_MIPS 1" >> $config_h
1276 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1279 echo "TARGET_ARCH=mips64" >> $config_mak
1280 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1281 echo "#define TARGET_MIPS 1" >> $config_h
1282 echo "#define TARGET_MIPS64 1" >> $config_h
1283 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1286 echo "TARGET_ARCH=ppc" >> $config_mak
1287 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1288 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1289 echo "#define TARGET_PPC 1" >> $config_h
1290 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1293 echo "TARGET_ARCH=ppcemb" >> $config_mak
1294 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1295 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1296 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1297 echo "#define TARGET_PPC 1" >> $config_h
1298 echo "#define TARGET_PPCEMB 1" >> $config_h
1299 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1302 echo "TARGET_ARCH=ppc64" >> $config_mak
1303 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1304 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1305 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1306 echo "#define TARGET_PPC 1" >> $config_h
1307 echo "#define TARGET_PPC64 1" >> $config_h
1308 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1311 echo "TARGET_ARCH=ppc64" >> $config_mak
1312 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1313 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1314 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1315 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1316 echo "#define TARGET_PPC 1" >> $config_h
1317 echo "#define TARGET_PPC64 1" >> $config_h
1318 echo "#define TARGET_ABI32 1" >> $config_h
1319 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1322 echo "TARGET_ARCH=sh4" >> $config_mak
1323 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1324 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1325 echo "#define TARGET_SH4 1" >> $config_h
1326 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1330 echo "TARGET_ARCH=sparc" >> $config_mak
1331 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1332 echo "#define TARGET_SPARC 1" >> $config_h
1335 echo "TARGET_ARCH=sparc64" >> $config_mak
1336 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1337 echo "#define TARGET_SPARC 1" >> $config_h
1338 echo "#define TARGET_SPARC64 1" >> $config_h
1342 echo "TARGET_ARCH=sparc64" >> $config_mak
1343 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1344 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1345 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1346 echo "#define TARGET_SPARC 1" >> $config_h
1347 echo "#define TARGET_SPARC64 1" >> $config_h
1348 echo "#define TARGET_ABI32 1" >> $config_h
1351 echo "Unsupported target CPU"
1355 if test "$target_bigendian" = "yes" ; then
1356 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1357 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1359 if test "$target_softmmu" = "yes" ; then
1360 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1361 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1363 if test "$target_user_only" = "yes" ; then
1364 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1365 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1367 if test "$target_linux_user" = "yes" ; then
1368 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1369 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1371 if test "$target_darwin_user" = "yes" ; then
1372 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1373 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1376 if test "$target_cpu" = "arm" \
1377 -o "$target_cpu" = "armeb" \
1378 -o "$target_cpu" = "m68k" \
1379 -o "$target_cpu" = "mips" \
1380 -o "$target_cpu" = "mipsel" \
1381 -o "$target_cpu" = "mipsn32" \
1382 -o "$target_cpu" = "mipsn32el" \
1383 -o "$target_cpu" = "mips64" \
1384 -o "$target_cpu" = "mips64el" \
1385 -o "$target_cpu" = "sparc" \
1386 -o "$target_cpu" = "sparc64" \
1387 -o "$target_cpu" = "sparc32plus"; then
1388 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1389 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1391 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1392 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1393 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1395 if test "$target_user_only" = "yes" \
1396 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1397 echo "#define USE_NPTL 1" >> $config_h
1399 # 32 bit ELF loader in addition to native 64 bit loader?
1400 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1401 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1402 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1405 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1407 done # for target in $targets
1409 # build tree in object directory if source path is different from current one
1410 if test "$source_path_used" = "yes" ; then
1411 DIRS
="tests tests/cris slirp audio"
1412 FILES
="Makefile tests/Makefile"
1413 FILES
="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1414 FILES
="$FILES tests/test-mmap.c"
1415 for dir
in $DIRS ; do
1418 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1419 for f
in $FILES ; do
1421 ln -s $source_path/$f $f
1425 rm -f $TMPO $TMPC $TMPE $TMPS