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