X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/72fe3aaed94936739abfa158fa28f147b75ae9ff..49ac9e0a8cfb737d6da9c0b056c062e3dec0ba45:/configure diff --git a/configure b/configure index e05f34b9c0..e50ad0bb8f 100755 --- a/configure +++ b/configure @@ -41,8 +41,8 @@ compile_prog() { # symbolically link $1 to $2. Portable version of "ln -sf". symlink() { - rm -f $2 - ln -s $1 $2 + rm -rf "$2" + ln -s "$1" "$2" } # check whether a command is available to this shell (may be either an @@ -155,8 +155,8 @@ mingw32="no" EXESUF="" prefix="/usr/local" mandir="\${prefix}/share/man" -datadir="\${prefix}/share/qemu" -docdir="\${prefix}/share/doc/qemu" +datadir="\${prefix}/share" +qemu_docdir="\${prefix}/share/doc/qemu" bindir="\${prefix}/bin" libdir="\${prefix}/lib" includedir="\${prefix}/include" @@ -173,7 +173,6 @@ profiler="no" cocoa="no" softmmu="yes" linux_user="no" -darwin_user="no" bsd_user="no" guest_base="" uname_release="" @@ -424,7 +423,6 @@ Darwin) else QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS" fi - darwin_user="yes" cocoa="yes" audio_drv_list="coreaudio" audio_possible_drivers="coreaudio sdl fmod" @@ -470,7 +468,9 @@ SunOS) # needed for TIOCWIN* defines in termios.h QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" - LIBS="-lsocket -lnsl -lresolv $LIBS" + solarisnetlibs="-lsocket -lnsl -lresolv" + LIBS="$solarisnetlibs $LIBS" + libs_qga="$solarisnetlibs $libs_qga" ;; AIX) aix="yes" @@ -498,8 +498,8 @@ esac if [ "$bsd" = "yes" ] ; then if [ "$darwin" != "yes" ] ; then usb="bsd" + bsd_user="yes" fi - bsd_user="yes" fi : ${make=${MAKE-make}} @@ -522,7 +522,7 @@ EOF prefix="c:/Program Files/QEMU" mandir="\${prefix}" datadir="\${prefix}" - docdir="\${prefix}" + qemu_docdir="\${prefix}" bindir="\${prefix}" sysconfdir="\${prefix}" confsuffix="" @@ -591,7 +591,9 @@ for opt do ;; --datadir=*) datadir="$optarg" ;; - --docdir=*) docdir="$optarg" + --with-confsuffix=*) confsuffix="$optarg" + ;; + --docdir=*) qemu_docdir="$optarg" ;; --sysconfdir=*) sysconfdir="$optarg" ;; @@ -712,6 +714,8 @@ for opt do ;; --enable-profiler) profiler="yes" ;; + --disable-cocoa) cocoa="no" + ;; --enable-cocoa) cocoa="yes" ; sdl="no" ; @@ -724,17 +728,12 @@ for opt do --disable-user) linux_user="no" ; bsd_user="no" ; - darwin_user="no" ;; --enable-user) ;; --disable-linux-user) linux_user="no" ;; --enable-linux-user) linux_user="yes" ;; - --disable-darwin-user) darwin_user="no" - ;; - --enable-darwin-user) darwin_user="yes" - ;; --disable-bsd-user) bsd_user="no" ;; --enable-bsd-user) bsd_user="yes" @@ -963,10 +962,6 @@ unicore32-linux-user \ s390x-linux-user \ " fi -# the following are Darwin specific -if [ "$darwin_user" = "yes" ] ; then - default_target_list="$default_target_list i386-darwin-user ppc-darwin-user " -fi # the following are BSD specific if [ "$bsd_user" = "yes" ] ; then default_target_list="${default_target_list}\ @@ -1007,10 +1002,11 @@ echo " --python=PYTHON use specified python [$python]" echo " --smbd=SMBD use specified smbd [$smbd]" echo " --static enable static build [$static]" echo " --mandir=PATH install man pages in PATH" -echo " --datadir=PATH install firmware in PATH" -echo " --docdir=PATH install documentation in PATH" +echo " --datadir=PATH install firmware in PATH$confsuffix" +echo " --docdir=PATH install documentation in PATH$confsuffix" echo " --bindir=PATH install binaries in PATH" -echo " --sysconfdir=PATH install config in PATH/qemu" +echo " --sysconfdir=PATH install config in PATH$confsuffix" +echo " --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and sysconfdir [$confsuffix]" echo " --enable-debug-tcg enable TCG debugging" echo " --disable-debug-tcg disable TCG debugging (default)" echo " --enable-debug enable common debug build options" @@ -1024,7 +1020,8 @@ echo " --disable-virtfs disable VirtFS" echo " --enable-virtfs enable VirtFS" echo " --disable-vnc disable VNC" echo " --enable-vnc enable VNC" -echo " --enable-cocoa enable COCOA (Mac OS X only)" +echo " --disable-cocoa disable Cocoa (Mac OS X only)" +echo " --enable-cocoa enable Cocoa (default on Mac OS X)" echo " --audio-drv-list=LIST set audio drivers list:" echo " Available drivers: $audio_possible_drivers" echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]" @@ -1066,8 +1063,6 @@ echo " --enable-user enable supported user emulation targets" echo " --disable-user disable all user emulation targets" echo " --enable-linux-user enable all linux usermode emulation targets" echo " --disable-linux-user disable all linux usermode emulation targets" -echo " --enable-darwin-user enable all darwin usermode emulation targets" -echo " --disable-darwin-user disable all darwin usermode emulation targets" echo " --enable-bsd-user enable all BSD usermode emulation targets" echo " --disable-bsd-user disable all BSD usermode emulation targets" echo " --enable-guest-base enable GUEST_BASE support for usermode" @@ -1097,7 +1092,7 @@ echo " --disable-docs disable documentation build" echo " --disable-vhost-net disable vhost-net acceleration support" echo " --enable-vhost-net enable vhost-net acceleration support" echo " --enable-trace-backend=B Set trace backend" -echo " Available backends:" $("$source_path"/scripts/tracetool --list-backends) +echo " Available backends:" $($python "$source_path"/scripts/tracetool.py --list-backends) echo " --with-trace-file=NAME Full PATH,NAME of file to store traces" echo " Default:trace-" echo " --disable-spice disable spice" @@ -1242,6 +1237,15 @@ if ! has $python; then exit 1 fi +# Note that if the Python conditional here evaluates True we will exit +# with status 1 which is a shell 'false' value. +if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then + echo "Cannot use '$python', Python 2.4 or later is required." + echo "Note that Python 3 or later is not yet supported." + echo "Use --python=/path/to/python to specify a supported Python." + exit 1 +fi + if test -z "$target_list" ; then target_list="$default_target_list" else @@ -1383,6 +1387,31 @@ EOF #if !defined(HVM_MAX_VCPUS) # error HVM_MAX_VCPUS not defined #endif +int main(void) { + xc_interface *xc; + xs_daemon_open(); + xc = xc_interface_open(0, 0, 0); + xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); + xc_gnttab_open(NULL, 0); + xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); + xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); + return 0; +} +EOF + compile_prog "" "$xen_libs" + ) ; then + xen_ctrl_version=420 + xen=yes + + elif ( + cat > $TMPC < +#include +#include +#include +#if !defined(HVM_MAX_VCPUS) +# error HVM_MAX_VCPUS not defined +#endif int main(void) { xc_interface *xc; xs_daemon_open(); @@ -1847,9 +1876,9 @@ for drv in $audio_drv_list; do ;; pa) - audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \ - "pa_simple *s = 0; pa_simple_free(s); return 0;" - libs_softmmu="-lpulse -lpulse-simple $libs_softmmu" + audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ + "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" + libs_softmmu="-lpulse $libs_softmmu" audio_pt_int="yes" ;; @@ -2047,7 +2076,16 @@ else for pthread_lib in $PTHREADLIBS_LIST; do if compile_prog "" "$pthread_lib" ; then pthread=yes - LIBS="$pthread_lib $LIBS" + found=no + for lib_entry in $LIBS; do + if test "$lib_entry" = "$pthread_lib"; then + found=yes + break + fi + done + if test "$found" = "no"; then + LIBS="$pthread_lib $LIBS" + fi break fi done @@ -2369,7 +2407,7 @@ int main(void) return 0; } EOF -if compile_prog "$ARCH_CFLAGS" "" ; then +if compile_prog "" "" ; then fallocate=yes fi @@ -2384,7 +2422,7 @@ int main(void) return 0; } EOF -if compile_prog "$ARCH_CFLAGS" "" ; then +if compile_prog "" "" ; then sync_file_range=yes fi @@ -2401,7 +2439,7 @@ int main(void) return 0; } EOF -if compile_prog "$ARCH_CFLAGS" "" ; then +if compile_prog "" "" ; then fiemap=yes fi @@ -2431,7 +2469,7 @@ int main(void) return 0; } EOF -if compile_prog "$ARCH_CFLAGS" "" ; then +if compile_prog "" "" ; then epoll=yes fi @@ -2454,7 +2492,7 @@ int main(void) return epoll_create1 == epoll_create1; } EOF -if compile_prog "$ARCH_CFLAGS" "" ; then +if compile_prog "" "" ; then epoll_create1=yes fi @@ -2468,7 +2506,7 @@ int main(void) return 0; } EOF -if compile_prog "$ARCH_CFLAGS" "" ; then +if compile_prog "" "" ; then epoll_pwait=yes fi @@ -2508,10 +2546,13 @@ fi ########################################## # Do we have libiscsi +# We check for iscsi_unmap_sync() to make sure we have a +# recent enough version of libiscsi. if test "$libiscsi" != "no" ; then cat > $TMPC << EOF +#include #include -int main(void) { iscsi_create_context(""); return 0; } +int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; } EOF if compile_prog "-Werror" "-liscsi" ; then libiscsi="yes" @@ -2554,6 +2595,7 @@ EOF spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) if $pkg_config --atleast-version=0.8.2 spice-server >/dev/null 2>&1 && \ + $pkg_config --atleast-version=0.8.1 spice-protocol > /dev/null 2>&1 && \ compile_prog "$spice_cflags" "$spice_libs" ; then spice="yes" libs_softmmu="$libs_softmmu $spice_libs" @@ -2624,7 +2666,7 @@ int main(void) { #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 return fdatasync(0); #else -#abort Not supported +#error Not supported #endif } EOF @@ -2662,7 +2704,7 @@ fi ########################################## # check if trace backend exists -sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null +$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend > /dev/null 2> /dev/null if test "$?" -ne 0 ; then echo echo "Error: invalid trace backend" @@ -2789,6 +2831,21 @@ if compile_prog "" "" ; then linux_magic_h=yes fi +######################################## +# check if environ is declared + +has_environ=no +cat > $TMPC << EOF +#include +int main(void) { + environ = environ; + return 0; +} +EOF +if compile_prog "" "" ; then + has_environ=yes +fi + ########################################## # End of CC checks # After here, no more $cc or $ld runs @@ -2846,20 +2903,22 @@ if test "$mingw32" = "yes" ; then done fi -confdir=$sysconfdir$confsuffix +qemu_confdir=$sysconfdir$confsuffix +qemu_datadir=$datadir$confsuffix tools= if test "$softmmu" = yes ; then tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" if test "$virtfs" != no ; then - if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then - virtfs=yes - tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" - else - if test "$virtfs" = yes; then - feature_not_found "virtfs" - fi + if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then + virtfs=yes + tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" + else + if test "$virtfs" = yes; then + feature_not_found "virtfs" fi + virtfs=no + fi fi if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then tools="qemu-nbd\$(EXESUF) $tools" @@ -2881,7 +2940,7 @@ if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then fi echo "Install prefix $prefix" -echo "BIOS directory `eval echo $datadir`" +echo "BIOS directory `eval echo $qemu_datadir`" echo "binary directory `eval echo $bindir`" echo "library directory `eval echo $libdir`" echo "include directory `eval echo $includedir`" @@ -2989,12 +3048,11 @@ echo "bindir=$bindir" >> $config_host_mak echo "libdir=$libdir" >> $config_host_mak echo "includedir=$includedir" >> $config_host_mak echo "mandir=$mandir" >> $config_host_mak -echo "datadir=$datadir" >> $config_host_mak echo "sysconfdir=$sysconfdir" >> $config_host_mak -echo "docdir=$docdir" >> $config_host_mak -echo "confdir=$confdir" >> $config_host_mak +echo "qemu_confdir=$qemu_confdir" >> $config_host_mak +echo "qemu_datadir=$qemu_datadir" >> $config_host_mak +echo "qemu_docdir=$qemu_docdir" >> $config_host_mak echo "libexecdir=\${prefix}/libexec" >> $config_host_mak -echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak echo "CONFIG_QEMU_HELPERDIR=\"$prefix/libexec\"" >> $config_host_mak echo "ARCH=$ARCH" >> $config_host_mak @@ -3299,6 +3357,10 @@ if test "$linux_magic_h" = "yes" ; then echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak fi +if test "$has_environ" = "yes" ; then + echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak +fi + # USB host support case "$usb" in linux) @@ -3390,7 +3452,7 @@ fi for d in libdis libdis-user; do mkdir -p $d - symlink $source_path/Makefile.dis $d/Makefile + symlink "$source_path/Makefile.dis" "$d/Makefile" echo > $d/config.mak done @@ -3399,13 +3461,13 @@ if test "$linux" = "yes" ; then mkdir -p linux-headers case "$cpu" in i386|x86_64) - symlink $source_path/linux-headers/asm-x86 linux-headers/asm + symlink "$source_path/linux-headers/asm-x86" linux-headers/asm ;; ppcemb|ppc|ppc64) - symlink $source_path/linux-headers/asm-powerpc linux-headers/asm + symlink "$source_path/linux-headers/asm-powerpc" linux-headers/asm ;; s390x) - symlink $source_path/linux-headers/asm-s390 linux-headers/asm + symlink "$source_path/linux-headers/asm-s390" linux-headers/asm ;; esac fi @@ -3424,7 +3486,6 @@ esac target_softmmu="no" target_user_only="no" target_linux_user="no" -target_darwin_user="no" target_bsd_user="no" case "$target" in ${target_arch2}-softmmu) @@ -3438,14 +3499,6 @@ case "$target" in target_user_only="yes" target_linux_user="yes" ;; - ${target_arch2}-darwin-user) - if test "$darwin" != "yes" ; then - echo "ERROR: Target '$target' is only available on a Darwin host" - exit 1 - fi - target_user_only="yes" - target_darwin_user="yes" - ;; ${target_arch2}-bsd-user) if test "$bsd" != "yes" ; then echo "ERROR: Target '$target' is only available on a BSD host" @@ -3461,18 +3514,6 @@ case "$target" in esac mkdir -p $target_dir -mkdir -p $target_dir/fpu -mkdir -p $target_dir/tcg -mkdir -p $target_dir/ide -mkdir -p $target_dir/usb -mkdir -p $target_dir/9pfs -mkdir -p $target_dir/kvm -if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then - mkdir -p $target_dir/nwfpe -fi -symlink $source_path/Makefile.target $target_dir/Makefile - - echo "# Automatically generated by configure - do not modify" > $config_target_mak bflt="no" @@ -3623,6 +3664,33 @@ case "$target_arch2" in exit 1 ;; esac +# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH +if [ "$TARGET_BASE_ARCH" = "" ]; then + TARGET_BASE_ARCH=$TARGET_ARCH +fi + +mkdir -p $target_dir/fpu +mkdir -p $target_dir/tcg +mkdir -p $target_dir/9pfs +mkdir -p $target_dir/hw +mkdir -p $target_dir/hw/ide +mkdir -p $target_dir/hw/usb +mkdir -p $target_dir/hw/9pfs +mkdir -p $target_dir/hw/kvm +mkdir -p $target_dir/hw/$TARGET_ARCH +mkdir -p $target_dir/hw/$TARGET_BASE_ARCH +mkdir -p $target_dir/target-$TARGET_BASE_ARCH +if test "$target_linux_user" = yes; then + mkdir -p $target_dir/linux-user +fi +if test "$target_bsd_user" = yes; then + mkdir -p $target_dir/bsd-user +fi +if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then + mkdir -p $target_dir/linux-user/arm/nwfpe +fi +symlink "$source_path/Makefile.target" "$target_dir/Makefile" + case "$target_arch2" in alpha | sparc*) @@ -3638,10 +3706,6 @@ echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak target_arch_name="`echo $TARGET_ARCH | LC_ALL=C tr '[a-z]' '[A-Z]'`" echo "TARGET_$target_arch_name=y" >> $config_target_mak echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak -# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH -if [ "$TARGET_BASE_ARCH" = "" ]; then - TARGET_BASE_ARCH=$TARGET_ARCH -fi echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak if [ "$TARGET_ABI_DIR" = "" ]; then TARGET_ABI_DIR=$TARGET_ARCH @@ -3676,6 +3740,10 @@ case "$target_arch2" in fi fi esac +case "$target_arch2" in + i386|x86_64) + echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak +esac if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then echo "CONFIG_PSERIES=y" >> $config_target_mak fi @@ -3691,6 +3759,10 @@ if test "$target_softmmu" = "yes" ; then if test "$smartcard_nss" = "yes" ; then echo "subdir-$target: subdir-libcacard" >> $config_host_mak fi + case "$target_arch2" in + i386|x86_64) + echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak + esac fi if test "$target_user_only" = "yes" ; then echo "CONFIG_USER_ONLY=y" >> $config_target_mak @@ -3699,9 +3771,6 @@ fi if test "$target_linux_user" = "yes" ; then echo "CONFIG_LINUX_USER=y" >> $config_target_mak fi -if test "$target_darwin_user" = "yes" ; then - echo "CONFIG_DARWIN_USER=y" >> $config_target_mak -fi list="" if test ! -z "$gdb_xml_files" ; then for x in $gdb_xml_files; do @@ -3843,12 +3912,6 @@ if test "$target_softmmu" = "yes" ; then esac fi -if test "$target_softmmu" = "yes" -a \( \ - "$TARGET_ARCH" = "microblaze" -o \ - "$TARGET_ARCH" = "cris" \) ; then - echo "CONFIG_NEED_MMU=y" >> $config_target_mak -fi - if test "$gprof" = "yes" ; then echo "TARGET_GPROF=yes" >> $config_target_mak if test "$target_linux_user" = "yes" ; then @@ -3893,7 +3956,7 @@ DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32" DIRS="$DIRS slirp audio block net pc-bios/optionrom" DIRS="$DIRS pc-bios/spapr-rtas" DIRS="$DIRS roms/seabios roms/vgabios" -DIRS="$DIRS fsdev ui usb" +DIRS="$DIRS fsdev ui hw hw/usb" DIRS="$DIRS qapi qapi-generated" DIRS="$DIRS qga trace qom" FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" @@ -3913,7 +3976,7 @@ do done mkdir -p $DIRS for f in $FILES ; do - if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then + if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then symlink "$source_path/$f" "$f" fi done @@ -3934,17 +3997,17 @@ done for hwlib in 32 64; do d=libhw$hwlib mkdir -p $d - mkdir -p $d/ide - mkdir -p $d/usb - symlink $source_path/Makefile.hw $d/Makefile - mkdir -p $d/9pfs + mkdir -p $d/hw + mkdir -p $d/hw/ide + mkdir -p $d/hw/usb + symlink "$source_path/Makefile.hw" "$d/Makefile" + mkdir -p $d/hw/9pfs echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak done if [ "$source_path" != `pwd` ]; then # out of tree build mkdir -p libcacard - rm -f libcacard/Makefile symlink "$source_path/libcacard/Makefile" libcacard/Makefile fi @@ -3952,7 +4015,7 @@ d=libuser mkdir -p $d mkdir -p $d/trace mkdir -p $d/qom -symlink $source_path/Makefile.user $d/Makefile +symlink "$source_path/Makefile.user" "$d/Makefile" if test "$docs" = "yes" ; then mkdir -p QMP