File: get-llvm-version.sh

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,998,520 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (86 lines) | stat: -rwxr-xr-x 2,502 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env bash
#===-- get-llvm-version.sh - Get LLVM Version from sources -----------------===#
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===------------------------------------------------------------------------===#
#
# Extract the current LLVM version from the CMake files. 
#
#===------------------------------------------------------------------------===#

cmake_file=$(dirname $0)/../../../cmake/Modules/LLVMVersion.cmake
function usage() {
    echo "usage: `basename $0`"
    echo ""
    echo "Calling this script with now options will output the full version: e.g. 19.1.0"
    echo " --cmake-file      Path to cmake file with the version (default: $cmake_file)
    echo " You can use at most one of the following options:
    echo " --major           Print the major version."
    echo " --minor           Print the minor version."
    echo " --patch           Print the patch version."
}

print=""

while [ $# -gt 0 ]; do
    case $1 in
        --cmake-file )
            shift
    	    cmake_file="$1"
    	    ;;
        --major)
            if [ -n "$print" ]; then
                echo "Only one of --major, --minor, --patch is allowed"
                exit 1
            fi
            print="major"
            ;;
        --minor)
            if [ -n "$print" ]; then
                echo "Only one of --major, --minor, --patch is allowed"
                exit 1
            fi
            print="minor"
            ;;
        --patch)
            if [ -n "$print" ]; then
                echo "Only one of --major, --minor, --patch is allowed"
                exit 1
            fi
            print="patch"
            ;;
        --help | -h | -\? )
            usage
            exit 0
            ;;
        * )
            echo "unknown option: $1"
            usage
            exit 1
            ;;
    esac
    shift
done

major=`grep -o 'LLVM_VERSION_MAJOR[[:space:]]\+\([0-9]\+\)' $cmake_file  | grep -o '[0-9]\+'`
minor=`grep -o 'LLVM_VERSION_MINOR[[:space:]]\+\([0-9]\+\)' $cmake_file  | grep -o '[0-9]\+'`
patch=`grep -o 'LLVM_VERSION_PATCH[[:space:]]\+\([0-9]\+\)' $cmake_file  | grep -o '[0-9]\+'`

case $print in
    major)
        echo "$major"
        ;;
    minor)
        echo "$minor"
        ;;
    patch)
        echo "$patch"
        ;;
    *)
        echo "$major.$minor.$patch"
        ;;
esac