|
24 | 24 |
|
25 | 25 | env: |
26 | 26 | ANDROID_NDK_VERSION: 28.2.13676358 |
| 27 | + EMSCRIPTEN_VERSION: 2.0.6 |
27 | 28 | FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true |
28 | 29 | GITHUB_TOKEN: ${{ github.token }} |
29 | 30 | SKIA_DIAGNOSTICS_ARCHIVE: skia-build-diagnostics-158dc9d7.tar.gz |
@@ -338,6 +339,83 @@ jobs: |
338 | 339 | name: skia-diagnostics-android-arm64-v8a |
339 | 340 | path: skia/dist/diagnostics |
340 | 341 |
|
| 342 | + build-wasm: |
| 343 | + name: Build wasm/wasm32 |
| 344 | + needs: prepare-skia-sources |
| 345 | + runs-on: ubuntu-24.04 |
| 346 | + |
| 347 | + steps: |
| 348 | + - name: Checkout source code |
| 349 | + uses: actions/checkout@v6 |
| 350 | + |
| 351 | + - name: Restore ccache |
| 352 | + uses: actions/cache@v5 |
| 353 | + with: |
| 354 | + path: .cache/ccache/skia-wasm-wasm32 |
| 355 | + key: skia-ccache-${{ runner.os }}-wasm-wasm32-${{ hashFiles('skia/manifest.json', 'skia/scripts/**') }} |
| 356 | + restore-keys: | |
| 357 | + skia-ccache-${{ runner.os }}-wasm-wasm32- |
| 358 | +
|
| 359 | + - name: Install build tools |
| 360 | + run: sudo apt-get update && sudo apt-get install -y ccache ninja-build rsync |
| 361 | + |
| 362 | + - name: Setup Emscripten |
| 363 | + uses: mymindstorm/setup-emsdk@v14 |
| 364 | + with: |
| 365 | + version: ${{ env.EMSCRIPTEN_VERSION }} |
| 366 | + |
| 367 | + - name: Restore Skia source archive |
| 368 | + uses: actions/cache@v5 |
| 369 | + with: |
| 370 | + path: skia/.source-cache |
| 371 | + key: ${{ needs.prepare-skia-sources.outputs.cache-key }} |
| 372 | + enableCrossOsArchive: true |
| 373 | + |
| 374 | + - name: Extract Skia source archive |
| 375 | + run: | |
| 376 | + test -f skia/.source-cache/skia-source.tar |
| 377 | + tar -C skia -xf skia/.source-cache/skia-source.tar |
| 378 | +
|
| 379 | + - name: Fetch native depot_tools |
| 380 | + working-directory: skia |
| 381 | + run: ./scripts/fetch-source.sh depot_tools |
| 382 | + |
| 383 | + - name: Build static library |
| 384 | + working-directory: skia |
| 385 | + env: |
| 386 | + CCACHE_DIR: ${{ github.workspace }}/.cache/ccache/skia-wasm-wasm32 |
| 387 | + SKIA_SKIP_DEPS_SYNC: 1 |
| 388 | + run: ./scripts/build-wasm32.sh |
| 389 | + |
| 390 | + - name: Print build summary on failure |
| 391 | + if: failure() |
| 392 | + run: | |
| 393 | + find skia/dist/diagnostics -type f -name 'build-summary.json' -print -exec cat {} \; || true |
| 394 | +
|
| 395 | + - name: Verify artifacts |
| 396 | + run: | |
| 397 | + test -f skia/dist/libskia-wasm32.a |
| 398 | + test -f skia/dist/build_config_manifest-wasm-wasm32.md |
| 399 | + grep -Eq 'target_cpu[[:space:]]*=[[:space:]]*"wasm"' skia/dist/build_config_manifest-wasm-wasm32.md |
| 400 | + grep -Eq 'skia_use_webgl[[:space:]]*=[[:space:]]*true' skia/dist/build_config_manifest-wasm-wasm32.md |
| 401 | + grep -Eq 'skia_gl_standard[[:space:]]*=[[:space:]]*"webgl"' skia/dist/build_config_manifest-wasm-wasm32.md |
| 402 | + ! find skia/dist -maxdepth 1 -name '*.so' | grep -q . |
| 403 | +
|
| 404 | + - name: Upload artifact |
| 405 | + uses: actions/upload-artifact@v7 |
| 406 | + with: |
| 407 | + name: skia-wasm-wasm32 |
| 408 | + path: | |
| 409 | + skia/dist/libskia-wasm32.a |
| 410 | + skia/dist/build_config_manifest-wasm-wasm32.md |
| 411 | +
|
| 412 | + - name: Upload diagnostics |
| 413 | + if: always() |
| 414 | + uses: actions/upload-artifact@v7 |
| 415 | + with: |
| 416 | + name: skia-diagnostics-wasm-wasm32 |
| 417 | + path: skia/dist/diagnostics |
| 418 | + |
341 | 419 | build-apple: |
342 | 420 | name: Build ${{ matrix.platform_arch }} |
343 | 421 | runs-on: macos-15 |
@@ -581,6 +659,7 @@ jobs: |
581 | 659 | needs: |
582 | 660 | - build-linux |
583 | 661 | - build-android |
| 662 | + - build-wasm |
584 | 663 | - build-apple |
585 | 664 | - package-ios |
586 | 665 | - build-windows |
|
0 commit comments