mirror of https://github.com/NekoX-Dev/NekoX.git
[TF][JNI][UPDATE] FFmpeg 4.2.3 from source
(cherry picked from commit 37ba1e1882cae4644eb2c7c53866c47e1fa1780c)
This commit is contained in:
parent
2acef2c17a
commit
323d6ab5ee
|
@ -1,3 +1,6 @@
|
|||
[submodule "TMessagesProj/jni/libwebp"]
|
||||
path = TMessagesProj/jni/libwebp
|
||||
url = https://github.com/webmproject/libwebp
|
||||
[submodule "TMessagesProj/jni/ffmpeg"]
|
||||
path = TMessagesProj/jni/ffmpeg
|
||||
url = https://github.com/FFmpeg/FFmpeg
|
||||
|
|
|
@ -6,13 +6,17 @@ include $(CLEAR_VARS)
|
|||
LOCAL_MODULE := avutil
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/libavutil.a
|
||||
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/armv7-a/include
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/armv7-a/lib/libavutil.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/arm64/libavutil.a
|
||||
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/arm64-v8a/include
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/arm64-v8a/lib/libavutil.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/i686/libavutil.a
|
||||
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/i686/include
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/i686/lib/libavutil.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86_64)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/x86_64/libavutil.a
|
||||
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/x86_64/include
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/x86_64/lib/libavutil.a
|
||||
endif
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
@ -22,13 +26,13 @@ include $(CLEAR_VARS)
|
|||
LOCAL_MODULE := avformat
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/libavformat.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/armv7-a/lib/libavformat.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/arm64/libavformat.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/arm64-v8a/lib/libavformat.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/i686/libavformat.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/i686/lib/libavformat.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86_64)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/x86_64/libavformat.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/x86_64/lib/libavformat.a
|
||||
endif
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
@ -38,13 +42,13 @@ include $(CLEAR_VARS)
|
|||
LOCAL_MODULE := avcodec
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/libavcodec.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/armv7-a/lib/libavcodec.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/arm64/libavcodec.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/arm64-v8a/lib/libavcodec.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/i686/libavcodec.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/i686/lib/libavcodec.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86_64)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/x86_64/libavcodec.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/x86_64/lib/libavcodec.a
|
||||
endif
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
@ -54,13 +58,29 @@ include $(CLEAR_VARS)
|
|||
LOCAL_MODULE := avresample
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/libavresample.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/armv7-a/lib/libavresample.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/arm64/libavresample.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/arm64-v8a/lib/libavresample.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/i686/libavresample.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/i686/lib/libavresample.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86_64)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/x86_64/libavresample.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/x86_64/lib/libavresample.a
|
||||
endif
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE := swresample
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/armv7-a/lib/libswresample.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/arm64-v8a/lib/libswresample.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/i686/lib/libswresample.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86_64)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/x86_64/lib/libswresample.a
|
||||
endif
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
@ -70,13 +90,13 @@ include $(CLEAR_VARS)
|
|||
LOCAL_MODULE := swscale
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/libswscale.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/armv7-a/lib/libswscale.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/arm64/libswscale.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/arm64-v8a/lib/libswscale.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/i686/libswscale.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/i686/lib/libswscale.a
|
||||
else ifeq ($(TARGET_ARCH_ABI),x86_64)
|
||||
LOCAL_SRC_FILES := ./ffmpeg/x86_64/libswscale.a
|
||||
LOCAL_SRC_FILES := ./ffmpeg/build/x86_64/lib/libswscale.a
|
||||
endif
|
||||
|
||||
include $(PREBUILT_STATIC_LIBRARY)
|
||||
|
@ -284,7 +304,7 @@ LOCAL_CFLAGS += -Drestrict='' -D__EMX__ -DOPUS_BUILD -DFIXED_POINT -DUSE_ALLOCA
|
|||
LOCAL_CFLAGS += -DANDROID_NDK -DDISABLE_IMPORTGL -fno-strict-aliasing -fprefetch-loop-arrays -DAVOID_TABLES -DANDROID_TILE_BASED_DECODE -DANDROID_ARMV6_IDCT -ffast-math -D__STDC_CONSTANT_MACROS
|
||||
LOCAL_CPPFLAGS := -DBSD=1 -ffast-math -Os -funroll-loops -std=c++14 -DPACKAGE_NAME='"drinkless/org/ton"'
|
||||
LOCAL_LDLIBS := -ljnigraphics -llog -lz -lEGL -lGLESv2 -landroid
|
||||
LOCAL_STATIC_LIBRARIES := webp sqlite lz4 rlottie tgnet swscale avformat avcodec avresample avutil flac
|
||||
LOCAL_STATIC_LIBRARIES := webp sqlite lz4 rlottie tgnet swscale avformat avcodec avresample avutil swresample flac
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
./opus/src/opus.c \
|
||||
|
@ -487,7 +507,7 @@ $(LOCAL_PATH)/opus/ \
|
|||
$(LOCAL_PATH)/opus/opusfile \
|
||||
$(LOCAL_PATH)/libyuv/include \
|
||||
$(LOCAL_PATH)/boringssl/include \
|
||||
$(LOCAL_PATH)/ffmpeg/include \
|
||||
$(FFMPEG_INCLUDE_PATH) \
|
||||
$(LOCAL_PATH)/emoji \
|
||||
$(LOCAL_PATH)/exoplayer/include \
|
||||
$(LOCAL_PATH)/exoplayer/libFLAC/include \
|
||||
|
|
|
@ -0,0 +1,185 @@
|
|||
#!/bin/bash
|
||||
|
||||
function build_one {
|
||||
|
||||
echo "Cleaning..."
|
||||
rm config.h
|
||||
make clean
|
||||
|
||||
echo "Configuring..."
|
||||
|
||||
./configure \
|
||||
--cc=$CC \
|
||||
--nm=$NM \
|
||||
--enable-stripping \
|
||||
--arch=$ARCH \
|
||||
--target-os=linux \
|
||||
--enable-cross-compile \
|
||||
--x86asmexe=$NDK/prebuilt/$BUILD_PLATFORM/bin/yasm \
|
||||
--prefix=$PREFIX \
|
||||
--enable-pic \
|
||||
--disable-shared \
|
||||
--enable-static \
|
||||
--enable-asm \
|
||||
--enable-inline-asm \
|
||||
--cross-prefix=$CROSS_PREFIX \
|
||||
--sysroot=$PLATFORM \
|
||||
--extra-cflags="-Wl,-Bsymbolic -Os -DCONFIG_LINUX_PERF=0 -DANDROID $OPTIMIZE_CFLAGS -fPIE -pie --static -fPIC" \
|
||||
--extra-ldflags="-Wl,-Bsymbolic -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -fPIC" \
|
||||
--extra-libs="-lgcc" \
|
||||
\
|
||||
--enable-version3 \
|
||||
--enable-gpl \
|
||||
\
|
||||
--disable-linux-perf \
|
||||
\
|
||||
--disable-doc \
|
||||
--disable-htmlpages \
|
||||
--disable-avx \
|
||||
\
|
||||
--disable-everything \
|
||||
--disable-network \
|
||||
--disable-zlib \
|
||||
--disable-avfilter \
|
||||
--disable-avdevice \
|
||||
--disable-postproc \
|
||||
--disable-debug \
|
||||
--disable-programs \
|
||||
--disable-network \
|
||||
--disable-ffplay \
|
||||
--disable-ffprobe \
|
||||
--disable-postproc \
|
||||
--disable-avdevice \
|
||||
\
|
||||
--enable-runtime-cpudetect \
|
||||
--enable-pthreads \
|
||||
--enable-avresample \
|
||||
--enable-swscale \
|
||||
--enable-protocol=file \
|
||||
--enable-decoder=h264 \
|
||||
--enable-decoder=mpeg4 \
|
||||
--enable-decoder=mjpeg \
|
||||
--enable-decoder=gif \
|
||||
--enable-decoder=alac \
|
||||
--enable-demuxer=mov \
|
||||
--enable-demuxer=gif \
|
||||
--enable-hwaccels \
|
||||
--enable-runtime-cpudetect \
|
||||
$ADDITIONAL_CONFIGURE_FLAG
|
||||
|
||||
#echo "continue?"
|
||||
#read
|
||||
make -j$COMPILATION_PROC_COUNT
|
||||
make install
|
||||
|
||||
}
|
||||
|
||||
function setCurrentPlatform {
|
||||
|
||||
PLATFORM="$(uname -s)"
|
||||
case "${PLATFORM}" in
|
||||
Darwin*)
|
||||
BUILD_PLATFORM=darwin-x86_64
|
||||
COMPILATION_PROC_COUNT=`sysctl -n hw.physicalcpu`
|
||||
;;
|
||||
Linux*)
|
||||
BUILD_PLATFORM=linux-x86_64
|
||||
COMPILATION_PROC_COUNT=$(nproc)
|
||||
;;
|
||||
*)
|
||||
echo -e "\033[33mWarning! Unknown platform ${PLATFORM}! falling back to linux-x86_64\033[0m"
|
||||
BUILD_PLATFORM=linux-x86_64
|
||||
COMPILATION_PROC_COUNT=1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "build platform: ${BUILD_PLATFORM}"
|
||||
echo "parallel jobs: ${COMPILATION_PROC_COUNT}"
|
||||
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "ffmpeg" ] || ! [ "$(ls -A ffmpeg)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'ffmpeg' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule init && git submodule update'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$NDK" -a "$NDK" == "" ]; then
|
||||
echo -e "\033[31mFailed! NDK is empty. Run 'export NDK=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
setCurrentPlatform
|
||||
checkPreRequisites
|
||||
|
||||
# TODO: fix env variable for NDK
|
||||
# NDK=/opt/android-sdk/ndk-bundle
|
||||
|
||||
cd ffmpeg
|
||||
|
||||
#x86_64
|
||||
PREBUILT=$NDK/toolchains/x86_64-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-21/arch-x86_64
|
||||
LD=$PREBUILT/bin/x86_64-linux-android-ld
|
||||
AR=$PREBUILT/bin/x86_64-linux-android-ar
|
||||
NM=$PREBUILT/bin/x86_64-linux-android-nm
|
||||
GCCLIB=$PREBUILT/lib/gcc/x86_64-linux-android/4.9.x/libgcc.a
|
||||
CC=$PREBUILT/bin/x86_64-linux-android-gcc
|
||||
CROSS_PREFIX=$PREBUILT/bin/x86_64-linux-android-
|
||||
ARCH=x86_64
|
||||
CPU=x86_64
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG="--disable-mmx --disable-inline-asm"
|
||||
#build_one
|
||||
|
||||
#arm64-v8a
|
||||
PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-21/arch-arm64
|
||||
LD=$PREBUILT/bin/aarch64-linux-android-ld
|
||||
AR=$PREBUILT/bin/aarch64-linux-android-ar
|
||||
NM=$PREBUILT/bin/aarch64-linux-android-nm
|
||||
GCCLIB=$PREBUILT/lib/gcc/aarch64-linux-android/4.9.x/libgcc.a
|
||||
CC=$PREBUILT/bin/aarch64-linux-android-gcc
|
||||
CROSS_PREFIX=$PREBUILT/bin/aarch64-linux-android-
|
||||
ARCH=arm64
|
||||
CPU=arm64-v8a
|
||||
OPTIMIZE_CFLAGS=
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG="--enable-neon --enable-optimizations"
|
||||
build_one
|
||||
|
||||
|
||||
#arm v7n
|
||||
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-16/arch-arm
|
||||
LD=$PREBUILT/bin/arm-linux-androideabi-ld
|
||||
AR=$PREBUILT/bin/arm-linux-androideabi-ar
|
||||
NM=$PREBUILT/bin/arm-linux-androideabi-nm
|
||||
GCCLIB=$PREBUILT/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a
|
||||
CC=$PREBUILT/bin/arm-linux-androideabi-gcc
|
||||
CROSS_PREFIX=$PREBUILT/bin/arm-linux-androideabi-
|
||||
ARCH=arm
|
||||
CPU=armv7-a
|
||||
OPTIMIZE_CFLAGS="-marm -march=$CPU"
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
|
||||
build_one
|
||||
|
||||
#x86 platform
|
||||
PREBUILT=$NDK/toolchains/x86-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-16/arch-x86
|
||||
LD=$PREBUILT/bin/i686-linux-android-ld
|
||||
AR=$PREBUILT/bin/i686-linux-android-ar
|
||||
NM=$PREBUILT/bin/i686-linux-android-nm
|
||||
GCCLIB=$PREBUILT/lib/gcc/i686-linux-android/4.9.x/libgcc.a
|
||||
CC=$PREBUILT/bin/i686-linux-android-gcc
|
||||
CROSS_PREFIX=$PREBUILT/bin/i686-linux-android-
|
||||
ARCH=x86
|
||||
CPU=i686
|
||||
OPTIMIZE_CFLAGS="-march=$CPU"
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG="--disable-mmx --disable-yasm"
|
||||
build_one
|
|
@ -0,0 +1,192 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
function build_one {
|
||||
CC="${CROSS_PREFIX}clang"
|
||||
CXX="${CROSS_PREFIX}clang++"
|
||||
AS="${CROSS_PREFIX}clang"
|
||||
AR="${CROSS_PREFIX}ar"
|
||||
LD="${CROSS_PREFIX}ld"
|
||||
NM="${CROSS_PREFIX}nm"
|
||||
STRIP="${CROSS_PREFIX}strip"
|
||||
|
||||
echo "Cleaning..."
|
||||
rm -f config.h
|
||||
make clean || true
|
||||
rm -rf ${TOOLCHAIN_PREFIX}
|
||||
|
||||
echo "Toolchain..."
|
||||
python $NDK/build/tools/make_standalone_toolchain.py \
|
||||
--arch ${ARCH} \
|
||||
--api ${ANDROID_API} \
|
||||
--stl libc++ \
|
||||
--install-dir=${TOOLCHAIN_PREFIX}
|
||||
|
||||
echo "Configuring..."
|
||||
|
||||
./configure \
|
||||
--nm=${NM} \
|
||||
--ar=${AR} \
|
||||
--as=${CROSS_PREFIX}gcc \
|
||||
--strip=${STRIP} \
|
||||
--cc=${CC} \
|
||||
--cxx=${CXX} \
|
||||
--enable-stripping \
|
||||
--arch=$ARCH \
|
||||
--target-os=linux \
|
||||
--enable-cross-compile \
|
||||
--x86asmexe=$NDK/prebuilt/$BUILD_PLATFORM/bin/yasm \
|
||||
--prefix=$PREFIX \
|
||||
--enable-pic \
|
||||
--disable-shared \
|
||||
--enable-static \
|
||||
--enable-asm \
|
||||
--enable-inline-asm \
|
||||
--enable-x86asm \
|
||||
--cross-prefix=$CROSS_PREFIX \
|
||||
--sysroot=$SYSROOT \
|
||||
--extra-cflags="-Wl,-Bsymbolic -Os -DCONFIG_LINUX_PERF=0 -DANDROID $OPTIMIZE_CFLAGS -fPIE -pie --static -fPIC" \
|
||||
--extra-ldflags="-Wl,-Bsymbolic -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -fPIC" \
|
||||
\
|
||||
--enable-version3 \
|
||||
--enable-gpl \
|
||||
\
|
||||
--disable-linux-perf \
|
||||
\
|
||||
--disable-doc \
|
||||
--disable-htmlpages \
|
||||
--disable-avx \
|
||||
\
|
||||
--disable-everything \
|
||||
--disable-network \
|
||||
--disable-zlib \
|
||||
--disable-avfilter \
|
||||
--disable-avdevice \
|
||||
--disable-postproc \
|
||||
--disable-debug \
|
||||
--disable-programs \
|
||||
--disable-network \
|
||||
--disable-ffplay \
|
||||
--disable-ffprobe \
|
||||
--disable-postproc \
|
||||
--disable-avdevice \
|
||||
\
|
||||
--enable-runtime-cpudetect \
|
||||
--enable-pthreads \
|
||||
--enable-avresample \
|
||||
--enable-swscale \
|
||||
--enable-protocol=file \
|
||||
--enable-decoder=h264 \
|
||||
--enable-decoder=mpeg4 \
|
||||
--enable-decoder=mjpeg \
|
||||
--enable-decoder=gif \
|
||||
--enable-decoder=alac \
|
||||
--enable-demuxer=mov \
|
||||
--enable-demuxer=gif \
|
||||
--enable-hwaccels \
|
||||
$ADDITIONAL_CONFIGURE_FLAG
|
||||
|
||||
#echo "continue?"
|
||||
#read
|
||||
make -j$COMPILATION_PROC_COUNT
|
||||
make install
|
||||
}
|
||||
|
||||
function setCurrentPlatform {
|
||||
|
||||
PLATFORM="$(uname -s)"
|
||||
case "${PLATFORM}" in
|
||||
Darwin*)
|
||||
BUILD_PLATFORM=darwin-x86_64
|
||||
COMPILATION_PROC_COUNT=`sysctl -n hw.physicalcpu`
|
||||
;;
|
||||
Linux*)
|
||||
BUILD_PLATFORM=linux-x86_64
|
||||
COMPILATION_PROC_COUNT=$(nproc)
|
||||
;;
|
||||
*)
|
||||
echo -e "\033[33mWarning! Unknown platform ${PLATFORM}! falling back to linux-x86_64\033[0m"
|
||||
BUILD_PLATFORM=linux-x86_64
|
||||
COMPILATION_PROC_COUNT=1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "build platform: ${BUILD_PLATFORM}"
|
||||
echo "parallel jobs: ${COMPILATION_PROC_COUNT}"
|
||||
|
||||
}
|
||||
|
||||
function checkPreRequisites {
|
||||
|
||||
if ! [ -d "ffmpeg" ] || ! [ "$(ls -A ffmpeg)" ]; then
|
||||
echo -e "\033[31mFailed! Submodule 'ffmpeg' not found!\033[0m"
|
||||
echo -e "\033[31mTry to run: 'git submodule init && git submodule update'\033[0m"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$NDK" -a "$NDK" == "" ]; then
|
||||
echo -e "\033[31mFailed! NDK is empty. Run 'export NDK=[PATH_TO_NDK]'\033[0m"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
setCurrentPlatform
|
||||
checkPreRequisites
|
||||
|
||||
# TODO: fix env variable for NDK
|
||||
# NDK=/opt/android-sdk/ndk-bundle
|
||||
|
||||
cd ffmpeg
|
||||
|
||||
BASEDIR=`pwd`
|
||||
TOOLCHAIN_PREFIX=${BASEDIR}/toolchain-android
|
||||
|
||||
## common
|
||||
SYSROOT=${TOOLCHAIN_PREFIX}/sysroot
|
||||
|
||||
#x86_64
|
||||
ANDROID_API=21
|
||||
PREBUILT=$NDK/toolchains/x86_64-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-21/arch-x86_64
|
||||
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/x86_64-linux-android-
|
||||
ARCH=x86_64
|
||||
CPU=x86_64
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG="--disable-asm"
|
||||
build_one
|
||||
|
||||
#arm64-v8a
|
||||
ANDROID_API=21
|
||||
PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-21/arch-arm64
|
||||
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/aarch64-linux-android-
|
||||
ARCH=arm64
|
||||
CPU=arm64-v8a
|
||||
OPTIMIZE_CFLAGS=
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG="--enable-neon --enable-optimizations"
|
||||
build_one
|
||||
|
||||
|
||||
#arm v7n
|
||||
ANDROID_API=16
|
||||
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-16/arch-arm
|
||||
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/arm-linux-androideabi-
|
||||
ARCH=arm
|
||||
CPU=armv7-a
|
||||
OPTIMIZE_CFLAGS="-marm -march=$CPU"
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG="--enable-neon"
|
||||
build_one
|
||||
|
||||
#x86 platform
|
||||
ANDROID_API=16
|
||||
PREBUILT=$NDK/toolchains/x86-4.9/prebuilt/$BUILD_PLATFORM
|
||||
PLATFORM=$NDK/platforms/android-16/arch-x86
|
||||
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/i686-linux-android-
|
||||
ARCH=x86
|
||||
CPU=i686
|
||||
OPTIMIZE_CFLAGS="-march=$CPU"
|
||||
PREFIX=./build/$CPU
|
||||
ADDITIONAL_CONFIGURE_FLAG="--disable-x86asm --disable-inline-asm --disable-asm"
|
||||
build_one
|
|
@ -0,0 +1 @@
|
|||
Subproject commit d3b963cc41824a3c5b2758ac896fb23e20a87875
|
Loading…
Reference in New Issue