mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-02-12 05:25:21 +00:00
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:
parent
fa8cf23b2e
commit
c890ff476c
132
configure
vendored
132
configure
vendored
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user