Skip to content

Commit 8888be7

Browse files
committed
Make GitHub Actions validate the dynamic linking mode
Enable the GitHub Actions to validate the compiler under the dynamic linking mode. However, if the target architecture is RISC-V, the workflow will skip validation because because this mode has not been implemented for it.
1 parent 7934ef3 commit 8888be7

File tree

1 file changed

+39
-7
lines changed

1 file changed

+39
-7
lines changed

.github/workflows/main.yml

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ jobs:
99
matrix:
1010
compiler: [gcc, clang]
1111
architecture: [arm, riscv]
12+
link_mode: [static]
13+
include:
14+
- compiler: gcc
15+
architecture: arm
16+
link_mode: dynamic
17+
- compiler: clang
18+
architecture: arm
19+
link_mode: dynamic
1220
steps:
1321
- name: Checkout code
1422
uses: actions/checkout@v4
@@ -18,28 +26,52 @@ jobs:
1826
sudo apt-get install -q -y graphviz jq
1927
sudo apt-get install -q -y qemu-user
2028
sudo apt-get install -q -y build-essential
29+
sudo apt-get install -q -y gcc-arm-linux-gnueabihf
30+
- name: Determine static or dynamic linking mode
31+
id: determine-mode
32+
run: |
33+
if [ "${{ matrix.link_mode }}" = "dynamic" ]; then
34+
echo "Use dynamic linking mode"
35+
echo "DYNLINK=1" >> "$GITHUB_OUTPUT"
36+
else
37+
echo "Use static linking mode"
38+
echo "DYNLINK=0" >> "$GITHUB_OUTPUT"
39+
fi
2140
- name: Build artifacts
2241
env:
2342
CC: ${{ matrix.compiler }}
2443
run: |
25-
make distclean config ARCH=${{ matrix.architecture }}
44+
make ARCH=${{ matrix.architecture }} DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }}
2645
- name: IR regression tests
2746
run: |
28-
make check-snapshot || exit 1
47+
make check-snapshot DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1
2948
- name: Sanitizer-enabled stage 0 tests
3049
env:
3150
CC: ${{ matrix.compiler }}
3251
run: |
33-
make check-sanitizer || exit 1
52+
make check-sanitizer DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1
3453
- name: Unit tests
3554
run: |
36-
make check || exit 1
55+
make check DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1
3756
3857
host-arm:
3958
runs-on: ubuntu-24.04
59+
strategy:
60+
matrix:
61+
link_mode: [static, dynamic]
4062
steps:
4163
- name: Checkout code
4264
uses: actions/checkout@v4
65+
- name: Determine static or dynamic linking mode
66+
id: determine-mode
67+
run: |
68+
if [ "${{ matrix.link_mode }}" = "dynamic" ]; then
69+
echo "Use dynamic linking mode"
70+
echo "DYNLINK=1" >> "$GITHUB_OUTPUT"
71+
else
72+
echo "Use static linking mode"
73+
echo "DYNLINK=0" >> "$GITHUB_OUTPUT"
74+
fi
4375
- name: Build artifacts
4476
# The GitHub Action for non-x86 CPU
4577
# https://github.com/uraimo/run-on-arch-action
@@ -52,9 +84,9 @@ jobs:
5284
apt-get update -qq -y
5385
apt-get install -yqq build-essential
5486
run: |
55-
make config ARCH=arm
56-
make check-sanitizer || exit 1
57-
make check || exit 1
87+
make ARCH=arm DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }}
88+
make check-sanitizer DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1
89+
make check DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1
5890
5991
coding-style:
6092
runs-on: ubuntu-24.04

0 commit comments

Comments
 (0)