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 "# Configured with: $0 $@" >> $config_mak
470 echo "/* Automatically generated by configure - do not modify */" > $config_h
472 echo "prefix=$prefix" >> $config_mak
473 echo "bindir=$bindir" >> $config_mak
474 echo "mandir=$mandir" >> $config_mak
475 echo "datadir=$datadir" >> $config_mak
476 echo "docdir=$docdir" >> $config_mak
477 echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
478 echo "MAKE=$make" >> $config_mak
479 echo "CC=$cc" >> $config_mak
480 if test "$have_gcc3_options" = "yes" ; then
481 echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
483 echo "HOST_CC=$host_cc" >> $config_mak
484 echo "AR=$ar" >> $config_mak
485 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
486 echo "CFLAGS=$CFLAGS" >> $config_mak
487 echo "LDFLAGS=$LDFLAGS" >> $config_mak
488 echo "EXESUF=$EXESUF" >> $config_mak
489 if test "$cpu" = "i386" ; then
490 echo "ARCH=i386" >> $config_mak
491 echo "#define HOST_I386 1" >> $config_h
492 elif test "$cpu" = "x86_64" ; then
493 echo "ARCH=x86_64" >> $config_mak
494 echo "#define HOST_X86_64 1" >> $config_h
495 elif test "$cpu" = "armv4b" ; then
496 echo "ARCH=arm" >> $config_mak
497 echo "#define HOST_ARM 1" >> $config_h
498 elif test "$cpu" = "armv4l" ; then
499 echo "ARCH=arm" >> $config_mak
500 echo "#define HOST_ARM 1" >> $config_h
501 elif test "$cpu" = "powerpc" ; then
502 echo "ARCH=ppc" >> $config_mak
503 echo "#define HOST_PPC 1" >> $config_h
504 elif test "$cpu" = "mips" ; then
505 echo "ARCH=mips" >> $config_mak
506 echo "#define HOST_MIPS 1" >> $config_h
507 elif test "$cpu" = "s390" ; then
508 echo "ARCH=s390" >> $config_mak
509 echo "#define HOST_S390 1" >> $config_h
510 elif test "$cpu" = "alpha" ; then
511 echo "ARCH=alpha" >> $config_mak
512 echo "#define HOST_ALPHA 1" >> $config_h
513 elif test "$cpu" = "sparc" ; then
514 echo "ARCH=sparc" >> $config_mak
515 echo "#define HOST_SPARC 1" >> $config_h
516 elif test "$cpu" = "sparc64" ; then
517 echo "ARCH=sparc64" >> $config_mak
518 echo "#define HOST_SPARC64 1" >> $config_h
519 elif test "$cpu" = "ia64" ; then
520 echo "ARCH=ia64" >> $config_mak
521 echo "#define HOST_IA64 1" >> $config_h
522 elif test "$cpu" = "m68k" ; then
523 echo "ARCH=m68k" >> $config_mak
524 echo "#define HOST_M68K 1" >> $config_h
526 echo "Unsupported CPU"
529 if test "$bigendian" = "yes" ; then
530 echo "WORDS_BIGENDIAN=yes" >> $config_mak
531 echo "#define WORDS_BIGENDIAN 1" >> $config_h
533 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
534 if test "$mingw32" = "yes" ; then
535 echo "CONFIG_WIN32=yes" >> $config_mak
536 echo "#define CONFIG_WIN32 1" >> $config_h
537 elif test -f "/usr/include/byteswap.h" ; then
538 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
540 if test "$darwin" = "yes" ; then
541 echo "CONFIG_DARWIN=yes" >> $config_mak
542 echo "#define CONFIG_DARWIN 1" >> $config_h
544 if test "$gdbstub" = "yes" ; then
545 echo "CONFIG_GDBSTUB=yes" >> $config_mak
546 echo "#define CONFIG_GDBSTUB 1" >> $config_h
548 if test "$gprof" = "yes" ; then
549 echo "TARGET_GPROF=yes" >> $config_mak
550 echo "#define HAVE_GPROF 1" >> $config_h
552 if test "$static" = "yes" ; then
553 echo "CONFIG_STATIC=yes" >> $config_mak
554 echo "#define CONFIG_STATIC 1" >> $config_h
556 if test $profiler = "yes" ; then
557 echo "#define CONFIG_PROFILER 1" >> $config_h
559 if test "$slirp" = "yes" ; then
560 echo "CONFIG_SLIRP=yes" >> $config_mak
561 echo "#define CONFIG_SLIRP 1" >> $config_h
563 if test "$adlib" = "yes" ; then
564 echo "CONFIG_ADLIB=yes" >> $config_mak
565 echo "#define CONFIG_ADLIB 1" >> $config_h
567 if test "$oss" = "yes" ; then
568 echo "CONFIG_OSS=yes" >> $config_mak
569 echo "#define CONFIG_OSS 1" >> $config_h
571 if test "$coreaudio" = "yes" ; then
572 echo "CONFIG_COREAUDIO=yes" >> $config_mak
573 echo "#define CONFIG_COREAUDIO 1" >> $config_h
575 if test "$alsa" = "yes" ; then
576 echo "CONFIG_ALSA=yes" >> $config_mak
577 echo "#define CONFIG_ALSA 1" >> $config_h
579 if test "$dsound" = "yes" ; then
580 echo "CONFIG_DSOUND=yes" >> $config_mak
581 echo "#define CONFIG_DSOUND 1" >> $config_h
583 if test "$fmod" = "yes" ; then
584 echo "CONFIG_FMOD=yes" >> $config_mak
585 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
586 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
587 echo "#define CONFIG_FMOD 1" >> $config_h
589 echo -n "VERSION=" >>$config_mak
590 head $source_path/VERSION
>>$config_mak
591 echo "" >>$config_mak
592 echo -n "#define QEMU_VERSION \"" >> $config_h
593 head $source_path/VERSION
>> $config_h
594 echo "\"" >> $config_h
596 echo "SRC_PATH=$source_path" >> $config_mak
597 echo "TARGET_DIRS=$target_list" >> $config_mak
600 if [ "$bsd" = "yes" ] ; then
601 echo "#define O_LARGEFILE 0" >> $config_h
602 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
603 echo "#define _BSD 1" >> $config_h
606 for target
in $target_list; do
609 config_mak
=$target_dir/config.mak
610 config_h
=$target_dir/config.h
611 target_cpu
=`echo $target | cut -d '-' -f 1`
612 target_bigendian
="no"
613 [ "$target_cpu" = "armeb" ] && target_bigendian
=yes
614 [ "$target_cpu" = "sparc" ] && target_bigendian
=yes
615 [ "$target_cpu" = "sparc64" ] && target_bigendian
=yes
616 [ "$target_cpu" = "ppc" ] && target_bigendian
=yes
617 [ "$target_cpu" = "ppc64" ] && target_bigendian
=yes
618 [ "$target_cpu" = "mips" ] && target_bigendian
=yes
620 if expr $target : '.*-softmmu' > /dev
/null
; then
623 target_user_only
="no"
624 if expr $target : '.*-user' > /dev
/null
; then
625 target_user_only
="yes"
628 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
629 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
630 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
631 echo "To build QEMU with graphical output configure with --disable-gfx-check"
632 echo "Note that this will disable all output from the virtual graphics card."
636 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
639 mkdir
-p $target_dir/fpu
640 if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
641 mkdir
-p $target_dir/nwfpe
643 if test "$target_user_only" = "no" ; then
644 mkdir
-p $target_dir/slirp
647 ln -sf $source_path/Makefile.target
$target_dir/Makefile
649 echo "# Automatically generated by configure - do not modify" > $config_mak
650 echo "/* Automatically generated by configure - do not modify */" > $config_h
653 echo "include ../config-host.mak" >> $config_mak
654 echo "#include \"../config-host.h\"" >> $config_h
656 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
657 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
659 if test "$target_cpu" = "i386" ; then
660 echo "TARGET_ARCH=i386" >> $config_mak
661 echo "#define TARGET_ARCH \"i386\"" >> $config_h
662 echo "#define TARGET_I386 1" >> $config_h
663 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
664 echo "#define USE_KQEMU 1" >> $config_h
666 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
667 echo "TARGET_ARCH=arm" >> $config_mak
668 echo "#define TARGET_ARCH \"arm\"" >> $config_h
669 echo "#define TARGET_ARM 1" >> $config_h
670 elif test "$target_cpu" = "sparc" ; then
671 echo "TARGET_ARCH=sparc" >> $config_mak
672 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
673 echo "#define TARGET_SPARC 1" >> $config_h
674 elif test "$target_cpu" = "sparc64" ; then
675 echo "TARGET_ARCH=sparc64" >> $config_mak
676 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
677 echo "#define TARGET_SPARC 1" >> $config_h
678 echo "#define TARGET_SPARC64 1" >> $config_h
679 elif test "$target_cpu" = "ppc" ; then
680 echo "TARGET_ARCH=ppc" >> $config_mak
681 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
682 echo "#define TARGET_PPC 1" >> $config_h
683 elif test "$target_cpu" = "ppc64" ; then
684 echo "TARGET_ARCH=ppc64" >> $config_mak
685 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
686 echo "#define TARGET_PPC 1" >> $config_h
687 echo "#define TARGET_PPC64 1" >> $config_h
688 elif test "$target_cpu" = "x86_64" ; then
689 echo "TARGET_ARCH=x86_64" >> $config_mak
690 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
691 echo "#define TARGET_I386 1" >> $config_h
692 echo "#define TARGET_X86_64 1" >> $config_h
693 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
694 echo "#define USE_KQEMU 1" >> $config_h
695 if test $kqemu_profile = "yes" ; then
696 echo "#define CONFIG_KQEMU_PROFILE 1" >> $config_h
699 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
700 echo "TARGET_ARCH=mips" >> $config_mak
701 echo "#define TARGET_ARCH \"mips\"" >> $config_h
702 echo "#define TARGET_MIPS 1" >> $config_h
704 echo "Unsupported target CPU"
707 if test "$target_bigendian" = "yes" ; then
708 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
709 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
711 if test "$target_softmmu" = "yes" ; then
712 echo "CONFIG_SOFTMMU=yes" >> $config_mak
713 echo "#define CONFIG_SOFTMMU 1" >> $config_h
715 if test "$target_user_only" = "yes" ; then
716 echo "CONFIG_USER_ONLY=yes" >> $config_mak
717 echo "#define CONFIG_USER_ONLY 1" >> $config_h
720 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
721 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
722 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
726 if test "$target_user_only" = "no"; then
727 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
732 if test "$sdl1" = "yes" ; then
733 echo "#define CONFIG_SDL 1" >> $config_h
734 echo "CONFIG_SDL=yes" >> $config_mak
735 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
736 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
738 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
740 echo -n "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
741 if [ "${aa}" = "yes" ] ; then
742 echo -n " `aalib-config --cflags`" >> $config_mak ;
744 echo "" >> $config_mak
748 if test "$cocoa" = "yes" ; then
749 echo "#define CONFIG_COCOA 1" >> $config_h
750 echo "CONFIG_COCOA=yes" >> $config_mak
753 done # for target in $targets
755 # build tree in object directory if source path is different from current one
756 if test "$source_path_used" = "yes" ; then
758 FILES
="Makefile tests/Makefile"
759 for dir
in $DIRS ; do
763 ln -sf $source_path/$f $f
767 rm -f $TMPO $TMPC $TMPE $TMPS