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
)
99 CFLAGS
="-O2 -mno-cygwin"
107 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
126 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
132 if [ "$bsd" = "yes" ] ; then
133 if [ ! "$darwin" = "yes" ] ; then
139 # XXX: we assume an absolute path is given when launching configure,
140 # except in './configure' case.
141 source_path
=${0%configure}
142 source_path
=${source_path%/}
143 source_path_used
="yes"
144 if test -z "$source_path" -o "$source_path" = "." ; then
146 source_path_used
="no"
151 --help|
-h) show_help
=yes
153 --prefix=*) prefix
=`echo $opt | cut -d '=' -f 2`
155 --interp-prefix=*) interp_prefix
=`echo $opt | cut -d '=' -f 2`
157 --source-path=*) source_path
=`echo $opt | cut -d '=' -f 2`
159 --cross-prefix=*) cross_prefix
=`echo $opt | cut -d '=' -f 2`
161 --cc=*) cc
=`echo $opt | cut -d '=' -f 2`
163 --host-cc=*) host_cc
=`echo $opt | cut -d '=' -f 2`
165 --make=*) make=`echo $opt | cut -d '=' -f 2`
167 --extra-cflags=*) CFLAGS
="${opt#--extra-cflags=}"
169 --extra-ldflags=*) LDFLAGS
="${opt#--extra-ldflags=}"
171 --cpu=*) cpu
=`echo $opt | cut -d '=' -f 2`
173 --target-list=*) target_list
=${opt#--target-list=}
175 --enable-gprof) gprof
="yes"
177 --static) static
="yes"
179 --disable-sdl) sdl
="no"
181 --enable-coreaudio) coreaudio
="yes"
183 --enable-alsa) alsa
="yes"
185 --enable-dsound) dsound
="yes"
187 --enable-fmod) fmod
="yes"
189 --fmod-lib=*) fmod_lib
=${opt#--fmod-lib=}
191 --fmod-inc=*) fmod_inc
=${opt#--fmod-inc=}
193 --enable-mingw32) mingw32
="yes" ; cross_prefix
="i386-mingw32-"
195 --disable-slirp) slirp
="no"
197 --enable-adlib) adlib
="yes"
199 --disable-kqemu) kqemu
="no"
201 --enable-profiler) profiler
="yes"
203 --kernel-path=*) kernel_path
=${opt#--kernel-path=}
205 --enable-cocoa) cocoa
="yes" ; coreaudio
="yes" ; sdl
="no"
207 --disable-gfx-check) check_gfx
="no"
209 --disable-gcc-check) check_gcc
="no"
214 # Checking for CFLAGS
215 if test -z "$CFLAGS"; then
219 cc
="${cross_prefix}${cc}"
220 ar="${cross_prefix}${ar}"
221 strip
="${cross_prefix}${strip}"
223 if test "$mingw32" = "yes" ; then
228 if [ "$cpu" = "i386" ] ; then
233 if test -z "$target_list" ; then
234 # these targets are portable
235 target_list
="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu arm-softmmu"
236 # the following are Linux specific
237 if [ "$linux" = "yes" ] ; then
238 target_list
="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
241 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
244 if test -z "$cross_prefix" ; then
247 # big/little endian test
249 #include <inttypes.h>
250 int main(int argc, char ** argv){
251 volatile uint32_t i=0x01234567;
252 return (*((uint8_t*)(&i))) == 0x67;
256 if $cc -o $TMPE $TMPC 2>/dev
/null
; then
257 $TMPE && bigendian
="yes"
259 echo big
/little
test failed
264 # if cross compiling, cannot launch a program, so make a static guess
265 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
271 # host long bits test
273 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
277 # check gcc options support
283 have_gcc3_options
="no"
284 if $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev
/null
; then
285 have_gcc3_options
="yes"
289 if test "$check_gcc" = "yes" ; then
294 int main(){return 0;}
296 if ! $cc -o $TMPO $TMPC 2>/dev
/null
; then
297 echo "ERROR: \"$cc\" looks like gcc 4.x"
298 echo "QEMU is known to have problems when compiled with gcc 4.x"
299 echo "It is recommended that you use gcc 3.x to build QEMU"
300 echo "To use this compiler anyway, configure with --disable-gcc-check"
305 ##########################################
310 if test -z "$sdl" ; then
312 sdl_config
="sdl-config"
316 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
317 # win32 cross compilation case
318 sdl_config
="i386-mingw32msvc-sdl-config"
324 #undef main /* We don't want SDL to override our main() */
325 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
328 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev
/null
; then
329 _sdlversion
=`$sdl_config --version | sed 's/[^0-9]//g'`
330 if test "$_sdlversion" -lt 121 ; then
336 # static link with sdl ?
337 if test "$sdl" = "yes" ; then
339 `$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa
="yes"
340 sdl_static_libs
=`$sdl_config --static-libs`
341 if [ "$aa" = "yes" ] ; then
342 sdl_static_libs
="$sdl_static_libs `aalib-config --static-libs`"
345 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev
/null
; then
351 fi # sdl compile test
353 fi # cross compilation
356 if test x
"$show_help" = x
"yes" ; then
359 Usage: configure [options]
360 Options: [defaults in brackets after descriptions]
363 echo "Standard options:"
364 echo " --help print this message"
365 echo " --prefix=PREFIX install in PREFIX [$prefix]"
366 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
367 echo " use %M for cpu name [$interp_prefix]"
368 echo " --target-list=LIST set target list [$target_list]"
370 echo "kqemu kernel acceleration support:"
371 echo " --disable-kqemu disable kqemu support"
372 echo " --kernel-path=PATH set the kernel path (configure probes it)"
374 echo "Advanced options (experts only):"
375 echo " --source-path=PATH path of source code [$source_path]"
376 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
377 echo " --cc=CC use C compiler CC [$cc]"
378 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
379 echo " --make=MAKE use specified make [$make]"
380 echo " --static enable static build [$static]"
381 echo " --enable-cocoa enable COCOA (Mac OS X only)"
382 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
383 echo " --enable-adlib enable Adlib emulation"
384 echo " --enable-coreaudio enable Coreaudio audio driver"
385 echo " --enable-alsa enable ALSA audio driver"
386 echo " --enable-fmod enable FMOD audio driver"
387 echo " --enabled-dsound enable DirectSound audio driver"
388 echo " --fmod-lib path to FMOD library"
389 echo " --fmod-inc path to FMOD includes"
391 echo "NOTE: The object files are build at the place where configure is launched"
395 if test "$mingw32" = "yes" ; then
396 if test -z "$prefix" ; then
397 prefix
="/c/Program Files/Qemu"
404 if test -z "$prefix" ; then
407 mandir
="$prefix/share/man"
408 datadir
="$prefix/share/qemu"
409 docdir
="$prefix/share/doc/qemu"
413 echo "Install prefix $prefix"
414 echo "BIOS directory $datadir"
415 echo "binary directory $bindir"
416 if test "$mingw32" = "no" ; then
417 echo "Manual directory $mandir"
418 echo "ELF interp prefix $interp_prefix"
420 echo "Source path $source_path"
421 echo "C compiler $cc"
422 echo "Host C compiler $host_cc"
425 echo "host big endian $bigendian"
426 echo "target list $target_list"
427 echo "gprof enabled $gprof"
428 echo "profiler $profiler"
429 echo "static build $static"
430 if test "$darwin" = "yes" ; then
431 echo "Cocoa support $cocoa"
433 echo "SDL support $sdl"
434 if test "$sdl" != "no" ; then
435 echo "SDL static link $sdl_static"
437 echo "mingw32 support $mingw32"
438 echo "Adlib support $adlib"
439 echo "CoreAudio support $coreaudio"
440 echo "ALSA support $alsa"
441 echo "DSound support $dsound"
442 echo -n "FMOD support $fmod"
443 if test "$fmod" = "yes"; then
444 if test -z $fmod_lib ||
test -z $fmod_inc; then
446 echo "Error: You must specify path to FMOD library and headers"
447 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
451 echo -n " (lib='$fmod_lib' include='$fmod_inc')"
454 echo "kqemu support $kqemu"
456 if test $sdl_too_old = "yes"; then
457 echo "-> Your SDL version is too old - please upgrade to have SDL support"
459 #if test "$sdl_static" = "no"; then
460 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
463 config_mak
="config-host.mak"
464 config_h
="config-host.h"
466 #echo "Creating $config_mak and $config_h"
468 echo "# Automatically generated by configure - do not modify" > $config_mak
469 echo "/* Automatically generated by configure - do not modify */" > $config_h
471 echo "prefix=$prefix" >> $config_mak
472 echo "bindir=$bindir" >> $config_mak
473 echo "mandir=$mandir" >> $config_mak
474 echo "datadir=$datadir" >> $config_mak
475 echo "docdir=$docdir" >> $config_mak
476 echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
477 echo "MAKE=$make" >> $config_mak
478 echo "CC=$cc" >> $config_mak
479 if test "$have_gcc3_options" = "yes" ; then
480 echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
482 echo "HOST_CC=$host_cc" >> $config_mak
483 echo "AR=$ar" >> $config_mak
484 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
485 echo "CFLAGS=$CFLAGS" >> $config_mak
486 echo "LDFLAGS=$LDFLAGS" >> $config_mak
487 echo "EXESUF=$EXESUF" >> $config_mak
488 if test "$cpu" = "i386" ; then
489 echo "ARCH=i386" >> $config_mak
490 echo "#define HOST_I386 1" >> $config_h
491 elif test "$cpu" = "x86_64" ; then
492 echo "ARCH=x86_64" >> $config_mak
493 echo "#define HOST_X86_64 1" >> $config_h
494 elif test "$cpu" = "armv4b" ; then
495 echo "ARCH=arm" >> $config_mak
496 echo "#define HOST_ARM 1" >> $config_h
497 elif test "$cpu" = "armv4l" ; then
498 echo "ARCH=arm" >> $config_mak
499 echo "#define HOST_ARM 1" >> $config_h
500 elif test "$cpu" = "powerpc" ; then
501 echo "ARCH=ppc" >> $config_mak
502 echo "#define HOST_PPC 1" >> $config_h
503 elif test "$cpu" = "mips" ; then
504 echo "ARCH=mips" >> $config_mak
505 echo "#define HOST_MIPS 1" >> $config_h
506 elif test "$cpu" = "s390" ; then
507 echo "ARCH=s390" >> $config_mak
508 echo "#define HOST_S390 1" >> $config_h
509 elif test "$cpu" = "alpha" ; then
510 echo "ARCH=alpha" >> $config_mak
511 echo "#define HOST_ALPHA 1" >> $config_h
512 elif test "$cpu" = "sparc" ; then
513 echo "ARCH=sparc" >> $config_mak
514 echo "#define HOST_SPARC 1" >> $config_h
515 elif test "$cpu" = "sparc64" ; then
516 echo "ARCH=sparc64" >> $config_mak
517 echo "#define HOST_SPARC64 1" >> $config_h
518 elif test "$cpu" = "ia64" ; then
519 echo "ARCH=ia64" >> $config_mak
520 echo "#define HOST_IA64 1" >> $config_h
521 elif test "$cpu" = "m68k" ; then
522 echo "ARCH=m68k" >> $config_mak
523 echo "#define HOST_M68K 1" >> $config_h
525 echo "Unsupported CPU"
528 if test "$bigendian" = "yes" ; then
529 echo "WORDS_BIGENDIAN=yes" >> $config_mak
530 echo "#define WORDS_BIGENDIAN 1" >> $config_h
532 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
533 if test "$mingw32" = "yes" ; then
534 echo "CONFIG_WIN32=yes" >> $config_mak
535 echo "#define CONFIG_WIN32 1" >> $config_h
536 elif test -f "/usr/include/byteswap.h" ; then
537 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
539 if test "$darwin" = "yes" ; then
540 echo "CONFIG_DARWIN=yes" >> $config_mak
541 echo "#define CONFIG_DARWIN 1" >> $config_h
543 if test "$gdbstub" = "yes" ; then
544 echo "CONFIG_GDBSTUB=yes" >> $config_mak
545 echo "#define CONFIG_GDBSTUB 1" >> $config_h
547 if test "$gprof" = "yes" ; then
548 echo "TARGET_GPROF=yes" >> $config_mak
549 echo "#define HAVE_GPROF 1" >> $config_h
551 if test "$static" = "yes" ; then
552 echo "CONFIG_STATIC=yes" >> $config_mak
553 echo "#define CONFIG_STATIC 1" >> $config_h
555 if test $profiler = "yes" ; then
556 echo "#define CONFIG_PROFILER 1" >> $config_h
558 if test "$slirp" = "yes" ; then
559 echo "CONFIG_SLIRP=yes" >> $config_mak
560 echo "#define CONFIG_SLIRP 1" >> $config_h
562 if test "$adlib" = "yes" ; then
563 echo "CONFIG_ADLIB=yes" >> $config_mak
564 echo "#define CONFIG_ADLIB 1" >> $config_h
566 if test "$oss" = "yes" ; then
567 echo "CONFIG_OSS=yes" >> $config_mak
568 echo "#define CONFIG_OSS 1" >> $config_h
570 if test "$coreaudio" = "yes" ; then
571 echo "CONFIG_COREAUDIO=yes" >> $config_mak
572 echo "#define CONFIG_COREAUDIO 1" >> $config_h
574 if test "$alsa" = "yes" ; then
575 echo "CONFIG_ALSA=yes" >> $config_mak
576 echo "#define CONFIG_ALSA 1" >> $config_h
578 if test "$dsound" = "yes" ; then
579 echo "CONFIG_DSOUND=yes" >> $config_mak
580 echo "#define CONFIG_DSOUND 1" >> $config_h
582 if test "$fmod" = "yes" ; then
583 echo "CONFIG_FMOD=yes" >> $config_mak
584 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
585 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
586 echo "#define CONFIG_FMOD 1" >> $config_h
588 echo -n "VERSION=" >>$config_mak
589 head $source_path/VERSION
>>$config_mak
590 echo "" >>$config_mak
591 echo -n "#define QEMU_VERSION \"" >> $config_h
592 head $source_path/VERSION
>> $config_h
593 echo "\"" >> $config_h
595 echo "SRC_PATH=$source_path" >> $config_mak
596 echo "TARGET_DIRS=$target_list" >> $config_mak
599 if [ "$bsd" = "yes" ] ; then
600 echo "#define O_LARGEFILE 0" >> $config_h
601 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
602 echo "#define _BSD 1" >> $config_h
605 for target
in $target_list; do
608 config_mak
=$target_dir/config.mak
609 config_h
=$target_dir/config.h
610 target_cpu
=`echo $target | cut -d '-' -f 1`
611 target_bigendian
="no"
612 [ "$target_cpu" = "armeb" ] && target_bigendian
=yes
613 [ "$target_cpu" = "sparc" ] && target_bigendian
=yes
614 [ "$target_cpu" = "sparc64" ] && target_bigendian
=yes
615 [ "$target_cpu" = "ppc" ] && target_bigendian
=yes
616 [ "$target_cpu" = "ppc64" ] && target_bigendian
=yes
617 [ "$target_cpu" = "mips" ] && target_bigendian
=yes
619 if expr $target : '.*-softmmu' > /dev
/null
; then
622 target_user_only
="no"
623 if expr $target : '.*-user' > /dev
/null
; then
624 target_user_only
="yes"
627 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
628 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
629 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
630 echo "To build QEMU with graphical output configure with --disable-gfx-check"
631 echo "Note that this will disable all output from the virtual graphics card."
635 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
638 mkdir
-p $target_dir/fpu
639 if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
640 mkdir
-p $target_dir/nwfpe
642 if test "$target_user_only" = "no" ; then
643 mkdir
-p $target_dir/slirp
646 ln -sf $source_path/Makefile.target
$target_dir/Makefile
648 echo "# Automatically generated by configure - do not modify" > $config_mak
649 echo "/* Automatically generated by configure - do not modify */" > $config_h
652 echo "include ../config-host.mak" >> $config_mak
653 echo "#include \"../config-host.h\"" >> $config_h
655 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
656 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
658 if test "$target_cpu" = "i386" ; then
659 echo "TARGET_ARCH=i386" >> $config_mak
660 echo "#define TARGET_ARCH \"i386\"" >> $config_h
661 echo "#define TARGET_I386 1" >> $config_h
662 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
663 echo "#define USE_KQEMU 1" >> $config_h
665 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
666 echo "TARGET_ARCH=arm" >> $config_mak
667 echo "#define TARGET_ARCH \"arm\"" >> $config_h
668 echo "#define TARGET_ARM 1" >> $config_h
669 elif test "$target_cpu" = "sparc" ; then
670 echo "TARGET_ARCH=sparc" >> $config_mak
671 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
672 echo "#define TARGET_SPARC 1" >> $config_h
673 elif test "$target_cpu" = "sparc64" ; then
674 echo "TARGET_ARCH=sparc64" >> $config_mak
675 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
676 echo "#define TARGET_SPARC 1" >> $config_h
677 echo "#define TARGET_SPARC64 1" >> $config_h
678 elif test "$target_cpu" = "ppc" ; then
679 echo "TARGET_ARCH=ppc" >> $config_mak
680 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
681 echo "#define TARGET_PPC 1" >> $config_h
682 elif test "$target_cpu" = "ppc64" ; then
683 echo "TARGET_ARCH=ppc64" >> $config_mak
684 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
685 echo "#define TARGET_PPC 1" >> $config_h
686 echo "#define TARGET_PPC64 1" >> $config_h
687 elif test "$target_cpu" = "x86_64" ; then
688 echo "TARGET_ARCH=x86_64" >> $config_mak
689 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
690 echo "#define TARGET_I386 1" >> $config_h
691 echo "#define TARGET_X86_64 1" >> $config_h
692 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
693 echo "#define USE_KQEMU 1" >> $config_h
694 if test $kqemu_profile = "yes" ; then
695 echo "#define CONFIG_KQEMU_PROFILE 1" >> $config_h
698 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
699 echo "TARGET_ARCH=mips" >> $config_mak
700 echo "#define TARGET_ARCH \"mips\"" >> $config_h
701 echo "#define TARGET_MIPS 1" >> $config_h
703 echo "Unsupported target CPU"
706 if test "$target_bigendian" = "yes" ; then
707 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
708 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
710 if test "$target_softmmu" = "yes" ; then
711 echo "CONFIG_SOFTMMU=yes" >> $config_mak
712 echo "#define CONFIG_SOFTMMU 1" >> $config_h
714 if test "$target_user_only" = "yes" ; then
715 echo "CONFIG_USER_ONLY=yes" >> $config_mak
716 echo "#define CONFIG_USER_ONLY 1" >> $config_h
719 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
720 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
721 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
725 if test "$target_user_only" = "no"; then
726 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
731 if test "$sdl1" = "yes" ; then
732 echo "#define CONFIG_SDL 1" >> $config_h
733 echo "CONFIG_SDL=yes" >> $config_mak
734 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
735 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
737 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
739 echo -n "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
740 if [ "${aa}" = "yes" ] ; then
741 echo -n " `aalib-config --cflags`" >> $config_mak ;
743 echo "" >> $config_mak
747 if test "$cocoa" = "yes" ; then
748 echo "#define CONFIG_COCOA 1" >> $config_h
749 echo "CONFIG_COCOA=yes" >> $config_mak
752 done # for target in $targets
754 # build tree in object directory if source path is different from current one
755 if test "$source_path_used" = "yes" ; then
757 FILES
="Makefile tests/Makefile"
758 for dir
in $DIRS ; do
762 ln -sf $source_path/$f $f
766 rm -f $TMPO $TMPC $TMPE $TMPS