^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #!/bin/sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) # Usage: $ ./scripts/lld-version.sh ld.lld
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) # Print the linker version of `ld.lld' in a 5 or 6-digit form
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) # such as `100001' for ld.lld 10.0.1 etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) set -e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) # Convert the version string x.y.z to a canonical 5 or 6-digit form.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) get_canonical_version()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) IFS=.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) set -- $1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) # If the 2nd or 3rd field is missing, fill it with a zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) echo $((10000 * $1 + 100 * ${2:-0} + ${3:-0}))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) # Get the first line of the --version output.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) IFS='
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) '
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) set -- $(LC_ALL=C "$@" --version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) # Split the line on spaces.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) IFS=' '
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) set -- $1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) while [ $# -gt 1 -a "$1" != "LLD" ]; do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) shift
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) if [ "$1" = LLD ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) echo $(get_canonical_version ${2%-*})
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) echo 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) fi