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
)
118 OS_CFLAGS
="-mno-cygwin"
119 if [ "$cpu" = "i386" ] ; then
122 audio_possible_drivers
="sdl"
126 if [ "$cpu" = "i386" ] ; then
129 audio_possible_drivers
="dsound sdl fmod"
133 audio_possible_drivers
="oss sdl esd"
134 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
141 audio_possible_drivers
="oss sdl esd"
142 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
149 audio_possible_drivers
="oss sdl esd"
155 audio_possible_drivers
="oss sdl esd"
162 audio_drv_list
="coreaudio"
163 audio_possible_drivers
="coreaudio sdl fmod"
164 OS_CFLAGS
="-mdynamic-no-pic"
165 OS_LDFLAGS
="-framework CoreFoundation -framework IOKit"
171 needs_libsunmath
="no"
172 solarisrev
=`uname -r | cut -f2 -d.`
173 # have to select again, because `uname -m` returns i86pc
174 # even on an x86_64 box.
175 solariscpu
=`isainfo -k`
176 if test "${solariscpu}" = "amd64" ; then
179 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
180 if test "$solarisrev" -le 9 ; then
181 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
182 needs_libsunmath
="yes"
184 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
185 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
186 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
187 echo "Studio 11 can be downloaded from www.sun.com."
191 if test "$solarisrev" -ge 9 ; then
195 if test -f /usr
/include
/sys
/soundcard.h
; then
198 audio_possible_drivers
="oss sdl"
202 audio_possible_drivers
="oss alsa sdl esd pa"
205 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
207 audio_possible_drivers
="$audio_possible_drivers fmod"
212 if [ "$bsd" = "yes" ] ; then
213 if [ "$darwin" != "yes" ] ; then
219 source_path
=`dirname "$0"`
220 source_path_used
="no"
222 if [ -z "$source_path" ]; then
225 source_path
=`cd "$source_path"; pwd`
227 [ -f "$workdir/vl.c" ] || source_path_used
="yes"
230 # generate compile errors on warnings for development builds
231 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
236 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
238 --help|
-h) show_help
=yes
240 --prefix=*) prefix
="$optarg"
242 --interp-prefix=*) interp_prefix
="$optarg"
244 --source-path=*) source_path
="$optarg"
245 source_path_used
="yes"
247 --cross-prefix=*) cross_prefix
="$optarg"
252 --host-cc=*) host_cc
="$optarg"
254 --make=*) make="$optarg"
256 --install=*) install="$optarg"
258 --extra-cflags=*) CFLAGS
="$optarg"
260 --extra-ldflags=*) LDFLAGS
="$optarg"
262 --cpu=*) cpu
="$optarg"
264 --target-list=*) target_list
="$optarg"
266 --enable-gprof) gprof
="yes"
268 --static) static
="yes"
270 --disable-sdl) sdl
="no"
272 --fmod-lib=*) fmod_lib
="$optarg"
274 --fmod-inc=*) fmod_inc
="$optarg"
276 --audio-card-list=*) audio_card_list
=`echo "$optarg" | sed -e 's/,/ /g'`
278 --audio-drv-list=*) audio_drv_list
="$optarg"
280 --disable-vnc-tls) vnc_tls
="no"
282 --enable-mingw32) mingw32
="yes" ; cross_prefix
="i386-mingw32-" ; linux_user
="no"
284 --disable-slirp) slirp
="no"
286 --disable-vde) vde
="no"
288 --disable-kqemu) kqemu
="no"
290 --disable-brlapi) brlapi
="no"
292 --enable-profiler) profiler
="yes"
297 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
299 --disable-gfx-check) check_gfx
="no"
301 --disable-gcc-check) check_gcc
="no"
303 --disable-system) softmmu
="no"
305 --enable-system) softmmu
="yes"
307 --disable-linux-user) linux_user
="no"
309 --enable-linux-user) linux_user
="yes"
311 --disable-darwin-user) darwin_user
="no"
313 --enable-darwin-user) darwin_user
="yes"
315 --enable-uname-release=*) uname_release
="$optarg"
320 v7|v8
) SP_CFLAGS
="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
321 target_cpu
="sparc"; cpu
="sparc" ;;
322 v8plus|v8plusa
) SP_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m32"
323 target_cpu
="sparc"; cpu
="sparc" ;;
324 v9
) SP_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS
="-m64"
325 target_cpu
="sparc64"; cpu
="sparc64" ;;
326 *) echo "undefined SPARC architecture. Exiting";exit 1;;
329 --enable-werror) werror
="yes"
331 --disable-werror) werror
="no"
333 --disable-curses) curses
="no"
335 --disable-nptl) nptl
="no"
337 --enable-mixemu) mixemu
="yes"
339 --disable-aio) aio
="no"
341 *) echo "ERROR: unknown option $opt"; show_help
="yes"
346 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
349 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
350 AIOLIBS
="-lrt -lpthread"
353 # default flags for all hosts
354 CFLAGS
="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
355 LDFLAGS
="$LDFLAGS -g"
356 if test "$werror" = "yes" ; then
357 CFLAGS
="$CFLAGS -Werror"
361 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
362 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
365 sparc
) if test -z "$sparc_cpu" ; then
366 ARCH_CFLAGS
="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
369 ARCH_CFLAGS
="${SP_CFLAGS}"
370 ARCH_LDFLAGS
="${SP_LDFLAGS}"
373 sparc64
) if test -z "$sparc_cpu" ; then
374 ARCH_CFLAGS
="-m64 -mcpu=ultrasparc -D__sparc_v9__"
377 ARCH_CFLAGS
="${SP_CFLAGS}"
378 ARCH_LDFLAGS
="${SP_LDFLAGS}"
382 ARCH_CFLAGS
="-march=z900"
394 if test x
"$show_help" = x
"yes" ; then
397 Usage: configure [options]
398 Options: [defaults in brackets after descriptions]
401 echo "Standard options:"
402 echo " --help print this message"
403 echo " --prefix=PREFIX install in PREFIX [$prefix]"
404 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
405 echo " use %M for cpu name [$interp_prefix]"
406 echo " --target-list=LIST set target list [$target_list]"
408 echo "kqemu kernel acceleration support:"
409 echo " --disable-kqemu disable kqemu support"
411 echo "Advanced options (experts only):"
412 echo " --source-path=PATH path of source code [$source_path]"
413 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
414 echo " --cc=CC use C compiler CC [$cc]"
415 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
416 echo " --make=MAKE use specified make [$make]"
417 echo " --install=INSTALL use specified install [$install]"
418 echo " --static enable static build [$static]"
419 echo " --disable-werror disable compilation abort on warning"
420 echo " --disable-sdl disable SDL"
421 echo " --enable-cocoa enable COCOA (Mac OS X only)"
422 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
423 echo " --audio-drv-list=LIST set audio drivers list:"
424 echo " Available drivers: $audio_possible_drivers"
425 echo " --audio-card-list=LIST set list of additional emulated audio cards"
426 echo " Available cards: ac97 adlib cs4231a gus"
427 echo " --enable-mixemu enable mixer emulation"
428 echo " --disable-brlapi disable BrlAPI"
429 echo " --disable-vnc-tls disable TLS encryption for VNC server"
430 echo " --disable-curses disable curses output"
431 echo " --disable-nptl disable usermode NPTL support"
432 echo " --enable-system enable all system emulation targets"
433 echo " --disable-system disable all system emulation targets"
434 echo " --enable-linux-user enable all linux usermode emulation targets"
435 echo " --disable-linux-user disable all linux usermode emulation targets"
436 echo " --enable-darwin-user enable all darwin usermode emulation targets"
437 echo " --disable-darwin-user disable all darwin usermode emulation targets"
438 echo " --fmod-lib path to FMOD library"
439 echo " --fmod-inc path to FMOD includes"
440 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
441 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
442 echo " --disable-vde disable support for vde network"
443 echo " --disable-aio disable AIO support"
445 echo "NOTE: The object files are built at the place where configure is launched"
449 cc
="${cross_prefix}${cc}"
450 ar="${cross_prefix}${ar}"
451 strip
="${cross_prefix}${strip}"
453 # check that the C compiler works.
458 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev
/null
; then
459 : C compiler works ok
461 echo "ERROR: \"$cc\" either does not exist or does not work"
465 if test "$mingw32" = "yes" ; then
471 # Check for gcc4, error if pre-gcc4
472 if test "$check_gcc" = "yes" ; then
477 int main(){return 0;}
479 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
480 echo "WARNING: \"$cc\" looks like gcc 4.x"
482 if test "$gcc3_search" = "yes" ; then
483 echo "Looking for gcc 3.x"
484 for compat_cc
in $gcc3_list ; do
485 if "$cross_prefix$compat_cc" --version 2> /dev
/null | fgrep
'(GCC) 3.' > /dev
/null
2>&1 ; then
486 echo "Found \"$compat_cc\""
487 cc
="$cross_prefix$compat_cc"
488 found_compat_cc
="yes"
492 if test "$found_compat_cc" = "no" ; then
493 echo "gcc 3.x not found!"
496 if test "$found_compat_cc" = "no" ; then
497 echo "QEMU is known to have problems when compiled with gcc 4.x"
498 echo "It is recommended that you use gcc 3.x to build QEMU"
499 echo "To use this compiler anyway, configure with --disable-gcc-check"
506 # Solaris specific configure tool chain decisions
508 if test "$solaris" = "yes" ; then
510 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
511 # override the check with --disable-gcc-check
513 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
515 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
516 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
517 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
518 echo "or get the latest patch from SunSolve for gcc"
522 solinst
=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
523 if test -z "$solinst" ; then
524 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
525 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
526 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
529 if test "$solinst" = "/usr/sbin/install" ; then
530 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
531 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
532 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
535 sol_ar
=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
536 if test -z "$sol_ar" ; then
537 echo "Error: No path includes ar"
538 if test -f /usr
/ccs
/bin
/ar ; then
539 echo "Add /usr/ccs/bin to your path and rerun configure"
546 if test -z "$target_list" ; then
547 # these targets are portable
548 if [ "$softmmu" = "yes" ] ; then
567 # the following are Linux specific
568 if [ "$linux_user" = "yes" ] ; then
569 target_list
="${target_list}\
581 ppc64abi32-linux-user \
586 sparc32plus-linux-user \
589 # the following are Darwin specific
590 if [ "$darwin_user" = "yes" ] ; then
591 target_list
="$target_list i386-darwin-user ppc-darwin-user"
594 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
596 if test -z "$target_list" ; then
597 echo "No targets enabled"
601 if test -z "$cross_prefix" ; then
604 # big/little endian test
606 #include <inttypes.h>
607 int main(int argc, char ** argv){
608 volatile uint32_t i=0x01234567;
609 return (*((uint8_t*)(&i))) == 0x67;
613 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
614 $TMPE && bigendian
="yes"
616 echo big
/little
test failed
621 # if cross compiling, cannot launch a program, so make a static guess
622 if test "$cpu" = "armv4b" \
626 -o "$cpu" = "mips64" \
627 -o "$cpu" = "powerpc" \
629 -o "$cpu" = "sparc" \
630 -o "$cpu" = "sparc64"; then
636 # host long bits test
638 if test "$cpu" = "x86_64" \
639 -o "$cpu" = "alpha" \
641 -o "$cpu" = "sparc64"; then
645 # ppc specific hostlongbits selection
646 if test "$cpu" = "powerpc" ; then
648 int main(void){return sizeof(long);}
651 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
654 4) hostlongbits
="32";;
655 8) hostlongbits
="64";;
656 *) echo "Couldn't determine bits per long value"; exit 1;;
659 echo hostlongbits
test failed
664 # check gcc options support
670 # Check host NPTL support
673 #include <linux/futex.h>
676 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
682 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev
/null
; then
688 ##########################################
693 if test -z "$sdl" ; then
694 sdl_config
="sdl-config"
698 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
699 # win32 cross compilation case
700 sdl_config
="i386-mingw32msvc-sdl-config"
706 #undef main /* We don't want SDL to override our main() */
707 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
709 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
710 _sdlversion
=`$sdl_config --version | sed 's/[^0-9]//g'`
711 if test "$_sdlversion" -lt 121 ; then
714 if test "$cocoa" = "no" ; then
719 # static link with sdl ?
720 if test "$sdl" = "yes" ; then
722 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa
="yes"
723 sdl_static_libs
=`$sdl_config --static-libs 2>/dev/null`
724 if [ "$aa" = "yes" ] ; then
725 sdl_static_libs
="$sdl_static_libs `aalib-config --static-libs`"
728 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev
/null
; then
732 fi # sdl compile test
733 fi # cross compilation
735 # Make sure to disable cocoa if sdl was set
736 if test "$sdl" = "yes" ; then
738 audio_drv_list
="`echo $audio_drv_list | sed s,coreaudio,,g`"
742 ##########################################
744 if test "$vnc_tls" = "yes" ; then
746 #include <gnutls/gnutls.h>
747 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
749 vnc_tls_cflags
=`pkg-config --cflags gnutls 2> /dev/null`
750 vnc_tls_libs
=`pkg-config --libs gnutls 2> /dev/null`
751 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
752 $vnc_tls_libs 2> /dev
/null
; then
759 ##########################################
760 # vde libraries probe
761 if test "$vde" = "yes" ; then
763 #include <libvdeplug.h>
764 int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
766 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
773 ##########################################
774 # Sound support libraries probe
785 int main(void) { $exp }
787 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev
/null
; then
791 echo "Error: $drv check failed"
792 echo "Make sure to have the $drv libs and headers installed."
798 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
799 for drv
in $audio_drv_list; do
802 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
803 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
807 if test -z $fmod_lib ||
test -z $fmod_inc; then
809 echo "Error: You must specify path to FMOD library and headers"
810 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
814 audio_drv_probe
$drv fmod.h
$fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
818 audio_drv_probe
$drv esd.h
-lesd 'return esd_play_stream(0, 0, "", 0);'
822 audio_drv_probe
$drv pulse
/simple.h
-lpulse-simple \
823 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
827 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
829 echo "Error: Unknown driver '$drv' selected"
830 echo "Possible drivers are: $audio_possible_drivers"
836 oss|sdl|core|wav|dsound
)
837 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
843 ##########################################
846 if test -z "$brlapi" ; then
850 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
852 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev
/null
; then
854 fi # brlapi compile test
857 ##########################################
860 if test "$curses" = "yes" ; then
864 int main(void) { return curses_version(); }
866 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev
/null
; then
871 ##########################################
873 if test "$aio" = "yes" ; then
877 int main(void) { return aio_write(NULL); }
879 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev
/null
; then
884 # Check if tools are available to build documentation.
885 if [ -x "`which texi2html 2>/dev/null`" ] && \
886 [ -x "`which pod2man 2>/dev/null`" ]; then
890 if test "$mingw32" = "yes" ; then
891 if test -z "$prefix" ; then
892 prefix
="/c/Program Files/Qemu"
899 if test -z "$prefix" ; then
902 mansuffix
="/share/man"
903 datasuffix
="/share/qemu"
904 docsuffix
="/share/doc/qemu"
908 echo "Install prefix $prefix"
909 echo "BIOS directory $prefix$datasuffix"
910 echo "binary directory $prefix$binsuffix"
911 if test "$mingw32" = "no" ; then
912 echo "Manual directory $prefix$mansuffix"
913 echo "ELF interp prefix $interp_prefix"
915 echo "Source path $source_path"
916 echo "C compiler $cc"
917 echo "Host C compiler $host_cc"
918 echo "ARCH_CFLAGS $ARCH_CFLAGS"
920 echo "install $install"
922 echo "host big endian $bigendian"
923 echo "target list $target_list"
924 echo "gprof enabled $gprof"
925 echo "profiler $profiler"
926 echo "static build $static"
927 echo "-Werror enabled $werror"
928 if test "$darwin" = "yes" ; then
929 echo "Cocoa support $cocoa"
931 echo "SDL support $sdl"
932 if test "$sdl" != "no" ; then
933 echo "SDL static link $sdl_static"
935 echo "curses support $curses"
936 echo "mingw32 support $mingw32"
937 echo "Audio drivers $audio_drv_list"
938 echo "Extra audio cards $audio_card_list"
939 echo "Mixer emulation $mixemu"
940 echo "VNC TLS support $vnc_tls"
941 if test "$vnc_tls" = "yes" ; then
942 echo " TLS CFLAGS $vnc_tls_cflags"
943 echo " TLS LIBS $vnc_tls_libs"
945 if test -n "$sparc_cpu"; then
946 echo "Target Sparc Arch $sparc_cpu"
948 echo "kqemu support $kqemu"
949 echo "brlapi support $brlapi"
950 echo "Documentation $build_docs"
951 [ ! -z "$uname_release" ] && \
952 echo "uname -r $uname_release"
953 echo "NPTL support $nptl"
954 echo "vde support $vde"
955 echo "AIO support $aio"
957 if test $sdl_too_old = "yes"; then
958 echo "-> Your SDL version is too old - please upgrade to have SDL support"
960 if [ -s /tmp
/qemu-$$
-sdl-config.log
]; then
961 echo "The error log from compiling the libSDL test is: "
962 cat /tmp
/qemu-$$
-sdl-config.log
964 rm -f /tmp
/qemu-$$
-sdl-config.log
965 #if test "$sdl_static" = "no"; then
966 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
968 config_mak
="config-host.mak"
969 config_h
="config-host.h"
971 #echo "Creating $config_mak and $config_h"
973 test -f $config_h && mv $config_h ${config_h}~
975 echo "# Automatically generated by configure - do not modify" > $config_mak
976 echo "# Configured with: $0 $@" >> $config_mak
977 echo "/* Automatically generated by configure - do not modify */" > $config_h
979 echo "prefix=$prefix" >> $config_mak
980 echo "bindir=\${prefix}$binsuffix" >> $config_mak
981 echo "mandir=\${prefix}$mansuffix" >> $config_mak
982 echo "datadir=\${prefix}$datasuffix" >> $config_mak
983 echo "docdir=\${prefix}$docsuffix" >> $config_mak
984 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
985 echo "MAKE=$make" >> $config_mak
986 echo "INSTALL=$install" >> $config_mak
987 echo "CC=$cc" >> $config_mak
988 echo "HOST_CC=$host_cc" >> $config_mak
989 echo "AR=$ar" >> $config_mak
990 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
991 # XXX: only use CFLAGS and LDFLAGS ?
992 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
993 # compilation of dyngen tool (useful for win32 build on Linux host)
994 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
995 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
996 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
997 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
998 echo "CFLAGS=$CFLAGS" >> $config_mak
999 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1000 echo "EXESUF=$EXESUF" >> $config_mak
1001 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1004 echo "ARCH=i386" >> $config_mak
1005 echo "#define HOST_I386 1" >> $config_h
1008 echo "ARCH=x86_64" >> $config_mak
1009 echo "#define HOST_X86_64 1" >> $config_h
1012 echo "ARCH=alpha" >> $config_mak
1013 echo "#define HOST_ALPHA 1" >> $config_h
1016 echo "ARCH=arm" >> $config_mak
1017 echo "#define HOST_ARM 1" >> $config_h
1020 echo "ARCH=arm" >> $config_mak
1021 echo "#define HOST_ARM 1" >> $config_h
1024 echo "ARCH=cris" >> $config_mak
1025 echo "#define HOST_CRIS 1" >> $config_h
1028 echo "ARCH=hppa" >> $config_mak
1029 echo "#define HOST_HPPA 1" >> $config_h
1032 echo "ARCH=ia64" >> $config_mak
1033 echo "#define HOST_IA64 1" >> $config_h
1036 echo "ARCH=m68k" >> $config_mak
1037 echo "#define HOST_M68K 1" >> $config_h
1040 echo "ARCH=mips" >> $config_mak
1041 echo "#define HOST_MIPS 1" >> $config_h
1044 echo "ARCH=mips64" >> $config_mak
1045 echo "#define HOST_MIPS64 1" >> $config_h
1048 if test "$hostlongbits" = "32"; then
1049 echo "ARCH=ppc" >> $config_mak
1050 echo "#define HOST_PPC 1" >> $config_h
1052 echo "ARCH=ppc64" >> $config_mak
1053 echo "#define HOST_PPC64 1" >> $config_h
1057 echo "ARCH=s390" >> $config_mak
1058 echo "#define HOST_S390 1" >> $config_h
1061 echo "ARCH=sparc" >> $config_mak
1062 echo "#define HOST_SPARC 1" >> $config_h
1065 echo "ARCH=sparc64" >> $config_mak
1066 echo "#define HOST_SPARC64 1" >> $config_h
1069 echo "Unsupported CPU = $cpu"
1073 if test "$bigendian" = "yes" ; then
1074 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1075 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1077 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1078 if test "$mingw32" = "yes" ; then
1079 echo "CONFIG_WIN32=yes" >> $config_mak
1080 echo "#define CONFIG_WIN32 1" >> $config_h
1083 #include <byteswap.h>
1084 int main(void) { return bswap_32(0); }
1086 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev
/null
; then
1087 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1091 if [ "$openbsd" = "yes" ] ; then
1092 echo "#define ENOTSUP 4096" >> $config_h
1095 if test "$darwin" = "yes" ; then
1096 echo "CONFIG_DARWIN=yes" >> $config_mak
1097 echo "#define CONFIG_DARWIN 1" >> $config_h
1099 if test "$solaris" = "yes" ; then
1100 echo "CONFIG_SOLARIS=yes" >> $config_mak
1101 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1102 if test "$needs_libsunmath" = "yes" ; then
1103 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1104 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1107 if test -n "$sparc_cpu"; then
1108 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1109 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1111 if test "$gdbstub" = "yes" ; then
1112 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1113 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1115 if test "$gprof" = "yes" ; then
1116 echo "TARGET_GPROF=yes" >> $config_mak
1117 echo "#define HAVE_GPROF 1" >> $config_h
1119 if test "$static" = "yes" ; then
1120 echo "CONFIG_STATIC=yes" >> $config_mak
1121 echo "#define CONFIG_STATIC 1" >> $config_h
1123 if test $profiler = "yes" ; then
1124 echo "#define CONFIG_PROFILER 1" >> $config_h
1126 if test "$slirp" = "yes" ; then
1127 echo "CONFIG_SLIRP=yes" >> $config_mak
1128 echo "#define CONFIG_SLIRP 1" >> $config_h
1130 if test "$vde" = "yes" ; then
1131 echo "CONFIG_VDE=yes" >> $config_mak
1132 echo "#define CONFIG_VDE 1" >> $config_h
1133 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1135 for card
in $audio_card_list; do
1136 def
=CONFIG_
`echo $card | tr '[:lower:]' '[:upper:]'`
1137 echo "$def=yes" >> $config_mak
1138 echo "#define $def 1" >> $config_h
1140 echo "#define AUDIO_DRIVERS \\" >> $config_h
1141 for drv
in $audio_drv_list; do
1142 echo " &${drv}_audio_driver, \\" >>$config_h
1143 def
=CONFIG_
`echo $drv | tr '[:lower:]' '[:upper:]'`
1144 echo "$def=yes" >> $config_mak
1145 if test "$drv" = "fmod"; then
1146 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1147 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1151 if test "$mixemu" = "yes" ; then
1152 echo "CONFIG_MIXEMU=yes" >> $config_mak
1153 echo "#define CONFIG_MIXEMU 1" >> $config_h
1155 if test "$vnc_tls" = "yes" ; then
1156 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1157 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1158 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1159 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1161 qemu_version
=`head $source_path/VERSION`
1162 echo "VERSION=$qemu_version" >>$config_mak
1163 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1165 echo "SRC_PATH=$source_path" >> $config_mak
1166 if [ "$source_path_used" = "yes" ]; then
1167 echo "VPATH=$source_path" >> $config_mak
1169 echo "TARGET_DIRS=$target_list" >> $config_mak
1170 if [ "$build_docs" = "yes" ] ; then
1171 echo "BUILD_DOCS=yes" >> $config_mak
1173 if test "$static" = "yes"; then
1178 if test "$sdl1" = "yes" ; then
1179 echo "#define CONFIG_SDL 1" >> $config_h
1180 echo "CONFIG_SDL=yes" >> $config_mak
1181 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1182 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1184 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1186 if [ "${aa}" = "yes" ] ; then
1187 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1189 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1192 if test "$cocoa" = "yes" ; then
1193 echo "#define CONFIG_COCOA 1" >> $config_h
1194 echo "CONFIG_COCOA=yes" >> $config_mak
1196 if test "$curses" = "yes" ; then
1197 echo "#define CONFIG_CURSES 1" >> $config_h
1198 echo "CONFIG_CURSES=yes" >> $config_mak
1199 echo "CURSES_LIBS=-lcurses" >> $config_mak
1201 if test "$brlapi" = "yes" ; then
1202 echo "CONFIG_BRLAPI=yes" >> $config_mak
1203 echo "#define CONFIG_BRLAPI 1" >> $config_h
1204 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1206 if test "$aio" = "yes" ; then
1207 echo "#define CONFIG_AIO 1" >> $config_h
1210 # XXX: suppress that
1211 if [ "$bsd" = "yes" ] ; then
1212 echo "#define O_LARGEFILE 0" >> $config_h
1213 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1214 echo "#define _BSD 1" >> $config_h
1217 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1220 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1221 tools
="qemu-img\$(EXESUF) $tools"
1222 if [ "$linux" = "yes" ] ; then
1223 tools
="qemu-nbd\$(EXESUF) $tools"
1226 echo "TOOLS=$tools" >> $config_mak
1228 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1230 for target
in $target_list; do
1231 target_dir
="$target"
1232 config_mak
=$target_dir/config.mak
1233 config_h
=$target_dir/config.h
1234 target_cpu
=`echo $target | cut -d '-' -f 1`
1235 target_bigendian
="no"
1236 [ "$target_cpu" = "armeb" ] && target_bigendian
=yes
1237 [ "$target_cpu" = "m68k" ] && target_bigendian
=yes
1238 [ "$target_cpu" = "mips" ] && target_bigendian
=yes
1239 [ "$target_cpu" = "mipsn32" ] && target_bigendian
=yes
1240 [ "$target_cpu" = "mips64" ] && target_bigendian
=yes
1241 [ "$target_cpu" = "ppc" ] && target_bigendian
=yes
1242 [ "$target_cpu" = "ppcemb" ] && target_bigendian
=yes
1243 [ "$target_cpu" = "ppc64" ] && target_bigendian
=yes
1244 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian
=yes
1245 [ "$target_cpu" = "sh4eb" ] && target_bigendian
=yes
1246 [ "$target_cpu" = "sparc" ] && target_bigendian
=yes
1247 [ "$target_cpu" = "sparc64" ] && target_bigendian
=yes
1248 [ "$target_cpu" = "sparc32plus" ] && target_bigendian
=yes
1250 target_user_only
="no"
1251 target_linux_user
="no"
1252 target_darwin_user
="no"
1254 ${target_cpu}-softmmu)
1255 target_softmmu
="yes"
1257 ${target_cpu}-linux-user)
1258 target_user_only
="yes"
1259 target_linux_user
="yes"
1261 ${target_cpu}-darwin-user)
1262 target_user_only
="yes"
1263 target_darwin_user
="yes"
1266 echo "ERROR: Target '$target' not recognised"
1271 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1272 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1273 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1274 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1275 echo "Note that this will disable all output from the virtual graphics card"
1276 echo "except through VNC or curses."
1280 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1282 test -f $config_h && mv $config_h ${config_h}~
1284 mkdir
-p $target_dir
1285 mkdir
-p $target_dir/fpu
1286 mkdir
-p $target_dir/tcg
1287 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1288 mkdir
-p $target_dir/nwfpe
1292 # don't use ln -sf as not all "ln -sf" over write the file/link
1294 rm -f $target_dir/Makefile
1295 ln -s $source_path/Makefile.target
$target_dir/Makefile
1298 echo "# Automatically generated by configure - do not modify" > $config_mak
1299 echo "/* Automatically generated by configure - do not modify */" > $config_h
1302 echo "include ../config-host.mak" >> $config_mak
1303 echo "#include \"../config-host.h\"" >> $config_h
1308 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1309 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1311 case "$target_cpu" in
1313 echo "TARGET_ARCH=i386" >> $config_mak
1314 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1315 echo "#define TARGET_I386 1" >> $config_h
1316 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1318 echo "#define USE_KQEMU 1" >> $config_h
1320 gcc3minver
=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1321 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1323 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1325 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1329 echo "TARGET_ARCH=x86_64" >> $config_mak
1330 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1331 echo "#define TARGET_I386 1" >> $config_h
1332 echo "#define TARGET_X86_64 1" >> $config_h
1333 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1335 echo "#define USE_KQEMU 1" >> $config_h
1339 echo "TARGET_ARCH=alpha" >> $config_mak
1340 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1341 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1342 echo "#define TARGET_ALPHA 1" >> $config_h
1343 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1346 echo "TARGET_ARCH=arm" >> $config_mak
1347 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1348 echo "#define TARGET_ARM 1" >> $config_h
1353 echo "TARGET_ARCH=cris" >> $config_mak
1354 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1355 echo "#define TARGET_CRIS 1" >> $config_h
1358 echo "TARGET_ARCH=m68k" >> $config_mak
1359 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1360 echo "#define TARGET_M68K 1" >> $config_h
1364 echo "TARGET_ARCH=mips" >> $config_mak
1365 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1366 echo "#define TARGET_MIPS 1" >> $config_h
1367 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1370 echo "TARGET_ARCH=mipsn32" >> $config_mak
1371 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1372 echo "#define TARGET_MIPS 1" >> $config_h
1373 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1376 echo "TARGET_ARCH=mips64" >> $config_mak
1377 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1378 echo "#define TARGET_MIPS 1" >> $config_h
1379 echo "#define TARGET_MIPS64 1" >> $config_h
1380 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1383 echo "TARGET_ARCH=ppc" >> $config_mak
1384 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1385 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1386 echo "#define TARGET_PPC 1" >> $config_h
1387 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1390 echo "TARGET_ARCH=ppcemb" >> $config_mak
1391 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1392 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1393 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1394 echo "#define TARGET_PPC 1" >> $config_h
1395 echo "#define TARGET_PPCEMB 1" >> $config_h
1396 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1399 echo "TARGET_ARCH=ppc64" >> $config_mak
1400 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1401 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1402 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1403 echo "#define TARGET_PPC 1" >> $config_h
1404 echo "#define TARGET_PPC64 1" >> $config_h
1405 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1408 echo "TARGET_ARCH=ppc64" >> $config_mak
1409 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1410 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1411 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1412 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1413 echo "#define TARGET_PPC 1" >> $config_h
1414 echo "#define TARGET_PPC64 1" >> $config_h
1415 echo "#define TARGET_ABI32 1" >> $config_h
1416 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1419 echo "TARGET_ARCH=sh4" >> $config_mak
1420 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1421 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1422 echo "#define TARGET_SH4 1" >> $config_h
1423 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1427 echo "TARGET_ARCH=sparc" >> $config_mak
1428 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1429 echo "#define TARGET_SPARC 1" >> $config_h
1432 echo "TARGET_ARCH=sparc64" >> $config_mak
1433 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1434 echo "#define TARGET_SPARC 1" >> $config_h
1435 echo "#define TARGET_SPARC64 1" >> $config_h
1439 echo "TARGET_ARCH=sparc64" >> $config_mak
1440 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1441 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1442 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1443 echo "#define TARGET_SPARC 1" >> $config_h
1444 echo "#define TARGET_SPARC64 1" >> $config_h
1445 echo "#define TARGET_ABI32 1" >> $config_h
1448 echo "Unsupported target CPU"
1452 if test "$target_bigendian" = "yes" ; then
1453 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1454 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1456 if test "$target_softmmu" = "yes" ; then
1457 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1458 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1460 if test "$target_user_only" = "yes" ; then
1461 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1462 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1464 if test "$target_linux_user" = "yes" ; then
1465 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1466 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1468 if test "$target_darwin_user" = "yes" ; then
1469 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1470 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1473 if test "$target_cpu" = "arm" \
1474 -o "$target_cpu" = "armeb" \
1475 -o "$target_cpu" = "m68k" \
1476 -o "$target_cpu" = "mips" \
1477 -o "$target_cpu" = "mipsel" \
1478 -o "$target_cpu" = "mipsn32" \
1479 -o "$target_cpu" = "mipsn32el" \
1480 -o "$target_cpu" = "mips64" \
1481 -o "$target_cpu" = "mips64el" \
1482 -o "$target_cpu" = "sparc" \
1483 -o "$target_cpu" = "sparc64" \
1484 -o "$target_cpu" = "sparc32plus"; then
1485 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1486 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1488 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1489 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1490 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1492 if test "$target_user_only" = "yes" \
1493 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1494 echo "#define USE_NPTL 1" >> $config_h
1496 # 32 bit ELF loader in addition to native 64 bit loader?
1497 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1498 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1499 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1502 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~
$config_h
1504 done # for target in $targets
1506 # build tree in object directory if source path is different from current one
1507 if test "$source_path_used" = "yes" ; then
1508 DIRS
="tests tests/cris slirp audio"
1509 FILES
="Makefile tests/Makefile"
1510 FILES
="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1511 FILES
="$FILES tests/test-mmap.c"
1512 for dir
in $DIRS ; do
1515 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1516 for f
in $FILES ; do
1518 ln -s $source_path/$f $f
1522 rm -f $TMPO $TMPC $TMPE $TMPS