1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun# prevent shift error 4*4882a593Smuzhiyun[ $# -lt 2 ] && exit 1 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunmajor_min="${1%.*}" 7*4882a593Smuzhiyunminor_min="${1#*.}" 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunshift 10*4882a593Smuzhiyun 11*4882a593Smuzhiyunfor candidate; do 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun # Try to locate the candidate. Discard it if not located. 14*4882a593Smuzhiyun cmake=`which "${candidate}" 2>/dev/null` 15*4882a593Smuzhiyun [ -n "${cmake}" ] || continue 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun # Extract version X.Y from versions in the form X.Y or X.Y.Z 18*4882a593Smuzhiyun # with X, Y and Z numbers with one or more digits each, e.g. 19*4882a593Smuzhiyun # 3.2 -> 3.2 20*4882a593Smuzhiyun # 3.2.3 -> 3.2 21*4882a593Smuzhiyun # 3.2.42 -> 3.2 22*4882a593Smuzhiyun # 3.10 -> 3.10 23*4882a593Smuzhiyun # 3.10.4 -> 3.10 24*4882a593Smuzhiyun # 3.10.42 -> 3.10 25*4882a593Smuzhiyun # Discard the candidate if no version can be obtained 26*4882a593Smuzhiyun version="$(${cmake} --version \ 27*4882a593Smuzhiyun |sed -r -e '/.* ([[:digit:]]+\.[[:digit:]]+).*$/!d;' \ 28*4882a593Smuzhiyun -e 's//\1/' 29*4882a593Smuzhiyun )" 30*4882a593Smuzhiyun [ -n "${version}" ] || continue 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun major="${version%.*}" 33*4882a593Smuzhiyun minor="${version#*.}" 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun if [ ${major} -gt ${major_min} ]; then 36*4882a593Smuzhiyun echo "${cmake}" 37*4882a593Smuzhiyun exit 38*4882a593Smuzhiyun elif [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then 39*4882a593Smuzhiyun echo "${cmake}" 40*4882a593Smuzhiyun exit 41*4882a593Smuzhiyun fi 42*4882a593Smuzhiyundone 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun# echo nothing: no suitable cmake found 45*4882a593Smuzhiyunexit 1 46