mirror of https://github.com/qt/qt5.git
Build FFmpeg with each Android NDK version
Multiple Android NDKs are installed in provisoning. FFmpeg build uses
NDK in its build process for Android, so this change makes provisioning
build multiple Android FFmpeg builds, so each Android nightly can use a
FFmpeg build where its corresponding NDK version was used.
Task-number: QTQAINFRA-7069
Change-Id: Ie4457c87b7b75e0c711a76bd8170e718cbda445d
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit 75fea893b1
)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
03f8208be9
commit
980cd3659a
|
@ -12,7 +12,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_LATEST}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_LATEST}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64_NDK_LATEST}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}'
|
||||
]
|
||||
-
|
||||
|
@ -28,7 +28,7 @@ Configurations:
|
|||
'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}',
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_LATEST}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis armeabi-v7a -no-feature-pkg-config',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_LATEST}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7_NDK_LATEST}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}'
|
||||
]
|
||||
-
|
||||
|
@ -43,7 +43,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_LATEST}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_LATEST}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_NDK_LATEST}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}',
|
||||
'ANDROID_EMULATOR=emulator_x86_api_28'
|
||||
]
|
||||
|
@ -59,7 +59,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_LATEST}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86_64',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_LATEST}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64_NDK_LATEST}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}',
|
||||
'ANDROID_EMULATOR=emulator_x86_64_api_35'
|
||||
]
|
||||
|
|
|
@ -19,7 +19,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY1}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86_64',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY1}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY1}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY1}}',
|
||||
'ANDROID_EMULATOR=emulator_x86_64_api_35'
|
||||
]
|
||||
|
@ -35,7 +35,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY1}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY1}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY1}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY1}}',
|
||||
'ANDROID_EMULATOR=emulator_x86_api_28'
|
||||
]
|
||||
|
@ -52,7 +52,7 @@ Configurations:
|
|||
'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}',
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY1}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis armeabi-v7a -no-feature-pkg-config',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY1}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7_NDK_NIGHTLY1}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY1}}'
|
||||
]
|
||||
-
|
||||
|
@ -67,7 +67,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY1}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY1}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64_NDK_NIGHTLY1}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY1}}'
|
||||
]
|
||||
|
||||
|
@ -84,7 +84,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY2}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86_64',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY2}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY2}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY2}}',
|
||||
'ANDROID_EMULATOR=emulator_x86_64_api_35'
|
||||
]
|
||||
|
@ -100,7 +100,7 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY2}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis x86',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY2}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY2}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY2}}',
|
||||
'ANDROID_EMULATOR=emulator_x86_api_28'
|
||||
]
|
||||
|
@ -117,7 +117,7 @@ Configurations:
|
|||
'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}',
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY2}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis armeabi-v7a -no-feature-pkg-config',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY2}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH={{.Env.Protobuf_ROOT_mingw}} -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARMV7_NDK_NIGHTLY2}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR={{.Env.Protobuf_ROOT_msvc}}/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY2}}'
|
||||
]
|
||||
-
|
||||
|
@ -132,6 +132,6 @@ Configurations:
|
|||
Environment variables: [
|
||||
'TARGET_CONFIGURE_ARGS=-nomake examples -release -force-debug-info -android-ndk {{.Env.ANDROID_NDK_ROOT_NIGHTLY2}} -android-sdk {{.Env.ANDROID_SDK_ROOT}} -android-abis arm64-v8a',
|
||||
'TARGET_CMAKE_ARGS=-DCMAKE_C_COMPILER_FRONTEND_VARIANT=GNU -DCMAKE_CXX_COMPILER_FRONTEND_VARIANT=GNU -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_ANDROID_HOME_NIGHTLY2}} -DQT_GENERATE_WRAPPER_SCRIPTS_FOR_ALL_HOSTS=ON',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'NON_QTBASE_TARGET_CMAKE_ARGS=-DQT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH=/usr/local -DFFMPEG_DIR={{.Env.FFMPEG_DIR_ANDROID_ARM64_NDK_NIGHTLY2}} -DQT_DEPLOY_FFMPEG=TRUE -DQT_PROTOBUF_WELL_KNOWN_TYPES_PROTO_DIR=/usr/local/include',
|
||||
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_NIGHTLY2}}'
|
||||
]
|
||||
|
|
|
@ -21,16 +21,16 @@ assert_envvar_is_populated_dir() {
|
|||
exit 1
|
||||
fi
|
||||
}
|
||||
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_DEFAULT"
|
||||
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_DEFAULT"
|
||||
|
||||
build_ffmpeg_android() {
|
||||
local target_arch=$1
|
||||
local target_dir=$2
|
||||
local ndk_root=$3
|
||||
local openssl_android_path=$4
|
||||
|
||||
sudo mkdir -p "$target_dir"
|
||||
|
||||
local openssl_include="$OPENSSL_ANDROID_HOME_LATEST/include"
|
||||
local openssl_include="$openssl_android_path/include"
|
||||
local openssl_libs
|
||||
local libs_prefix
|
||||
local target_cpu
|
||||
|
@ -40,19 +40,19 @@ build_ffmpeg_android() {
|
|||
target_toolchain_arch="x86_64-linux-android"
|
||||
target_arch=x86_64
|
||||
target_cpu=x86-64
|
||||
openssl_libs="$OPENSSL_ANDROID_HOME_LATEST/x86_64"
|
||||
openssl_libs="$openssl_android_path/x86_64"
|
||||
libs_prefix="_x86_64"
|
||||
elif [ "$target_arch" == "x86" ]; then
|
||||
target_toolchain_arch="i686-linux-android"
|
||||
target_arch=x86
|
||||
target_cpu=i686
|
||||
openssl_libs="$OPENSSL_ANDROID_HOME_LATEST/x86"
|
||||
openssl_libs="$openssl_android_path/x86"
|
||||
libs_prefix="_x86"
|
||||
elif [ "$target_arch" == "arm64" ]; then
|
||||
target_toolchain_arch="aarch64-linux-android"
|
||||
target_arch=aarch64
|
||||
target_cpu=armv8-a
|
||||
openssl_libs="$OPENSSL_ANDROID_HOME_LATEST/arm64-v8a"
|
||||
openssl_libs="$openssl_android_path/arm64-v8a"
|
||||
libs_prefix="_arm64-v8a"
|
||||
fi
|
||||
|
||||
|
@ -61,7 +61,6 @@ build_ffmpeg_android() {
|
|||
|
||||
local api_version=24
|
||||
|
||||
local ndk_root=$ANDROID_NDK_ROOT_LATEST
|
||||
local ndk_host
|
||||
if uname -a |grep -q "Darwin"; then
|
||||
ndk_host=darwin-x86_64
|
||||
|
@ -108,15 +107,21 @@ build_ffmpeg_android() {
|
|||
if [ "$os" == "android-x86" ]; then
|
||||
target_arch=x86
|
||||
target_dir="/usr/local/android/ffmpeg-x86"
|
||||
envvar="FFMPEG_DIR_ANDROID_X86"
|
||||
envvar_latest="FFMPEG_DIR_ANDROID_X86_NDK_LATEST"
|
||||
envvar_nightly1="FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY1"
|
||||
envvar_nightly2="FFMPEG_DIR_ANDROID_X86_NDK_NIGHTLY2"
|
||||
elif [ "$os" == "android-x86_64" ]; then
|
||||
target_arch=x86_64
|
||||
target_dir="/usr/local/android/ffmpeg-x86_64"
|
||||
envvar="FFMPEG_DIR_ANDROID_X86_64"
|
||||
envvar_latest="FFMPEG_DIR_ANDROID_X86_64_NDK_LATEST"
|
||||
envvar_nightly1="FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY1"
|
||||
envvar_nightly2="FFMPEG_DIR_ANDROID_X86_64_NDK_NIGHTLY2"
|
||||
elif [ "$os" == "android-arm64" ]; then
|
||||
target_arch=arm64
|
||||
target_dir="/usr/local/android/ffmpeg-arm64"
|
||||
envvar="FFMPEG_DIR_ANDROID_ARM64"
|
||||
envvar_latest="FFMPEG_DIR_ANDROID_ARM64_NDK_LATEST"
|
||||
envvar_nightly1="FFMPEG_DIR_ANDROID_ARM64_NDK_NIGHTLY1"
|
||||
envvar_nightly2="FFMPEG_DIR_ANDROID_ARM64_NDK_NIGHTLY2"
|
||||
else
|
||||
>&2 echo "Unhandled android os param: $os"
|
||||
exit 1
|
||||
|
@ -127,5 +132,21 @@ if [ ! -z $target_install_dir_param ]; then
|
|||
target_dir=$target_install_dir_param
|
||||
fi
|
||||
|
||||
build_ffmpeg_android "$target_arch" "$target_dir"
|
||||
set_ffmpeg_dir_env_var "$envvar" "$target_dir"
|
||||
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_LATEST"
|
||||
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_LATEST"
|
||||
build_ffmpeg_android "$target_arch" "$target_dir" "$ANDROID_NDK_ROOT_LATEST" "$OPENSSL_ANDROID_HOME_LATEST"
|
||||
set_ffmpeg_dir_env_var "$envvar_latest" "$target_dir"
|
||||
|
||||
if [ "${ANDROID_NDK_ROOT_NIGHTLY1}" ]; then
|
||||
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_NIGHTLY1"
|
||||
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_NIGHTLY1"
|
||||
build_ffmpeg_android "$target_arch" "$target_dir" "$ANDROID_NDK_ROOT_NIGHTLY1" "$OPENSSL_ANDROID_HOME_NIGHTLY1"
|
||||
set_ffmpeg_dir_env_var "$envvar_nightly1" "$target_dir"
|
||||
fi
|
||||
|
||||
if [ "${ANDROID_NDK_ROOT_NIGHTLY2}" ]; then
|
||||
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_NIGHTLY2"
|
||||
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_NIGHTLY2"
|
||||
build_ffmpeg_android "$target_arch" "$target_dir" "$ANDROID_NDK_ROOT_NIGHTLY2" "$OPENSSL_ANDROID_HOME_NIGHTLY2"
|
||||
set_ffmpeg_dir_env_var "$envvar_nightly2" "$target_dir"
|
||||
fi
|
||||
|
|
|
@ -37,7 +37,8 @@ function InstallFfmpeg {
|
|||
[string]$additionalPath,
|
||||
[string]$ffmpegDirEnvVar,
|
||||
[string]$toolchain,
|
||||
[bool]$shared
|
||||
[bool]$shared,
|
||||
[string]$ndk_ver # Optional param for installing each ffmpeg build with different Android NDK
|
||||
)
|
||||
|
||||
Write-Host "Configure and compile FFmpeg for $buildSystem with configuration: $config"
|
||||
|
@ -50,9 +51,16 @@ function InstallFfmpeg {
|
|||
$env:MSYS2_PATH_TYPE = "inherit"
|
||||
$env:MSYSTEM = $msystem
|
||||
|
||||
if ($ndk_ver) {
|
||||
$prefix = "installed-ndk-$ndk_ver"
|
||||
} else {
|
||||
$prefix = "installed"
|
||||
}
|
||||
$installDir = "C:\$ffmpeg_name\build\$buildSystem\$prefix"
|
||||
|
||||
$cmd = "cd /c/$ffmpeg_name"
|
||||
$cmd += " && mkdir -p build/$buildSystem && cd build/$buildSystem"
|
||||
$cmd += " && ../../configure --prefix=installed $config"
|
||||
$cmd += " && ../../configure --prefix=$prefix $config"
|
||||
if ($toolchain) {
|
||||
$cmd += " --toolchain=$toolchain"
|
||||
}
|
||||
|
@ -72,7 +80,7 @@ function InstallFfmpeg {
|
|||
return $false
|
||||
}
|
||||
|
||||
Set-EnvironmentVariable $ffmpegDirEnvVar "C:\$ffmpeg_name\build\$buildSystem\installed"
|
||||
Set-EnvironmentVariable $ffmpegDirEnvVar $installDir
|
||||
return $true
|
||||
}
|
||||
|
||||
|
@ -138,16 +146,21 @@ function InstallLlvmMingwFfmpeg {
|
|||
}
|
||||
|
||||
function InstallAndroidArmv7 {
|
||||
param (
|
||||
[string]$ndk_root,
|
||||
[string]$ffmpeg_dir_android_envvar_name,
|
||||
[string]$ndk_version,
|
||||
[string]$android_openssl_path # OpenSSL is built for Android using NDK, NDK versions for OpenSSL+FFmpeg should match
|
||||
)
|
||||
$shared=$true
|
||||
$target_toolchain_arch="armv7a-linux-androideabi"
|
||||
$target_arch="armv7-a"
|
||||
$target_cpu="armv7-a"
|
||||
$api_version="24"
|
||||
|
||||
$ndkVersionLatest = "r27c"
|
||||
$ndkFolderLatest = "/c/Utils/Android/android-ndk-$ndkVersionLatest"
|
||||
$ndk_dir = $ndk_root -replace '\\', '/' -replace '^C:', '/c'
|
||||
|
||||
$toolchain="${ndkFolderLatest}/toolchains/llvm/prebuilt/windows-x86_64"
|
||||
$toolchain="${ndk_dir}/toolchains/llvm/prebuilt/windows-x86_64"
|
||||
$toolchain_bin="${toolchain}/bin"
|
||||
$sysroot="${toolchain}/sysroot"
|
||||
$cxx="${toolchain_bin}/${target_toolchain_arch}${api_version}-clang++"
|
||||
|
@ -157,8 +170,7 @@ function InstallAndroidArmv7 {
|
|||
$ranlib="${toolchain_bin}/llvm-ranlib.exe"
|
||||
$nm="${toolchain_bin}/llvm-nm.exe"
|
||||
$strip="${toolchain_bin}/llvm-strip.exe"
|
||||
$openssl_path = [System.Environment]::GetEnvironmentVariable("OPENSSL_ANDROID_HOME_LATEST", [System.EnvironmentVariableTarget]::Machine)
|
||||
$openssl_path = $openssl_path.Replace("\", "/")
|
||||
$openssl_path = $android_openssl_path.Replace("\", "/")
|
||||
|
||||
New-Item -ItemType SymbolicLink -Path ${openssl_path}/armeabi-v7a/libcrypto.so -Target ${openssl_path}/armeabi-v7a/libcrypto_3.so
|
||||
New-Item -ItemType SymbolicLink -Path ${openssl_path}/armeabi-v7a/libssl.so -Target ${openssl_path}/armeabi-v7a/libssl_3.so
|
||||
|
@ -167,12 +179,12 @@ function InstallAndroidArmv7 {
|
|||
$config += " --enable-cross-compile --target-os=android --enable-jni --enable-mediacodec --enable-openssl --enable-pthreads --enable-neon --disable-asm --disable-indev=android_camera"
|
||||
$config += " --arch=$target_arch --cpu=${target_cpu} --sysroot=${sysroot} --sysinclude=${sysroot}/usr/include/"
|
||||
$config += " --cc=${cc} --cxx=${cxx} --ar=${ar} --ranlib=${ranlib}"
|
||||
$config += " --extra-cflags=-I$envOPENSSL_ANDROID_HOME_LATEST/include --extra-ldflags=-L$env:OPENSSL_ANDROID_HOME_LATEST/armeabi-v7a"
|
||||
$config += " --extra-cflags=-I${android_openssl_path}/include --extra-ldflags=-L${android_openssl_path}/armeabi-v7a"
|
||||
$config += " --extra-cflags=-I${openssl_path}/include --extra-ldflags=-L${openssl_path}/armeabi-v7a"
|
||||
$config += " --strip=$strip"
|
||||
|
||||
|
||||
$result= InstallFfmpeg -config $config -buildSystem "android-arm" -msystem "ANDROID_CLANG" -ffmpegDirEnvVar "FFMPEG_DIR_ANDROID_ARMV7" -shared $shared
|
||||
$result= InstallFfmpeg -config $config -buildSystem "android-arm" -msystem "ANDROID_CLANG" -ffmpegDirEnvVar $ffmpeg_dir_android_envvar_name -shared $shared -ndk_ver $ndk_version
|
||||
|
||||
Remove-Item -Path ${openssl_path}/armeabi-v7a/libcrypto.so
|
||||
Remove-Item -Path ${openssl_path}/armeabi-v7a/libssl.so
|
||||
|
@ -209,7 +221,20 @@ function InstallFfmpegsAMD64 {
|
|||
$hostArch = "amd64"
|
||||
$mingwRes = InstallMingwFfmpeg
|
||||
$llvmMingwRes = InstallLlvmMingwFfmpeg
|
||||
$androidArmV7Res = InstallAndroidArmv7
|
||||
if ($env:ANDROID_NDK_ROOT_LATEST) {
|
||||
Write-Host "Install ffmpeg using latest supported Android NDK"
|
||||
$androidArmV7Res = InstallAndroidArmv7 -ndk_root $env:ANDROID_NDK_ROOT_LATEST -ffmpeg_dir_android_envvar_name "FFMPEG_DIR_ANDROID_ARMV7_NDK_LATEST" -ndk_version "latest" -android_openssl_path $env:OPENSSL_ANDROID_HOME_LATEST
|
||||
} else {
|
||||
throw "Error: env.var ANDROID_NDK_ROOT_LATEST is not set for FFmpeg"
|
||||
}
|
||||
if ($env:ANDROID_NDK_ROOT_NIGHTLY1) {
|
||||
Write-Host "Install ffmpeg using older Android NDK for nightly1"
|
||||
InstallAndroidArmv7 -ndk_root $env:ANDROID_NDK_ROOT_NIGHTLY1 -ffmpeg_dir_android_envvar_name "FFMPEG_DIR_ANDROID_ARMV7_NDK_NIGHTLY1" -ndk_version "nightly1" -android_openssl_path $env:OPENSSL_ANDROID_HOME_NIGHTLY1
|
||||
}
|
||||
if ($env:ANDROID_NDK_ROOT_NIGHTLY2) {
|
||||
Write-Host "Install ffmpeg using older Android NDK for nightly2"
|
||||
InstallAndroidArmv7 -ndk_root $env:ANDROID_NDK_ROOT_NIGHTLY2 -ffmpeg_dir_android_envvar_name "FFMPEG_DIR_ANDROID_ARMV7_NDK_NIGHTLY2" -ndk_version "nightly2" -android_openssl_path $env:OPENSSL_ANDROID_HOME_NIGHTLY2
|
||||
}
|
||||
$msvcRes = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $false
|
||||
$msvcArm64Res = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $true
|
||||
|
||||
|
|
Loading…
Reference in New Issue