aboutsummaryrefslogtreecommitdiffstats
path: root/coin/provisioning/common
diff options
context:
space:
mode:
authorAmir Masoud Abdol <amir.abdol@qt.io>2023-11-30 11:17:48 +0100
committerAmir Masoud Abdol <amir.abdol@qt.io>2023-12-18 06:32:32 +0100
commita5a639314526cd356ca3b6ce6bfe6e3059cf943a (patch)
treeb4a5f600c3b3a2db5701a031b0f2bb353e0dcaac /coin/provisioning/common
parenta1b278c3a33bd1a516b2eb7b42165f68bd9164cd (diff)
Provisioning: Install OpenSSL via Vcpkg on Linux
- Add a custom triplets for building dynamic android libraries - Set `ANDROID_NDK_HOME` environment variable, as it is needed when vcpkg builds for Android. - Install `perl-IPC-Cmd` when necessary, requirement for OpenSSL. - Install openSSL for x64-linux-qt, x86-android-qt, and x86_64-android-qt. The latter android triplet has been renamed from vcpkg's official `x64-android.cmake` triplet to further clarify the android abi. - Adjusted version.txt to account for the existence of two OpenSSL. The system OpenSSL now shows up as `System's OpenSSL` in `version.txt`. Task-number: QTBUG-115715 Change-Id: I6cf9b808d26bbea97ebeeadac58cef5ede25ee50 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'coin/provisioning/common')
-rwxr-xr-xcoin/provisioning/common/linux/android_linux.sh4
-rwxr-xr-xcoin/provisioning/common/linux/install-vcpkg-ports-android.sh24
-rwxr-xr-xcoin/provisioning/common/linux/install-vcpkg-ports.sh21
-rwxr-xr-x[-rw-r--r--]coin/provisioning/common/linux/install-vcpkg.sh0
-rw-r--r--coin/provisioning/common/linux/vcpkg/vcpkg.json11
-rw-r--r--coin/provisioning/common/shared/triplets/x64-linux-qt.cmake13
-rw-r--r--coin/provisioning/common/shared/triplets/x86-android-qt.cmake15
-rw-r--r--coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake15
8 files changed, 102 insertions, 1 deletions
diff --git a/coin/provisioning/common/linux/android_linux.sh b/coin/provisioning/common/linux/android_linux.sh
index 5707e76b..178ff68c 100755
--- a/coin/provisioning/common/linux/android_linux.sh
+++ b/coin/provisioning/common/linux/android_linux.sh
@@ -80,6 +80,10 @@ SetEnvVar "ANDROID_NDK_ROOT_DEFAULT" "$targetFolder/android-ndk-$ndkVersionDefau
InstallNdk $ndkVersionLatest $ndkSha1Latest
SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$targetFolder/android-ndk-$ndkVersionLatest"
+# To be used by vcpkg
+SetEnvVar "ANDROID_NDK_HOME" "$targetFolder/android-ndk-$ndkVersionDefault"
+export ANDROID_NDK_HOME="$targetFolder/android-ndk-$ndkVersionDefault"
+
echo "Changing ownership of Android files."
if uname -a |grep -q "el7"; then
sudo chown -R qt:wheel "$targetFolder"
diff --git a/coin/provisioning/common/linux/install-vcpkg-ports-android.sh b/coin/provisioning/common/linux/install-vcpkg-ports-android.sh
new file mode 100755
index 00000000..5aafc012
--- /dev/null
+++ b/coin/provisioning/common/linux/install-vcpkg-ports-android.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+echo "Installing vcpkg android ports"
+
+pushd "${BASH_SOURCE%/*}/vcpkg" || exit
+cp "${BASH_SOURCE%/*}/../shared/vcpkg-configuration.json" .
+
+$VCPKG_ROOT/vcpkg install --triplet x86-android-qt --x-install-root x86-android-qt-tmp --debug
+$VCPKG_ROOT/vcpkg install --triplet x86_64-android-qt --x-install-root x86_64-android-qt-tmp --debug
+
+mkdir -p $VCPKG_ROOT/installed
+cp -R x86-android-qt-tmp/* $VCPKG_ROOT/installed/
+cp -R x86_64-android-qt-tmp/* $VCPKG_ROOT/installed/
+
+versions=$(jq -r '.overrides[] | "vcpkg \(.name) for android = \(.version)"' vcpkg.json)
+versions="${versions//vcpkg/\\nvcpkg}"
+echo $versions >> ~/versions.txt
+
+rm -rf x86-android-qt-tmp
+rm -rf x86_64-android-qt-tmp
+
+popd || exit
diff --git a/coin/provisioning/common/linux/install-vcpkg-ports.sh b/coin/provisioning/common/linux/install-vcpkg-ports.sh
new file mode 100755
index 00000000..853f4131
--- /dev/null
+++ b/coin/provisioning/common/linux/install-vcpkg-ports.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+echo "Installing vcpkg ports"
+
+pushd "${BASH_SOURCE%/*}/vcpkg" || exit
+cp "${BASH_SOURCE%/*}/../shared/vcpkg-configuration.json" .
+
+$VCPKG_ROOT/vcpkg install --triplet x64-linux-qt --x-install-root x64-linux-qt-tmp --debug
+
+mkdir -p "$VCPKG_ROOT/installed"
+cp -R x64-linux-qt-tmp/* $VCPKG_ROOT/installed/
+
+versions=$(jq -r '.overrides[] | "vcpkg \(.name) = \(.version)"' vcpkg.json)
+versions="${versions//vcpkg/\\nvcpkg}"
+echo $versions >> ~/versions.txt
+
+rm -rf x64-linux-qt-tmp
+
+popd || exit
diff --git a/coin/provisioning/common/linux/install-vcpkg.sh b/coin/provisioning/common/linux/install-vcpkg.sh
index 70b069ae..70b069ae 100644..100755
--- a/coin/provisioning/common/linux/install-vcpkg.sh
+++ b/coin/provisioning/common/linux/install-vcpkg.sh
diff --git a/coin/provisioning/common/linux/vcpkg/vcpkg.json b/coin/provisioning/common/linux/vcpkg/vcpkg.json
index 0db3279e..70cb16fb 100644
--- a/coin/provisioning/common/linux/vcpkg/vcpkg.json
+++ b/coin/provisioning/common/linux/vcpkg/vcpkg.json
@@ -1,3 +1,12 @@
{
-
+ "overrides": [
+ {
+ "name": "openssl",
+ "version": "3.0.7",
+ "port-version": 2
+ }
+ ],
+ "dependencies": [
+ "openssl"
+ ]
}
diff --git a/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake b/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake
new file mode 100644
index 00000000..95cc1934
--- /dev/null
+++ b/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake
@@ -0,0 +1,13 @@
+set(VCPKG_TARGET_ARCHITECTURE x64)
+
+# Default settings of the triplet from the official vcpkg registry
+set(VCPKG_CRT_LINKAGE dynamic)
+set(VCPKG_LIBRARY_LINKAGE static)
+
+# Qt custom per-port customizations
+if(PORT MATCHES "openssl")
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+ set(VCPKG_FIXUP_ELF_RPATH ON)
+endif()
+
+set(VCPKG_CMAKE_SYSTEM_NAME Linux)
diff --git a/coin/provisioning/common/shared/triplets/x86-android-qt.cmake b/coin/provisioning/common/shared/triplets/x86-android-qt.cmake
new file mode 100644
index 00000000..a4b74012
--- /dev/null
+++ b/coin/provisioning/common/shared/triplets/x86-android-qt.cmake
@@ -0,0 +1,15 @@
+set(VCPKG_TARGET_ARCHITECTURE x86)
+
+# Default settings of the triplet from the official vcpkg registry
+set(VCPKG_CRT_LINKAGE static)
+set(VCPKG_LIBRARY_LINKAGE static)
+
+# Qt custom per-port customizations
+if(PORT MATCHES "openssl")
+ set(VCPKG_CRT_LINKAGE dynamic)
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
+
+set(VCPKG_CMAKE_SYSTEM_NAME Android)
+set(VCPKG_MAKE_BUILD_TRIPLET "--host=i686-linux-android")
+set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=x86)
diff --git a/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake b/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake
new file mode 100644
index 00000000..47afae58
--- /dev/null
+++ b/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake
@@ -0,0 +1,15 @@
+set(VCPKG_TARGET_ARCHITECTURE x64)
+
+# Default settings of the triplet from the official vcpkg registry
+set(VCPKG_CRT_LINKAGE static)
+set(VCPKG_LIBRARY_LINKAGE static)
+
+# Qt custom per-port customizations
+if(PORT MATCHES "openssl")
+ set(VCPKG_CRT_LINKAGE dynamic)
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
+
+set(VCPKG_CMAKE_SYSTEM_NAME Android)
+set(VCPKG_MAKE_BUILD_TRIPLET "--host=x86_64-linux-android")
+set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=x86_64)