Build an iOS configuration in Coin

Install ninja from homebrew.

Provision freetype and pcre2 for host builds, like in the
macOS 10.13 case.

Provision homebrew gcc 9 to build vcpkg.
We can't use Xcode 11 clang to build vcpkg, because std::filesystem
is only implemented for macOS 10.15, so the deployment target needs
to be 10.15, and we don't have any 10.15 VMs currently.
Whereas the std::filesystem implementation provided by gcc can work
on lower macOS versions.

When building vcpkg using the Xcode default provided system headers,
the build will fail with the following error:

stdio.h:222:7: error: conflicting declaration of 'char* ctermid(char*)'
with 'C' linkage

_ctermid.h:26:10: note: previous declaration with 'C++' linkage

The Xcode SDK is missing some C++ headers. Usually these are
installed manually via an additional step like the one below,
but only after installing the command line tools.

sudo installer -pkg
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
-target /

Apparently not all command line tool packages ship this extra header
package, so instead switch the active toolchain to the CLT via
xcode-select -p, which seems to always have the necessary headers
(at least from my testing).

That's why we use the CLT for vcpkg.

Bootstrap vcpkg, and install the iOS 3rd party packages using vcpkg.

Finally add a configuration to build qtbase targeting iOS.

Task-number: QTBUG-75576
Change-Id: Idec885d62b12f96c4830b9ec02b63a89b9cc7b8c
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Alexandru Croitor
2019-12-05 17:27:57 +01:00
parent 66d9087cf5
commit 0a3a855774
12 changed files with 170 additions and 0 deletions

View File

@@ -28,3 +28,11 @@ Configurations:
Target compiler: 'Clang'
Configure arguments: '-DBUILD_EXAMPLES=OFF'
Environment variables: ['TARGET_CONFIGURE_ARGS=-DBUILD_EXAMPLES=OFF -DCMAKE_TOOLCHAIN_FILE={{.Env.ANDROID_NDK_ROOT}}/build/cmake/android.toolchain.cmake -DANDROID_SDK_ROOT={{.Env.ANDROID_SDK_HOME}} -DANDROID_ABI=arm64-v8a -DVCPKG_TARGET_TRIPLET=arm64-android -DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU']
-
Template: 'qtci-macos-10.14-x86_64'
Target os: 'IOS_ANY'
Target arch: 'arm64'
Compiler: 'Clang'
Target compiler: 'Clang'
Configure arguments: '-DBUILD_EXAMPLES=OFF -DCMAKE_OSX_SYSROOT:PATH=/Applications/Xcode11.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -DCMAKE_OSX_DEPLOYMENT_TARGET=10.13'
Environment variables: ['TARGET_CONFIGURE_ARGS=-DBUILD_EXAMPLES=OFF -DCMAKE_SYSTEM_NAME=iOS -DQT_UIKIT_SDK=iphoneos -DVCPKG_TARGET_TRIPLET=arm64-ios']

View File

@@ -0,0 +1,39 @@
#!/usr/bin/env bash
#############################################################################
##
## Copyright (C) 2018 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
##
## $QT_BEGIN_LICENSE:LGPL21$
## Commercial License Usage
## Licensees holding valid commercial Qt licenses may use this file in
## accordance with the commercial license agreement provided with the
## Software or, alternatively, in accordance with the terms contained in
## a written agreement between you and The Qt Company. For licensing terms
## and conditions see http://www.qt.io/terms-conditions. For further
## information use the contact form at http://www.qt.io/contact-us.
##
## GNU Lesser General Public License Usage
## Alternatively, this file may be used under the terms of the GNU Lesser
## General Public License version 2.1 or version 3 as published by the Free
## Software Foundation and appearing in the file LICENSE.LGPLv21 and
## LICENSE.LGPLv3 included in the packaging of this file. Please review the
## following information to ensure the GNU Lesser General Public License
## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
##
## As a special exception, The Qt Company gives you certain additional
## rights. These rights are described in The Qt Company LGPL Exception
## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
##
## $QT_END_LICENSE$
##
#############################################################################
set -ex
brew install gcc@9

View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
#############################################################################
##
## Copyright (C) 2019 The Qt Company Ltd.
## Contact: https://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
##
## $QT_BEGIN_LICENSE:LGPL21$
## Commercial License Usage
## Licensees holding valid commercial Qt licenses may use this file in
## accordance with the commercial license agreement provided with the
## Software or, alternatively, in accordance with the terms contained in
## a written agreement between you and The Qt Company. For licensing terms
## and conditions see http://www.qt.io/terms-conditions. For further
## information use the contact form at http://www.qt.io/contact-us.
##
## GNU Lesser General Public License Usage
## Alternatively, this file may be used under the terms of the GNU Lesser
## General Public License version 2.1 or version 3 as published by the Free
## Software Foundation and appearing in the file LICENSE.LGPLv21 and
## LICENSE.LGPLv3 included in the packaging of this file. Please review the
## following information to ensure the GNU Lesser General Public License
## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
##
## As a special exception, The Qt Company gives you certain additional
## rights. These rights are described in The Qt Company LGPL Exception
## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
##
## $QT_END_LICENSE$
##
#############################################################################
# This script installs VcPkg. It is used to provide third-party libraries when cross-compiling
# for example for iOS.
set -ex
# shellcheck source=../unix/SetEnvVar.sh
source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
source "${BASH_SOURCE%/*}/../shared/vcpkg_version.txt"
source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh"
cachedUrl="http://ci-files01-hki.intra.qt.io/input/vcpkg/$vcpkg_version.tar.gz"
officialUrl="https://codeload.github.com/tronical/vcpkg/tar.gz/$vcpkg_version"
targetFile="vcpkg.tar.gz"
targetFolder="$HOME/vcpkg"
expectedSha1="7fc639c2b326aca910bf14424380bfce467a0c2a"
DownloadURL "$cachedUrl" "$officialUrl" "$expectedSha1" "$targetFile"
if [ ! -d "${targetFolder}" ]; then
mkdir -p $targetFolder
fi
tar -C $targetFolder --strip-components=1 -xvzf $targetFile
rm -rf $targetFile
SetEnvVar "VCPKG_ROOT" "$targetFolder"
cd $targetFolder
# vcpkg needs the command line tools headers, otherwise it fails to bootstrap.
previouslySelectedXcodeBundle="$(xcode-select -p)"
sudo xcode-select --switch /Library/Developer/CommandLineTools
./bootstrap-vcpkg.sh
# Switch back.
sudo xcode-select --switch "$previouslySelectedXcodeBundle"
./vcpkg install --triplet arm64-ios @qt-packages-ios.txt
rm -rf packages buildtrees downloads
echo "VCPKG = $vcpkg_version" >> ~/versions.txt

View File

@@ -0,0 +1,4 @@
#!/usr/bin/env bash
# shellcheck source=../common/unix/disable-ntp_macos.sh
source "${BASH_SOURCE%/*}/../common/unix/disable-ntp_macos.sh"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
brew install freetype

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -ex
# Need ninja for CMake.
brew install ninja

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
brew install pcre2

View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/macos/virtualenv.sh"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
"$(dirname "$0")/../common/macos/gcc_homebrew.sh"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -ex
"$(dirname "$0")/../common/macos/vcpkg.sh"

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -ex
BASEDIR=$(dirname "$0")
"$BASEDIR/../common/unix/python_modules.sh"