Support Arm dynamic linking #1098
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Github Actions | |
on: [push, pull_request] | |
jobs: | |
host-x86: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
compiler: [gcc, clang] | |
architecture: [arm, riscv] | |
link_mode: [static] | |
include: | |
- compiler: gcc | |
architecture: arm | |
link_mode: dynamic | |
- compiler: clang | |
architecture: arm | |
link_mode: dynamic | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Download dependencies | |
run: | | |
sudo apt-get update -q -y | |
sudo apt-get install -q -y graphviz jq | |
sudo apt-get install -q -y qemu-user | |
sudo apt-get install -q -y build-essential | |
sudo apt-get install -q -y gcc-arm-linux-gnueabihf | |
- name: Determine static or dynamic linking mode | |
id: determine-mode | |
run: | | |
if [ "${{ matrix.link_mode }}" = "dynamic" ]; then | |
echo "Use dynamic linking mode" | |
echo "DYNLINK=1" >> "$GITHUB_OUTPUT" | |
else | |
echo "Use static linking mode" | |
echo "DYNLINK=0" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Build artifacts | |
env: | |
CC: ${{ matrix.compiler }} | |
run: | | |
make ARCH=${{ matrix.architecture }} DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} | |
- name: IR regression tests | |
run: | | |
make check-snapshot DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1 | |
- name: Sanitizer-enabled stage 0 tests | |
env: | |
CC: ${{ matrix.compiler }} | |
run: | | |
make check-sanitizer DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1 | |
- name: Unit tests | |
run: | | |
make check DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1 | |
host-arm: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
link_mode: [static, dynamic] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Determine static or dynamic linking mode | |
id: determine-mode | |
run: | | |
if [ "${{ matrix.link_mode }}" = "dynamic" ]; then | |
echo "Use dynamic linking mode" | |
echo "DYNLINK=1" >> "$GITHUB_OUTPUT" | |
else | |
echo "Use static linking mode" | |
echo "DYNLINK=0" >> "$GITHUB_OUTPUT" | |
fi | |
- name: Build artifacts | |
# The GitHub Action for non-x86 CPU | |
# https://github.com/uraimo/run-on-arch-action | |
uses: uraimo/run-on-arch-action@v3 | |
with: | |
arch: armv7 | |
distro: ubuntu24.04 | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update -qq -y | |
apt-get install -yqq build-essential | |
run: | | |
make ARCH=arm DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} | |
make check-sanitizer DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1 | |
make check DYNLINK=${{ steps.determine-mode.outputs.DYNLINK }} || exit 1 | |
coding-style: | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Coding convention | |
run: | | |
sudo apt-get install -q -y clang-format-18 | |
.ci/check-newline.sh | |
.ci/check-format.sh | |
shell: bash |