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