Skip to content

Update to Xcode 16.2. #1715

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
ba0c129
Update mobile dependencies - Mon May 05 2025
May 5, 2025
4f1ca0d
Update Xcode version.
jonsimantov May 16, 2025
9d9fe42
Merge branch 'main' into xcode_16
jonsimantov May 16, 2025
4462b70
Update Xcode version in readme.
jonsimantov May 16, 2025
989ae56
Update macos runner version.
jonsimantov May 16, 2025
1212a55
Update macos runner version.
jonsimantov May 16, 2025
686f120
Update Java version.
jonsimantov May 16, 2025
ed5f593
Fix yaml files.
jonsimantov May 16, 2025
48d1035
Tweak.
jonsimantov May 16, 2025
9821ba9
Fix openssl build for x86_64 Mac build.
jonsimantov May 19, 2025
8a1d6be
Merge branch 'workflow/auto-update-deps-259-20250505-181050' into xco…
jonsimantov May 19, 2025
b647315
Disable warning for deprecated declarations.
jonsimantov May 19, 2025
2b10a0e
Merge branch 'main' into xcode_16
jonsimantov May 19, 2025
a17e21c
Update to Python 3.11.
jonsimantov May 19, 2025
a98a3dc
Merge branch 'xcode_16' of https://github.com/firebase/firebase-cpp-s…
jonsimantov May 19, 2025
ccaff5c
Revert "Update to Python 3.11."
jonsimantov May 19, 2025
4992986
Update Python less.
jonsimantov May 19, 2025
0c83844
Revert "Merge branch 'workflow/auto-update-deps-259-20250505-181050' …
jonsimantov May 19, 2025
53f19fd
Revert "Update Python less."
jonsimantov May 19, 2025
a6e6c95
Try Python 3.8.
jonsimantov May 20, 2025
5b4f6ee
Update matrices to make Mac builds occur on arm64.
jonsimantov May 20, 2025
706d76e
Fix python architecture.
jonsimantov May 20, 2025
1787268
Don't use x86 arch on ubuntu.
jonsimantov May 20, 2025
c045c8e
Fix matrix specifier.
jonsimantov May 20, 2025
f08b183
Fix architecture specifier.
jonsimantov May 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
env:
CCACHE_DIR: ${{ github.workspace }}/ccache_dir
GITHUB_TOKEN: ${{ github.token }}
xcodeVersion: "14.1" # Only affects Mac runners, and only for prerequisites.
xcodeVersion: "16.2" # Only affects Mac runners, and only for prerequisites.

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
Expand Down Expand Up @@ -50,6 +50,15 @@ jobs:
os: ${{ fromJson(needs.prepare_matrix.outputs.matrix_os) }}
architecture: ${{ fromJson(needs.prepare_matrix.outputs.matrix_architecture) }}
python_version: ${{ fromJson(needs.prepare_matrix.outputs.matrix_python_version) }}
exclude:
# Do not attempt to use arm64 on Windows or Linux.
- os: windows-latest
architecture: arm64
- os: ubuntu-22.04
architecture: arm64
# Do not attempt to use x64 on Mac.
- os: macos-14
architecture: x64
steps:
- uses: lukka/get-cmake@latest
with:
Expand All @@ -58,8 +67,13 @@ jobs:
if: runner.os == 'macOS'
run: sudo xcode-select -s /Applications/Xcode_${{ env.xcodeVersion }}.app/Contents/Developer
- name: Force Java 11
if: runner.os != 'macOS'
shell: bash
run: echo "JAVA_HOME=${JAVA_HOME_11_X64}" >> $GITHUB_ENV
- name: Force Java 11 (mac)
if: runner.os == 'macOS'
shell: bash
run: echo "JAVA_HOME=${JAVA_HOME_11_arm64}" >> $GITHUB_ENV
- name: Store git credentials for all git commands
# Forces all git commands to use authenticated https, to prevent throttling.
shell: bash
Expand Down
24 changes: 12 additions & 12 deletions .github/workflows/cpp-packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ env:
demumbleVer: "df938e45c2b0e064fb5323d88b692d03b451d271"
# Use SHA256 for hashing files.
hashCommand: "sha256sum"
# Xcode version 15.1 is the version we build the SDK with.
# Xcode version 16.2 is the version we build the SDK with.
# Our MacOS runners will use the version in /Applications/Xcode_${xcodeVersion}.app
xcodeVersion: "15.1"
xcodeVersion: "16.2"
# LLVM version with ARM MachO support has no version number yet.
llvmVer: "5f187f0afaad33013ba03454c4749d99b1362534"
GITHUB_TOKEN: ${{ github.token }}
Expand Down Expand Up @@ -79,13 +79,13 @@ jobs:
if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }}
strategy:
matrix:
os: [ubuntu-22.04, macos-13]
os: [ubuntu-22.04, macos-14]
include:
- os: ubuntu-22.04
tools_platform: linux
# Binutils 2.35.1 released Sep 19, 2020
binutils_version: "2.35.1"
- os: macos-13
- os: macos-14
tools_platform: darwin
# Binutils 2.35.1 released Sep 19, 2020
binutils_version: "2.35.1"
Expand Down Expand Up @@ -188,7 +188,7 @@ jobs:

build_and_package_ios_tvos:
name: build-and-package-ios-tvos
runs-on: macos-13
runs-on: macos-14
if: ${{ github.event.inputs.downloadPublicVersion == '' && github.event.inputs.downloadPreviousRun == '' }}
steps:
- uses: lukka/get-cmake@latest
Expand Down Expand Up @@ -317,7 +317,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-22.04, macos-13]
os: [windows-latest, ubuntu-22.04, macos-14]
build_type: ["Release", "Debug"]
architecture: ["x64", "x86", "arm64"]
msvc_runtime: ["static", "dynamic"]
Expand All @@ -335,21 +335,21 @@ jobs:
vcpkg_triplet_suffix: "linux"
additional_build_flags: ""
sdk_platform: "linux"
- os: macos-13
- os: macos-14
vcpkg_triplet_suffix: "osx"
additional_build_flags: "--target_format libraries"
sdk_platform: "darwin"

exclude:
- os: windows-latest
linux_abi: "c++11"
- os: macos-13
- os: macos-14
architecture: "x86"
- os: macos-13
- os: macos-14
msvc_runtime: "dynamic"
- os: macos-13
- os: macos-14
linux_abi: "c++11"
- os: macos-13
- os: macos-14
build_type: "Debug"
- os: ubuntu-22.04
msvc_runtime: "dynamic"
Expand Down Expand Up @@ -504,7 +504,7 @@ jobs:
suffix: '-x64-Debug-dynamic'
runs_on_platform: ubuntu-22.04
- sdk_platform: darwin
runs_on_platform: macos-13
runs_on_platform: macos-14
exclude:
- sdk_platform: windows
suffix: ''
Expand Down
16 changes: 13 additions & 3 deletions .github/workflows/desktop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,13 @@ jobs:
# msvc_runtime excludes
- os: ubuntu-22.04
msvc_runtime: "dynamic"
- os: macos-13
- os: macos-14
msvc_runtime: "dynamic"
# architecture excluees
- os: macos-13
- os: macos-14
architecture: "x86"
- os: macos-14
architecture: "x64"
# Xcode excludes -- allow only one on osx and linux
- os: ubuntu-22.04
xcode_version: "11.7"
Expand Down Expand Up @@ -168,9 +170,17 @@ jobs:

- name: Setup python
uses: actions/setup-python@v4
if: startsWith(matrix.os, 'ubuntu')
with:
python-version: ${{ matrix.python_version }}
architecture: x64

- name: Setup python (Mac)
uses: actions/setup-python@v4
if: startsWith(matrix.os, 'macos')
with:
python-version: ${{ matrix.python_version }}
architecture: 'x64'
architecture: ${{ matrix.architecture }}

- name: Install Desktop SDK prerequisites
uses: nick-invision/retry@v2
Expand Down
58 changes: 27 additions & 31 deletions .github/workflows/integration_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ on:
required: true
operating_systems:
description: 'CSV of VMs to run on'
default: 'ubuntu-22.04,windows-latest,macos-13'
default: 'ubuntu-22.04,windows-latest,macos-14'
required: true
desktop_ssl_variants:
description: 'CSV of desktop SSL variants to use'
Expand Down Expand Up @@ -49,14 +49,9 @@ env:
triggerLabelFull: "tests-requested: full"
triggerLabelQuick: "tests-requested: quick"
pythonVersion: '3.8'
xcodeVersion: '15.1'
xcodeVersion: '16.2'
artifactRetentionDays: 2
GITHUB_TOKEN: ${{ github.token }}
# All self-hosted ARM Mac runners should have this label. Due to how
# our custom reporting works, it must be exactly two words separated
# by a hyphen. The first word must be "macos". The second word will
# be omitted from the summary log.
runnerLabelMacArm64: "macos-m1custom"

jobs:
check_and_prepare:
Expand All @@ -77,8 +72,6 @@ jobs:
xcode_version: ${{ steps.matrix_config.outputs.xcode_version }}
ios_device: ${{ steps.matrix_config.outputs.ios_device }}
tvos_device: ${{ steps.matrix_config.outputs.tvos_device }}
# Copy the runner label here because matrix specifiers cannot see env.
runner_label_macos_arm64: ${{ env.runnerLabelMacArm64 }}
steps:
### Fail the workflow if the user does not have admin access to run the tests.
- name: Check if user has permission to trigger tests
Expand Down Expand Up @@ -206,7 +199,7 @@ jobs:
# at 3am PST/4am PDT. Running firestore desktop integration test aginst tip-of-tree ios repo
echo "::warning ::Running against Firestore tip-of-tree"
matrix_platform="Desktop"
matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-13")
matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "ubuntu-22.04,macos-14")
else
matrix_platform=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k platform -o "${{github.event.inputs.platforms}}" --apis ${apis} )
matrix_os=$( python scripts/gha/print_matrix_configuration.py -w integration_tests ${TEST_MATRIX_PARAM} -k os -o "${{github.event.inputs.operating_systems}}")
Expand Down Expand Up @@ -273,18 +266,18 @@ jobs:
- os: ubuntu-22.04
arch: arm64
# Do not attempt to use x86 on Mac.
- os: macos-13
- os: macos-14
arch: x86
# Until we support building openssl from source, we can't use the
# system's openssl when cross-compiling, except on Linux. Builds all
# happen on x64 machines, so arm64 and x86 are technically
# cross-compiling.
# system's openssl when cross-compiling, except on Linux. Builds on Linux
# happen on x64 machines, so x86 is technically cross-compiling. Builds on
# Mac happen on arm64 machines, so x64 is technically cross-compiling.
- os: windows-latest
ssl_variant: openssl
arch: x86
- os: macos-13
- os: macos-14
ssl_variant: openssl
arch: arm64
arch: x64
steps:
- uses: lukka/get-cmake@latest
with:
Expand Down Expand Up @@ -435,8 +428,13 @@ jobs:
ref: ${{needs.check_and_prepare.outputs.github_ref}}
submodules: true
- name: Force Java 11
if: ${{ !(runner.os == 'macOS') }}
shell: bash
run: echo "JAVA_HOME=${JAVA_HOME_11_X64}" >> $GITHUB_ENV
- name: Force Java 11 (mac)
if: ${{ runner.os == 'macOS' }}
shell: bash
run: echo "JAVA_HOME=${JAVA_HOME_11_arm64}" >> $GITHUB_ENV
- name: Add msbuild to PATH (Windows)
if: startsWith(matrix.os, 'windows')
uses: microsoft/[email protected]
Expand Down Expand Up @@ -539,7 +537,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-13]
os: [macos-14]
steps:
- uses: lukka/get-cmake@latest
with:
Expand Down Expand Up @@ -647,7 +645,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-13]
os: [macos-14]
steps:
- uses: lukka/get-cmake@latest
with:
Expand Down Expand Up @@ -767,20 +765,18 @@ jobs:
- os: ubuntu-22.04
arch: arm64
# Do not attempt to use x86 on Mac.
- os: macos-13
- os: macos-14
arch: x86
# Until we support building openssl from source, we can't use the
# system's openssl when cross-compiling, except on Linux. Builds all
# happen on x64 machines, so arm64 and x86 are technically
# cross-compiling.
# system's openssl when cross-compiling, except on Linux. Builds on Linux
# happen on x64 machines, so x86 is technically cross-compiling. Builds on
# Mac happen on arm64 machines, so x64 is technically cross-compiling.
- os: windows-latest
ssl_variant: openssl
arch: x86
# Custom for this matrix: MacOS GitHub-hosted runner cannot test arm64
# code. Exclude that scenario from running here; it will run in
# test_desktop_custom_runners.
- os: macos-13
arch: arm64
- os: macos-14
ssl_variant: openssl
arch: x64
steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -1010,7 +1006,7 @@ jobs:
test_ios:
name: test-ios-${{ matrix.build_os }}-${{ matrix.ios_device }}-${{ matrix.test_type }}
needs: [check_and_prepare, build_ios]
runs-on: macos-13
runs-on: macos-14
if: contains(needs.check_and_prepare.outputs.matrix_platform, 'iOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled()
strategy:
fail-fast: false
Expand All @@ -1024,7 +1020,7 @@ jobs:
test_type: "uitest"
- ios_device: "ios_latest"
test_type: "uitest"
build_os: [macos-13]
build_os: [macos-14]
steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -1189,13 +1185,13 @@ jobs:
test_tvos:
name: test-tvos-${{ matrix.build_os }}-${{ matrix.tvos_device }}
needs: [check_and_prepare, build_tvos]
runs-on: macos-13
runs-on: macos-14
if: contains(needs.check_and_prepare.outputs.matrix_platform, 'tvOS') && needs.check_and_prepare.outputs.apis != '' && !cancelled()
strategy:
fail-fast: false
matrix:
tvos_device: ${{ fromJson(needs.check_and_prepare.outputs.tvos_device) }}
build_os: [macos-13]
build_os: [macos-14]
steps:
- uses: actions/checkout@v3
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ 'macos-13' ]
os: [ 'macos-14' ]
xcode_version: ${{ fromJson(needs.prepare_matrix.outputs.matrix_xcode_version) }}
steps:
- uses: lukka/get-cmake@latest
Expand All @@ -66,7 +66,7 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: 3.8
architecture: "x64"
architecture: "arm64"

- name: Install prerequisites
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ env:
jobs:
update_dependencies:
name: update-deps
runs-on: macos-13
runs-on: macos-14
steps:
- name: Get token for firebase-workflow-trigger
uses: tibdex/github-app-token@v1
Expand Down
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,11 @@ if(APPLE)
# build output for our Objective-C++ files much too verbose.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-nullability-completeness")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-nullability-completeness")
if(DESKTOP)
# Mac desktop Firestore build requires -Wno-deprecated-declarations
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated-declarations")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
endif()
endif()

if(DESKTOP AND NOT MSVC AND NOT APPLE)
Expand Down
4 changes: 3 additions & 1 deletion release_build_files/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ Firebase Cloud Messaging (stub) | firebase_messaging.framework
User Messaging Platform (stub) | libfirebase_ump.a
| | libfirebase_app.a

The provided libraries have been tested using Xcode 14.1. When building C++
The provided libraries have been tested using Xcode 16.2. When building C++
desktop apps on OS X, you will need to link the `gssapi_krb5` and `pthread`
system libraries, as well as the `CoreFoundation`, `Foundation`, `GSS`, and
`Security` OS X system frameworks (consult your compiler documentation for more
Expand Down Expand Up @@ -656,6 +656,8 @@ code.
## Release Notes
### 12.8.0
- Changes
- General (iOS, tvOS, Desktop): iOS, tvOS, and macOS SDKs are now built
using Xcode 16.2.
- UMP: Moved the User Messaging Platform SDK to its own top-level
library and to the firebase::ump namespace. The version in the
GMA library (in firebase::gma::ump) has been deprecated and will
Expand Down
Loading
Loading