configure: give check_for() the ability to test several item types at once

Currently, check_for() can only test one of prog, inc or lib at once. This patch
removes this limitation.

Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
This commit is contained in:
Benoît THÉBAUDEAU" 2011-06-08 15:47:03 +02:00
parent fa8cf23b2e
commit c890ff476c

132
configure vendored
View File

@ -127,75 +127,94 @@ check_for() {
prog=*|inc=*|lib=*|var=*|ver=*|err=*|kconfig=*) prog=*|inc=*|lib=*|var=*|ver=*|err=*|kconfig=*)
eval ${item%%=*}=\"${item#*=}\" eval ${item%%=*}=\"${item#*=}\"
;; ;;
*) do_error "has_or_abort: incorrect parameters: '$@'";; *) do_error "check_for: incorrect parameters: '$@'";;
esac esac
done done
case "${prog}:${inc}:${lib}" in
?*:?*:|?*::?*|:?*:?*|?*:?*:?*)
if [ -n "${var}" ]; then
do_error "check_for: the use of var is not compatible with passing several of [prog|inc|lib] at once"
fi
;;
::) do_error "check_for: [prog|inc|lib] is mandatory";;
esac
if [ -n "${kconfig}" ]; then if [ -n "${kconfig}" ]; then
add_to_kconfig_list "${kconfig}" add_to_kconfig_list "${kconfig}"
fi fi
case "${prog}:${inc}:${lib}" in if [ -n "${prog}" ]; then
?*::) for item in ${prog}; do
for item in ${prog}; do printf "Checking for '${item}'... "
printf "Checking for '${item}'... " if [ -n "${var}" ]; then
if [ -n "${var}" ]; then eval val="\${${var}}"
eval val="\${${var}}" if [ -n "${val}" ]; then
if [ -n "${val}" ]; then printf "${val} (cached)\n"
printf "${val} (cached)\n" add_to_var_list "${var}"
add_to_var_list "${var}" return 0
return 0
fi
fi fi
where="$( which "${item}" 2>/dev/null )" fi
if [ -z "${where}" ]; then where="$( which "${item}" 2>/dev/null )"
if [ -z "${where}" ]; then
printf "no\n"
continue
elif [ -n "${ver}" ]; then
str=$( LC_ALL=C "${where}" --version 2>&1 \
|grep -E "${ver}" \
|head -n 1
)
if [ -z "${str}" ]; then
printf "no\n" printf "no\n"
unset where
continue continue
elif [ -n "${ver}" ]; then
str=$( LC_ALL=C "${where}" --version 2>&1 \
|grep -E "${ver}" \
|head -n 1
)
if [ -z "${str}" ]; then
printf "no\n"
unset where
continue
fi
fi fi
status="${where}" fi
break status="${where}"
done break
;; done
:?*:) if [ -z "${status}" ]; then
for item in ${inc}; do return 1
printf "Checking for '${item}'... " fi
if printf "#include \"${item}\"" |gcc -x c -c - -o /dev/null >/dev/null 2>&1; then printf "${status}\n"
where="${item}" unset status
status=yes fi
break;
fi if [ -n "${inc}" ]; then
printf "no\n" for item in ${inc}; do
done printf "Checking for '${item}'... "
;; if printf "#include \"${item}\"" |gcc -x c -c - -o /dev/null >/dev/null 2>&1; then
::?*) where="${item}"
for item in ${lib}; do status=yes
printf "Checking for '${item}'... " break;
where="$( gcc -print-file-name="${item}" )" fi
if [ "${where}" != "${item}" ]; then printf "no\n"
where="$( readlink "${where}" )" done
status=yes if [ -z "${status}" ]; then
break; return 1
fi fi
printf "no\n" printf "${status}\n"
done unset status
;; fi
esac
if [ -n "${lib}" ]; then
if [ -z "${status}" ]; then for item in ${lib}; do
return 1 printf "Checking for '${item}'... "
where="$( gcc -print-file-name="${item}" )"
if [ "${where}" != "${item}" ]; then
where="$( readlink "${where}" )"
status=yes
break;
fi
printf "no\n"
done
if [ -z "${status}" ]; then
return 1
fi
printf "${status}\n"
unset status
fi fi
printf "${status}"
if [ -n "${var}" ]; then if [ -n "${var}" ]; then
eval ${var}='"'"${where}"'"' eval ${var}='"'"${where}"'"'
add_to_var_list "${var}" add_to_var_list "${var}"
@ -203,7 +222,6 @@ check_for() {
if [ -n "${kconfig}" ]; then if [ -n "${kconfig}" ]; then
eval ${kconfig}=y eval ${kconfig}=y
fi fi
printf "\n"
} }
# This function checks for a tool, and aborts if not found # This function checks for a tool, and aborts if not found