From 1306da8f92b5b0331f760bf0acf1041a064126e3 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 24 Mar 2021 17:05:26 +0100 Subject: [PATCH] macOS: Build universal Qt for macOS Build a universal macOS targeting Intel x86_64 and Apple Silicon arm64 using the fat library technique. It will be our new Packaging configuration for macOS. Rename the Id of the configuration to 'macos-latest-xcode-universal-packaging-build'. x86_64 is the main config test architecture. The arm64 slice of the Qt build lacks certain functionality: - no qdoc, lupdate, etc due to missing arm64 llvm packages - no postgresql and odbc sql plugins due to missing arm64 3rd party libraries - no openssl due to missing arm64 library - no JIT support in QtQml, due to limitations in the current fork of the javascript engine Task-number: QTBUG-85447 Change-Id: If2a70f192a54d6f98137e05e5b938d118b6d1d1d Reviewed-by: Qt CI Bot Reviewed-by: Joerg Bornemann --- coin/platform_configs/cmake_platforms.yaml | 2 +- .../cmake_platforms_target_android_host_macos.yaml | 8 ++++---- coin/platform_configs/macos.yaml | 11 ++++++----- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/coin/platform_configs/cmake_platforms.yaml b/coin/platform_configs/cmake_platforms.yaml index b6c1a42d..65541be5 100644 --- a/coin/platform_configs/cmake_platforms.yaml +++ b/coin/platform_configs/cmake_platforms.yaml @@ -106,7 +106,7 @@ Configurations: Target arch: 'arm64' Compiler: 'Clang' Target compiler: 'Clang' - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' Features: ['Packaging', 'Sccache', 'DebugAndRelease'] Environment variables: ['TARGET_CONFIGURE_ARGS=-G"Ninja Multi-Config" -DCMAKE_CONFIGURATION_TYPES="Release;Debug" -DQT_BUILD_EXAMPLES=OFF -DCMAKE_SYSTEM_NAME=iOS', 'NON_QTBASE_TARGET_CONFIGURE_ARGS='] - diff --git a/coin/platform_configs/cmake_platforms_target_android_host_macos.yaml b/coin/platform_configs/cmake_platforms_target_android_host_macos.yaml index c30b0381..c34e9246 100644 --- a/coin/platform_configs/cmake_platforms_target_android_host_macos.yaml +++ b/coin/platform_configs/cmake_platforms_target_android_host_macos.yaml @@ -6,7 +6,7 @@ Configurations: Target arch: 'arm64' Compiler: 'Clang' Target compiler: 'Clang' - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' Features: ['Packaging', 'Sccache', 'DisableTests'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-DQT_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE={{.Env.ANDROID_NDK_ROOT}}/build/cmake/android.toolchain.cmake -DANDROID_SDK_ROOT={{.Env.ANDROID_SDK_HOME}} -DANDROID_ABI=arm64-v8a -DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache', @@ -17,7 +17,7 @@ Configurations: Target arch: 'armv7' Compiler: 'Clang' Target compiler: 'Clang' - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' Features: ['Packaging', 'Sccache', 'DisableTests'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-DQT_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE={{.Env.ANDROID_NDK_ROOT}}/build/cmake/android.toolchain.cmake -DANDROID_SDK_ROOT={{.Env.ANDROID_SDK_HOME}} -DANDROID_ABI=armeabi-v7a -DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache', @@ -28,7 +28,7 @@ Configurations: Target arch: 'x86' Compiler: 'Clang' Target compiler: 'Clang' - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' Features: ['Packaging', 'Sccache', 'DisableTests'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-DQT_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE={{.Env.ANDROID_NDK_ROOT}}/build/cmake/android.toolchain.cmake -DANDROID_SDK_ROOT={{.Env.ANDROID_SDK_HOME}} -DANDROID_ABI=x86 -DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache', @@ -39,7 +39,7 @@ Configurations: Target arch: 'x86_64' Compiler: 'Clang' Target compiler: 'Clang' - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' Features: ['Packaging', 'Sccache', 'DisableTests'] Environment variables: [ 'TARGET_CONFIGURE_ARGS=-DQT_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE={{.Env.ANDROID_NDK_ROOT}}/build/cmake/android.toolchain.cmake -DANDROID_SDK_ROOT={{.Env.ANDROID_SDK_HOME}} -DANDROID_ABI=x86_64 -DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache', diff --git a/coin/platform_configs/macos.yaml b/coin/platform_configs/macos.yaml index d677c4af..4fd29f55 100644 --- a/coin/platform_configs/macos.yaml +++ b/coin/platform_configs/macos.yaml @@ -2,11 +2,12 @@ Version: 2 Configurations: # Build with latest Xcode - - Id: 'macos-latest-xcode-x86_64-packaging-build' + # This is a universal build containing both x86_64 and arm64 architectures + Id: 'macos-latest-xcode-universal-packaging-build' Template: 'qtci-macos-11.0-x86_64-102' Compiler: 'Clang' Features: ['Packaging', 'Sccache', 'DoNotRunTests'] - Configure arguments: '-DQT_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFEATURE_separate_debug_info=ON -DFEATURE_headersclean=ON -DFEATURE_framework=ON -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DODBC_ROOT=/usr/local/opt/libiodbc -DPostgreSQL_ROOT={{.Env.POSTGRESQLBINPATH}}/..' + Configure arguments: '-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DQT_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DFEATURE_separate_debug_info=ON -DFEATURE_headersclean=ON -DFEATURE_framework=ON -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DODBC_ROOT=/usr/local/opt/libiodbc -DPostgreSQL_ROOT={{.Env.POSTGRESQLBINPATH}}/..' Environment variables: [ 'NON_QTBASE_CONFIGURE_ARGS=-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache', 'TEST_CONFIGURE_ARGS=-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache' @@ -18,19 +19,19 @@ Configurations: Template: 'qtci-macos-10.14-x86_64' Compiler: 'Clang' Features: ['Sccache', 'TestOnly'] - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' - Id: 'macos-10.15-x86_64-tests' Template: 'qtci-macos-10.15-x86_64-102' Compiler: 'Clang' Features: ['Sccache', 'TestOnly'] - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' - Id: 'macos-11-x86_64-tests' Template: 'qtci-macos-11.0-x86_64-102' Compiler: 'Clang' Features: ['Sccache', 'TestOnly'] - Platform dependency: 'macos-latest-xcode-x86_64-packaging-build' + Platform dependency: 'macos-latest-xcode-universal-packaging-build' # Build developer builds for all modules, but only run tests for qtbase and declarative. # See macos-developer-build-tests.yaml for the tests