Fix GitHub workflow jobs so they run, upgrade Swift toolchain, Android API & NDK versions. #103
Workflow file for this run
This file contains hidden or 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 | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| jobs: | |
| spm: | |
| runs-on: windows-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - swift_development_build: DEVELOPMENT-SNAPSHOT-2025-09-21-a | |
| options: -Xswiftc "-I${env:SDKROOT}\..\..\..\..\..\..\Toolchains\0.0.0+Asserts\usr\include" | |
| name: SPM (Windows) - Swift ${{ matrix.swift_release_tag_name }} | |
| steps: | |
| - uses: compnerd/gha-setup-swift@main | |
| with: | |
| swift-version: development | |
| swift-build: ${{ matrix.swift_development_build }} | |
| - uses: actions/checkout@v4 | |
| - uses: dsaltares/fetch-gh-release-asset@a40c8b4a0471f9ab81bdf73a010f74cc51476ad4 # v1.1.1 | |
| with: | |
| repo: thebrowsercompany/firebase-cpp-sdk | |
| version: tags/20240909.0 | |
| file: firebase-windows-amd64.zip | |
| - run: | | |
| Expand-Archive -Path firebase-windows-amd64.zip -DestinationPath third_party | |
| Rename-Item -Path third_party/firebase-windows-amd64 -NewName firebase-development | |
| shell: powershell | |
| - name: Build | |
| run: swift build -v ${{ matrix.options }} | |
| cmake: | |
| runs-on: windows-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - swift_development_build: DEVELOPMENT-SNAPSHOT-2025-09-21-a | |
| options: -I${env:SDKROOT}\..\..\..\..\..\..\Toolchains\0.0.0+Asserts\usr\include | |
| name: CMake (Windows) - Swift ${{ matrix.swift_release_tag_name }} | |
| steps: | |
| - uses: compnerd/gha-setup-vsdevenv@main | |
| - uses: compnerd/gha-setup-swift@main | |
| with: | |
| swift-version: development | |
| swift-build: ${{ matrix.swift_development_build }} | |
| - uses: actions/checkout@v4 | |
| - uses: dsaltares/fetch-gh-release-asset@a40c8b4a0471f9ab81bdf73a010f74cc51476ad4 # v1.1.1 | |
| with: | |
| repo: thebrowsercompany/firebase-cpp-sdk | |
| version: tags/20240909.0 | |
| file: firebase-windows-amd64.zip | |
| - run: | | |
| Expand-Archive -Path firebase-windows-amd64.zip -DestinationPath third_party | |
| Rename-Item -Path third_party/firebase-windows-amd64 -NewName firebase-development | |
| shell: powershell | |
| - name: Configure | |
| run: | | |
| cmake -B out ` | |
| -D CMAKE_BUILD_TYPE=Release ` | |
| -G Ninja ` | |
| -S ${{ github.workspace }} ` | |
| -D CMAKE_Swift_FLAGS="${{ matrix.options }}" ` | |
| -D SWIFT_FIREBASE_BUILD_EXAMPLES=NO | |
| - name: Build | |
| run: cmake --build out | |
| android: | |
| runs-on: windows-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # TODO: Remove the following workaround from `options`, due to missing `libclang_rt.builtins.a` | |
| # and `libunwind.a` libraries in the Swift toolchain: | |
| # -Xclang-linker -resource-dir -Xclang-linker ${env:ANDROID_NDK_ROOT}\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\18 | |
| include: | |
| - swift_development_build: DEVELOPMENT-SNAPSHOT-2025-11-03-a | |
| abi: arm64-v8a | |
| options: -sdk ${env:SDKROOT}..\..\..\..\Android.platform\Developer\SDKs\Android.sdk -sysroot ${env:ANDROID_NDK_ROOT}\toolchains\llvm\prebuilt\windows-x86_64\sysroot -Xclang-linker -resource-dir -Xclang-linker ${env:ANDROID_NDK_ROOT}\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\18 -I${env:SDKROOT}\..\..\..\..\..\..\Toolchains\0.0.0+Asserts\usr\include -I${env:SDKROOT}\usr\include -Xlinker -zdefs | |
| target: aarch64-unknown-linux-android28 | |
| - swift_development_build: DEVELOPMENT-SNAPSHOT-2025-11-03-a | |
| abi: x86_64 | |
| options: -sdk ${env:SDKROOT}..\..\..\..\Android.platform\Developer\SDKs\Android.sdk -sysroot ${env:ANDROID_NDK_ROOT}\toolchains\llvm\prebuilt\windows-x86_64\sysroot -Xclang-linker -resource-dir -Xclang-linker ${env:ANDROID_NDK_ROOT}\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\18 -I${env:SDKROOT}\..\..\..\..\..\..\Toolchains\0.0.0+Asserts\usr\include -I${env:SDKROOT}\usr\include -Xlinker -zdefs | |
| target: x86_64-unknown-linux-android28 | |
| name: CMake (Android) - Swift ${{ matrix.swift_release_tag_name }} ${{ matrix.abi }} | |
| steps: | |
| - uses: compnerd/gha-setup-vsdevenv@main | |
| - uses: compnerd/gha-setup-swift@main | |
| with: | |
| swift-version: development | |
| swift-build: ${{ matrix.swift_development_build }} | |
| - uses: actions/checkout@v4 | |
| - uses: dsaltares/fetch-gh-release-asset@a40c8b4a0471f9ab81bdf73a010f74cc51476ad4 # v1.1.1 | |
| with: | |
| repo: thebrowsercompany/firebase-cpp-sdk | |
| version: tags/20240909.0 | |
| file: firebase-android-${{ matrix.abi }}.zip | |
| - run: | | |
| Expand-Archive -Path firebase-android-${{ matrix.abi }}.zip -DestinationPath third_party | |
| Rename-Item -Path third_party/firebase-android-${{ matrix.abi}} -NewName firebase-development | |
| shell: powershell | |
| - uses: nttld/setup-ndk@afb4c9964b521afb97c864b7d40b11e6911bd410 # v1.5.0 | |
| id: setup-ndk | |
| with: | |
| ndk-version: r27c | |
| - uses: actions/setup-java@v4 | |
| with: | |
| java-version: 17 | |
| distribution: temurin | |
| - uses: android-actions/setup-android@00854ea68c109d98c75d956347303bf7c45b0277 # v3.2.1 | |
| with: | |
| packages: 'platforms;android-28' | |
| # TODO: Remove the workaround step below, due to `std::__voidify()` not being accessible | |
| # with the current combination of Swift toolchain and Andoird NDK versions. | |
| - name: Patch out private symbol std::__voidify() in construct_at.h | |
| env: | |
| ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }} | |
| run: | | |
| $construct_at_h_path="${env:ANDROID_NDK_ROOT}\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\__memory\construct_at.h" | |
| (Get-Content $construct_at_h_path) -replace "std::__voidify","(void *) &" | Set-Content $construct_at_h_path | |
| shell: powershell | |
| - name: Configure | |
| env: | |
| ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }} | |
| run: | | |
| cmake -B out ` | |
| -D CMAKE_BUILD_TYPE=RelWithDebInfo ` | |
| -G Ninja ` | |
| -S ${{ github.workspace }} ` | |
| -D CMAKE_SYSTEM_NAME=Android ` | |
| -D CMAKE_ANDROID_ARCH_ABI=${{ matrix.abi }} ` | |
| -D CMAKE_ANDROID_API=28 ` | |
| -D CMAKE_Swift_COMPILER_TARGET=${{ matrix.target }} ` | |
| -D CMAKE_Swift_COMPILER_WORKS=YES ` | |
| -D CMAKE_Swift_FLAGS="${{ matrix.options }}" ` | |
| -D SWIFT_FIREBASE_BUILD_EXAMPLES=NO | |
| - name: Build | |
| run: cmake --build out |