Update native build scripts from tfoss

This commit is contained in:
luvletter2333 2022-02-03 23:25:39 +08:00
parent cdc56f97e7
commit d4e8d513c4
5 changed files with 234 additions and 517 deletions

View File

@ -12,7 +12,7 @@ ${CMAKE_HOME_DIRECTORY}/ffmpeg/build/${ANDROID_ABI}/lib/libavcodec.a,
${CMAKE_HOME_DIRECTORY}/ffmpeg/build/${ANDROID_ABI}/lib/libavresample.a, ${CMAKE_HOME_DIRECTORY}/ffmpeg/build/${ANDROID_ABI}/lib/libavresample.a,
${CMAKE_HOME_DIRECTORY}/ffmpeg/build/${ANDROID_ABI}/lib/libavutil.a, ${CMAKE_HOME_DIRECTORY}/ffmpeg/build/${ANDROID_ABI}/lib/libavutil.a,
${CMAKE_HOME_DIRECTORY}/ffmpeg/build/${ANDROID_ABI}/lib/libswresample.a, ${CMAKE_HOME_DIRECTORY}/ffmpeg/build/${ANDROID_ABI}/lib/libswresample.a,
${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libvpx.a, ${CMAKE_HOME_DIRECTORY}/libvpx/build/${ANDROID_ABI}/lib/libvpx.a,
${CMAKE_HOME_DIRECTORY}/boringssl/build/${ANDROID_ABI}/ssl/libssl.a, ${CMAKE_HOME_DIRECTORY}/boringssl/build/${ANDROID_ABI}/ssl/libssl.a,
${CMAKE_HOME_DIRECTORY}/boringssl/build/${ANDROID_ABI}/crypto/libcrypto.a") ${CMAKE_HOME_DIRECTORY}/boringssl/build/${ANDROID_ABI}/crypto/libcrypto.a")
@ -60,7 +60,7 @@ add_library(ssl STATIC IMPORTED)
set_target_properties(ssl PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/boringssl/build/${ANDROID_ABI}/ssl/libssl.a) set_target_properties(ssl PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/boringssl/build/${ANDROID_ABI}/ssl/libssl.a)
add_library(libvpx STATIC IMPORTED) add_library(libvpx STATIC IMPORTED)
set_target_properties(libvpx PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libvpx.a) set_target_properties(libvpx PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/libvpx/build/${ANDROID_ABI}/lib/libvpx.a)
#tgnet #tgnet

View File

@ -7,7 +7,14 @@ function build_one {
cd ${CPU} cd ${CPU}
echo "Configuring..." echo "Configuring..."
cmake -DANDROID_NATIVE_API_LEVEL=${API} -DANDROID_ABI=${CPU} -DCMAKE_BUILD_TYPE=Release -DANDROID_NDK=${NDK} -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake -GNinja -DCMAKE_MAKE_PROGRAM=${NINJA_PATH} ../.. cmake \
-DANDROID_NATIVE_API_LEVEL=${API} \
-DANDROID_ABI=${CPU} \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_NDK=${NDK} \
-DCMAKE_TOOLCHAIN_FILE=${NDK}/build/cmake/android.toolchain.cmake \
-GNinja -DCMAKE_MAKE_PROGRAM=${NINJA_PATH} \
../..
echo "Building..." echo "Building..."
cmake --build . cmake --build .
@ -39,20 +46,41 @@ checkPreRequisites
cd boringssl cd boringssl
rm -rf build
mkdir build mkdir build
cd build cd build
API=16 function build {
for arg in "$@"; do
case "${arg}" in
x86_64)
API=21
CPU=x86_64
build_one
;;
arm64)
API=21
CPU=arm64-v8a
build_one
;;
arm)
API=16
CPU=armeabi-v7a
build_one
;;
x86)
API=16
CPU=x86
build_one
;;
*)
;;
esac
done
}
CPU=armeabi-v7a if (( $# == 0 )); then
build_one build x86_64 arm64 arm x86
else
CPU=x86 build $@
build_one fi
API=21
CPU=arm64-v8a
build_one
CPU=x86_64
build_one

View File

@ -1,32 +1,36 @@
#!/bin/bash #!/bin/bash
set -e set -e
function build_one { function build_one {
CC="${CROSS_PREFIX}clang" echo "Building ${ARCH}..."
CXX="${CROSS_PREFIX}clang++"
AS="${CROSS_PREFIX}clang" PREBUILT=${NDK}/toolchains/${PREBUILT_ARCH}${PREBUILT_MIDDLE}-${VERSION}/prebuilt/${BUILD_PLATFORM}
AR="${CROSS_PREFIX}ar" PLATFORM=${NDK}/platforms/android-${ANDROID_API}/arch-${ARCH}
LD="${CROSS_PREFIX}ld"
NM="${CROSS_PREFIX}nm" TOOLS_PREFIX="${LLVM_BIN}/${ARCH_NAME}-linux-${BIN_MIDDLE}-"
STRIP="${CROSS_PREFIX}strip"
LD=${TOOLS_PREFIX}ld
AR=${TOOLS_PREFIX}ar
STRIP=${TOOLS_PREFIX}strip
NM=${TOOLS_PREFIX}nm
CC_PREFIX="${LLVM_BIN}/${CLANG_PREFIX}-linux-${BIN_MIDDLE}${ANDROID_API}-"
CC=${CC_PREFIX}clang
CXX=${CC_PREFIX}clang++
CROSS_PREFIX=${PREBUILT}/bin/${ARCH_NAME}-linux-${BIN_MIDDLE}-
INCLUDES=" -I${LIBVPXPREFIX}/include"
LIBS=" -L${LIBVPXPREFIX}/lib"
echo "Cleaning..." echo "Cleaning..."
rm -f config.h rm -f config.h
make clean || true 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..." echo "Configuring..."
./configure \ ./configure \
--nm=${NM} \ --nm=${NM} \
--ar=${AR} \ --ar=${AR} \
--as=${CROSS_PREFIX}gcc \
--strip=${STRIP} \ --strip=${STRIP} \
--cc=${CC} \ --cc=${CC} \
--cxx=${CXX} \ --cxx=${CXX} \
@ -34,7 +38,7 @@ function build_one {
--arch=$ARCH \ --arch=$ARCH \
--target-os=linux \ --target-os=linux \
--enable-cross-compile \ --enable-cross-compile \
--x86asmexe=$NDK/prebuilt/$BUILD_PLATFORM/bin/yasm \ --x86asmexe=$NDK/prebuilt/${BUILD_PLATFORM}/bin/yasm \
--prefix=$PREFIX \ --prefix=$PREFIX \
--enable-pic \ --enable-pic \
--disable-shared \ --disable-shared \
@ -43,8 +47,9 @@ function build_one {
--enable-inline-asm \ --enable-inline-asm \
--enable-x86asm \ --enable-x86asm \
--cross-prefix=$CROSS_PREFIX \ --cross-prefix=$CROSS_PREFIX \
--sysroot=$SYSROOT \ --sysroot="${LLVM_PREFIX}/sysroot" \
--extra-cflags="-Wl,-Bsymbolic -Os -DCONFIG_LINUX_PERF=0 -DANDROID $OPTIMIZE_CFLAGS -fPIE -pie --static -fPIC" \ --extra-cflags="-Wl,-Bsymbolic -Os -DCONFIG_LINUX_PERF=0 -DANDROID $OPTIMIZE_CFLAGS -fPIE -pie --static -fPIC" \
--extra-cxxflags="-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-ldflags="-Wl,-Bsymbolic -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -fPIC" \
\ \
--enable-version3 \ --enable-version3 \
@ -58,13 +63,14 @@ function build_one {
\ \
--disable-everything \ --disable-everything \
--disable-network \ --disable-network \
--enable-libvpx \
--enable-decoder=libvpx_vp9 \
--disable-zlib \ --disable-zlib \
--disable-avfilter \ --disable-avfilter \
--disable-avdevice \ --disable-avdevice \
--disable-postproc \ --disable-postproc \
--disable-debug \ --disable-debug \
--disable-programs \ --disable-programs \
--disable-network \
--disable-ffplay \ --disable-ffplay \
--disable-ffprobe \ --disable-ffprobe \
--disable-postproc \ --disable-postproc \
@ -84,6 +90,7 @@ function build_one {
--enable-demuxer=mov \ --enable-demuxer=mov \
--enable-demuxer=gif \ --enable-demuxer=gif \
--enable-demuxer=ogg \ --enable-demuxer=ogg \
--enable-demuxer=matroska \
--enable-hwaccels \ --enable-hwaccels \
$ADDITIONAL_CONFIGURE_FLAG $ADDITIONAL_CONFIGURE_FLAG
@ -95,8 +102,8 @@ function build_one {
function setCurrentPlatform { function setCurrentPlatform {
PLATFORM="$(uname -s)" CURRENT_PLATFORM="$(uname -s)"
case "${PLATFORM}" in case "${CURRENT_PLATFORM}" in
Darwin*) Darwin*)
BUILD_PLATFORM=darwin-x86_64 BUILD_PLATFORM=darwin-x86_64
COMPILATION_PROC_COUNT=`sysctl -n hw.physicalcpu` COMPILATION_PROC_COUNT=`sysctl -n hw.physicalcpu`
@ -106,14 +113,14 @@ function setCurrentPlatform {
COMPILATION_PROC_COUNT=$(nproc) COMPILATION_PROC_COUNT=$(nproc)
;; ;;
*) *)
echo -e "\033[33mWarning! Unknown platform ${PLATFORM}! falling back to linux-x86_64\033[0m" echo -e "\033[33mWarning! Unknown platform ${CURRENT_PLATFORM}! falling back to linux-x86_64\033[0m"
BUILD_PLATFORM=linux-x86_64 BUILD_PLATFORM=linux-x86_64
COMPILATION_PROC_COUNT=1 COMPILATION_PROC_COUNT=1
;; ;;
esac esac
echo "build platform: ${BUILD_PLATFORM}" echo "Build platform: ${BUILD_PLATFORM}"
echo "parallel jobs: ${COMPILATION_PROC_COUNT}" echo "Parallel jobs: ${COMPILATION_PROC_COUNT}"
} }
@ -139,56 +146,85 @@ checkPreRequisites
cd ffmpeg cd ffmpeg
BASEDIR=`pwd`
TOOLCHAIN_PREFIX=${BASEDIR}/toolchain-android
## common ## common
SYSROOT=${TOOLCHAIN_PREFIX}/sysroot LLVM_PREFIX="${NDK}/toolchains/llvm/prebuilt/linux-x86_64"
LLVM_BIN="${LLVM_PREFIX}/bin"
VERSION="4.9"
#x86_64 function build {
ANDROID_API=21 for arg in "$@"; do
PREBUILT=$NDK/toolchains/x86_64-4.9/prebuilt/$BUILD_PLATFORM case "${arg}" in
PLATFORM=$NDK/platforms/android-21/arch-x86_64 x86_64)
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/x86_64-linux-android- ANDROID_API=21
ARCH=x86_64
CPU=x86_64
PREFIX=./build/$CPU
ADDITIONAL_CONFIGURE_FLAG="--disable-asm"
build_one
#arm64-v8a ARCH=x86_64
ANDROID_API=21 ARCH_NAME=x86_64
PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/$BUILD_PLATFORM PREBUILT_ARCH=x86_64
PLATFORM=$NDK/platforms/android-21/arch-arm64 PREBUILT_MIDDLE=
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/aarch64-linux-android- CLANG_PREFIX=x86_64
ARCH=arm64 BIN_MIDDLE=android
CPU=arm64-v8a CPU=x86_64
OPTIMIZE_CFLAGS= PREFIX=./build/$CPU
PREFIX=./build/$CPU LIBVPXPREFIX=../libvpx/build/$ARCH_NAME
ADDITIONAL_CONFIGURE_FLAG="--enable-neon --enable-optimizations" ADDITIONAL_CONFIGURE_FLAG="--disable-asm"
build_one build_one
;;
arm64)
ANDROID_API=21
ARCH=arm64
ARCH_NAME=aarch64
PREBUILT_ARCH=aarch64
PREBUILT_MIDDLE="-linux-android"
CLANG_PREFIX=aarch64
BIN_MIDDLE=android
CPU=arm64-v8a
OPTIMIZE_CFLAGS=
PREFIX=./build/$CPU
LIBVPXPREFIX=../libvpx/build/$CPU
ADDITIONAL_CONFIGURE_FLAG="--enable-neon --enable-optimizations"
build_one
;;
arm)
ANDROID_API=16
#arm v7n ARCH=arm
ANDROID_API=16 ARCH_NAME=arm
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/$BUILD_PLATFORM PREBUILT_ARCH=arm
PLATFORM=$NDK/platforms/android-16/arch-arm PREBUILT_MIDDLE="-linux-androideabi"
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/arm-linux-androideabi- CLANG_PREFIX=armv7a
ARCH=arm BIN_MIDDLE=androideabi
CPU=armv7-a CPU=armv7-a
OPTIMIZE_CFLAGS="-marm -march=$CPU" OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./build/armeabi-v7a PREFIX=./build/armeabi-v7a
ADDITIONAL_CONFIGURE_FLAG="--enable-neon" LIBVPXPREFIX=../libvpx/build/armeabi-v7a
build_one ADDITIONAL_CONFIGURE_FLAG=--enable-neon
build_one
;;
x86)
ANDROID_API=16
#x86 platform ARCH=x86
ANDROID_API=16 ARCH_NAME=i686
PREBUILT=$NDK/toolchains/x86-4.9/prebuilt/$BUILD_PLATFORM PREBUILT_ARCH=x86
PLATFORM=$NDK/platforms/android-16/arch-x86 PREBUILT_MIDDLE=
CROSS_PREFIX=${TOOLCHAIN_PREFIX}/bin/i686-linux-android- CLANG_PREFIX=i686
ARCH=x86 BIN_MIDDLE=android
CPU=i686 CPU=i686
OPTIMIZE_CFLAGS="-march=$CPU" OPTIMIZE_CFLAGS="-march=$CPU"
PREFIX=./build/x86 PREFIX=./build/$ARCH
ADDITIONAL_CONFIGURE_FLAG="--disable-x86asm --disable-inline-asm --disable-asm" LIBVPXPREFIX=../libvpx/build/$ARCH_NAME
build_one ADDITIONAL_CONFIGURE_FLAG="--disable-x86asm --disable-inline-asm --disable-asm"
build_one
;;
*)
;;
esac
done
}
if (( $# == 0 )); then
build x86_64 arm64 arm x86
else
build $@
fi

View File

@ -40,398 +40,28 @@ function build_one {
--libc="${LLVM_PREFIX}/sysroot" \ --libc="${LLVM_PREFIX}/sysroot" \
--prefix=${PREFIX} \ --prefix=${PREFIX} \
--target=${TARGET} \ --target=${TARGET} \
--enable-runtime-cpu-detect \ ${CPU_DETECT} \
--as=yasm \ --as=yasm \
--enable-static \ --enable-static \
--enable-pic \ --enable-pic \
--disable-docs \ --disable-docs \
--disable-libyuv \ --enable-libyuv \
--enable-small \
--enable-optimizations \
--enable-better-hw-compatibility \
--disable-examples \ --disable-examples \
--disable-tools \ --disable-tools \
--disable-debug \ --disable-debug \
--disable-unit-tests \ --disable-unit-tests \
--disable-install-docs \ --disable-install-docs \
--enable-realtime-only \ --enable-realtime-only \
--enable-vp9-postproc \ --enable-vp8 \
--enable-vp9-highbitdepth \ --enable-vp9 \
--disable-webm-io \ --disable-webm-io
--enable-postproc \
--enable-multi-res-encoding \
--enable-temporal-denoising \
--enable-vp9-temporal-denoising \
--disable-avx512
make -j$COMPILATION_PROC_COUNT install make -j$COMPILATION_PROC_COUNT install
} }
function cutX86 {
pushd $PREFIX/lib
$AR dv libvpx.a vp9_job_queue.c.o
$AR dv libvpx.a vp9_dsubexp.c.o
$AR dv libvpx.a vp9_decoder.c.o
$AR dv libvpx.a vp9_detokenize.c.o
$AR dv libvpx.a vp9_decodeframe.c.o
$AR dv libvpx.a vp9_decodemv.c.o
$AR dv libvpx.a vp9_dx_iface.c.o
$AR dv libvpx.a vp9_denoiser_sse2.c.o
$AR dv libvpx.a vp9_dct_intrin_sse2.c.o
$AR dv libvpx.a vp9_highbd_block_error_intrin_sse2.c.o
$AR dv libvpx.a vp9_quantize_sse2.c.o
$AR dv libvpx.a vp9_ext_ratectrl.c.o
$AR dv libvpx.a vp9_noise_estimate.c.o
$AR dv libvpx.a vp9_skin_detection.c.o
$AR dv libvpx.a vp9_aq_cyclicrefresh.c.o
$AR dv libvpx.a vp9_treewriter.c.o
$AR dv libvpx.a vp9_tokenize.c.o
$AR dv libvpx.a vp9_resize.c.o
$AR dv libvpx.a vp9_svc_layercontext.c.o
$AR dv libvpx.a vp9_subexp.c.o
$AR dv libvpx.a vp9_speed_features.c.o
$AR dv libvpx.a vp9_segmentation.c.o
$AR dv libvpx.a vp9_pickmode.c.o
$AR dv libvpx.a vp9_rdopt.c.o
$AR dv libvpx.a vp9_rd.c.o
$AR dv libvpx.a vp9_ratectrl.c.o
$AR dv libvpx.a vp9_quantize.c.o
$AR dv libvpx.a vp9_picklpf.c.o
$AR dv libvpx.a vp9_encoder.c.o
$AR dv libvpx.a vp9_mcomp.c.o
$AR dv libvpx.a vp9_multi_thread.c.o
$AR dv libvpx.a vp9_lookahead.c.o
$AR dv libvpx.a vp9_frame_scale.c.o
$AR dv libvpx.a vp9_extend.c.o
$AR dv libvpx.a vp9_ethread.c.o
$AR dv libvpx.a vp9_encodemv.c.o
$AR dv libvpx.a vp9_encodemb.c.o
$AR dv libvpx.a vp9_encodeframe.c.o
$AR dv libvpx.a vp9_denoiser.c.o
$AR dv libvpx.a vp9_dct.c.o
$AR dv libvpx.a vp9_cost.c.o
$AR dv libvpx.a vp9_context_tree.c.o
$AR dv libvpx.a vp9_bitstream.c.o
$AR dv libvpx.a vp9_cx_iface.c.o
$AR dv libvpx.a vp9_idct_intrin_sse2.c.o
$AR dv libvpx.a vp9_mfqe.c.o
$AR dv libvpx.a vp9_postproc.c.o
$AR dv libvpx.a vp9_scan.c.o
$AR dv libvpx.a vp9_common_data.c.o
$AR dv libvpx.a vp9_reconintra.c.o
$AR dv libvpx.a vp9_reconinter.c.o
$AR dv libvpx.a vp9_quant_common.c.o
$AR dv libvpx.a vp9_mvref_common.c.o
$AR dv libvpx.a vp9_thread_common.c.o
$AR dv libvpx.a vp9_loopfilter.c.o
$AR dv libvpx.a vp9_tile_common.c.o
$AR dv libvpx.a vp9_seg_common.c.o
$AR dv libvpx.a vp9_scale.c.o
$AR dv libvpx.a vp9_rtcd.c.o
$AR dv libvpx.a vp9_pred_common.c.o
$AR dv libvpx.a vp9_filter.c.o
$AR dv libvpx.a vp9_idct.c.o
$AR dv libvpx.a vp9_frame_buffers.c.o
$AR dv libvpx.a vp9_entropymv.c.o
$AR dv libvpx.a vp9_entropymode.c.o
$AR dv libvpx.a vp9_entropy.c.o
$AR dv libvpx.a vp9_blockd.c.o
$AR dv libvpx.a vp9_alloccommon.c.o
$AR dv libvpx.a vp9_iface_common.c.o
$AR dv libvpx.a threading.c.o
$AR dv libvpx.a onyxd_if.c.o
$AR dv libvpx.a detokenize.c.o
$AR dv libvpx.a decodeframe.c.o
$AR dv libvpx.a decodemv.c.o
$AR dv libvpx.a dboolhuff.c.o
$AR dv libvpx.a vp8_dx_iface.c.o
$AR dv libvpx.a vp8_enc_stubs_sse2.c.o
$AR dv libvpx.a denoising_sse2.c.o
$AR dv libvpx.a vp8_quantize_sse2.c.o
$AR dv libvpx.a mr_dissim.c.o
$AR dv libvpx.a treewriter.c.o
$AR dv libvpx.a tokenize.c.o
$AR dv libvpx.a vp8_skin_detection.c.o
$AR dv libvpx.a segmentation.c.o
$AR dv libvpx.a rdopt.c.o
$AR dv libvpx.a ratectrl.c.o
$AR dv libvpx.a vp8_quantize.c.o
$AR dv libvpx.a picklpf.c.o
$AR dv libvpx.a pickinter.c.o
$AR dv libvpx.a onyx_if.c.o
$AR dv libvpx.a modecosts.c.o
$AR dv libvpx.a mcomp.c.o
$AR dv libvpx.a lookahead.c.o
$AR dv libvpx.a denoising.c.o
$AR dv libvpx.a ethreading.c.o
$AR dv libvpx.a encodemv.c.o
$AR dv libvpx.a encodemb.c.o
$AR dv libvpx.a encodeintra.c.o
$AR dv libvpx.a encodeframe.c.o
$AR dv libvpx.a boolhuff.c.o
$AR dv libvpx.a bitstream.c.o
$AR dv libvpx.a vp8_cx_iface.c.o
$AR dv libvpx.a bilinear_filter_sse2.c.o
$AR dv libvpx.a idct_blk_sse2.c.o
$AR dv libvpx.a idct_blk_mmx.c.o
$AR dv libvpx.a postproc.c.o
$AR dv libvpx.a mfqe.c.o
$AR dv libvpx.a loopfilter_x86.c.o
$AR dv libvpx.a vp8_asm_stubs.c.o
$AR dv libvpx.a treecoder.c.o
$AR dv libvpx.a setupintrarecon.c.o
$AR dv libvpx.a reconintra4x4.c.o
$AR dv libvpx.a reconintra.c.o
$AR dv libvpx.a reconinter.c.o
$AR dv libvpx.a quant_common.c.o
$AR dv libvpx.a modecont.c.o
$AR dv libvpx.a mbpitch.c.o
$AR dv libvpx.a vp8_loopfilter.c.o
$AR dv libvpx.a rtcd.c.o
$AR dv libvpx.a idctllm.c.o
$AR dv libvpx.a systemdependent.c.o
$AR dv libvpx.a findnearmv.c.o
$AR dv libvpx.a filter.c.o
$AR dv libvpx.a extend.c.o
$AR dv libvpx.a entropymv.c.o
$AR dv libvpx.a entropymode.c.o
$AR dv libvpx.a entropy.c.o
$AR dv libvpx.a blockd.c.o
$AR dv libvpx.a alloccommon.c.o
$AR dv libvpx.a vpx_thread.c.o
$AR dv libvpx.a vpx_dsp_rtcd.c.o
$AR dv libvpx.a highbd_variance_sse2.c.o
$AR dv libvpx.a variance_sse2.c.o
$AR dv libvpx.a avg_pred_sse2.c.o
$AR dv libvpx.a variance.c.o
$AR dv libvpx.a sum_squares_sse2.c.o
$AR dv libvpx.a subtract.c.o
$AR dv libvpx.a sad.c.o
$AR dv libvpx.a skin_detection.c.o
$AR dv libvpx.a avg_intrin_sse2.c.o
$AR dv libvpx.a avg.c.o
$AR dv libvpx.a highbd_quantize_intrin_sse2.c.o
$AR dv libvpx.a quantize_sse2.c.o
$AR dv libvpx.a quantize.c.o
$AR dv libvpx.a highbd_idct32x32_add_sse2.c.o
$AR dv libvpx.a highbd_idct16x16_add_sse2.c.o
$AR dv libvpx.a highbd_idct8x8_add_sse2.c.o
$AR dv libvpx.a highbd_idct4x4_add_sse2.c.o
$AR dv libvpx.a inv_txfm_sse2.c.o
$AR dv libvpx.a inv_txfm.c.o
$AR dv libvpx.a fwd_txfm_sse2.c.o
$AR dv libvpx.a fwd_txfm.c.o
$AR dv libvpx.a highbd_loopfilter_sse2.c.o
$AR dv libvpx.a loopfilter_sse2.c.o
$AR dv libvpx.a vpx_subpixel_4t_intrin_sse2.c.o
$AR dv libvpx.a vpx_convolve.c.o
$AR dv libvpx.a post_proc_sse2.c.o
$AR dv libvpx.a deblock.c.o
$AR dv libvpx.a add_noise.c.o
$AR dv libvpx.a highbd_intrapred_intrin_sse2.c.o
$AR dv libvpx.a intrapred.c.o
$AR dv libvpx.a bitreader_buffer.c.o
$AR dv libvpx.a bitreader.c.o
$AR dv libvpx.a psnr.c.o
$AR dv libvpx.a bitwriter_buffer.c.o
$AR dv libvpx.a bitwriter.c.o
$AR dv libvpx.a prob.c.o
$AR dv libvpx.a emms_mmx.c.o
$AR dv libvpx.a vpx_scale_rtcd.c.o
$AR dv libvpx.a gen_scalers.c.o
$AR dv libvpx.a yv12extend.c.o
$AR dv libvpx.a yv12config.c.o
$AR dv libvpx.a vpx_scale.c.o
$AR dv libvpx.a vpx_mem.c.o
$AR dv libvpx.a vpx_image.c.o
$AR dv libvpx.a vpx_codec.c.o
$AR dv libvpx.a vpx_encoder.c.o
$AR dv libvpx.a vpx_decoder.c.o
popd
}
function cutX8664 {
pushd $PREFIX/lib
$AR dv libvpx.a vp9_job_queue.c.o
$AR dv libvpx.a vp9_dsubexp.c.o
$AR dv libvpx.a vp9_decoder.c.o
$AR dv libvpx.a vp9_detokenize.c.o
$AR dv libvpx.a vp9_decodeframe.c.o
$AR dv libvpx.a vp9_decodemv.c.o
$AR dv libvpx.a vp9_dx_iface.c.o
$AR dv libvpx.a vp9_denoiser_sse2.c.o
$AR dv libvpx.a vp9_dct_intrin_sse2.c.o
$AR dv libvpx.a vp9_highbd_block_error_intrin_sse2.c.o
$AR dv libvpx.a vp9_quantize_sse2.c.o
$AR dv libvpx.a vp9_ext_ratectrl.c.o
$AR dv libvpx.a vp9_noise_estimate.c.o
$AR dv libvpx.a vp9_skin_detection.c.o
$AR dv libvpx.a vp9_aq_cyclicrefresh.c.o
$AR dv libvpx.a vp9_treewriter.c.o
$AR dv libvpx.a vp9_tokenize.c.o
$AR dv libvpx.a vp9_resize.c.o
$AR dv libvpx.a vp9_svc_layercontext.c.o
$AR dv libvpx.a vp9_subexp.c.o
$AR dv libvpx.a vp9_speed_features.c.o
$AR dv libvpx.a vp9_segmentation.c.o
$AR dv libvpx.a vp9_pickmode.c.o
$AR dv libvpx.a vp9_rdopt.c.o
$AR dv libvpx.a vp9_rd.c.o
$AR dv libvpx.a vp9_ratectrl.c.o
$AR dv libvpx.a vp9_quantize.c.o
$AR dv libvpx.a vp9_picklpf.c.o
$AR dv libvpx.a vp9_encoder.c.o
$AR dv libvpx.a vp9_mcomp.c.o
$AR dv libvpx.a vp9_multi_thread.c.o
$AR dv libvpx.a vp9_lookahead.c.o
$AR dv libvpx.a vp9_frame_scale.c.o
$AR dv libvpx.a vp9_extend.c.o
$AR dv libvpx.a vp9_ethread.c.o
$AR dv libvpx.a vp9_encodemv.c.o
$AR dv libvpx.a vp9_encodemb.c.o
$AR dv libvpx.a vp9_encodeframe.c.o
$AR dv libvpx.a vp9_denoiser.c.o
$AR dv libvpx.a vp9_dct.c.o
$AR dv libvpx.a vp9_cost.c.o
$AR dv libvpx.a vp9_context_tree.c.o
$AR dv libvpx.a vp9_bitstream.c.o
$AR dv libvpx.a vp9_cx_iface.c.o
$AR dv libvpx.a vp9_idct_intrin_sse2.c.o
$AR dv libvpx.a vp9_mfqe.c.o
$AR dv libvpx.a vp9_postproc.c.o
$AR dv libvpx.a vp9_scan.c.o
$AR dv libvpx.a vp9_common_data.c.o
$AR dv libvpx.a vp9_reconintra.c.o
$AR dv libvpx.a vp9_reconinter.c.o
$AR dv libvpx.a vp9_quant_common.c.o
$AR dv libvpx.a vp9_mvref_common.c.o
$AR dv libvpx.a vp9_thread_common.c.o
$AR dv libvpx.a vp9_loopfilter.c.o
$AR dv libvpx.a vp9_tile_common.c.o
$AR dv libvpx.a vp9_seg_common.c.o
$AR dv libvpx.a vp9_scale.c.o
$AR dv libvpx.a vp9_rtcd.c.o
$AR dv libvpx.a vp9_pred_common.c.o
$AR dv libvpx.a vp9_filter.c.o
$AR dv libvpx.a vp9_idct.c.o
$AR dv libvpx.a vp9_frame_buffers.c.o
$AR dv libvpx.a vp9_entropymv.c.o
$AR dv libvpx.a vp9_entropymode.c.o
$AR dv libvpx.a vp9_entropy.c.o
$AR dv libvpx.a vp9_blockd.c.o
$AR dv libvpx.a vp9_alloccommon.c.o
$AR dv libvpx.a vp9_iface_common.c.o
$AR dv libvpx.a threading.c.o
$AR dv libvpx.a onyxd_if.c.o
$AR dv libvpx.a detokenize.c.o
$AR dv libvpx.a decodeframe.c.o
$AR dv libvpx.a decodemv.c.o
$AR dv libvpx.a dboolhuff.c.o
$AR dv libvpx.a vp8_dx_iface.c.o
$AR dv libvpx.a vp8_enc_stubs_sse2.c.o
$AR dv libvpx.a denoising_sse2.c.o
$AR dv libvpx.a vp8_quantize_sse2.c.o
$AR dv libvpx.a mr_dissim.c.o
$AR dv libvpx.a treewriter.c.o
$AR dv libvpx.a tokenize.c.o
$AR dv libvpx.a vp8_skin_detection.c.o
$AR dv libvpx.a segmentation.c.o
$AR dv libvpx.a rdopt.c.o
$AR dv libvpx.a ratectrl.c.o
$AR dv libvpx.a vp8_quantize.c.o
$AR dv libvpx.a picklpf.c.o
$AR dv libvpx.a pickinter.c.o
$AR dv libvpx.a onyx_if.c.o
$AR dv libvpx.a modecosts.c.o
$AR dv libvpx.a mcomp.c.o
$AR dv libvpx.a lookahead.c.o
$AR dv libvpx.a denoising.c.o
$AR dv libvpx.a ethreading.c.o
$AR dv libvpx.a encodemv.c.o
$AR dv libvpx.a encodemb.c.o
$AR dv libvpx.a encodeintra.c.o
$AR dv libvpx.a encodeframe.c.o
$AR dv libvpx.a boolhuff.c.o
$AR dv libvpx.a bitstream.c.o
$AR dv libvpx.a vp8_cx_iface.c.o
$AR dv libvpx.a bilinear_filter_sse2.c.o
$AR dv libvpx.a idct_blk_sse2.c.o
$AR dv libvpx.a idct_blk_mmx.c.o
$AR dv libvpx.a postproc.c.o
$AR dv libvpx.a mfqe.c.o
$AR dv libvpx.a loopfilter_x86.c.o
$AR dv libvpx.a vp8_asm_stubs.c.o
$AR dv libvpx.a treecoder.c.o
$AR dv libvpx.a setupintrarecon.c.o
$AR dv libvpx.a reconintra4x4.c.o
$AR dv libvpx.a reconintra.c.o
$AR dv libvpx.a reconinter.c.o
$AR dv libvpx.a quant_common.c.o
$AR dv libvpx.a modecont.c.o
$AR dv libvpx.a mbpitch.c.o
$AR dv libvpx.a vp8_loopfilter.c.o
$AR dv libvpx.a rtcd.c.o
$AR dv libvpx.a idctllm.c.o
$AR dv libvpx.a systemdependent.c.o
$AR dv libvpx.a findnearmv.c.o
$AR dv libvpx.a filter.c.o
$AR dv libvpx.a extend.c.o
$AR dv libvpx.a entropymv.c.o
$AR dv libvpx.a entropymode.c.o
$AR dv libvpx.a entropy.c.o
$AR dv libvpx.a blockd.c.o
$AR dv libvpx.a alloccommon.c.o
$AR dv libvpx.a vpx_thread.c.o
$AR dv libvpx.a vpx_dsp_rtcd.c.o
$AR dv libvpx.a highbd_variance_sse2.c.o
$AR dv libvpx.a variance_sse2.c.o
$AR dv libvpx.a avg_pred_sse2.c.o
$AR dv libvpx.a variance.c.o
$AR dv libvpx.a sum_squares_sse2.c.o
$AR dv libvpx.a subtract.c.o
$AR dv libvpx.a sad.c.o
$AR dv libvpx.a skin_detection.c.o
$AR dv libvpx.a avg_intrin_sse2.c.o
$AR dv libvpx.a avg.c.o
$AR dv libvpx.a highbd_quantize_intrin_sse2.c.o
$AR dv libvpx.a quantize_sse2.c.o
$AR dv libvpx.a quantize.c.o
$AR dv libvpx.a highbd_idct32x32_add_sse2.c.o
$AR dv libvpx.a highbd_idct16x16_add_sse2.c.o
$AR dv libvpx.a highbd_idct8x8_add_sse2.c.o
$AR dv libvpx.a highbd_idct4x4_add_sse2.c.o
$AR dv libvpx.a inv_txfm_sse2.c.o
$AR dv libvpx.a inv_txfm.c.o
$AR dv libvpx.a fwd_txfm_sse2.c.o
$AR dv libvpx.a fwd_txfm.c.o
$AR dv libvpx.a highbd_loopfilter_sse2.c.o
$AR dv libvpx.a loopfilter_sse2.c.o
$AR dv libvpx.a vpx_subpixel_4t_intrin_sse2.c.o
$AR dv libvpx.a vpx_convolve.c.o
$AR dv libvpx.a post_proc_sse2.c.o
$AR dv libvpx.a deblock.c.o
$AR dv libvpx.a add_noise.c.o
$AR dv libvpx.a highbd_intrapred_intrin_sse2.c.o
$AR dv libvpx.a intrapred.c.o
$AR dv libvpx.a bitreader_buffer.c.o
$AR dv libvpx.a bitreader.c.o
$AR dv libvpx.a psnr.c.o
$AR dv libvpx.a bitwriter_buffer.c.o
$AR dv libvpx.a bitwriter.c.o
$AR dv libvpx.a prob.c.o
$AR dv libvpx.a vpx_scale_rtcd.c.o
$AR dv libvpx.a gen_scalers.c.o
$AR dv libvpx.a yv12extend.c.o
$AR dv libvpx.a yv12config.c.o
$AR dv libvpx.a vpx_scale.c.o
$AR dv libvpx.a vpx_mem.c.o
$AR dv libvpx.a vpx_image.c.o
$AR dv libvpx.a vpx_codec.c.o
$AR dv libvpx.a vpx_encoder.c.o
$AR dv libvpx.a vpx_decoder.c.o
popd
}
function setCurrentPlatform { function setCurrentPlatform {
CURRENT_PLATFORM="$(uname -s)" CURRENT_PLATFORM="$(uname -s)"
@ -479,13 +109,12 @@ cd libvpx
LLVM_PREFIX="${NDK}/toolchains/llvm/prebuilt/linux-x86_64" LLVM_PREFIX="${NDK}/toolchains/llvm/prebuilt/linux-x86_64"
LLVM_BIN="${LLVM_PREFIX}/bin" LLVM_BIN="${LLVM_PREFIX}/bin"
VERSION="4.9" VERSION="4.9"
ANDROID_API=21
function build { function build {
for arg in "$@"; do for arg in "$@"; do
case "${arg}" in case "${arg}" in
x86_64) x86_64)
ANDROID_API=21
ARCH=x86_64 ARCH=x86_64
ARCH_NAME=x86_64 ARCH_NAME=x86_64
PREBUILT_ARCH=x86_64 PREBUILT_ARCH=x86_64
@ -495,15 +124,10 @@ function build {
OPTIMIZE_CFLAGS="-O3 -march=x86-64 -mtune=intel -msse4.2 -mpopcnt -m64 -fPIC" OPTIMIZE_CFLAGS="-O3 -march=x86-64 -mtune=intel -msse4.2 -mpopcnt -m64 -fPIC"
TARGET="x86_64-android-gcc" TARGET="x86_64-android-gcc"
PREFIX=./build/$CPU PREFIX=./build/$CPU
CPU_DETECT="--enable-runtime-cpu-detect"
build_one build_one
cutX8664
cp $PREFIX/lib/libvpx.a ../third_party/libvpx/source/libvpx/vpx_dsp/x86/libvpx_x86_64_yasm.a
;; ;;
x86) x86)
# fails with but should be 16?
#ANDROID_API=16
ANDROID_API=21
ARCH=x86 ARCH=x86
ARCH_NAME=i686 ARCH_NAME=i686
PREBUILT_ARCH=x86 PREBUILT_ARCH=x86
@ -513,9 +137,34 @@ function build {
OPTIMIZE_CFLAGS="-O3 -march=i686 -mtune=intel -msse3 -mfpmath=sse -m32 -fPIC" OPTIMIZE_CFLAGS="-O3 -march=i686 -mtune=intel -msse3 -mfpmath=sse -m32 -fPIC"
TARGET="x86-android-gcc" TARGET="x86-android-gcc"
PREFIX=./build/$CPU PREFIX=./build/$CPU
CPU_DETECT="--enable-runtime-cpu-detect"
build_one
;;
arm64)
ARCH=arm64
ARCH_NAME=aarch64
PREBUILT_ARCH=aarch64
CLANG_PREFIX=aarch64
BIN_MIDDLE=android
CPU=arm64-v8a
OPTIMIZE_CFLAGS="-O3 -march=armv8-a"
TARGET="arm64-android-gcc"
PREFIX=./build/$CPU
CPU_DETECT="--disable-runtime-cpu-detect"
build_one
;;
arm)
ARCH=arm
ARCH_NAME=arm
PREBUILT_ARCH=arm
CLANG_PREFIX=armv7a
BIN_MIDDLE=androideabi
CPU=armeabi-v7a
OPTIMIZE_CFLAGS="-Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a8 -mthumb -D__thumb__"
TARGET="armv7-android-gcc --enable-neon --disable-neon-asm"
PREFIX=./build/$CPU
CPU_DETECT="--disable-runtime-cpu-detect"
build_one build_one
cutX86
cp $PREFIX/lib/libvpx.a ../third_party/libvpx/source/libvpx/vpx_dsp/x86/libvpx_x86_yasm.a
;; ;;
*) *)
;; ;;
@ -524,7 +173,7 @@ function build {
} }
if (( $# == 0 )); then if (( $# == 0 )); then
build x86_64 x86 build x86_64 x86 arm arm64
else else
build $@ build $@
fi fi

View File

@ -5,6 +5,10 @@ set -e
patch -d ffmpeg -p1 < patches/ffmpeg/0001-compilation-magic.patch patch -d ffmpeg -p1 < patches/ffmpeg/0001-compilation-magic.patch
patch -d ffmpeg -p1 < patches/ffmpeg/0002-compilation-magic-2.patch patch -d ffmpeg -p1 < patches/ffmpeg/0002-compilation-magic-2.patch
function cp {
install -D $@
}
cp ffmpeg/libavformat/dv.h ffmpeg/build/arm64-v8a/include/libavformat/dv.h cp ffmpeg/libavformat/dv.h ffmpeg/build/arm64-v8a/include/libavformat/dv.h
cp ffmpeg/libavformat/isom.h ffmpeg/build/arm64-v8a/include/libavformat/isom.h cp ffmpeg/libavformat/isom.h ffmpeg/build/arm64-v8a/include/libavformat/isom.h
cp ffmpeg/libavformat/dv.h ffmpeg/build/armeabi-v7a/include/libavformat/dv.h cp ffmpeg/libavformat/dv.h ffmpeg/build/armeabi-v7a/include/libavformat/dv.h