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"
32 i386|i486|i586|i686|i86pc|BePC)
44 "Power Macintosh"|ppc|ppc64)
102 CFLAGS="-O2 -mno-cygwin"
110 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
130 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
136 if [ "$bsd" = "yes" ] ; then
137 if [ "$darwin" != "yes" ] ; then
143 source_path=`dirname "$0"`
144 if [ -z "$source_path" ]; then
147 source_path=`cd "$source_path"; pwd`
149 if test "$source_path" = `pwd` ; then
150 source_path_used="no"
152 source_path_used="yes"
156 optarg=`expr "$opt" : '[^=]*=\(.*\)'`
158 --help|-h) show_help=yes
160 --prefix=*) prefix="$optarg"
162 --interp-prefix=*) interp_prefix="$optarg"
164 --source-path=*) source_path="$optarg"
165 source_path_used="yes"
167 --cross-prefix=*) cross_prefix="$optarg"
171 --host-cc=*) host_cc="$optarg"
173 --make=*) make="$optarg"
175 --extra-cflags=*) CFLAGS="$optarg"
177 --extra-ldflags=*) LDFLAGS="$optarg"
179 --cpu=*) cpu="$optarg"
181 --target-list=*) target_list="$optarg"
183 --enable-gprof) gprof="yes"
185 --static) static="yes"
187 --disable-sdl) sdl="no"
189 --enable-coreaudio) coreaudio="yes"
191 --enable-alsa) alsa="yes"
193 --enable-dsound) dsound="yes"
195 --enable-fmod) fmod="yes"
197 --fmod-lib=*) fmod_lib="$optarg"
199 --fmod-inc=*) fmod_inc="$optarg"
201 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
203 --disable-slirp) slirp="no"
205 --enable-adlib) adlib="yes"
207 --disable-kqemu) kqemu="no"
209 --enable-profiler) profiler="yes"
211 --kernel-path=*) kernel_path="$optarg"
213 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
215 --disable-gfx-check) check_gfx="no"
217 --disable-gcc-check) check_gcc="no"
219 --disable-system) softmmu="no"
221 --enable-system) softmmu="yes"
223 --disable-user) user="no"
225 --enable-user) user="yes"
230 # Checking for CFLAGS
231 if test -z "$CFLAGS"; then
235 if test x"$show_help" = x"yes" ; then
238 Usage: configure [options]
239 Options: [defaults in brackets after descriptions]
242 echo "Standard options:"
243 echo " --help print this message"
244 echo " --prefix=PREFIX install in PREFIX [$prefix]"
245 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
246 echo " use %M for cpu name [$interp_prefix]"
247 echo " --target-list=LIST set target list [$target_list]"
249 echo "kqemu kernel acceleration support:"
250 echo " --disable-kqemu disable kqemu support"
251 echo " --kernel-path=PATH set the kernel path (configure probes it)"
253 echo "Advanced options (experts only):"
254 echo " --source-path=PATH path of source code [$source_path]"
255 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
256 echo " --cc=CC use C compiler CC [$cc]"
257 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
258 echo " --make=MAKE use specified make [$make]"
259 echo " --static enable static build [$static]"
260 echo " --enable-cocoa enable COCOA (Mac OS X only)"
261 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
262 echo " --enable-adlib enable Adlib emulation"
263 echo " --enable-coreaudio enable Coreaudio audio driver"
264 echo " --enable-alsa enable ALSA audio driver"
265 echo " --enable-fmod enable FMOD audio driver"
266 echo " --enabled-dsound enable DirectSound audio driver"
267 echo " --enable-system enable all system emulation targets"
268 echo " --disable-system disable all system emulation targets"
269 echo " --enable-user enable all linux usermode emulation targets"
270 echo " --disable-user disable all linux usermode emulation targets"
271 echo " --fmod-lib path to FMOD library"
272 echo " --fmod-inc path to FMOD includes"
274 echo "NOTE: The object files are build at the place where configure is launched"
278 cc="${cross_prefix}${cc}"
279 ar="${cross_prefix}${ar}"
280 strip="${cross_prefix}${strip}"
282 if test "$mingw32" = "yes" ; then
287 if [ "$cpu" = "i386" ] ; then
292 if test -z "$target_list" ; then
293 # these targets are portable
294 if [ "$softmmu" = "yes" ] ; then
295 target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu"
297 # the following are Linux specific
298 if [ "$user" = "yes" ] ; then
299 target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
302 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
304 if test -z "$target_list" ; then
305 echo "No targets enabled"
309 if test -z "$cross_prefix" ; then
312 # big/little endian test
314 #include <inttypes.h>
315 int main(int argc, char ** argv){
316 volatile uint32_t i=0x01234567;
317 return (*((uint8_t*)(&i))) == 0x67;
321 if $cc -o $TMPE $TMPC 2>/dev/null ; then
322 $TMPE && bigendian="yes"
324 echo big/little test failed
329 # if cross compiling, cannot launch a program, so make a static guess
330 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
336 # host long bits test
338 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
342 # check gcc options support
348 have_gcc3_options="no"
349 if $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
350 have_gcc3_options="yes"
353 # Check for gcc4, error if pre-gcc4
354 if test "$check_gcc" = "yes" ; then
359 int main(){return 0;}
361 if $cc -o $TMPO $TMPC 2>/dev/null ; then
362 echo "ERROR: \"$cc\" looks like gcc 4.x"
363 echo "QEMU is known to have problems when compiled with gcc 4.x"
364 echo "It is recommended that you use gcc 3.x to build QEMU"
365 echo "To use this compiler anyway, configure with --disable-gcc-check"
370 ##########################################
375 if test -z "$sdl" ; then
377 sdl_config="sdl-config"
381 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
382 # win32 cross compilation case
383 sdl_config="i386-mingw32msvc-sdl-config"
389 #undef main /* We don't want SDL to override our main() */
390 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
393 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
394 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
395 if test "$_sdlversion" -lt 121 ; then
401 # static link with sdl ?
402 if test "$sdl" = "yes" ; then
404 `$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
405 sdl_static_libs=`$sdl_config --static-libs`
406 if [ "$aa" = "yes" ] ; then
407 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
410 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
416 fi # sdl compile test
418 fi # cross compilation
421 if test "$mingw32" = "yes" ; then
422 if test -z "$prefix" ; then
423 prefix="/c/Program Files/Qemu"
430 if test -z "$prefix" ; then
433 mandir="$prefix/share/man"
434 datadir="$prefix/share/qemu"
435 docdir="$prefix/share/doc/qemu"
439 echo "Install prefix $prefix"
440 echo "BIOS directory $datadir"
441 echo "binary directory $bindir"
442 if test "$mingw32" = "no" ; then
443 echo "Manual directory $mandir"
444 echo "ELF interp prefix $interp_prefix"
446 echo "Source path $source_path"
447 echo "C compiler $cc"
448 echo "Host C compiler $host_cc"
451 echo "host big endian $bigendian"
452 echo "target list $target_list"
453 echo "gprof enabled $gprof"
454 echo "profiler $profiler"
455 echo "static build $static"
456 if test "$darwin" = "yes" ; then
457 echo "Cocoa support $cocoa"
459 echo "SDL support $sdl"
460 if test "$sdl" != "no" ; then
461 echo "SDL static link $sdl_static"
463 echo "mingw32 support $mingw32"
464 echo "Adlib support $adlib"
465 echo "CoreAudio support $coreaudio"
466 echo "ALSA support $alsa"
467 echo "DSound support $dsound"
468 if test "$fmod" = "yes"; then
469 if test -z $fmod_lib || test -z $fmod_inc; then
471 echo "Error: You must specify path to FMOD library and headers"
472 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
476 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
480 echo "FMOD support $fmod $fmod_support"
481 echo "kqemu support $kqemu"
483 if test $sdl_too_old = "yes"; then
484 echo "-> Your SDL version is too old - please upgrade to have SDL support"
486 #if test "$sdl_static" = "no"; then
487 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
489 config_mak="config-host.mak"
490 config_h="config-host.h"
492 #echo "Creating $config_mak and $config_h"
494 echo "# Automatically generated by configure - do not modify" > $config_mak
495 echo "# Configured with: $0 $@" >> $config_mak
496 echo "/* Automatically generated by configure - do not modify */" > $config_h
498 echo "prefix=$prefix" >> $config_mak
499 echo "bindir=$bindir" >> $config_mak
500 echo "mandir=$mandir" >> $config_mak
501 echo "datadir=$datadir" >> $config_mak
502 echo "docdir=$docdir" >> $config_mak
503 echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
504 echo "MAKE=$make" >> $config_mak
505 echo "CC=$cc" >> $config_mak
506 if test "$have_gcc3_options" = "yes" ; then
507 echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
509 echo "HOST_CC=$host_cc" >> $config_mak
510 echo "AR=$ar" >> $config_mak
511 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
512 echo "CFLAGS=$CFLAGS" >> $config_mak
513 echo "LDFLAGS=$LDFLAGS" >> $config_mak
514 echo "EXESUF=$EXESUF" >> $config_mak
515 if test "$cpu" = "i386" ; then
516 echo "ARCH=i386" >> $config_mak
517 echo "#define HOST_I386 1" >> $config_h
518 elif test "$cpu" = "x86_64" ; then
519 echo "ARCH=x86_64" >> $config_mak
520 echo "#define HOST_X86_64 1" >> $config_h
521 elif test "$cpu" = "armv4b" ; then
522 echo "ARCH=arm" >> $config_mak
523 echo "#define HOST_ARM 1" >> $config_h
524 elif test "$cpu" = "armv4l" ; then
525 echo "ARCH=arm" >> $config_mak
526 echo "#define HOST_ARM 1" >> $config_h
527 elif test "$cpu" = "powerpc" ; then
528 echo "ARCH=ppc" >> $config_mak
529 echo "#define HOST_PPC 1" >> $config_h
530 elif test "$cpu" = "mips" ; then
531 echo "ARCH=mips" >> $config_mak
532 echo "#define HOST_MIPS 1" >> $config_h
533 elif test "$cpu" = "s390" ; then
534 echo "ARCH=s390" >> $config_mak
535 echo "#define HOST_S390 1" >> $config_h
536 elif test "$cpu" = "alpha" ; then
537 echo "ARCH=alpha" >> $config_mak
538 echo "#define HOST_ALPHA 1" >> $config_h
539 elif test "$cpu" = "sparc" ; then
540 echo "ARCH=sparc" >> $config_mak
541 echo "#define HOST_SPARC 1" >> $config_h
542 elif test "$cpu" = "sparc64" ; then
543 echo "ARCH=sparc64" >> $config_mak
544 echo "#define HOST_SPARC64 1" >> $config_h
545 elif test "$cpu" = "ia64" ; then
546 echo "ARCH=ia64" >> $config_mak
547 echo "#define HOST_IA64 1" >> $config_h
548 elif test "$cpu" = "m68k" ; then
549 echo "ARCH=m68k" >> $config_mak
550 echo "#define HOST_M68K 1" >> $config_h
552 echo "Unsupported CPU"
555 if test "$bigendian" = "yes" ; then
556 echo "WORDS_BIGENDIAN=yes" >> $config_mak
557 echo "#define WORDS_BIGENDIAN 1" >> $config_h
559 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
560 if test "$mingw32" = "yes" ; then
561 echo "CONFIG_WIN32=yes" >> $config_mak
562 echo "#define CONFIG_WIN32 1" >> $config_h
563 elif test -f "/usr/include/byteswap.h" ; then
564 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
566 if test "$darwin" = "yes" ; then
567 echo "CONFIG_DARWIN=yes" >> $config_mak
568 echo "#define CONFIG_DARWIN 1" >> $config_h
570 if test "$gdbstub" = "yes" ; then
571 echo "CONFIG_GDBSTUB=yes" >> $config_mak
572 echo "#define CONFIG_GDBSTUB 1" >> $config_h
574 if test "$gprof" = "yes" ; then
575 echo "TARGET_GPROF=yes" >> $config_mak
576 echo "#define HAVE_GPROF 1" >> $config_h
578 if test "$static" = "yes" ; then
579 echo "CONFIG_STATIC=yes" >> $config_mak
580 echo "#define CONFIG_STATIC 1" >> $config_h
582 if test $profiler = "yes" ; then
583 echo "#define CONFIG_PROFILER 1" >> $config_h
585 if test "$slirp" = "yes" ; then
586 echo "CONFIG_SLIRP=yes" >> $config_mak
587 echo "#define CONFIG_SLIRP 1" >> $config_h
589 if test "$adlib" = "yes" ; then
590 echo "CONFIG_ADLIB=yes" >> $config_mak
591 echo "#define CONFIG_ADLIB 1" >> $config_h
593 if test "$oss" = "yes" ; then
594 echo "CONFIG_OSS=yes" >> $config_mak
595 echo "#define CONFIG_OSS 1" >> $config_h
597 if test "$coreaudio" = "yes" ; then
598 echo "CONFIG_COREAUDIO=yes" >> $config_mak
599 echo "#define CONFIG_COREAUDIO 1" >> $config_h
601 if test "$alsa" = "yes" ; then
602 echo "CONFIG_ALSA=yes" >> $config_mak
603 echo "#define CONFIG_ALSA 1" >> $config_h
605 if test "$dsound" = "yes" ; then
606 echo "CONFIG_DSOUND=yes" >> $config_mak
607 echo "#define CONFIG_DSOUND 1" >> $config_h
609 if test "$fmod" = "yes" ; then
610 echo "CONFIG_FMOD=yes" >> $config_mak
611 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
612 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
613 echo "#define CONFIG_FMOD 1" >> $config_h
615 qemu_version=`head $source_path/VERSION`
616 echo "VERSION=$qemu_version" >>$config_mak
617 echo "#define QEMU_VERSION $qemu_version" >> $config_h
619 echo "SRC_PATH=$source_path" >> $config_mak
620 if [ "$source_path_used" = "yes" ]; then
621 echo "VPATH=$source_path" >> $config_mak
623 echo "TARGET_DIRS=$target_list" >> $config_mak
626 if [ "$bsd" = "yes" ] ; then
627 echo "#define O_LARGEFILE 0" >> $config_h
628 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
629 echo "#define _BSD 1" >> $config_h
632 for target in $target_list; do
634 config_mak=$target_dir/config.mak
635 config_h=$target_dir/config.h
636 target_cpu=`echo $target | cut -d '-' -f 1`
637 target_bigendian="no"
638 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
639 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
640 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
641 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
642 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
643 [ "$target_cpu" = "mips" ] && target_bigendian=yes
645 if expr $target : '.*-softmmu' > /dev/null ; then
648 target_user_only="no"
649 if expr $target : '.*-user' > /dev/null ; then
650 target_user_only="yes"
653 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
654 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
655 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
656 echo "To build QEMU with graphical output configure with --disable-gfx-check"
657 echo "Note that this will disable all output from the virtual graphics card."
661 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
664 mkdir -p $target_dir/fpu
665 if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
666 mkdir -p $target_dir/nwfpe
668 if test "$target_user_only" = "no" ; then
669 mkdir -p $target_dir/slirp
672 ln -sf $source_path/Makefile.target $target_dir/Makefile
674 echo "# Automatically generated by configure - do not modify" > $config_mak
675 echo "/* Automatically generated by configure - do not modify */" > $config_h
678 echo "include ../config-host.mak" >> $config_mak
679 echo "#include \"../config-host.h\"" >> $config_h
681 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
682 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
684 if test "$target_cpu" = "i386" ; then
685 echo "TARGET_ARCH=i386" >> $config_mak
686 echo "#define TARGET_ARCH \"i386\"" >> $config_h
687 echo "#define TARGET_I386 1" >> $config_h
688 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
689 echo "#define USE_KQEMU 1" >> $config_h
691 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
692 echo "TARGET_ARCH=arm" >> $config_mak
693 echo "#define TARGET_ARCH \"arm\"" >> $config_h
694 echo "#define TARGET_ARM 1" >> $config_h
695 elif test "$target_cpu" = "sparc" ; then
696 echo "TARGET_ARCH=sparc" >> $config_mak
697 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
698 echo "#define TARGET_SPARC 1" >> $config_h
699 elif test "$target_cpu" = "sparc64" ; then
700 echo "TARGET_ARCH=sparc64" >> $config_mak
701 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
702 echo "#define TARGET_SPARC 1" >> $config_h
703 echo "#define TARGET_SPARC64 1" >> $config_h
704 elif test "$target_cpu" = "ppc" ; then
705 echo "TARGET_ARCH=ppc" >> $config_mak
706 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
707 echo "#define TARGET_PPC 1" >> $config_h
708 elif test "$target_cpu" = "ppc64" ; then
709 echo "TARGET_ARCH=ppc64" >> $config_mak
710 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
711 echo "#define TARGET_PPC 1" >> $config_h
712 echo "#define TARGET_PPC64 1" >> $config_h
713 elif test "$target_cpu" = "x86_64" ; then
714 echo "TARGET_ARCH=x86_64" >> $config_mak
715 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
716 echo "#define TARGET_I386 1" >> $config_h
717 echo "#define TARGET_X86_64 1" >> $config_h
718 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
719 echo "#define USE_KQEMU 1" >> $config_h
721 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
722 echo "TARGET_ARCH=mips" >> $config_mak
723 echo "#define TARGET_ARCH \"mips\"" >> $config_h
724 echo "#define TARGET_MIPS 1" >> $config_h
726 echo "Unsupported target CPU"
729 if test "$target_bigendian" = "yes" ; then
730 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
731 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
733 if test "$target_softmmu" = "yes" ; then
734 echo "CONFIG_SOFTMMU=yes" >> $config_mak
735 echo "#define CONFIG_SOFTMMU 1" >> $config_h
737 if test "$target_user_only" = "yes" ; then
738 echo "CONFIG_USER_ONLY=yes" >> $config_mak
739 echo "#define CONFIG_USER_ONLY 1" >> $config_h
742 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
743 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
744 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
748 if test "$target_user_only" = "no"; then
749 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
754 if test "$sdl1" = "yes" ; then
755 echo "#define CONFIG_SDL 1" >> $config_h
756 echo "CONFIG_SDL=yes" >> $config_mak
757 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
758 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
760 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
762 if [ "${aa}" = "yes" ] ; then
763 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
765 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
770 if test "$cocoa" = "yes" ; then
771 echo "#define CONFIG_COCOA 1" >> $config_h
772 echo "CONFIG_COCOA=yes" >> $config_mak
775 done # for target in $targets
777 # build tree in object directory if source path is different from current one
778 if test "$source_path_used" = "yes" ; then
780 FILES="Makefile tests/Makefile"
781 for dir in $DIRS ; do
785 ln -sf $source_path/$f $f
789 rm -f $TMPO $TMPC $TMPE $TMPS