Merge topic 'rel-macos-modern' into release-3.19

6410425e5b ci: build separate macOS packages for macOS 10.13+ and macOS 10.10+
bbec5a03c8 Utilities/Release: Add script to build Qt 5.15.2 macOS universal binaries
97e238f61b Utilities/Release: Fix macOS Qt 5.9 build script umask
2c5f30b472 cmake-gui: Fix macOS styling for binaries distributed with Qt 5.10+
3679b74a69 gitlab-ci: update upload jobs to go to cmake.org

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5672
This commit is contained in:
Brad King
2021-01-08 14:10:18 +00:00
committed by Kitware Robot
13 changed files with 200 additions and 29 deletions

View File

@@ -284,6 +284,18 @@ build:macos-package:
variables:
RSYNC_DESTINATION: dev
build:macos10.10-package:
extends:
- .macos10.10_package
- .cmake_build_macos_package
- .cmake_release_artifacts
- .macos_builder_tags_package
- .run_only_for_package
dependencies:
- prep:doc-package
needs:
- prep:doc-package
# Windows builds
build:windows-vs2019-x64-ninja:

View File

@@ -75,7 +75,7 @@
# Any packages made.
- build/cmake-*-Linux-x86_64.*
- build/cmake-*-Linux-aarch64.*
- build/cmake-*-macos-universal.*
- build/cmake-*-macos*-universal.*
# Any source packages made.
- build/cmake-*.tar.gz
- build/cmake-*.zip

View File

@@ -0,0 +1,4 @@
set(CPACK_SYSTEM_NAME "macos10.10-universal" CACHE STRING "")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.10" CACHE STRING "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_package_common.cmake")

View File

@@ -1,28 +1,4 @@
set(CMake_DOC_ARTIFACT_PREFIX "$ENV{CI_PROJECT_DIR}/build/install-doc" CACHE PATH "")
# Set up install destinations as expected by the packaging scripts.
set(CMAKE_INSTALL_PREFIX "/" CACHE PATH "")
set(CMAKE_DOC_DIR "doc/cmake" CACHE STRING "")
# Settings for CMake packages for macOS.
set(CPACK_DMG_FORMAT "UDBZ" CACHE STRING "")
set(CMAKE_CXX_FLAGS "-stdlib=libc++" CACHE STRING "")
set(CMAKE_C_STANDARD "11" CACHE STRING "")
set(CMAKE_CXX_STANDARD "14" CACHE STRING "")
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.10" CACHE STRING "")
set(CMAKE_SKIP_BOOTSTRAP_TEST "TRUE" CACHE STRING "")
set(CPACK_SYSTEM_NAME "macos-universal" CACHE STRING "")
set(BUILD_CursesDialog "ON" CACHE BOOL "")
set(BUILD_QtDialog "TRUE" CACHE BOOL "")
set(CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL "3" CACHE STRING "")
set(CMake_INSTALL_DEPENDENCIES "ON" CACHE BOOL "")
set(CMAKE_SKIP_RPATH "TRUE" CACHE BOOL "")
set(CMake_TEST_NO_FindPackageModeMakefileTest "TRUE" CACHE BOOL "")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "")
# XXX(sccache): restore sccache when it works for multiple architectures:
# https://github.com/mozilla/sccache/issues/847
set(configure_no_sccache 1)
include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_package_common.cmake")

View File

@@ -0,0 +1,26 @@
set(CMake_DOC_ARTIFACT_PREFIX "$ENV{CI_PROJECT_DIR}/build/install-doc" CACHE PATH "")
# Set up install destinations as expected by the packaging scripts.
set(CMAKE_INSTALL_PREFIX "/" CACHE PATH "")
set(CMAKE_DOC_DIR "doc/cmake" CACHE STRING "")
# Settings for CMake packages for macOS.
set(CPACK_DMG_FORMAT "UDBZ" CACHE STRING "")
set(CMAKE_CXX_FLAGS "-stdlib=libc++" CACHE STRING "")
set(CMAKE_C_STANDARD "11" CACHE STRING "")
set(CMAKE_CXX_STANDARD "14" CACHE STRING "")
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "")
set(CMAKE_SKIP_BOOTSTRAP_TEST "TRUE" CACHE STRING "")
set(BUILD_CursesDialog "ON" CACHE BOOL "")
set(BUILD_QtDialog "TRUE" CACHE BOOL "")
set(CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL "3" CACHE STRING "")
set(CMake_INSTALL_DEPENDENCIES "ON" CACHE BOOL "")
set(CMAKE_SKIP_RPATH "TRUE" CACHE BOOL "")
set(CMake_TEST_NO_FindPackageModeMakefileTest "TRUE" CACHE BOOL "")
# XXX(sccache): restore sccache when it works for multiple architectures:
# https://github.com/mozilla/sccache/issues/847
set(configure_no_sccache 1)
include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake")

View File

@@ -48,7 +48,11 @@ if (qt_platform STREQUAL "windows_x86")
set(qt_subdir "${qt_version}/msvc${msvc_year}_64")
elseif (qt_platform STREQUAL "mac_x64")
if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "package")
if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "macos_package")
list(APPEND qt_files
"qt-5.15.2-macosx10.13-x86_64-arm64.tar.xz")
set(qt_subdir "qt-5.15.2-macosx10.13-x86_64-arm64")
elseif ("$ENV{CMAKE_CONFIGURATION}" MATCHES "macos10.10_package")
list(APPEND qt_files
"qt-5.9.9-macosx10.10-x86_64-arm64.tar.xz")
set(qt_subdir "qt-5.9.9-macosx10.10-x86_64-arm64")

View File

@@ -11,3 +11,4 @@ set("5.15.1-0-202009071110qtwinextras-Windows-Windows_10-MSVC2015-Windows-Window
set("5.15.1-0-202009071110qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z_hash" df2813ce7c6cb4287abd7956cd1cb9d08312e4ac1208b6cb57af4df11b8ebba1)
set("qt-5.9.9-macosx10.10-x86_64-arm64.tar.xz_hash" d4449771afa0bc6a809c14f1e6d939e7732494cf059503ae451e2bfe8fc60cc1)
set("qt-5.15.2-macosx10.13-x86_64-arm64.tar.xz_hash" 7b9463a01c8beeee5bf8d01c70deff2d08561cd20aaf6f7a2f41cf8b68ce8a6b)

View File

@@ -47,6 +47,14 @@
CTEST_NO_WARNINGS_ALLOWED: 1
CMake_SKIP_INSTALL: 1
.macos10.10_package:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos10.10_package
CTEST_NO_WARNINGS_ALLOWED: 1
CMake_SKIP_INSTALL: 1
### External testing
.macos_xcode:

View File

@@ -15,4 +15,4 @@
- dnf install -y --setopt=install_weak_deps=False rsync openssh-clients
- chmod 400 $RSYNC_BINARY_KEY
- ssh-keygen -y -f $RSYNC_BINARY_KEY > $RSYNC_BINARY_KEY.pub
- rsync -tv --recursive -e "ssh -i $RSYNC_BINARY_KEY -o StrictHostKeyChecking=no -o LogLevel=ERROR" build/ kitware@public.kitware.com:$RSYNC_DESTINATION/
- rsync -tv --recursive -e "ssh -i $RSYNC_BINARY_KEY -o StrictHostKeyChecking=no -o LogLevel=ERROR" build/ kitware@cmake.org:$RSYNC_DESTINATION/

View File

@@ -390,3 +390,13 @@ Changes made since CMake 3.19.0 include the following.
------
* A precompiled Linux ``aarch64`` binary is now provided on ``cmake.org``.
* Two precompiled macOS binaries are now provided on ``cmake.org``:
* The naming pattern ``cmake-$ver-macos-universal`` is a universal
binary with ``x86_64`` and ``arm64`` architectures. It requires
macOS 10.13 or newer.
* The naming pattern ``cmake-$ver-macos10.10-universal`` is a universal
binary with ``x86_64`` and ``arm64`` architectures. It requires
macOS 10.10 or newer.

View File

@@ -57,6 +57,9 @@ if(CMake_INSTALL_DEPENDENCIES AND (APPLE OR WIN32))
endmacro()
if(APPLE)
install_qt5_plugin("Qt5::QCocoaIntegrationPlugin" QT_PLUGINS)
if(TARGET Qt5::QMacStylePlugin)
install_qt5_plugin("Qt5::QMacStylePlugin" QT_PLUGINS)
endif()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/qt.conf"
"[Paths]\nPlugins = ${_qt_plugin_dir}\n")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/qt.conf"

View File

@@ -0,0 +1,125 @@
#!/usr/bin/env bash
# Run this script on a macOS x86_64 host to generate Qt universal binaries.
#
# This script requires the 'makeuniversal' tool from:
#
# https://github.com/fizzyade/makeuniversal
#
# Build it with an existing local Qt installation first.
#
# Set the PATH environment variable to contain the location of 'makeuniversal'.
set -e
set -x
umask 022
# Verify that 'makeuniversal' is available in the PATH.
type -p makeuniversal >/dev/null
# Download, verify, and extract sources.
curl -OL https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
shasum -a 256 qt-everywhere-src-5.15.2.tar.xz | grep -q 3a530d1b243b5dec00bc54937455471aaa3e56849d2593edb8ded07228202240
tar xjf qt-everywhere-src-5.15.2.tar.xz
# Build the x86_64 variant.
mkdir qt-5.15.2-x86_64
cd qt-5.15.2-x86_64
../qt-everywhere-src-5.15.2/configure \
--prefix=/ \
-platform macx-clang \
-device-option QMAKE_APPLE_DEVICE_ARCHS=x86_64 \
-device-option QMAKE_MACOSX_DEPLOYMENT_TARGET=10.13 \
-release \
-opensource -confirm-license \
-gui \
-widgets \
-no-gif \
-no-icu \
-no-pch \
-no-angle \
-no-opengl \
-no-dbus \
-no-harfbuzz \
-skip declarative \
-skip multimedia \
-skip qtcanvas3d \
-skip qtcharts \
-skip qtconnectivity \
-skip qtdeclarative \
-skip qtgamepad \
-skip qtlocation \
-skip qtmultimedia \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtsensors \
-skip qtserialbus \
-skip qtserialport \
-skip qtsvg \
-skip qtwebchannel \
-skip qtwebengine \
-skip qtwebsockets \
-skip qtxmlpatterns \
-nomake examples \
-nomake tests \
-nomake tools
make -j 8
cd ..
# Build the arm64 variant.
mkdir qt-5.15.2-arm64
cd qt-5.15.2-arm64
../qt-everywhere-src-5.15.2/configure \
--prefix=/ \
-platform macx-clang \
-device-option QMAKE_APPLE_DEVICE_ARCHS=arm64 \
-device-option QMAKE_MACOSX_DEPLOYMENT_TARGET=10.13 \
-release \
-opensource -confirm-license \
-gui \
-widgets \
-no-gif \
-no-icu \
-no-pch \
-no-angle \
-no-opengl \
-no-dbus \
-no-harfbuzz \
-skip declarative \
-skip multimedia \
-skip qtcanvas3d \
-skip qtcharts \
-skip qtconnectivity \
-skip qtdeclarative \
-skip qtgamepad \
-skip qtlocation \
-skip qtmultimedia \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtsensors \
-skip qtserialbus \
-skip qtserialport \
-skip qtsvg \
-skip qtwebchannel \
-skip qtwebengine \
-skip qtwebsockets \
-skip qtxmlpatterns \
-nomake examples \
-nomake tests \
-nomake tools
make -j 8 -k
cd ..
# Combine the two builds into universal binaries.
makeuniversal qt-5.15.2-univ qt-5.15.2-x86_64 qt-5.15.2-arm64
cd qt-5.15.2-univ
make install -j 8 INSTALL_ROOT=/tmp/qt-5.15.2-macosx10.13-x86_64-arm64
cd ..
# Create the final tarball containing universal binaries.
tar cjf qt-5.15.2-macosx10.13-x86_64-arm64.tar.xz -C /tmp qt-5.15.2-macosx10.13-x86_64-arm64

View File

@@ -13,6 +13,8 @@
set -e
set -x
umask 022
# Verify that 'makeuniversal' is available in the PATH.
type -p makeuniversal >/dev/null