Merge pull request #662 from cryspen/dev-merge-main #1198
This file contains 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: 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' }} |