-
Notifications
You must be signed in to change notification settings - Fork 2
87 lines (71 loc) · 2.26 KB
/
build-and-test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
name: Build and Test
on:
push:
branches:
- '**'
pull_request:
branches:
- '**'
permissions:
contents: write
jobs:
llvm:
strategy:
matrix:
llvm-version: [16, 17, 18]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install LLVM and Clang
run: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh ${{ matrix.llvm-version }}
- name: Replace default clang
run: |
sudo mv /usr/bin/clang /usr/bin/clang-old
sudo mv /usr/bin/clang++ /usr/bin/clang++-old
sudo ln -s /usr/bin/clang-${{ matrix.llvm-version }} /usr/bin/clang
sudo ln -s /usr/bin/clang++-${{ matrix.llvm-version }} /usr/bin/clang++
sudo ln -s /usr/bin/opt-${{ matrix.llvm-version }} /usr/bin/opt
- name: Check LLVM and Clang
run: clang --version && opt --version
- name: Configure CMake with Clang
run: cmake -B build -DLLVM_DIR=/usr/lib/llvm-${{ matrix.llvm-version }}/cmake -DCMAKE_C_COMPILER=clang-${{ matrix.llvm-version }} -DCMAKE_CXX_COMPILER=clang++-${{ matrix.llvm-version }}
- name: Build
run: |
cmake --build build -t run_test
- name: Copy artifact
run: |
mkdir -p artifacts
cp build/libpasses.so artifacts/libpasses-${{ matrix.llvm-version }}.so
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
path: artifacts
retention-days: 1
release:
needs: llvm
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create release archive
run: |
cd artifacts
zip -r ../libpasses.zip */libpasses-*.so
cd ..
- name: Generate release tag
id: tag
run: |
echo "TAG_NAME=release-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT
- name: Create Release and Upload Asset
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.tag.outputs.TAG_NAME }}
name: Release ${{ steps.tag.outputs.TAG_NAME }}
draft: false
prerelease: false
files: ./libpasses.zip