From c890ff476cffb9dd3e694942b4b518563e156791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20TH=C3=89BAUDEAU=22?= Date: Wed, 8 Jun 2011 15:47:03 +0200 Subject: configure: give check_for() the ability to test several item types at once MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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" 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 -- cgit v0.10.2-6-g49f6