Skip to content

Fix GitHub workflow jobs so they run, upgrade Swift toolchain, Android API & NDK versions. #103

Fix GitHub workflow jobs so they run, upgrade Swift toolchain, Android API & NDK versions.

Fix GitHub workflow jobs so they run, upgrade Swift toolchain, Android API & NDK versions. #103

Workflow file for this run

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