| #!/bin/sh |
| |
| # prevent shift error |
| [ $# -lt 2 ] && exit 1 |
| |
| major_min="${1%.*}" |
| minor_min="${1#*.}" |
| |
| shift |
| |
| for candidate; do |
| |
| # Try to locate the candidate. Discard it if not located. |
| cmake=`which "${candidate}" 2>/dev/null` |
| [ -n "${cmake}" ] || continue |
| |
| # Extract version X.Y from versions in the form X.Y or X.Y.Z |
| # with X, Y and Z numbers with one or more digits each, e.g. |
| # 3.2 -> 3.2 |
| # 3.2.3 -> 3.2 |
| # 3.2.42 -> 3.2 |
| # 3.10 -> 3.10 |
| # 3.10.4 -> 3.10 |
| # 3.10.42 -> 3.10 |
| # Discard the candidate if no version can be obtained |
| version="$(${cmake} --version \ |
| |sed -r -e '/.* ([[:digit:]]+\.[[:digit:]]+).*$/!d;' \ |
| -e 's//\1/' |
| )" |
| [ -n "${version}" ] || continue |
| |
| major="${version%.*}" |
| minor="${version#*.}" |
| |
| if [ ${major} -gt ${major_min} ]; then |
| echo "${cmake}" |
| exit |
| elif [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then |
| echo "${cmake}" |
| exit |
| fi |
| done |
| |
| # echo nothing: no suitable cmake found |
| exit 1 |