diff options
author | Amir Masoud Abdol <amir.abdol@qt.io> | 2023-11-30 10:52:44 +0100 |
---|---|---|
committer | Amir Masoud Abdol <amir.abdol@qt.io> | 2023-12-18 06:32:27 +0100 |
commit | a1b278c3a33bd1a516b2eb7b42165f68bd9164cd (patch) | |
tree | dd27217cfe878bd1a60b1911b34f9aaa05ce5ddb /coin/provisioning/common | |
parent | 9e1b4569532d5d15fc8c83ec5b821cf7f5dce7a2 (diff) |
Provisioning: Install OpenSSL via Vcpkg on Windows
- 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 openSSL for x64-windows, arm64-windows, and
armeabi-v7a-android-qt. The android triplet has been renamed from
vcpkg's official `arm-neon-android.cmake` triplet to further clarify
the android abi.
- The version of the libraries installed via vcpkg is being written to
versions.txt as `vpckg <library-name> = <library-version>`
Task-number: QTBUG-115715
Change-Id: I4a17bf00e59c3c90968941be6a21c1d961ba3d97
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'coin/provisioning/common')
7 files changed, 91 insertions, 1 deletions
diff --git a/coin/provisioning/common/shared/triplets/arm64-windows-qt.cmake b/coin/provisioning/common/shared/triplets/arm64-windows-qt.cmake new file mode 100644 index 00000000..4d9d5d69 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/arm64-windows-qt.cmake @@ -0,0 +1,7 @@ +set(VCPKG_TARGET_ARCHITECTURE arm64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +# Qt custom per-port customizations diff --git a/coin/provisioning/common/shared/triplets/armeabi-v7a-android-qt.cmake b/coin/provisioning/common/shared/triplets/armeabi-v7a-android-qt.cmake new file mode 100644 index 00000000..fba6a00a --- /dev/null +++ b/coin/provisioning/common/shared/triplets/armeabi-v7a-android-qt.cmake @@ -0,0 +1,15 @@ +set(VCPKG_TARGET_ARCHITECTURE arm) + +# 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=armv7a-linux-androideabi") +set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=armeabi-v7a -DANDROID_ARM_NEON=ON) diff --git a/coin/provisioning/common/shared/triplets/x64-windows-qt.cmake b/coin/provisioning/common/shared/triplets/x64-windows-qt.cmake new file mode 100644 index 00000000..856b756e --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x64-windows-qt.cmake @@ -0,0 +1,7 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +# Qt custom per-port customizations diff --git a/coin/provisioning/common/windows/android.ps1 b/coin/provisioning/common/windows/android.ps1 index 845e9e14..02ecbf65 100644 --- a/coin/provisioning/common/windows/android.ps1 +++ b/coin/provisioning/common/windows/android.ps1 @@ -50,6 +50,9 @@ function Install($1, $2, $3, $4) { Write-Host "Installing Android NDK $ndkVersionDefault" Install $ndkCachedUrlDefault $ndkZip $ndkChecksumDefault $ndkOfficialUrlDefault Set-EnvironmentVariable "ANDROID_NDK_ROOT_DEFAULT" $ndkFolderDefault +# To be used by vcpkg +Set-EnvironmentVariable "ANDROID_NDK_HOME" $ndkFolderDefault +$env:ANDROID_NDK_HOME = "$ndkFolderDefault" if (Test-Path -Path $ndkFolderLatest) { Write-Host "Android Latest version is the same than Default. NDK installation done." diff --git a/coin/provisioning/common/windows/install-vcpkg-ports-android.ps1 b/coin/provisioning/common/windows/install-vcpkg-ports-android.ps1 new file mode 100644 index 00000000..646f36cd --- /dev/null +++ b/coin/provisioning/common/windows/install-vcpkg-ports-android.ps1 @@ -0,0 +1,23 @@ +# 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 +. "$PSScriptRoot\helpers.ps1" + +Write-Host "Installing vcpkg android ports" +$vcpkgExe = "$env:VCPKG_ROOT\vcpkg.exe" +$vcpkgRoot = "$env:VCPKG_ROOT" + +Set-Location -Path "$PSScriptRoot\vcpkg" +Copy-Item "$PSScriptRoot\..\shared\vcpkg-configuration.json" -Destination "$PSScriptRoot\vcpkg" + +Run-Executable "$vcpkgExe" "install --triplet armeabi-v7a-android-qt --x-install-root armeabi-v7a-android-qt-tmp --debug" + +New-Item -Path "$vcpkgRoot" -Name "installed" -ItemType "directory" -Force +Copy-Item -Path "armeabi-v7a-android-qt-tmp\*" -Destination "$vcpkgRoot\installed" -Recurse -Force + +$versions = jq.exe -r '.overrides[] | \"vcpkg \(.name) for android = \(.version)\"' vcpkg.json +$versions = $versions.Replace("vcpkg", "`nvcpkg") +Write-Output "$versions" >> ~/versions.txt + +Remove-Item -Path "armeabi-v7a-android-qt-tmp" -Recurse -Force + +Set-Location "$PSScriptRoot" diff --git a/coin/provisioning/common/windows/install-vcpkg-ports.ps1 b/coin/provisioning/common/windows/install-vcpkg-ports.ps1 new file mode 100644 index 00000000..55eae4be --- /dev/null +++ b/coin/provisioning/common/windows/install-vcpkg-ports.ps1 @@ -0,0 +1,26 @@ +# 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 +. "$PSScriptRoot\helpers.ps1" + +Write-Host "Installing vcpkg ports" +$vcpkgExe = "$env:VCPKG_ROOT\vcpkg.exe" +$vcpkgRoot = "$env:VCPKG_ROOT" + +Set-Location -Path "$PSScriptRoot\vcpkg" +Copy-Item "$PSScriptRoot\..\shared\vcpkg-configuration.json" -Destination "$PSScriptRoot\vcpkg" + +Run-Executable "$vcpkgExe" "install --triplet x64-windows-qt --x-install-root x64-windows-qt-tmp --debug" +Run-Executable "$vcpkgExe" "install --triplet arm64-windows-qt --x-install-root arm64-windows-qt-tmp --debug" + +New-Item -Path "$vcpkgRoot" -Name "installed" -ItemType "directory" -Force +Copy-Item -Path "x64-windows-qt-tmp\*" -Destination "$vcpkgRoot\installed" -Recurse -Force +Copy-Item -Path "arm64-windows-qt-tmp\*" -Destination "$vcpkgRoot\installed" -Recurse -Force + +$versions = jq.exe -r '.overrides[] | \"vcpkg \(.name) = \(.version)\"' vcpkg.json +$versions = $versions.Replace("vcpkg", "`nvcpkg") +Write-Output "$versions" >> ~/versions.txt + +Remove-Item -Path "x64-windows-qt-tmp" -Recurse -Force +Remove-Item -Path "arm64-windows-qt-tmp" -Recurse -Force + +Set-Location "$PSScriptRoot" diff --git a/coin/provisioning/common/windows/vcpkg/vcpkg.json b/coin/provisioning/common/windows/vcpkg/vcpkg.json index 0db3279e..70cb16fb 100644 --- a/coin/provisioning/common/windows/vcpkg/vcpkg.json +++ b/coin/provisioning/common/windows/vcpkg/vcpkg.json @@ -1,3 +1,12 @@ { - + "overrides": [ + { + "name": "openssl", + "version": "3.0.7", + "port-version": 2 + } + ], + "dependencies": [ + "openssl" + ] } |