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)
119 OS_CFLAGS="-mno-cygwin"
120 if [ "$cpu" = "i386" ] ; then
123 audio_possible_drivers="sdl"
127 if [ "$cpu" = "i386" ] ; then
130 audio_possible_drivers="dsound sdl fmod"
134 audio_possible_drivers="oss sdl esd"
135 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
142 audio_possible_drivers="oss sdl esd"
143 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
150 audio_possible_drivers="oss sdl esd"
156 audio_possible_drivers="oss sdl esd"
164 audio_drv_list="coreaudio"
165 audio_possible_drivers="coreaudio sdl fmod"
166 OS_CFLAGS="-mdynamic-no-pic"
167 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
173 needs_libsunmath="no"
174 solarisrev=`uname -r | cut -f2 -d.`
175 # have to select again, because `uname -m` returns i86pc
176 # even on an x86_64 box.
177 solariscpu=`isainfo -k`
178 if test "${solariscpu}" = "amd64" ; then
181 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
182 if test "$solarisrev" -le 9 ; then
183 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
184 needs_libsunmath="yes"
186 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
187 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
188 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
189 echo "Studio 11 can be downloaded from www.sun.com."
193 if test "$solarisrev" -ge 9 ; then
197 if test -f /usr/include/sys/soundcard.h ; then
200 audio_possible_drivers="oss sdl"
204 audio_possible_drivers="oss alsa sdl esd pa"
207 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
209 audio_possible_drivers="$audio_possible_drivers fmod"
214 if [ "$bsd" = "yes" ] ; then
215 if [ "$darwin" != "yes" ] ; then
221 source_path=`dirname "$0"`
222 source_path_used="no"
224 if [ -z "$source_path" ]; then
227 source_path=`cd "$source_path"; pwd`
229 [ -f "$workdir/vl.c" ] || source_path_used="yes"
232 # generate compile errors on warnings for development builds
233 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
238 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
240 --help|-h) show_help=yes
242 --prefix=*) prefix="$optarg"
244 --interp-prefix=*) interp_prefix="$optarg"
246 --source-path=*) source_path="$optarg"
247 source_path_used="yes"
249 --cross-prefix=*) cross_prefix="$optarg"
254 --host-cc=*) host_cc="$optarg"
256 --make=*) make="$optarg"
258 --install=*) install="$optarg"
260 --extra-cflags=*) CFLAGS="$optarg"
262 --extra-ldflags=*) LDFLAGS="$optarg"
264 --cpu=*) cpu="$optarg"
266 --target-list=*) target_list="$optarg"
268 --enable-gprof) gprof="yes"
270 --static) static="yes"
272 --disable-sdl) sdl="no"
274 --fmod-lib=*) fmod_lib="$optarg"
276 --fmod-inc=*) fmod_inc="$optarg"
278 --oss-lib=*) oss_lib="$optarg"
280 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
282 --audio-drv-list=*) audio_drv_list="$optarg"
284 --disable-vnc-tls) vnc_tls="no"
286 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
288 --disable-slirp) slirp="no"
290 --disable-vde) vde="no"
292 --disable-kqemu) kqemu="no"
294 --disable-brlapi) brlapi="no"
296 --enable-profiler) profiler="yes"
301 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
303 --disable-gfx-check) check_gfx="no"
305 --disable-gcc-check) check_gcc="no"
307 --disable-system) softmmu="no"
309 --enable-system) softmmu="yes"
311 --disable-linux-user) linux_user="no"
313 --enable-linux-user) linux_user="yes"
315 --disable-darwin-user) darwin_user="no"
317 --enable-darwin-user) darwin_user="yes"
319 --enable-uname-release=*) uname_release="$optarg"
324 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
325 target_cpu="sparc"; cpu="sparc" ;;
326 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
327 target_cpu="sparc"; cpu="sparc" ;;
328 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
329 target_cpu="sparc64"; cpu="sparc64" ;;
330 *) echo "undefined SPARC architecture. Exiting";exit 1;;
333 --enable-werror) werror="yes"
335 --disable-werror) werror="no"
337 --disable-curses) curses="no"
339 --disable-nptl) nptl="no"
341 --enable-mixemu) mixemu="yes"
343 --disable-aio) aio="no"
345 *) echo "ERROR: unknown option $opt"; show_help="yes"
350 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
353 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
354 AIOLIBS="-lrt -lpthread"
357 # default flags for all hosts
358 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
359 LDFLAGS="$LDFLAGS -g"
360 if test "$werror" = "yes" ; then
361 CFLAGS="$CFLAGS -Werror"
365 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
366 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
369 sparc) if test -z "$sparc_cpu" ; then
370 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
373 ARCH_CFLAGS="${SP_CFLAGS}"
374 ARCH_LDFLAGS="${SP_LDFLAGS}"
377 sparc64) if test -z "$sparc_cpu" ; then
378 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
381 ARCH_CFLAGS="${SP_CFLAGS}"
382 ARCH_LDFLAGS="${SP_LDFLAGS}"
386 ARCH_CFLAGS="-march=z900"
398 if test x"$show_help" = x"yes" ; then
401 Usage: configure [options]
402 Options: [defaults in brackets after descriptions]
405 echo "Standard options:"
406 echo " --help print this message"
407 echo " --prefix=PREFIX install in PREFIX [$prefix]"
408 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
409 echo " use %M for cpu name [$interp_prefix]"
410 echo " --target-list=LIST set target list [$target_list]"
412 echo "kqemu kernel acceleration support:"
413 echo " --disable-kqemu disable kqemu support"
415 echo "Advanced options (experts only):"
416 echo " --source-path=PATH path of source code [$source_path]"
417 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
418 echo " --cc=CC use C compiler CC [$cc]"
419 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
420 echo " --make=MAKE use specified make [$make]"
421 echo " --install=INSTALL use specified install [$install]"
422 echo " --static enable static build [$static]"
423 echo " --disable-werror disable compilation abort on warning"
424 echo " --disable-sdl disable SDL"
425 echo " --enable-cocoa enable COCOA (Mac OS X only)"
426 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
427 echo " --audio-drv-list=LIST set audio drivers list:"
428 echo " Available drivers: $audio_possible_drivers"
429 echo " --audio-card-list=LIST set list of additional emulated audio cards"
430 echo " Available cards: ac97 adlib cs4231a gus"
431 echo " --enable-mixemu enable mixer emulation"
432 echo " --disable-brlapi disable BrlAPI"
433 echo " --disable-vnc-tls disable TLS encryption for VNC server"
434 echo " --disable-curses disable curses output"
435 echo " --disable-nptl disable usermode NPTL support"
436 echo " --enable-system enable all system emulation targets"
437 echo " --disable-system disable all system emulation targets"
438 echo " --enable-linux-user enable all linux usermode emulation targets"
439 echo " --disable-linux-user disable all linux usermode emulation targets"
440 echo " --enable-darwin-user enable all darwin usermode emulation targets"
441 echo " --disable-darwin-user disable all darwin usermode emulation targets"
442 echo " --fmod-lib path to FMOD library"
443 echo " --fmod-inc path to FMOD includes"
444 echo " --oss-lib path to OSS library"
445 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
446 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
447 echo " --disable-vde disable support for vde network"
448 echo " --disable-aio disable AIO support"
450 echo "NOTE: The object files are built at the place where configure is launched"
454 cc="${cross_prefix}${cc}"
455 ar="${cross_prefix}${ar}"
456 strip="${cross_prefix}${strip}"
458 # check that the C compiler works.
463 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
464 : C compiler works ok
466 echo "ERROR: \"$cc\" either does not exist or does not work"
470 if test "$mingw32" = "yes" ; then
476 # Check for gcc4, error if pre-gcc4
477 if test "$check_gcc" = "yes" ; then
482 int main(){return 0;}
484 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
485 echo "WARNING: \"$cc\" looks like gcc 4.x"
487 if test "$gcc3_search" = "yes" ; then
488 echo "Looking for gcc 3.x"
489 for compat_cc in $gcc3_list ; do
490 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
491 echo "Found \"$compat_cc\""
492 cc="$cross_prefix$compat_cc"
493 found_compat_cc="yes"
497 if test "$found_compat_cc" = "no" ; then
498 echo "gcc 3.x not found!"
501 if test "$found_compat_cc" = "no" ; then
502 echo "QEMU is known to have problems when compiled with gcc 4.x"
503 echo "It is recommended that you use gcc 3.x to build QEMU"
504 echo "To use this compiler anyway, configure with --disable-gcc-check"
511 # Solaris specific configure tool chain decisions
513 if test "$solaris" = "yes" ; then
515 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
516 # override the check with --disable-gcc-check
518 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
520 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
521 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
522 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
523 echo "or get the latest patch from SunSolve for gcc"
527 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
528 if test -z "$solinst" ; then
529 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
530 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
531 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
534 if test "$solinst" = "/usr/sbin/install" ; then
535 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
536 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
537 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
540 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
541 if test -z "$sol_ar" ; then
542 echo "Error: No path includes ar"
543 if test -f /usr/ccs/bin/ar ; then
544 echo "Add /usr/ccs/bin to your path and rerun configure"
551 if test -z "$target_list" ; then
552 # these targets are portable
553 if [ "$softmmu" = "yes" ] ; then
572 # the following are Linux specific
573 if [ "$linux_user" = "yes" ] ; then
574 target_list="${target_list}\
586 ppc64abi32-linux-user \
591 sparc32plus-linux-user \
594 # the following are Darwin specific
595 if [ "$darwin_user" = "yes" ] ; then
596 target_list="$target_list i386-darwin-user ppc-darwin-user"
599 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
601 if test -z "$target_list" ; then
602 echo "No targets enabled"
606 if test -z "$cross_prefix" ; then
609 # big/little endian test
611 #include <inttypes.h>
612 int main(int argc, char ** argv){
613 volatile uint32_t i=0x01234567;
614 return (*((uint8_t*)(&i))) == 0x67;
618 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
619 $TMPE && bigendian="yes"
621 echo big/little test failed
626 # if cross compiling, cannot launch a program, so make a static guess
627 if test "$cpu" = "armv4b" \
631 -o "$cpu" = "mips64" \
632 -o "$cpu" = "powerpc" \
634 -o "$cpu" = "sparc" \
635 -o "$cpu" = "sparc64"; then
641 # host long bits test
643 if test "$cpu" = "x86_64" \
644 -o "$cpu" = "alpha" \
646 -o "$cpu" = "sparc64"; then
650 # ppc specific hostlongbits selection
651 if test "$cpu" = "powerpc" ; then
653 int main(void){return sizeof(long);}
656 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
659 4) hostlongbits="32";;
660 8) hostlongbits="64";;
661 *) echo "Couldn't determine bits per long value"; exit 1;;
664 echo hostlongbits test failed
669 # check gcc options support
675 # Check host NPTL support
678 #include <linux/futex.h>
681 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
687 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
693 ##########################################
698 if test -z "$sdl" ; then
699 sdl_config="sdl-config"
703 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
704 # win32 cross compilation case
705 sdl_config="i386-mingw32msvc-sdl-config"
711 #undef main /* We don't want SDL to override our main() */
712 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
714 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
715 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
716 if test "$_sdlversion" -lt 121 ; then
719 if test "$cocoa" = "no" ; then
724 # static link with sdl ?
725 if test "$sdl" = "yes" ; then
727 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
728 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
729 if [ "$aa" = "yes" ] ; then
730 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
733 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
737 fi # sdl compile test
738 fi # cross compilation
740 # Make sure to disable cocoa if sdl was set
741 if test "$sdl" = "yes" ; then
743 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
747 ##########################################
749 if test "$vnc_tls" = "yes" ; then
751 #include <gnutls/gnutls.h>
752 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
754 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
755 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
756 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
757 $vnc_tls_libs 2> /dev/null ; then
764 ##########################################
765 # vde libraries probe
766 if test "$vde" = "yes" ; then
768 #include <libvdeplug.h>
769 int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
771 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
778 ##########################################
779 # Sound support libraries probe
790 int main(void) { $exp }
792 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
796 echo "Error: $drv check failed"
797 echo "Make sure to have the $drv libs and headers installed."
803 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
804 for drv in $audio_drv_list; do
807 audio_drv_probe $drv alsa/asoundlib.h -lasound \
808 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
812 if test -z $fmod_lib || test -z $fmod_inc; then
814 echo "Error: You must specify path to FMOD library and headers"
815 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
819 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
823 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
827 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
828 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
831 oss|sdl|core|wav|dsound)
832 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
836 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
838 echo "Error: Unknown driver '$drv' selected"
839 echo "Possible drivers are: $audio_possible_drivers"
847 ##########################################
850 if test -z "$brlapi" ; then
854 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
856 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
858 fi # brlapi compile test
861 ##########################################
864 if test "$curses" = "yes" ; then
868 int main(void) { return curses_version(); }
870 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
875 ##########################################
877 if test "$aio" = "yes" ; then
881 int main(void) { return aio_write(NULL); }
883 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
888 # Check if tools are available to build documentation.
889 if [ -x "`which texi2html 2>/dev/null`" ] && \
890 [ -x "`which pod2man 2>/dev/null`" ]; then
894 if test "$mingw32" = "yes" ; then
895 if test -z "$prefix" ; then
896 prefix="/c/Program Files/Qemu"
903 if test -z "$prefix" ; then
906 mansuffix="/share/man"
907 datasuffix="/share/qemu"
908 docsuffix="/share/doc/qemu"
912 echo "Install prefix $prefix"
913 echo "BIOS directory $prefix$datasuffix"
914 echo "binary directory $prefix$binsuffix"
915 if test "$mingw32" = "no" ; then
916 echo "Manual directory $prefix$mansuffix"
917 echo "ELF interp prefix $interp_prefix"
919 echo "Source path $source_path"
920 echo "C compiler $cc"
921 echo "Host C compiler $host_cc"
922 echo "ARCH_CFLAGS $ARCH_CFLAGS"
924 echo "install $install"
926 echo "host big endian $bigendian"
927 echo "target list $target_list"
928 echo "gprof enabled $gprof"
929 echo "profiler $profiler"
930 echo "static build $static"
931 echo "-Werror enabled $werror"
932 if test "$darwin" = "yes" ; then
933 echo "Cocoa support $cocoa"
935 echo "SDL support $sdl"
936 if test "$sdl" != "no" ; then
937 echo "SDL static link $sdl_static"
939 echo "curses support $curses"
940 echo "mingw32 support $mingw32"
941 echo "Audio drivers $audio_drv_list"
942 echo "Extra audio cards $audio_card_list"
943 echo "Mixer emulation $mixemu"
944 echo "VNC TLS support $vnc_tls"
945 if test "$vnc_tls" = "yes" ; then
946 echo " TLS CFLAGS $vnc_tls_cflags"
947 echo " TLS LIBS $vnc_tls_libs"
949 if test -n "$sparc_cpu"; then
950 echo "Target Sparc Arch $sparc_cpu"
952 echo "kqemu support $kqemu"
953 echo "brlapi support $brlapi"
954 echo "Documentation $build_docs"
955 [ ! -z "$uname_release" ] && \
956 echo "uname -r $uname_release"
957 echo "NPTL support $nptl"
958 echo "vde support $vde"
959 echo "AIO support $aio"
961 if test $sdl_too_old = "yes"; then
962 echo "-> Your SDL version is too old - please upgrade to have SDL support"
964 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
965 echo "The error log from compiling the libSDL test is: "
966 cat /tmp/qemu-$$-sdl-config.log
968 rm -f /tmp/qemu-$$-sdl-config.log
969 #if test "$sdl_static" = "no"; then
970 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
972 config_mak="config-host.mak"
973 config_h="config-host.h"
975 #echo "Creating $config_mak and $config_h"
977 test -f $config_h && mv $config_h ${config_h}~
979 echo "# Automatically generated by configure - do not modify" > $config_mak
980 echo "# Configured with: $0 $@" >> $config_mak
981 echo "/* Automatically generated by configure - do not modify */" > $config_h
983 echo "prefix=$prefix" >> $config_mak
984 echo "bindir=\${prefix}$binsuffix" >> $config_mak
985 echo "mandir=\${prefix}$mansuffix" >> $config_mak
986 echo "datadir=\${prefix}$datasuffix" >> $config_mak
987 echo "docdir=\${prefix}$docsuffix" >> $config_mak
988 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
989 echo "MAKE=$make" >> $config_mak
990 echo "INSTALL=$install" >> $config_mak
991 echo "CC=$cc" >> $config_mak
992 echo "HOST_CC=$host_cc" >> $config_mak
993 echo "AR=$ar" >> $config_mak
994 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
995 # XXX: only use CFLAGS and LDFLAGS ?
996 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
997 # compilation of dyngen tool (useful for win32 build on Linux host)
998 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
999 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1000 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1001 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1002 echo "CFLAGS=$CFLAGS" >> $config_mak
1003 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1004 echo "EXESUF=$EXESUF" >> $config_mak
1005 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1008 echo "ARCH=i386" >> $config_mak
1009 echo "#define HOST_I386 1" >> $config_h
1012 echo "ARCH=x86_64" >> $config_mak
1013 echo "#define HOST_X86_64 1" >> $config_h
1016 echo "ARCH=alpha" >> $config_mak
1017 echo "#define HOST_ALPHA 1" >> $config_h
1020 echo "ARCH=arm" >> $config_mak
1021 echo "#define HOST_ARM 1" >> $config_h
1024 echo "ARCH=arm" >> $config_mak
1025 echo "#define HOST_ARM 1" >> $config_h
1028 echo "ARCH=cris" >> $config_mak
1029 echo "#define HOST_CRIS 1" >> $config_h
1032 echo "ARCH=hppa" >> $config_mak
1033 echo "#define HOST_HPPA 1" >> $config_h
1036 echo "ARCH=ia64" >> $config_mak
1037 echo "#define HOST_IA64 1" >> $config_h
1040 echo "ARCH=m68k" >> $config_mak
1041 echo "#define HOST_M68K 1" >> $config_h
1044 echo "ARCH=mips" >> $config_mak
1045 echo "#define HOST_MIPS 1" >> $config_h
1048 echo "ARCH=mips64" >> $config_mak
1049 echo "#define HOST_MIPS64 1" >> $config_h
1052 if test "$hostlongbits" = "32"; then
1053 echo "ARCH=ppc" >> $config_mak
1054 echo "#define HOST_PPC 1" >> $config_h
1056 echo "ARCH=ppc64" >> $config_mak
1057 echo "#define HOST_PPC64 1" >> $config_h
1061 echo "ARCH=s390" >> $config_mak
1062 echo "#define HOST_S390 1" >> $config_h
1065 echo "ARCH=sparc" >> $config_mak
1066 echo "#define HOST_SPARC 1" >> $config_h
1069 echo "ARCH=sparc64" >> $config_mak
1070 echo "#define HOST_SPARC64 1" >> $config_h
1073 echo "Unsupported CPU = $cpu"
1077 if test "$bigendian" = "yes" ; then
1078 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1079 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1081 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1082 if test "$mingw32" = "yes" ; then
1083 echo "CONFIG_WIN32=yes" >> $config_mak
1084 echo "#define CONFIG_WIN32 1" >> $config_h
1087 #include <byteswap.h>
1088 int main(void) { return bswap_32(0); }
1090 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1091 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1095 if [ "$openbsd" = "yes" ] ; then
1096 echo "#define ENOTSUP 4096" >> $config_h
1099 if test "$darwin" = "yes" ; then
1100 echo "CONFIG_DARWIN=yes" >> $config_mak
1101 echo "#define CONFIG_DARWIN 1" >> $config_h
1103 if test "$solaris" = "yes" ; then
1104 echo "CONFIG_SOLARIS=yes" >> $config_mak
1105 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1106 if test "$needs_libsunmath" = "yes" ; then
1107 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1108 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1111 if test -n "$sparc_cpu"; then
1112 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1113 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1115 if test "$gdbstub" = "yes" ; then
1116 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1117 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1119 if test "$gprof" = "yes" ; then
1120 echo "TARGET_GPROF=yes" >> $config_mak
1121 echo "#define HAVE_GPROF 1" >> $config_h
1123 if test "$static" = "yes" ; then
1124 echo "CONFIG_STATIC=yes" >> $config_mak
1125 echo "#define CONFIG_STATIC 1" >> $config_h
1127 if test $profiler = "yes" ; then
1128 echo "#define CONFIG_PROFILER 1" >> $config_h
1130 if test "$slirp" = "yes" ; then
1131 echo "CONFIG_SLIRP=yes" >> $config_mak
1132 echo "#define CONFIG_SLIRP 1" >> $config_h
1134 if test "$vde" = "yes" ; then
1135 echo "CONFIG_VDE=yes" >> $config_mak
1136 echo "#define CONFIG_VDE 1" >> $config_h
1137 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1139 for card in $audio_card_list; do
1140 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1141 echo "$def=yes" >> $config_mak
1142 echo "#define $def 1" >> $config_h
1144 echo "#define AUDIO_DRIVERS \\" >> $config_h
1145 for drv in $audio_drv_list; do
1146 echo " &${drv}_audio_driver, \\" >>$config_h
1147 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1148 echo "$def=yes" >> $config_mak
1149 if test "$drv" = "fmod"; then
1150 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1151 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1152 elif test "$drv" = "oss"; then
1153 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1157 if test "$mixemu" = "yes" ; then
1158 echo "CONFIG_MIXEMU=yes" >> $config_mak
1159 echo "#define CONFIG_MIXEMU 1" >> $config_h
1161 if test "$vnc_tls" = "yes" ; then
1162 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1163 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1164 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1165 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1167 qemu_version=`head $source_path/VERSION`
1168 echo "VERSION=$qemu_version" >>$config_mak
1169 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1171 echo "SRC_PATH=$source_path" >> $config_mak
1172 if [ "$source_path_used" = "yes" ]; then
1173 echo "VPATH=$source_path" >> $config_mak
1175 echo "TARGET_DIRS=$target_list" >> $config_mak
1176 if [ "$build_docs" = "yes" ] ; then
1177 echo "BUILD_DOCS=yes" >> $config_mak
1179 if test "$static" = "yes"; then
1184 if test "$sdl1" = "yes" ; then
1185 echo "#define CONFIG_SDL 1" >> $config_h
1186 echo "CONFIG_SDL=yes" >> $config_mak
1187 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1188 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1190 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1192 if [ "${aa}" = "yes" ] ; then
1193 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1195 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1198 if test "$cocoa" = "yes" ; then
1199 echo "#define CONFIG_COCOA 1" >> $config_h
1200 echo "CONFIG_COCOA=yes" >> $config_mak
1202 if test "$curses" = "yes" ; then
1203 echo "#define CONFIG_CURSES 1" >> $config_h
1204 echo "CONFIG_CURSES=yes" >> $config_mak
1205 echo "CURSES_LIBS=-lcurses" >> $config_mak
1207 if test "$brlapi" = "yes" ; then
1208 echo "CONFIG_BRLAPI=yes" >> $config_mak
1209 echo "#define CONFIG_BRLAPI 1" >> $config_h
1210 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1212 if test "$aio" = "yes" ; then
1213 echo "#define CONFIG_AIO 1" >> $config_h
1216 # XXX: suppress that
1217 if [ "$bsd" = "yes" ] ; then
1218 echo "#define O_LARGEFILE 0" >> $config_h
1219 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1220 echo "#define _BSD 1" >> $config_h
1223 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1226 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1227 tools="qemu-img\$(EXESUF) $tools"
1228 if [ "$linux" = "yes" ] ; then
1229 tools="qemu-nbd\$(EXESUF) $tools"
1232 echo "TOOLS=$tools" >> $config_mak
1234 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1236 for target in $target_list; do
1237 target_dir="$target"
1238 config_mak=$target_dir/config.mak
1239 config_h=$target_dir/config.h
1240 target_cpu=`echo $target | cut -d '-' -f 1`
1241 target_bigendian="no"
1242 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1243 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1244 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1245 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1246 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1247 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1248 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1249 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1250 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1251 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1252 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1253 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1254 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1256 target_user_only="no"
1257 target_linux_user="no"
1258 target_darwin_user="no"
1260 ${target_cpu}-softmmu)
1261 target_softmmu="yes"
1263 ${target_cpu}-linux-user)
1264 target_user_only="yes"
1265 target_linux_user="yes"
1267 ${target_cpu}-darwin-user)
1268 target_user_only="yes"
1269 target_darwin_user="yes"
1272 echo "ERROR: Target '$target' not recognised"
1277 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1278 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1279 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1280 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1281 echo "Note that this will disable all output from the virtual graphics card"
1282 echo "except through VNC or curses."
1286 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1288 test -f $config_h && mv $config_h ${config_h}~
1290 mkdir -p $target_dir
1291 mkdir -p $target_dir/fpu
1292 mkdir -p $target_dir/tcg
1293 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1294 mkdir -p $target_dir/nwfpe
1298 # don't use ln -sf as not all "ln -sf" over write the file/link
1300 rm -f $target_dir/Makefile
1301 ln -s $source_path/Makefile.target $target_dir/Makefile
1304 echo "# Automatically generated by configure - do not modify" > $config_mak
1305 echo "/* Automatically generated by configure - do not modify */" > $config_h
1308 echo "include ../config-host.mak" >> $config_mak
1309 echo "#include \"../config-host.h\"" >> $config_h
1314 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1315 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1317 case "$target_cpu" in
1319 echo "TARGET_ARCH=i386" >> $config_mak
1320 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1321 echo "#define TARGET_I386 1" >> $config_h
1322 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1324 echo "#define USE_KQEMU 1" >> $config_h
1326 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1327 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1329 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1331 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1335 echo "TARGET_ARCH=x86_64" >> $config_mak
1336 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1337 echo "#define TARGET_I386 1" >> $config_h
1338 echo "#define TARGET_X86_64 1" >> $config_h
1339 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1341 echo "#define USE_KQEMU 1" >> $config_h
1345 echo "TARGET_ARCH=alpha" >> $config_mak
1346 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1347 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1348 echo "#define TARGET_ALPHA 1" >> $config_h
1349 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1352 echo "TARGET_ARCH=arm" >> $config_mak
1353 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1354 echo "#define TARGET_ARM 1" >> $config_h
1359 echo "TARGET_ARCH=cris" >> $config_mak
1360 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1361 echo "#define TARGET_CRIS 1" >> $config_h
1364 echo "TARGET_ARCH=m68k" >> $config_mak
1365 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1366 echo "#define TARGET_M68K 1" >> $config_h
1370 echo "TARGET_ARCH=mips" >> $config_mak
1371 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1372 echo "#define TARGET_MIPS 1" >> $config_h
1373 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1376 echo "TARGET_ARCH=mipsn32" >> $config_mak
1377 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1378 echo "#define TARGET_MIPS 1" >> $config_h
1379 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1382 echo "TARGET_ARCH=mips64" >> $config_mak
1383 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1384 echo "#define TARGET_MIPS 1" >> $config_h
1385 echo "#define TARGET_MIPS64 1" >> $config_h
1386 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1389 echo "TARGET_ARCH=ppc" >> $config_mak
1390 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1391 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1392 echo "#define TARGET_PPC 1" >> $config_h
1393 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1396 echo "TARGET_ARCH=ppcemb" >> $config_mak
1397 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1398 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1399 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1400 echo "#define TARGET_PPC 1" >> $config_h
1401 echo "#define TARGET_PPCEMB 1" >> $config_h
1402 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1405 echo "TARGET_ARCH=ppc64" >> $config_mak
1406 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1407 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1408 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1409 echo "#define TARGET_PPC 1" >> $config_h
1410 echo "#define TARGET_PPC64 1" >> $config_h
1411 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1414 echo "TARGET_ARCH=ppc64" >> $config_mak
1415 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1416 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1417 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1418 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1419 echo "#define TARGET_PPC 1" >> $config_h
1420 echo "#define TARGET_PPC64 1" >> $config_h
1421 echo "#define TARGET_ABI32 1" >> $config_h
1422 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1425 echo "TARGET_ARCH=sh4" >> $config_mak
1426 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1427 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1428 echo "#define TARGET_SH4 1" >> $config_h
1429 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1433 echo "TARGET_ARCH=sparc" >> $config_mak
1434 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1435 echo "#define TARGET_SPARC 1" >> $config_h
1438 echo "TARGET_ARCH=sparc64" >> $config_mak
1439 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1440 echo "#define TARGET_SPARC 1" >> $config_h
1441 echo "#define TARGET_SPARC64 1" >> $config_h
1445 echo "TARGET_ARCH=sparc64" >> $config_mak
1446 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1447 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1448 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1449 echo "#define TARGET_SPARC 1" >> $config_h
1450 echo "#define TARGET_SPARC64 1" >> $config_h
1451 echo "#define TARGET_ABI32 1" >> $config_h
1454 echo "Unsupported target CPU"
1458 if test "$target_bigendian" = "yes" ; then
1459 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1460 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1462 if test "$target_softmmu" = "yes" ; then
1463 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1464 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1466 if test "$target_user_only" = "yes" ; then
1467 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1468 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1470 if test "$target_linux_user" = "yes" ; then
1471 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1472 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1474 if test "$target_darwin_user" = "yes" ; then
1475 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1476 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1479 if test "$target_cpu" = "arm" \
1480 -o "$target_cpu" = "armeb" \
1481 -o "$target_cpu" = "m68k" \
1482 -o "$target_cpu" = "mips" \
1483 -o "$target_cpu" = "mipsel" \
1484 -o "$target_cpu" = "mipsn32" \
1485 -o "$target_cpu" = "mipsn32el" \
1486 -o "$target_cpu" = "mips64" \
1487 -o "$target_cpu" = "mips64el" \
1488 -o "$target_cpu" = "sparc" \
1489 -o "$target_cpu" = "sparc64" \
1490 -o "$target_cpu" = "sparc32plus"; then
1491 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1492 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1494 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1495 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1496 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1498 if test "$target_user_only" = "yes" \
1499 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1500 echo "#define USE_NPTL 1" >> $config_h
1502 # 32 bit ELF loader in addition to native 64 bit loader?
1503 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1504 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1505 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1508 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1510 done # for target in $targets
1512 # build tree in object directory if source path is different from current one
1513 if test "$source_path_used" = "yes" ; then
1514 DIRS="tests tests/cris slirp audio"
1515 FILES="Makefile tests/Makefile"
1516 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1517 FILES="$FILES tests/test-mmap.c"
1518 for dir in $DIRS ; do
1521 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1522 for f in $FILES ; do
1524 ln -s $source_path/$f $f
1528 rm -f $TMPO $TMPC $TMPE $TMPS