Skip to content
Draft
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
68aec8b
Add superbuild infrastructure
artemdinaburg Nov 25, 2025
40f0837
Add LLVM 16-20 compatibility layer
artemdinaburg Nov 25, 2025
31c80f7
Apply LLVM compatibility to AST builders
artemdinaburg Nov 25, 2025
5dae177
Apply LLVM compatibility to tools
artemdinaburg Nov 25, 2025
2a1ed92
Apply LLVM compatibility to unit tests
artemdinaburg Nov 25, 2025
f4e26dd
Update main CMakeLists.txt for superbuild
artemdinaburg Nov 25, 2025
b5c339b
Replace CI with multi-version build matrix
artemdinaburg Dec 1, 2025
1901e97
Simplify Dockerfile for multi-version support
artemdinaburg Dec 1, 2025
cae38d0
Update documentation for new build system
artemdinaburg Dec 1, 2025
897851a
Remove legacy build infrastructure
artemdinaburg Dec 1, 2025
081d83b
Update default LLVM version to 20.1.5
artemdinaburg Dec 1, 2025
7aac3c1
Simplify build instructions with Quick Start section
artemdinaburg Dec 1, 2025
1ef738c
Fix doctest CMake compatibility
artemdinaburg Dec 1, 2025
285afef
Fix Z3 build: update from 4.13.0 to 4.13.4
artemdinaburg Dec 1, 2025
dc3eb1a
Fix LLVM 20.1.5 SHA256 hash
artemdinaburg Dec 1, 2025
ee61994
Fix gflags target namespace for glog compatibility
artemdinaburg Dec 1, 2025
a0d388e
Add LLVM 20 compatibility for mangleTypeName and PointerUnion
artemdinaburg Dec 1, 2025
d815025
Use LLVM 20 code from llvm20 branch
artemdinaburg Dec 1, 2025
e8595d2
Update CI to test LLVM 20 only
artemdinaburg Dec 1, 2025
df8cee8
Fix LLVM/Clang include dirs to be PRIVATE
artemdinaburg Dec 1, 2025
d522a2c
Add missing Binary case in StringLiteral switch
artemdinaburg Dec 1, 2025
556c46d
Update documentation for LLVM 20 only
artemdinaburg Dec 1, 2025
20919cd
Document external LLVM requirements
artemdinaburg Dec 1, 2025
2d360c6
Fix SIGSEGV in PackedAttr creation for LLVM 20
artemdinaburg Dec 3, 2025
a52797c
Reduce bigstruct test size to avoid LLVM 20 crash
artemdinaburg Dec 3, 2025
6b365e9
Skip known failing tests with documented reasons
artemdinaburg Dec 4, 2025
2ba30a7
Add zlib and zstd dependencies to CI
artemdinaburg Dec 4, 2025
2f617c1
Fix macOS CI to use Homebrew LLVM clang
artemdinaburg Dec 4, 2025
d3c02dc
Make LLVM/Clang include dirs PUBLIC for tools
artemdinaburg Dec 4, 2025
d8a1169
Use SYSTEM includes for LLVM/Clang headers
artemdinaburg Dec 4, 2025
d7acca0
Fix macOS build with Homebrew LLVM
artemdinaburg Dec 4, 2025
a2b83e0
Use PUBLIC includes for LLVM/Clang headers on all platforms
artemdinaburg Dec 5, 2025
5c43bd9
Fix macOS build by clearing CMAKE_OSX_SYSROOT
artemdinaburg Dec 5, 2025
ae89bd4
Unset SDKROOT on macOS to fix Homebrew LLVM build
artemdinaburg Dec 5, 2025
079fe2d
Use -nostdinc++ with explicit libc++ path on macOS
artemdinaburg Dec 5, 2025
91f765d
Use system AppleClang on macOS to avoid libc++ conflicts
artemdinaburg Dec 5, 2025
ada8f72
Remove empty CMAKE_OSX_SYSROOT from macOS workflow
artemdinaburg Dec 5, 2025
742f529
Fix test sysroot check to require non-empty value
artemdinaburg Dec 5, 2025
17714c1
macOS: Use Homebrew clang with explicit libc++ paths
artemdinaburg Dec 5, 2025
3a095b3
macOS: Use -I instead of -isystem for libc++ include path priority
artemdinaburg Dec 5, 2025
2804b0c
Mark macOS CI as experimental (continue-on-error)
artemdinaburg Dec 5, 2025
0ebb9e7
Fix CMake include paths and update macOS documentation
artemdinaburg Dec 5, 2025
7fa3b3e
Fix PassManager setup to properly register analyses
artemdinaburg Dec 10, 2025
39ae681
Document Homebrew LLVM shared library limitation
artemdinaburg Dec 10, 2025
7d13b06
Add RELLIC_FORCE_STATIC_LLVM option for Homebrew LLVM
artemdinaburg Dec 10, 2025
63c6c0f
Enable RELLIC_FORCE_STATIC_LLVM in macOS CI
artemdinaburg Dec 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 0 additions & 141 deletions .github/workflows/anghabench-after-build.yml

This file was deleted.

121 changes: 121 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: Build and Test

on:
push:
branches: [master, main]
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
linux:
name: Linux (LLVM ${{ matrix.llvm }})
runs-on: ubuntu-22.04
container:
image: ubuntu:22.04
strategy:
fail-fast: false
matrix:
llvm: ["20"]

steps:
- name: Install system dependencies
run: |
apt-get update
apt-get install -y --no-install-recommends \
wget ca-certificates gnupg lsb-release software-properties-common \
git cmake ninja-build python3 python-is-python3

- name: Install LLVM ${{ matrix.llvm }}
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh ${{ matrix.llvm }}
apt-get install -y --no-install-recommends \
llvm-${{ matrix.llvm }}-dev \
clang-${{ matrix.llvm }} \
libclang-${{ matrix.llvm }}-dev

echo "CC=clang-${{ matrix.llvm }}" >> $GITHUB_ENV
echo "CXX=clang++-${{ matrix.llvm }}" >> $GITHUB_ENV
echo "LLVM_DIR=$(llvm-config-${{ matrix.llvm }} --cmakedir)" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v4

- name: Mark workspace safe
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"

- name: Build dependencies
run: |
cmake -G Ninja -S dependencies -B dependencies/build \
-DUSE_EXTERNAL_LLVM=ON \
-DCMAKE_PREFIX_PATH="$LLVM_DIR/.."
cmake --build dependencies/build

- name: Build rellic
run: |
cmake -G Ninja -B build \
-DCMAKE_PREFIX_PATH="$LLVM_DIR/..;$PWD/dependencies/install" \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCMAKE_BUILD_TYPE=Release
cmake --build build

- name: Install rellic
run: cmake --install build

- name: Test rellic
run: |
./install/bin/rellic-decomp-${{ matrix.llvm }} --version || true
env CTEST_OUTPUT_ON_FAILURE=1 ctest --test-dir build

- name: Upload artifacts
if: matrix.llvm == '20'
uses: actions/upload-artifact@v4
with:
name: rellic-linux-llvm${{ matrix.llvm }}
path: install/

macos:
Comment on lines 14 to 82

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
name: macOS (LLVM ${{ matrix.llvm }})
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
llvm: ["20"]

steps:
- name: Install LLVM
run: |
brew install llvm@${{ matrix.llvm }} ninja
echo "CC=clang" >> $GITHUB_ENV
echo "CXX=clang++" >> $GITHUB_ENV
echo "LLVM_DIR=$(brew --prefix llvm@${{ matrix.llvm }})/lib/cmake/llvm" >> $GITHUB_ENV

- name: Checkout
uses: actions/checkout@v4

- name: Build dependencies
run: |
cmake -G Ninja -S dependencies -B dependencies/build \
-DUSE_EXTERNAL_LLVM=ON \
-DCMAKE_PREFIX_PATH="$LLVM_DIR/.."
cmake --build dependencies/build

- name: Build rellic
run: |
cmake -G Ninja -B build \
-DCMAKE_PREFIX_PATH="$LLVM_DIR/..;$PWD/dependencies/install" \
-DCMAKE_INSTALL_PREFIX="$PWD/install" \
-DCMAKE_BUILD_TYPE=Release
cmake --build build

- name: Install rellic
run: cmake --install build

- name: Test rellic
run: |
./install/bin/rellic-decomp-${{ matrix.llvm }} --version || true
env CTEST_OUTPUT_ON_FAILURE=1 ctest --test-dir build
Comment on lines 83 to 127

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
Loading
Loading