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
(cherry picked from commit 980cd3659a
)
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
parent
1f1e1f3e71
commit
ed43be6eab
|
@ -12,7 +12,7 @@ Configurations:
|
||||||
Environment variables: [
|
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_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',
|
'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}}'
|
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}'
|
||||||
]
|
]
|
||||||
-
|
-
|
||||||
|
@ -28,7 +28,7 @@ Configurations:
|
||||||
'Path={{.Env.MINGW_PATH}}\bin;{{.Env.Path}}',
|
'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_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',
|
'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}}'
|
'ANDROID_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}'
|
||||||
]
|
]
|
||||||
-
|
-
|
||||||
|
@ -43,7 +43,7 @@ Configurations:
|
||||||
Environment variables: [
|
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_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',
|
'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_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}',
|
||||||
'ANDROID_EMULATOR=emulator_x86_api_28'
|
'ANDROID_EMULATOR=emulator_x86_api_28'
|
||||||
]
|
]
|
||||||
|
@ -59,7 +59,7 @@ Configurations:
|
||||||
Environment variables: [
|
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_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',
|
'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_NDK_ROOT={{.Env.ANDROID_NDK_ROOT_LATEST}}',
|
||||||
'ANDROID_EMULATOR=emulator_x86_64_api_35'
|
'ANDROID_EMULATOR=emulator_x86_64_api_35'
|
||||||
]
|
]
|
||||||
|
|
|
@ -21,16 +21,16 @@ assert_envvar_is_populated_dir() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
assert_envvar_is_populated_dir "OPENSSL_ANDROID_HOME_DEFAULT"
|
|
||||||
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_DEFAULT"
|
|
||||||
|
|
||||||
build_ffmpeg_android() {
|
build_ffmpeg_android() {
|
||||||
local target_arch=$1
|
local target_arch=$1
|
||||||
local target_dir=$2
|
local target_dir=$2
|
||||||
|
local ndk_root=$3
|
||||||
|
local openssl_android_path=$4
|
||||||
|
|
||||||
sudo mkdir -p "$target_dir"
|
sudo mkdir -p "$target_dir"
|
||||||
|
|
||||||
local openssl_include="$OPENSSL_ANDROID_HOME_LATEST/include"
|
local openssl_include="$openssl_android_path/include"
|
||||||
local openssl_libs
|
local openssl_libs
|
||||||
local libs_prefix
|
local libs_prefix
|
||||||
local target_cpu
|
local target_cpu
|
||||||
|
@ -40,19 +40,19 @@ build_ffmpeg_android() {
|
||||||
target_toolchain_arch="x86_64-linux-android"
|
target_toolchain_arch="x86_64-linux-android"
|
||||||
target_arch=x86_64
|
target_arch=x86_64
|
||||||
target_cpu=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"
|
libs_prefix="_x86_64"
|
||||||
elif [ "$target_arch" == "x86" ]; then
|
elif [ "$target_arch" == "x86" ]; then
|
||||||
target_toolchain_arch="i686-linux-android"
|
target_toolchain_arch="i686-linux-android"
|
||||||
target_arch=x86
|
target_arch=x86
|
||||||
target_cpu=i686
|
target_cpu=i686
|
||||||
openssl_libs="$OPENSSL_ANDROID_HOME_LATEST/x86"
|
openssl_libs="$openssl_android_path/x86"
|
||||||
libs_prefix="_x86"
|
libs_prefix="_x86"
|
||||||
elif [ "$target_arch" == "arm64" ]; then
|
elif [ "$target_arch" == "arm64" ]; then
|
||||||
target_toolchain_arch="aarch64-linux-android"
|
target_toolchain_arch="aarch64-linux-android"
|
||||||
target_arch=aarch64
|
target_arch=aarch64
|
||||||
target_cpu=armv8-a
|
target_cpu=armv8-a
|
||||||
openssl_libs="$OPENSSL_ANDROID_HOME_LATEST/arm64-v8a"
|
openssl_libs="$openssl_android_path/arm64-v8a"
|
||||||
libs_prefix="_arm64-v8a"
|
libs_prefix="_arm64-v8a"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -61,7 +61,6 @@ build_ffmpeg_android() {
|
||||||
|
|
||||||
local api_version=24
|
local api_version=24
|
||||||
|
|
||||||
local ndk_root=$ANDROID_NDK_ROOT_LATEST
|
|
||||||
local ndk_host
|
local ndk_host
|
||||||
if uname -a |grep -q "Darwin"; then
|
if uname -a |grep -q "Darwin"; then
|
||||||
ndk_host=darwin-x86_64
|
ndk_host=darwin-x86_64
|
||||||
|
@ -108,15 +107,21 @@ build_ffmpeg_android() {
|
||||||
if [ "$os" == "android-x86" ]; then
|
if [ "$os" == "android-x86" ]; then
|
||||||
target_arch=x86
|
target_arch=x86
|
||||||
target_dir="/usr/local/android/ffmpeg-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
|
elif [ "$os" == "android-x86_64" ]; then
|
||||||
target_arch=x86_64
|
target_arch=x86_64
|
||||||
target_dir="/usr/local/android/ffmpeg-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
|
elif [ "$os" == "android-arm64" ]; then
|
||||||
target_arch=arm64
|
target_arch=arm64
|
||||||
target_dir="/usr/local/android/ffmpeg-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
|
else
|
||||||
>&2 echo "Unhandled android os param: $os"
|
>&2 echo "Unhandled android os param: $os"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -127,5 +132,21 @@ if [ ! -z $target_install_dir_param ]; then
|
||||||
target_dir=$target_install_dir_param
|
target_dir=$target_install_dir_param
|
||||||
fi
|
fi
|
||||||
|
|
||||||
build_ffmpeg_android "$target_arch" "$target_dir"
|
assert_envvar_is_populated_dir "ANDROID_NDK_ROOT_LATEST"
|
||||||
set_ffmpeg_dir_env_var "$envvar" "$target_dir"
|
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
|
||||||
|
|
|
@ -38,7 +38,8 @@ function InstallFfmpeg {
|
||||||
[string]$additionalPath,
|
[string]$additionalPath,
|
||||||
[string]$ffmpegDirEnvVar,
|
[string]$ffmpegDirEnvVar,
|
||||||
[string]$toolchain,
|
[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"
|
Write-Host "Configure and compile FFmpeg for $buildSystem with configuration: $config"
|
||||||
|
@ -51,9 +52,16 @@ function InstallFfmpeg {
|
||||||
$env:MSYS2_PATH_TYPE = "inherit"
|
$env:MSYS2_PATH_TYPE = "inherit"
|
||||||
$env:MSYSTEM = $msystem
|
$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 = "cd /c/$ffmpeg_name"
|
||||||
$cmd += " && mkdir -p build/$buildSystem && cd build/$buildSystem"
|
$cmd += " && mkdir -p build/$buildSystem && cd build/$buildSystem"
|
||||||
$cmd += " && ../../configure --prefix=installed $config"
|
$cmd += " && ../../configure --prefix=$prefix $config"
|
||||||
if ($toolchain) {
|
if ($toolchain) {
|
||||||
$cmd += " --toolchain=$toolchain"
|
$cmd += " --toolchain=$toolchain"
|
||||||
}
|
}
|
||||||
|
@ -73,7 +81,7 @@ function InstallFfmpeg {
|
||||||
return $false
|
return $false
|
||||||
}
|
}
|
||||||
|
|
||||||
Set-EnvironmentVariable $ffmpegDirEnvVar "C:\$ffmpeg_name\build\$buildSystem\installed"
|
Set-EnvironmentVariable $ffmpegDirEnvVar $installDir
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,16 +154,21 @@ function InstallLlvmMingwFfmpeg {
|
||||||
}
|
}
|
||||||
|
|
||||||
function InstallAndroidArmv7 {
|
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
|
$shared=$true
|
||||||
$target_toolchain_arch="armv7a-linux-androideabi"
|
$target_toolchain_arch="armv7a-linux-androideabi"
|
||||||
$target_arch="armv7-a"
|
$target_arch="armv7-a"
|
||||||
$target_cpu="armv7-a"
|
$target_cpu="armv7-a"
|
||||||
$api_version="24"
|
$api_version="24"
|
||||||
|
|
||||||
$ndkVersionLatest = "r27c"
|
$ndk_dir = $ndk_root -replace '\\', '/' -replace '^C:', '/c'
|
||||||
$ndkFolderLatest = "/c/Utils/Android/android-ndk-$ndkVersionLatest"
|
|
||||||
|
|
||||||
$toolchain="${ndkFolderLatest}/toolchains/llvm/prebuilt/windows-x86_64"
|
$toolchain="${ndk_dir}/toolchains/llvm/prebuilt/windows-x86_64"
|
||||||
$toolchain_bin="${toolchain}/bin"
|
$toolchain_bin="${toolchain}/bin"
|
||||||
$sysroot="${toolchain}/sysroot"
|
$sysroot="${toolchain}/sysroot"
|
||||||
$cxx="${toolchain_bin}/${target_toolchain_arch}${api_version}-clang++"
|
$cxx="${toolchain_bin}/${target_toolchain_arch}${api_version}-clang++"
|
||||||
|
@ -165,8 +178,7 @@ function InstallAndroidArmv7 {
|
||||||
$ranlib="${toolchain_bin}/llvm-ranlib.exe"
|
$ranlib="${toolchain_bin}/llvm-ranlib.exe"
|
||||||
$nm="${toolchain_bin}/llvm-nm.exe"
|
$nm="${toolchain_bin}/llvm-nm.exe"
|
||||||
$strip="${toolchain_bin}/llvm-strip.exe"
|
$strip="${toolchain_bin}/llvm-strip.exe"
|
||||||
$openssl_path = [System.Environment]::GetEnvironmentVariable("OPENSSL_ANDROID_HOME_LATEST", [System.EnvironmentVariableTarget]::Machine)
|
$openssl_path = $android_openssl_path.Replace("\", "/")
|
||||||
$openssl_path = $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/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
|
New-Item -ItemType SymbolicLink -Path ${openssl_path}/armeabi-v7a/libssl.so -Target ${openssl_path}/armeabi-v7a/libssl_3.so
|
||||||
|
@ -175,12 +187,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 += " --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 += " --arch=$target_arch --cpu=${target_cpu} --sysroot=${sysroot} --sysinclude=${sysroot}/usr/include/"
|
||||||
$config += " --cc=${cc} --cxx=${cxx} --ar=${ar} --ranlib=${ranlib}"
|
$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 += " --extra-cflags=-I${openssl_path}/include --extra-ldflags=-L${openssl_path}/armeabi-v7a"
|
||||||
$config += " --strip=$strip"
|
$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/libcrypto.so
|
||||||
Remove-Item -Path ${openssl_path}/armeabi-v7a/libssl.so
|
Remove-Item -Path ${openssl_path}/armeabi-v7a/libssl.so
|
||||||
|
@ -217,7 +229,20 @@ function InstallFfmpegsAMD64 {
|
||||||
$hostArch = "amd64"
|
$hostArch = "amd64"
|
||||||
$mingwRes = InstallMingwFfmpeg
|
$mingwRes = InstallMingwFfmpeg
|
||||||
$llvmMingwRes = InstallLlvmMingwFfmpeg
|
$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
|
$msvcRes = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $false
|
||||||
$msvcArm64Res = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $true
|
$msvcArm64Res = InstallMsvcFfmpeg -hostArch $hostArch -isArm64 $true
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue