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