From 9fdcc933f0e32aa948c0b42858004330c2c6f1c4 Mon Sep 17 00:00:00 2001 From: Ihor Dutchak <> Date: Sun, 25 May 2025 01:46:24 +0300 Subject: [PATCH 1/2] Fix Darwin Universal build Properly use mig generator for Universal builds, e.g. when CMAKE_OSX_ARCHITECTURES=x86_64;arm64 --- util/CMakeLists.txt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/util/CMakeLists.txt b/util/CMakeLists.txt index 23d2a3c2..bd69d1f6 100644 --- a/util/CMakeLists.txt +++ b/util/CMakeLists.txt @@ -377,18 +377,24 @@ if (APPLE) list(APPEND OUTPUT_FILES "${OUTPUT_PATH}/${BASE_NAME}${SUFFIX}") endforeach() - if (${CMAKE_OSX_ARCHITECTURES}) - set(MIG_ARCH ${CMAKE_OSX_ARCHITECTURES}) + if(CMAKE_OSX_ARCHITECTURES) + set(OSX_ARCHITECTURES ${CMAKE_OSX_ARCHITECTURES}) else() - set(MIG_ARCH "arm64") + set(OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR}) endif() + set(MIG_ARCH) + foreach(ARCH ${OSX_ARCHITECTURES}) + list(APPEND MIG_ARCH "--arch") + list(APPEND MIG_ARCH ${ARCH}) + endforeach() + add_custom_command( OUTPUT ${OUTPUT_FILES} COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mach/mig.py" - "--arch" ${MIG_ARCH} + ${MIG_ARCH} "--sdk" ${CMAKE_OSX_SYSROOT} "--include=${CMAKE_CURRENT_SOURCE_DIR}/.." "--include=${CMAKE_CURRENT_SOURCE_DIR}/../compat/mac" From 526dcc0b40be8e6bee112979b6bf02b7f2a5793d Mon Sep 17 00:00:00 2001 From: Ihor Dutchak <> Date: Sun, 25 May 2025 02:05:04 +0300 Subject: [PATCH 2/2] Add CI for macOS Universal build --- .github/workflows/main.yml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a766ceae..2243177c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -119,6 +119,10 @@ jobs: matrix: arch: [arm64, x86_64] generator: ["Unix Makefiles", Ninja] + include: + - arch: "arm64;x86_64" + generator: Ninja + arch_name: universal steps: # Install latest CMake. @@ -128,10 +132,18 @@ jobs: with: submodules: recursive + - name: Set arch name + run: | + if [ -z "${{ matrix.arch_name }}" ]; then + echo "arch_name=${{ matrix.arch }}" >> $GITHUB_ENV + else + echo "arch_name=${{ matrix.arch_name }}" >> $GITHUB_ENV + fi + - name: CMake run: | mkdir cbuild - cmake -S . -B cbuild/ -DCRASHPAD_BUILD_EXAMPLES=TRUE -DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} -DCMAKE_OSX_SYSROOT=$(xcrun --sdk macosx --show-sdk-path) -G "${{ matrix.generator }}" + cmake -S . -B cbuild/ -DCRASHPAD_BUILD_EXAMPLES=TRUE "-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }}" -DCMAKE_OSX_SYSROOT=$(xcrun --sdk macosx --show-sdk-path) -G "${{ matrix.generator }}" cmake --build cbuild/ - uses: ruby/setup-ruby@v1 @@ -142,12 +154,12 @@ jobs: - name: Crashpad distribution ZIP run: | - ruby backtrace/save_artifacts.rb --output Crashpad_MacOs_build_${{ matrix.arch }}.zip + ruby backtrace/save_artifacts.rb --output Crashpad_MacOs_build_${{ env.arch_name }}.zip - uses: actions/upload-artifact@v4 with: - name: Crashpad_MacOs_build_${{ matrix.arch }}_${{ matrix.generator }}_${{ github.sha }} - path: Crashpad_MacOs_build_${{ matrix.arch }}.zip + name: Crashpad_MacOs_build_${{ env.arch_name }}_${{ matrix.generator }}_${{ github.sha }} + path: Crashpad_MacOs_build_${{ env.arch_name }}.zip build-android: runs-on: ubuntu-22.04