# Workflow file for Linux hosts
name: Corrosion on Linux
on:
workflow_call:
inputs:
ubuntu_version:
required: false
type: string
default: "latest"
cmake:
required: false
type: string
default: "3.22.6"
generator:
required: true
type: string
c_compiler:
required: true
type: string
rust:
required: false
type: string
default: 1.46.0
target_arch:
required: false
type: string
default: x86_64
jobs:
linux:
name: Test Linux
runs-on: ubuntu-${{ inputs.ubuntu_version }}
steps:
- uses: actions/checkout@v4
- name: Install CMake
uses: lukka/get-cmake@519de0c7b4812477d74976b2523a9417f552d126
with:
cmakeVersion: "${{ inputs.cmake }}"
ninjaVersion: "~1.10.0"
- name: Install Rust
id: install_rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{inputs.rust}}
targets: ${{inputs.target_arch}}-unknown-linux-gnu
- name: Install Cross Compiler
shell: bash
run: |
echo "::group::apt-install"
sudo apt-get update
sudo apt-get install -y "g++-${{inputs.target_arch}}-linux-gnu"
echo "::endgroup::"
if: ${{ 'Linux' == runner.os && inputs.target_arch != 'x86_64' }}
- name: Configure Corrosion
run: cmake -S. -Bbuild -G "${{ inputs.generator }}" "-DRust_TOOLCHAIN=${{steps.install_rust.outputs.name}}" --preset "${{ inputs.target_arch }}-unknown-linux-gnu-${{ inputs.c_compiler }}"
- name: Run Tests
working-directory: build
run: ctest --output-on-failure --build-config Debug -j 3