Commit 3b6b7550 authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

configure: factor out list of supported Xen/KVM/HAX targets



This will be useful when the functions are called, early in the configure
process, to filter out targets that do not support hardware acceleration.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent ee29bdb6
Loading
Loading
Loading
Loading
+55 −35
Original line number Diff line number Diff line
@@ -163,6 +163,50 @@ have_backend () {
    echo "$trace_backends" | grep "$1" >/dev/null
}

glob() {
    eval test -z '"${1#'"$2"'}"'
}

supported_hax_target() {
    test "$hax" = "yes" || return 1
    glob "$1" "*-softmmu" || return 1
    case "${1%-softmmu}" in
        i386|x86_64)
            return 0
        ;;
    esac
    return 1
}

supported_kvm_target() {
    test "$kvm" = "yes" || return 1
    glob "$1" "*-softmmu" || return 1
    case "${1%-softmmu}:$cpu" in
        arm:arm | aarch64:aarch64 | \
        i386:i386 | i386:x86_64 | i386:x32 | \
        x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \
        mips:mips | mipsel:mips | \
        ppc:ppc | ppcemb:ppc | ppc64:ppc | \
        ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \
        s390x:s390x)
            return 0
        ;;
    esac
    return 1
}

supported_xen_target() {
    test "$xen" = "yes" || return 1
    glob "$1" "*-softmmu" || return 1
    case "${1%-softmmu}:$cpu" in
        arm:arm | aarch64:aarch64 | \
        i386:i386 | i386:x86_64 | x86_64:i386 | x86_64:x86_64)
            return 0
        ;;
    esac
    return 1
}

# default parameters
source_path=$(dirname "$0")
cpu=""
@@ -6178,46 +6222,22 @@ echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
if [ "$HOST_VARIANT_DIR" != "" ]; then
    echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
fi
case "$target_name" in
  i386|x86_64)
    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then

if supported_xen_target $target; then
    echo "CONFIG_XEN=y" >> $config_target_mak
    if test "$xen_pci_passthrough" = yes; then
        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
    fi
fi
    ;;
  *)
esac
case "$target_name" in
  aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
    # Make sure the target and host cpus are compatible
    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
      \( "$target_name" = "$cpu" -o \
      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
      \( "$target_name" = "ppc64"  -a "$cpu" = "ppc" \) -o \
      \( "$target_name" = "ppc"    -a "$cpu" = "ppc64" \) -o \
      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
      \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
      \( "$target_name" = "x86_64" -a "$cpu" = "i386"   \) -o \
      \( "$target_name" = "i386"   -a "$cpu" = "x86_64" \) -o \
      \( "$target_name" = "x86_64" -a "$cpu" = "x32"   \) -o \
      \( "$target_name" = "i386"   -a "$cpu" = "x32" \) \) ; then
if supported_kvm_target $target; then
    echo "CONFIG_KVM=y" >> $config_target_mak
    if test "$vhost_net" = "yes" ; then
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
        echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
    fi
fi
esac
if test "$hax" = "yes" ; then
  if test "$target_softmmu" = "yes" ; then
    case "$target_name" in
    i386|x86_64)
if supported_hax_target $target; then
    echo "CONFIG_HAX=y" >> $config_target_mak
    ;;
    esac
  fi
fi
if test "$target_bigendian" = "yes" ; then
  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak