diff --git a/.github/workflows/build-dawn.yml b/.github/workflows/build-dawn.yml deleted file mode 100644 index 847c0c1f87..0000000000 --- a/.github/workflows/build-dawn.yml +++ /dev/null @@ -1,277 +0,0 @@ -name: Build Dawn - -on: workflow_dispatch - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - DAWN_BRANCH: chromium/7849 # Configure the Dawn branch to checkout - -jobs: - prepare-release: - runs-on: ubuntu-latest - outputs: - dawn_branch: ${{ steps.dawn_meta.outputs.branch }} - dawn_branch_slug: ${{ steps.dawn_meta.outputs.branch_slug }} - tag_name: ${{ steps.release_meta.outputs.tag_name }} - release_name: ${{ steps.release_meta.outputs.release_name }} - steps: - - name: Checkout repository - uses: actions/checkout@v7.0.1 - - - name: Determine Dawn branch metadata - id: dawn_meta - run: | - set -eo pipefail - branch="${DAWN_BRANCH}" - # Convert slashes to hyphens for tag-safe slug - slug=${branch//\//-} - echo "branch=$branch" >> "$GITHUB_OUTPUT" - echo "branch_slug=$slug" >> "$GITHUB_OUTPUT" - env: - DAWN_BRANCH: ${{ env.DAWN_BRANCH }} - - - name: Compute release metadata - id: release_meta - run: | - tag="dawn-${DAWN_BRANCH_SLUG}" - echo "tag_name=$tag" >> "$GITHUB_OUTPUT" - echo "release_name=Dawn ${DAWN_BRANCH}" >> "$GITHUB_OUTPUT" - env: - DAWN_BRANCH: ${{ steps.dawn_meta.outputs.branch }} - DAWN_BRANCH_SLUG: ${{ steps.dawn_meta.outputs.branch_slug }} - - - name: Create GitHub release - id: create_release - uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.release_meta.outputs.tag_name }} - name: ${{ steps.release_meta.outputs.release_name }} - body: "Dawn prebuilt binaries for version ${{ steps.dawn_meta.outputs.branch }}" - draft: false - prerelease: true - generate_release_notes: false - - mobile-android: - needs: prepare-release - strategy: - fail-fast: false - matrix: - include: - # Android builds - - arch: arm64-v8a - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_arm64-v8a - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - arch: armeabi-v7a - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_armeabi-v7a - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - arch: x86 - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=x86 -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_x86 - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - arch: x86_64 - toolchain_file: $ANDROID_NDK/build/cmake/android.toolchain.cmake - cmake_args: -DANDROID_ABI=x86_64 -DANDROID_PLATFORM=android-26 - output_dir: externals/dawn/out/android_x86_64 - library_path: src/dawn/native/libwebgpu_dawn.so - strip_tool: $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip - - name: Build-android-${{ matrix.arch }} - runs-on: ubuntu-latest - steps: - - name: Checkout main repository - uses: actions/checkout@v7.0.1 - - - name: Checkout Dawn repository - run: | - git clone --depth 1 --branch ${{ env.DAWN_BRANCH }} https://dawn.googlesource.com/dawn externals/dawn - - - name: Setup Android NDK - id: setup-ndk - uses: nttld/setup-ndk@ed92fe6cadad69be94a966a7ee3271275e62f779 # v1.6.0 - with: - ndk-version: r27d - - - name: Set ANDROID_NDK - run: echo "ANDROID_NDK=${{ steps.setup-ndk.outputs.ndk-path }}" >> $GITHUB_ENV - - - name: Build android ${{ matrix.arch }} - run: | - cmake -S externals/dawn -B ${{ matrix.output_dir }} -G Ninja \ - -DDAWN_MOBILE_BUILD=android \ - -C externals/dawn/.github/workflows/dawn-ci.cmake \ - -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain_file }} \ - ${{ matrix.cmake_args }} \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=OFF \ - -DDAWN_BUILD_MONOLITHIC_LIBRARY=SHARED \ - -DDAWN_BUILD_PROTOBUF=OFF \ - -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON \ - -DCMAKE_EXE_LINKER_FLAGS="-llog" \ - -DCMAKE_SHARED_LINKER_FLAGS="-llog -Wl,-z,max-page-size=16384" - ninja -C ${{ matrix.output_dir }} - - name: Strip Android binaries - run: | - ${{ matrix.strip_tool }} ${{ matrix.output_dir }}/${{ matrix.library_path }} - - - name: Upload build artifacts - uses: actions/upload-artifact@v7 - with: - name: build-android-${{ matrix.arch }} - path: ${{ matrix.output_dir }}/${{ matrix.library_path }} - - - name: Install headers (from arm64-v8a build only) - if: matrix.arch == 'arm64-v8a' - run: | - cmake --install ${{ matrix.output_dir }} --prefix dawn-headers - - - name: Upload headers (from arm64-v8a build only) - if: matrix.arch == 'arm64-v8a' - uses: actions/upload-artifact@v7 - with: - name: dawn-headers - path: dawn-headers/ - - mobile-apple: - needs: prepare-release - strategy: - fail-fast: false - matrix: - include: - # Apple builds - - platform: ios - arch: arm64 - cmake_args: -DPLATFORM=OS64 -DDEPLOYMENT_TARGET=14.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/ios_arm64 - library_path: src/dawn/native/libwebgpu_dawn.a - - platform: ios - arch: sim_arm64 - cmake_args: -DPLATFORM=SIMULATORARM64 -DDEPLOYMENT_TARGET=14.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/ios_sim_arm64 - library_path: src/dawn/native/libwebgpu_dawn.a - - platform: ios - arch: sim_x86_64 - cmake_args: -DPLATFORM=SIMULATOR64 -DDEPLOYMENT_TARGET=14.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/ios_sim_x86_64 - library_path: src/dawn/native/libwebgpu_dawn.a - - platform: macos - arch: universal - cmake_args: -DPLATFORM=MAC_UNIVERSAL -DDEPLOYMENT_TARGET=11.0 -DENABLE_BITCODE=OFF -DENABLE_ARC=OFF -DENABLE_VISIBILITY=OFF - output_dir: externals/dawn/out/macos_universal - library_path: src/dawn/native/libwebgpu_dawn.a - - name: Build-${{ matrix.platform }}-${{ matrix.arch }} - runs-on: macos-latest-large - steps: - - name: Checkout main repository - uses: actions/checkout@v7.0.1 - - - name: Checkout Dawn repository - run: | - git clone --depth 1 --branch ${{ env.DAWN_BRANCH }} https://dawn.googlesource.com/dawn externals/dawn -# submodules: true - - - name: Setup Xcode - uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0 - with: - xcode-version: latest-stable - - - name: Download Apple toolchain - run: | - mkdir -p externals/dawn/build-tools - # Download the ios-cmake toolchain file - curl -L https://raw.githubusercontent.com/leetal/ios-cmake/6fa909e133b92343db2d099e0478448c05ffec1a/ios.toolchain.cmake -o externals/dawn/build-tools/apple.toolchain.cmake - - - name: Build ${{ matrix.platform }} ${{ matrix.arch }} - run: | - cmake -S externals/dawn -B ${{ matrix.output_dir }} -G Ninja \ - -DDAWN_MOBILE_BUILD=apple \ - -C externals/dawn/.github/workflows/dawn-ci.cmake \ - -DCMAKE_TOOLCHAIN_FILE=build-tools/apple.toolchain.cmake \ - ${{ matrix.cmake_args }} \ - -DCMAKE_BUILD_TYPE=Release \ - -DDAWN_BUILD_PROTOBUF=OFF - ninja -C ${{ matrix.output_dir }} - - name: Upload build artifacts - uses: actions/upload-artifact@v7 - with: - name: build-${{ matrix.platform }}-${{ matrix.arch }} - path: ${{ matrix.output_dir }}/${{ matrix.library_path }} - - package-mobile: - name: Package Mobile Artifacts - runs-on: macos-latest - needs: [prepare-release, mobile-android, mobile-apple] - steps: - - name: Checkout main repository - uses: actions/checkout@v7.0.1 - - - name: Download all build artifacts - uses: actions/download-artifact@v8 - with: - pattern: build-* - path: artifacts - - - name: Download headers - uses: actions/download-artifact@v8 - with: - name: dawn-headers - path: dawn-headers - - - name: Create iOS Simulator fat binary - run: | - mkdir -p libs/apple/iphonesimulator - lipo -create \ - artifacts/build-ios-sim_x86_64/libwebgpu_dawn.a \ - artifacts/build-ios-sim_arm64/libwebgpu_dawn.a \ - -output libs/apple/iphonesimulator/libwebgpu_dawn.a - - - name: Create XCFramework - run: | - xcodebuild -create-xcframework \ - -library libs/apple/iphonesimulator/libwebgpu_dawn.a \ - -library artifacts/build-ios-arm64/libwebgpu_dawn.a \ - -library artifacts/build-macos-universal/libwebgpu_dawn.a \ - -output dawn-apple.xcframework - - - name: Package Android libraries - run: | - mkdir -p dawn-android/arm64-v8a - mkdir -p dawn-android/armeabi-v7a - mkdir -p dawn-android/x86 - mkdir -p dawn-android/x86_64 - cp artifacts/build-android-arm64-v8a/libwebgpu_dawn.so dawn-android/arm64-v8a/ - cp artifacts/build-android-armeabi-v7a/libwebgpu_dawn.so dawn-android/armeabi-v7a/ - cp artifacts/build-android-x86/libwebgpu_dawn.so dawn-android/x86/ - cp artifacts/build-android-x86_64/libwebgpu_dawn.so dawn-android/x86_64/ - - - name: Create archives - run: | - TAG="${{ needs.prepare-release.outputs.tag_name }}" - tar -czf dawn-android-${TAG}.tar.gz dawn-android - tar -czf dawn-apple-${TAG}.xcframework.tar.gz dawn-apple.xcframework - tar -czf dawn-headers-${TAG}.tar.gz dawn-headers - - - name: Upload to GitHub release - uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ needs.prepare-release.outputs.tag_name }} - files: | - dawn-android-${{ needs.prepare-release.outputs.tag_name }}.tar.gz - dawn-apple-${{ needs.prepare-release.outputs.tag_name }}.xcframework.tar.gz - dawn-headers-${{ needs.prepare-release.outputs.tag_name }}.tar.gz - prerelease: true