mirror of
https://github.com/transmission/transmission
synced 2024-12-22 15:54:57 +00:00
7030b53e2e
* android patches for ndk
* Update libtransmission/file-capacity.cc
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* TrMacros: Move common & android vars
* Build android in CI
* Use vcpkg packages for curl & openssl
* Update CI for android
* Fix ndkVersion used with gradle
* Restore actions triggers events
* CMakeLists: Remove cond where curl is not found
* Use vcpkg tag instead of commit hash
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* TrMacros.cmake: clean unused variables & add vcpkg cond
* Remove quotes around VcpkgAndroid inclusion
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
* actions: split steps to install vcpkg packages
* Build for android arm64
* actions: add make-android condition
* Revert "Use vcpkg tag instead of commit hash"
This reverts commit 65819026b1
.
* build.gradle: use cmake version 3.22.1
* actions: use vcpkg 2024.01.12
* actions: Add ninja-build dependency
---------
Co-authored-by: Mike Gelfand <mikedld@users.noreply.github.com>
100 lines
3.8 KiB
CMake
100 lines
3.8 KiB
CMake
# Copied from https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/examples/vcpkg_android_example_cmake_script/cmake/vcpkg_android.cmake
|
|
#
|
|
# vcpkg_android.cmake
|
|
#
|
|
# Helper script when using vcpkg with cmake. It should be triggered via the variable VCPKG_TARGET_ANDROID
|
|
#
|
|
# For example:
|
|
# if (VCPKG_TARGET_ANDROID)
|
|
# include("cmake/vcpkg_android.cmake")
|
|
# endif()
|
|
#
|
|
# This script will:
|
|
# 1 & 2. check the presence of needed env variables: ANDROID_NDK_HOME and VCPKG_ROOT
|
|
# 3. set VCPKG_TARGET_TRIPLET according to ANDROID_ABI
|
|
# 4. Combine vcpkg and Android toolchains by setting CMAKE_TOOLCHAIN_FILE
|
|
# and VCPKG_CHAINLOAD_TOOLCHAIN_FILE
|
|
|
|
# Note: VCPKG_TARGET_ANDROID is not an official vcpkg variable.
|
|
# it is introduced for the need of this script
|
|
|
|
if (VCPKG_TARGET_ANDROID)
|
|
|
|
#
|
|
# 1. Check the presence of environment variable ANDROID_NDK_HOME
|
|
#
|
|
if (NOT DEFINED ENV{ANDROID_NDK_HOME})
|
|
message(FATAL_ERROR "
|
|
Please set an environment variable ANDROID_NDK_HOME
|
|
For example:
|
|
export ANDROID_NDK_HOME=/home/your-account/Android/Sdk/ndk-bundle
|
|
Or:
|
|
export ANDROID_NDK_HOME=/home/your-account/Android/android-ndk-r21b
|
|
")
|
|
endif()
|
|
|
|
#
|
|
# 2. Check the presence of environment variable VCPKG_ROOT
|
|
#
|
|
if (NOT DEFINED ENV{VCPKG_ROOT})
|
|
message(FATAL_ERROR "
|
|
Please set an environment variable VCPKG_ROOT
|
|
For example:
|
|
export VCPKG_ROOT=/path/to/vcpkg
|
|
")
|
|
endif()
|
|
|
|
|
|
#
|
|
# 3. Set VCPKG_TARGET_TRIPLET according to ANDROID_ABI
|
|
#
|
|
# There are four different Android ABI, each of which maps to
|
|
# a vcpkg triplet. The following table outlines the mapping from vcpkg architectures to android architectures
|
|
#
|
|
# |VCPKG_TARGET_TRIPLET | ANDROID_ABI |
|
|
# |---------------------------|----------------------|
|
|
# |arm64-android | arm64-v8a |
|
|
# |arm-android | armeabi-v7a |
|
|
# |x64-android | x86_64 |
|
|
# |x86-android | x86 |
|
|
#
|
|
# The variable must be stored in the cache in order to successfully the two toolchains.
|
|
#
|
|
if (ANDROID_ABI MATCHES "arm64-v8a")
|
|
set(VCPKG_TARGET_TRIPLET "arm64-android" CACHE STRING "" FORCE)
|
|
elseif(ANDROID_ABI MATCHES "armeabi-v7a")
|
|
set(VCPKG_TARGET_TRIPLET "arm-android" CACHE STRING "" FORCE)
|
|
elseif(ANDROID_ABI MATCHES "x86_64")
|
|
set(VCPKG_TARGET_TRIPLET "x64-android" CACHE STRING "" FORCE)
|
|
elseif(ANDROID_ABI MATCHES "x86")
|
|
set(VCPKG_TARGET_TRIPLET "x86-android" CACHE STRING "" FORCE)
|
|
else()
|
|
message(FATAL_ERROR "
|
|
Please specify ANDROID_ABI
|
|
For example
|
|
cmake ... -DANDROID_ABI=armeabi-v7a
|
|
|
|
Possible ABIs are: arm64-v8a, armeabi-v7a, x64-android, x86-android
|
|
")
|
|
endif()
|
|
message("vcpkg_android.cmake: VCPKG_TARGET_TRIPLET was set to ${VCPKG_TARGET_TRIPLET}")
|
|
|
|
|
|
#
|
|
# 4. Combine vcpkg and Android toolchains
|
|
#
|
|
|
|
# vcpkg and android both provide dedicated toolchains:
|
|
#
|
|
# vcpkg_toolchain_file=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
|
|
# android_toolchain_file=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake
|
|
#
|
|
# When using vcpkg, the vcpkg toolchain shall be specified first.
|
|
# However, vcpkg provides a way to preload and additional toolchain,
|
|
# with the VCPKG_CHAINLOAD_TOOLCHAIN_FILE option.
|
|
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE $ENV{ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake)
|
|
set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
|
|
message("vcpkg_android.cmake: CMAKE_TOOLCHAIN_FILE was set to ${CMAKE_TOOLCHAIN_FILE}")
|
|
message("vcpkg_android.cmake: VCPKG_CHAINLOAD_TOOLCHAIN_FILE was set to ${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
|
|
|
|
endif(VCPKG_TARGET_ANDROID)
|