xref: /OK3568_Linux_fs/buildroot/support/dependencies/check-host-cmake.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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