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