Skip to content

Build & Test C

Build & Test C #1058

Workflow file for this run

name: Build & Test C
on:
push:
branches: ["main", "dev"]
pull_request:
branches: ["main", "dev"]
workflow_dispatch:
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
extract:
runs-on: ubuntu-latest
container: franziskus/libcrux-c:latest
defaults:
run:
working-directory: libcrux-ml-kem
shell: bash
steps:
- uses: actions/checkout@v4
- name: Extract C
run: |
./c.sh
- name: Upload C extraction
uses: actions/upload-artifact@v4
with:
name: c-extraction
path: libcrux-ml-kem/c
include-hidden-files: true
if-no-files-found: error
extract-header-only:
runs-on: ubuntu-latest
container: franziskus/libcrux-c:latest
defaults:
run:
working-directory: libcrux-ml-kem
shell: bash
steps:
- uses: actions/checkout@v4
- name: Extract C (header only)
run: |
./boring.sh --no-clean
- name: Upload header only C extraction
uses: actions/upload-artifact@v4
with:
name: header-only-c-extraction
path: libcrux-ml-kem/cg/
include-hidden-files: true
if-no-files-found: error
diff:
needs: [extract]
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: c-extraction
path: ~/c-extraction
- uses: actions/checkout@v4
- name: Diff Extraction
run: |
libcrux-ml-kem/headers_kill_revs.sh libcrux-ml-kem/c
libcrux-ml-kem/headers_kill_revs.sh ~/c-extraction
diff -r libcrux-ml-kem/c ~/c-extraction
diff-header-only:
needs: [extract-header-only]
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: header-only-c-extraction
path: ~/c-extraction
- uses: actions/checkout@v4
- name: Diff Extraction
run: |
libcrux-ml-kem/headers_kill_revs.sh libcrux-ml-kem/cg
libcrux-ml-kem/headers_kill_revs.sh ~/c-extraction
diff -r libcrux-ml-kem/cg ~/c-extraction
build:
needs: [extract]
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: c-extraction
- name: πŸ”¨ Build
run: |
LIBCRUX_BENCHMARKS=1 cmake -B build
cmake --build build
- name: πŸƒπŸ»β€β™€οΈ Test
run: ./build/Debug/ml_kem_test
if: ${{ matrix.os == 'windows-latest' }}
- name: πŸƒπŸ»β€β™€οΈ Test
run: ./build/ml_kem_test
if: ${{ matrix.os != 'windows-latest' }}
- name: πŸ”¨ Build Release
run: |
rm -rf build
LIBCRUX_BENCHMARKS=1 cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
if: ${{ matrix.os != 'windows-latest' }}
build-header-only:
needs: [extract-header-only]
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/download-artifact@v4
with:
name: header-only-c-extraction
- name: πŸ”¨ Build
run: |
cmake -B build
cmake --build build
# FIXME: Benchmark build for cg on Windows CI is not working right now.
- name: πŸƒπŸ»β€β™€οΈ Test
run: ./build/ml_kem_test
if: ${{ matrix.os != 'windows-latest' }}