| name: web-assembly | |
| on: | |
| push: | |
| branches: [master] | |
| paths: | |
| - '.github/workflows/web-assembly.yml' | |
| - 'CMakeLists.txt' | |
| - 'cmake/**' | |
| - 'src/*' | |
| - 'src/layer/*' | |
| - 'src/layer/x86/**' | |
| - 'tests/**' | |
| pull_request: | |
| branches: [master] | |
| paths: | |
| - '.github/workflows/web-assembly.yml' | |
| - 'CMakeLists.txt' | |
| - 'cmake/**' | |
| - 'src/*' | |
| - 'src/layer/*' | |
| - 'src/layer/x86/**' | |
| - 'tests/**' | |
| env: | |
| EMSCRIPTEN_VERSION: 3.1.28 | |
| concurrency: | |
| group: web-assembly-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| webassembly: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: emsdk | |
| run: | | |
| git clone https://github.com/emscripten-core/emsdk.git | |
| cd emsdk | |
| ./emsdk install $EMSCRIPTEN_VERSION | |
| ./emsdk activate $EMSCRIPTEN_VERSION | |
| - name: build-basic | |
| run: | | |
| source emsdk/emsdk_env.sh | |
| export LDFLAGS="-sERROR_ON_WASM_CHANGES_AFTER_LINK -sWASM_BIGINT -O1" | |
| mkdir build-basic && cd build-basic | |
| cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_SIMPLEOMP=OFF -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=OFF -DNCNN_AVX2=OFF -DNCNN_AVX=OFF -DNCNN_BUILD_TESTS=ON .. | |
| cmake --build . -j 2 | |
| - name: test-basic | |
| run: | | |
| cd build-basic | |
| TESTS_EXECUTABLE_LOADER=node ctest --output-on-failure -j 2 | |
| - name: build-simd | |
| run: | | |
| source emsdk/emsdk_env.sh | |
| export LDFLAGS="-sERROR_ON_WASM_CHANGES_AFTER_LINK -sWASM_BIGINT -O1" | |
| mkdir build-simd && cd build-simd | |
| cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DNCNN_THREADS=OFF -DNCNN_OPENMP=OFF -DNCNN_SIMPLEOMP=OFF -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=ON -DNCNN_AVX2=OFF -DNCNN_AVX=OFF -DNCNN_BUILD_TESTS=ON .. | |
| cmake --build . -j 2 | |
| - name: test-simd | |
| run: | | |
| cd build-simd | |
| TESTS_EXECUTABLE_LOADER=node TESTS_EXECUTABLE_LOADER_ARGUMENTS="--experimental-wasm-simd" ctest --output-on-failure -j 2 | |
| - name: build-simd-omp | |
| run: | | |
| source emsdk/emsdk_env.sh | |
| export LDFLAGS="-sERROR_ON_WASM_CHANGES_AFTER_LINK -sWASM_BIGINT -O1" | |
| mkdir build-simd-omp && cd build-simd-omp | |
| cmake -DCMAKE_TOOLCHAIN_FILE=$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DNCNN_THREADS=ON -DNCNN_OPENMP=ON -DNCNN_SIMPLEOMP=ON -DNCNN_SIMPLEOCV=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_SSE2=ON -DNCNN_AVX2=OFF -DNCNN_AVX=OFF -DNCNN_BUILD_TESTS=ON .. | |
| cmake --build . -j 2 | |
| - name: test-simd-omp | |
| run: | | |
| cd build-simd-omp | |
| TESTS_EXECUTABLE_LOADER=node TESTS_EXECUTABLE_LOADER_ARGUMENTS="--experimental-wasm-simd;--experimental-wasm-threads" ctest --output-on-failure -j 2 | |