Build & Test C #1295
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-ml-kem: | |
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-ml-kem | |
path: libcrux-ml-kem/cg/ | |
include-hidden-files: true | |
if-no-files-found: error | |
extract-header-only-ml-dsa: | |
runs-on: ubuntu-latest | |
container: franziskus/libcrux-c:latest | |
defaults: | |
run: | |
working-directory: libcrux-ml-dsa | |
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-ml-dsa | |
path: libcrux-ml-dsa/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-ml-kem: | |
needs: [extract-header-only-ml-kem] | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: header-only-c-extraction-ml-kem | |
path: ~/mlkem-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 | |
diff-header-only-ml-dsa: | |
needs: [extract-header-only-ml-dsa] | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: header-only-c-extraction-ml-kem | |
path: ~/mldsa-c-extraction | |
- uses: actions/checkout@v4 | |
- name: Diff Extraction | |
run: | | |
libcrux-ml-kem/headers_kill_revs.sh libcrux-ml-dsa/cg | |
libcrux-ml-kem/headers_kill_revs.sh ~/c-extraction | |
diff -r libcrux-ml-dsa/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-ml-kem: | |
needs: [extract-header-only-ml-kem] | |
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' }} | |
build-header-only-ml-dsa: | |
needs: [extract-header-only-ml-dsa] | |
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 | |
- name: ππ»ββοΈ Test | |
run: ./build/ml_dsa_test |