magreenblatt wrote:Did you read the link? It mentions a script for creating a universal package.
Are you referring to
@ https://chromium.googlesource.com/chromium/src.git/+/refs/heads/main/docs/mac_arm64.md#universal-buildsUniversal Builds
A “universal” (or “fat”) .app can be created from distinct x86_64 and arm64 builds produced from the same source version. Chromium has a universalizer.py tool that can then be used to merge the two builds into a single universal .app.
% ninja -C out/release_x86_64 chrome
% ninja -C out/release_arm64 chrome
% mkdir out/release_universal
% chrome/installer/mac/universalizer.py \
out/release_x86_64/Chromium.app \
out/release_arm64/Chromium.app \
out/release_universal/Chromium.app
The universal build is produced in this way rather than having a single all-encompassing gn configuration because:
Chromium builds tend to take a long time, even maximizing the parallelism capabilities of a single machine. This split allows an additional dimension of parallelism by delegating the x86_64 and arm64 build tasks to different machines.
During the mac-arm64 bring-up, the x86_64 and arm64 versions were built using different SDK and toolchain versions. When using the hermetic SDK and toolchain, a single version of this package must be shared by an entire source tree, because it’s managed by gclient, not gn. However, as of November 2020, Chromium builds for the two architectures converged and are expected to remain on the same version indefinitely, so this is now more of a historical artifact.