whisper.cpp/.github/workflows/build-wasm.yml

66 lines
1.8 KiB
YAML

name: CI (wasm)
on:
workflow_dispatch: # allows manual triggering
push:
branches:
- master
paths: ['.github/workflows/build-wasm.yml',
'**/CMakeLists.txt',
'**/Makefile',
'**/*.mk',
'**/*.cmake',
'**/*.in',
'**/*.h',
'**/*.hpp',
'**/*.c',
'**/*.cpp']
pull_request:
types: [opened, synchronize, reopened]
paths-ignore:
- 'bindings/ruby/**' # handled by bindings-ruby.yml
- 'bindings/go/**' # handled by bindings-go.yml
- 'examples/addon.node/**' # handled by examples.yml
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
cancel-in-progress: true
jobs:
emscripten:
runs-on: ubuntu-22.04
strategy:
matrix:
build: [Release]
steps:
- name: Clone
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- name: Setup emsdk
uses: emscripten-core/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14
- name: Verify
run: emcc -v
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
key: wasm-ubuntu-22
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
- name: Build
env:
CCACHE_SLOPPINESS: time_macros,include_file_mtime,include_file_ctime
CCACHE_COMPILERCHECK: content
run: |
emcmake cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build }} \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
"-DCMAKE_C_FLAGS=-ffile-prefix-map=$EMSDK=/emsdk" \
"-DCMAKE_CXX_FLAGS=-ffile-prefix-map=$EMSDK=/emsdk"
cmake --build build -j $(nproc)