提交 d880a3ba 编写于 作者: P Paolo Bonzini

configure: early test for supported targets

Check for unsupported targets in target_list, and print an
error early in the configuration process.
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
上级 3b6b7550
...@@ -40,14 +40,18 @@ printf " '%s'" "$0" "$@" >> config.log ...@@ -40,14 +40,18 @@ printf " '%s'" "$0" "$@" >> config.log
echo >> config.log echo >> config.log
echo "#" >> config.log echo "#" >> config.log
error_exit() { print_error() {
echo (echo
echo "ERROR: $1" echo "ERROR: $1"
while test -n "$2"; do while test -n "$2"; do
echo " $2" echo " $2"
shift shift
done done
echo echo) >&2
}
error_exit() {
print_error "$@"
exit 1 exit 1
} }
...@@ -207,6 +211,30 @@ supported_xen_target() { ...@@ -207,6 +211,30 @@ supported_xen_target() {
return 1 return 1
} }
supported_target() {
case "$1" in
*-softmmu)
;;
*-linux-user)
if test "$linux" != "yes"; then
print_error "Target '$target' is only available on a Linux host"
return 1
fi
;;
*-bsd-user)
if test "$bsd" != "yes"; then
print_error "Target '$target' is only available on a BSD host"
return 1
fi
;;
*)
print_error "Invalid target name '$target'"
return 1
;;
esac
return 0
}
# default parameters # default parameters
source_path=$(dirname "$0") source_path=$(dirname "$0")
cpu="" cpu=""
...@@ -1734,23 +1762,27 @@ if test "$solaris" = "yes" ; then ...@@ -1734,23 +1762,27 @@ if test "$solaris" = "yes" ; then
fi fi
if test -z "${target_list+xxx}" ; then if test -z "${target_list+xxx}" ; then
target_list="$default_target_list" for target in $default_target_list; do
supported_target $target 2>/dev/null && \
target_list="$target_list $target"
done
target_list="${target_list# }"
else else
target_list=$(echo "$target_list" | sed -e 's/,/ /g') target_list=$(echo "$target_list" | sed -e 's/,/ /g')
for target in $target_list; do
# Check that we recognised the target name; this allows a more
# friendly error message than if we let it fall through.
case " $default_target_list " in
*" $target "*)
;;
*)
error_exit "Unknown target name '$target'"
;;
esac
supported_target $target || exit 1
done
fi fi
# Check that we recognised the target name; this allows a more
# friendly error message than if we let it fall through.
for target in $target_list; do
case " $default_target_list " in
*" $target "*)
;;
*)
error_exit "Unknown target name '$target'"
;;
esac
done
# see if system emulation was really requested # see if system emulation was really requested
case " $target_list " in case " $target_list " in
*"-softmmu "*) softmmu=yes *"-softmmu "*) softmmu=yes
...@@ -6050,16 +6082,10 @@ case "$target" in ...@@ -6050,16 +6082,10 @@ case "$target" in
target_softmmu="yes" target_softmmu="yes"
;; ;;
${target_name}-linux-user) ${target_name}-linux-user)
if test "$linux" != "yes" ; then
error_exit "Target '$target' is only available on a Linux host"
fi
target_user_only="yes" target_user_only="yes"
target_linux_user="yes" target_linux_user="yes"
;; ;;
${target_name}-bsd-user) ${target_name}-bsd-user)
if test "$bsd" != "yes" ; then
error_exit "Target '$target' is only available on a BSD host"
fi
target_user_only="yes" target_user_only="yes"
target_bsd_user="yes" target_bsd_user="yes"
;; ;;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册