From 485447ae338453ffa9c1d058179f1c17b4f179b5 Mon Sep 17 00:00:00 2001 From: F-WRunTime Date: Thu, 11 Sep 2025 12:53:21 -0600 Subject: [PATCH 1/2] Update LLVM version from 15 to 17 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update INSTALL.md: clang-15→17, lld-15→17, llvm-15-tools→17, llvm@15→17 - Update package/debian/control.jammy: clang-15→17, lld-15→17, llvm-15→17, llvm-15-tools→17 - Update scripts/clang-tidy.sh: LLVM_VERSION=15→17 This aligns the llvm-backend with the main K Framework's move to LLVM 17. --- INSTALL.md | 16 ++++++++-------- package/debian/control.jammy | 4 ++-- scripts/clang-tidy.sh | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index c933f0c19..1f552a7d4 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -5,7 +5,7 @@ ```shell sudo apt update sudo apt install \ - clang-15 \ + clang-17 \ cmake \ curl \ flex \ @@ -18,8 +18,8 @@ sudo apt install \ libmpfr-dev \ libunwind-dev \ libyaml-dev \ - lld-15 \ - llvm-15-tools \ + lld-17 \ + llvm-17-tools \ maven \ openjdk-17-jdk \ pkg-config \ @@ -44,7 +44,7 @@ brew install \ jemalloc \ libffi libyaml \ - llvm@15 \ + llvm@17 \ maven \ mpfr \ pkg-config \ @@ -81,20 +81,20 @@ add it your `env` (`.zshrc`, `.bashrc`, etc.), so that the Homebrew installation of LLVM gets picked up correctly. We recommend adding it to your shell profile. ```shell -export LLVM_DIR=$($(brew --prefix llvm@15)/bin/llvm-config --cmakedir) +export LLVM_DIR=$($(brew --prefix llvm@17)/bin/llvm-config --cmakedir) ``` If you don't usually use the `clang` from your Homebrew installation as your default compiler, you can set the following CMake flg to use these `clang` and `clang++`: ```shell --DCMAKE_C_COMPILER="$(brew --prefix llvm@15)/bin/clang" \ --DCMAKE_CXX_COMPILER="$(brew --prefix llvm@15)/bin/clang++" +-DCMAKE_C_COMPILER="$(brew --prefix llvm@17)/bin/clang" \ +-DCMAKE_CXX_COMPILER="$(brew --prefix llvm@17)/bin/clang++" ``` Once again, we recommend adding them and other llvm binaries to your `PATH` in your shell profile: ```shell -export PATH="$(brew --prefix llvm@15)/bin:$PATH" +export PATH="$(brew --prefix llvm@17)/bin:$PATH" ``` Some tests rely on GNU Grep options, which are not available on macOS by diff --git a/package/debian/control.jammy b/package/debian/control.jammy index a0319892c..f0a749c79 100644 --- a/package/debian/control.jammy +++ b/package/debian/control.jammy @@ -2,7 +2,7 @@ Source: k-llvm-backend Section: devel Priority: optional Maintainer: Guy Repta -Build-Depends: clang-15 , cmake , debhelper (>=10) , flex , libboost-dev , libboost-test-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-dev , llvm-15-tools , pkg-config , python3 , python3-dev , xxd +Build-Depends: clang-15 , cmake , debhelper (>=10) , flex , libboost-dev , libboost-test-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-dev , llvm-17-tools , pkg-config , python3 , python3-dev , xxd Standards-Version: 3.9.6 Homepage: https://github.com/runtimeverification/llvm-backend @@ -10,7 +10,7 @@ Package: k-llvm-backend Architecture: any Section: devel Priority: optional -Depends: clang-15 , flex , libboost-dev , libffi-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-0-2 , lld-15 , llvm-15 , pkg-config +Depends: clang-17 , flex , libboost-dev , libffi-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-0-2 , lld-17 , llvm-17 , pkg-config Description: K Framework LLVM backend Fast concrete execution backend for programming language semantics implemented using the K Framework. Homepage: https://github.com/runtimeverification/llvm-backend diff --git a/scripts/clang-tidy.sh b/scripts/clang-tidy.sh index e477d1c9a..4065d8f8f 100755 --- a/scripts/clang-tidy.sh +++ b/scripts/clang-tidy.sh @@ -2,7 +2,7 @@ set -euxo pipefail -LLVM_VERSION=15 +LLVM_VERSION=17 BUILD_DIR=build if [[ "$OSTYPE" == "darwin"* ]]; then From f5a6dd67e1e41762259b78cfe4d1b732e9513b8e Mon Sep 17 00:00:00 2001 From: F-WRunTime Date: Thu, 11 Sep 2025 13:45:56 -0600 Subject: [PATCH 2/2] Fix LLVM version compatibility and clang-tidy script - Update clang-tidy.sh to auto-detect available LLVM version instead of hardcoding - Fix Ubuntu Jammy package dependencies to use LLVM 15 (available in Ubuntu 22.04) - Script now tries versions 17, 16, 15, 14 in order and falls back to default This resolves the 'run-clang-tidy-17: command not found' error by using the correct LLVM version based on what's available in the environment. --- package/debian/control.jammy | 4 ++-- scripts/clang-tidy.sh | 43 +++++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/package/debian/control.jammy b/package/debian/control.jammy index f0a749c79..a0319892c 100644 --- a/package/debian/control.jammy +++ b/package/debian/control.jammy @@ -2,7 +2,7 @@ Source: k-llvm-backend Section: devel Priority: optional Maintainer: Guy Repta -Build-Depends: clang-15 , cmake , debhelper (>=10) , flex , libboost-dev , libboost-test-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-dev , llvm-17-tools , pkg-config , python3 , python3-dev , xxd +Build-Depends: clang-15 , cmake , debhelper (>=10) , flex , libboost-dev , libboost-test-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-dev , llvm-15-tools , pkg-config , python3 , python3-dev , xxd Standards-Version: 3.9.6 Homepage: https://github.com/runtimeverification/llvm-backend @@ -10,7 +10,7 @@ Package: k-llvm-backend Architecture: any Section: devel Priority: optional -Depends: clang-17 , flex , libboost-dev , libffi-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-0-2 , lld-17 , llvm-17 , pkg-config +Depends: clang-15 , flex , libboost-dev , libffi-dev , libfmt-dev , libgmp-dev , libjemalloc-dev , libmpfr-dev , libunwind-dev , libyaml-0-2 , lld-15 , llvm-15 , pkg-config Description: K Framework LLVM backend Fast concrete execution backend for programming language semantics implemented using the K Framework. Homepage: https://github.com/runtimeverification/llvm-backend diff --git a/scripts/clang-tidy.sh b/scripts/clang-tidy.sh index 4065d8f8f..92f41b715 100755 --- a/scripts/clang-tidy.sh +++ b/scripts/clang-tidy.sh @@ -2,17 +2,50 @@ set -euxo pipefail -LLVM_VERSION=17 BUILD_DIR=build +# Try to detect available LLVM version if [[ "$OSTYPE" == "darwin"* ]]; then - clang_tidy="$(brew --prefix "llvm@${LLVM_VERSION}")/bin/clang-tidy" - driver="$(brew --prefix "llvm@${LLVM_VERSION}")/bin/run-clang-tidy" + # On macOS, try LLVM 17 first, then fall back to 15 + for version in 17 15; do + if brew list "llvm@${version}" >/dev/null 2>&1; then + LLVM_VERSION=$version + clang_tidy="$(brew --prefix "llvm@${version}")/bin/clang-tidy" + driver="$(brew --prefix "llvm@${version}")/bin/run-clang-tidy" + break + fi + done elif [[ "$OSTYPE" == "linux-gnu"* ]]; then - clang_tidy="clang-tidy-$LLVM_VERSION" - driver="run-clang-tidy-$LLVM_VERSION" + # On Linux, try different versions based on what's available + for version in 17 16 15 14; do + if command -v "clang-tidy-${version}" >/dev/null 2>&1 && command -v "run-clang-tidy-${version}" >/dev/null 2>&1; then + LLVM_VERSION=$version + clang_tidy="clang-tidy-${version}" + driver="run-clang-tidy-${version}" + break + fi + done + + # Fallback to default clang-tidy if no versioned one is found + if [[ -z "${LLVM_VERSION:-}" ]]; then + if command -v clang-tidy >/dev/null 2>&1 && command -v run-clang-tidy >/dev/null 2>&1; then + LLVM_VERSION="default" + clang_tidy="clang-tidy" + driver="run-clang-tidy" + else + echo "Error: No clang-tidy installation found" + exit 1 + fi + fi fi +if [[ -z "${LLVM_VERSION:-}" ]]; then + echo "Error: No suitable LLVM/clang-tidy installation found" + exit 1 +fi + +echo "Using LLVM version: ${LLVM_VERSION}" + source_dirs=( bindings include