| #!/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 |