summaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorBenoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>2011-06-08 13:47:03 (GMT)
committerBenoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>2011-06-08 13:47:03 (GMT)
commitc890ff476cffb9dd3e694942b4b518563e156791 (patch)
tree69f0148c04e93d7cc5ef400a3a57d6be84859032 /configure
parentfa8cf23b2e04435cfae06caae4c522f27eeea013 (diff)
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>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure130
1 files changed, 74 insertions, 56 deletions
diff --git a/configure b/configure
index 55638bb..6823db0 100755
--- a/configure
+++ b/configure
@@ -127,75 +127,94 @@ check_for() {
prog=*|inc=*|lib=*|var=*|ver=*|err=*|kconfig=*)
eval ${item%%=*}=\"${item#*=}\"
;;
- *) do_error "has_or_abort: incorrect parameters: '$@'";;
+ *) do_error "check_for: incorrect parameters: '$@'";;
esac
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
add_to_kconfig_list "${kconfig}"
fi
- case "${prog}:${inc}:${lib}" in
- ?*::)
- for item in ${prog}; do
- printf "Checking for '${item}'... "
- if [ -n "${var}" ]; then
- eval val="\${${var}}"
- if [ -n "${val}" ]; then
- printf "${val} (cached)\n"
- add_to_var_list "${var}"
- return 0
- fi
+ if [ -n "${prog}" ]; then
+ for item in ${prog}; do
+ printf "Checking for '${item}'... "
+ if [ -n "${var}" ]; then
+ eval val="\${${var}}"
+ if [ -n "${val}" ]; then
+ printf "${val} (cached)\n"
+ add_to_var_list "${var}"
+ return 0
fi
- where="$( which "${item}" 2>/dev/null )"
- if [ -z "${where}" ]; then
+ fi
+ 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"
+ unset where
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
- status="${where}"
- break
- done
- ;;
- :?*:)
- for item in ${inc}; do
- printf "Checking for '${item}'... "
- if printf "#include \"${item}\"" |gcc -x c -c - -o /dev/null >/dev/null 2>&1; then
- where="${item}"
- status=yes
- break;
fi
- printf "no\n"
- done
- ;;
- ::?*)
- for item in ${lib}; do
- 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
- ;;
- esac
+ fi
+ status="${where}"
+ break
+ done
+ if [ -z "${status}" ]; then
+ return 1
+ fi
+ printf "${status}\n"
+ unset status
+ fi
+
+ if [ -n "${inc}" ]; then
+ for item in ${inc}; do
+ printf "Checking for '${item}'... "
+ if printf "#include \"${item}\"" |gcc -x c -c - -o /dev/null >/dev/null 2>&1; then
+ where="${item}"
+ status=yes
+ break;
+ fi
+ printf "no\n"
+ done
+ if [ -z "${status}" ]; then
+ return 1
+ fi
+ printf "${status}\n"
+ unset status
+ fi
- if [ -z "${status}" ]; then
- return 1
+ if [ -n "${lib}" ]; then
+ for item in ${lib}; do
+ 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
- printf "${status}"
if [ -n "${var}" ]; then
eval ${var}='"'"${where}"'"'
add_to_var_list "${var}"
@@ -203,7 +222,6 @@ check_for() {
if [ -n "${kconfig}" ]; then
eval ${kconfig}=y
fi
- printf "\n"
}
# This function checks for a tool, and aborts if not found