206 lines
No EOL
4.4 KiB
Bash
Executable file
206 lines
No EOL
4.4 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
|
|
function setCurrentPlatform {
|
|
|
|
CURRENT_PLATFORM="$(uname -s)"
|
|
case "${CURRENT_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 ${CURRENT_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 "dav1d" ] || ! [ "$(ls -A dav1d)" ]; then
|
|
echo -e "\033[31mFailed! Submodule 'dav1d' 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
|
|
}
|
|
|
|
function build_one {
|
|
echo "Building ${ARCH}..."
|
|
|
|
if [[ "${CURRENT_PLATFORM}" == "Darwin"* ]]; then
|
|
PREBUILT=${NDK}/toolchains/llvm/prebuilt/darwin-x86_64
|
|
else
|
|
PREBUILT=${NDK}/toolchains/${PREBUILT_ARCH}${PREBUILT_MIDDLE}-${VERSION}/prebuilt/${BUILD_PLATFORM}
|
|
fi
|
|
|
|
PLATFORM=${NDK}/platforms/android-${ANDROID_API}/arch-${ARCH}
|
|
|
|
if [[ "${CURRENT_PLATFORM}" == "Darwin"* ]]; then
|
|
TOOLS_PREFIX="${PREBUILT}/bin/${ARCH_NAME}-linux-${BIN_MIDDLE}-"
|
|
else
|
|
TOOLS_PREFIX="${LLVM_BIN}/${ARCH_NAME}-linux-${BIN_MIDDLE}-"
|
|
fi
|
|
|
|
LD=${TOOLS_PREFIX}ld
|
|
AR=${TOOLS_PREFIX}ar
|
|
STRIP=${TOOLS_PREFIX}strip
|
|
NM=${TOOLS_PREFIX}nm
|
|
|
|
if [[ "${CURRENT_PLATFORM}" == "Darwin"* ]]; then
|
|
CC_PREFIX="${PREBUILT}/bin/${CLANG_PREFIX}-linux-${BIN_MIDDLE}${ANDROID_API}-"
|
|
else
|
|
CC_PREFIX="${LLVM_BIN}/${CLANG_PREFIX}-linux-${BIN_MIDDLE}${ANDROID_API}-"
|
|
fi
|
|
|
|
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..."
|
|
rm -f config.h
|
|
make clean || true
|
|
|
|
echo "Configuring..."
|
|
|
|
meson setup builddir-${ARCH} \
|
|
--prefix "$PREFIX" \
|
|
--libdir="lib" \
|
|
--includedir="include" \
|
|
--buildtype=release -Denable_tests=false -Denable_tools=false -Ddefault_library=static \
|
|
--cross-file <(echo "
|
|
[binaries]
|
|
c = '${CC}'
|
|
ar = '${AR}'
|
|
|
|
[host_machine]
|
|
system = 'android'
|
|
cpu_family = '${MESON_CPU_FAMILY}'
|
|
cpu = '${MESON_CPU}'
|
|
endian = 'little'
|
|
")
|
|
ninja -C builddir-${ARCH}
|
|
ninja -C builddir-${ARCH} install
|
|
}
|
|
|
|
setCurrentPlatform
|
|
checkPreRequisites
|
|
|
|
cd dav1d
|
|
|
|
## common
|
|
LLVM_PREFIX="${NDK}/toolchains/llvm/prebuilt/${BUILD_PLATFORM}"
|
|
LLVM_BIN="${LLVM_PREFIX}/bin"
|
|
VERSION="4.9"
|
|
ANDROID_API=21
|
|
|
|
function build {
|
|
for arg in "$@"; do
|
|
case "${arg}" in
|
|
x86_64)
|
|
ANDROID_API=21
|
|
|
|
ARCH=x86_64
|
|
ARCH_NAME=x86_64
|
|
PREBUILT_ARCH=x86_64
|
|
PREBUILT_MIDDLE=
|
|
CLANG_PREFIX=x86_64
|
|
BIN_MIDDLE=android
|
|
CPU=x86_64
|
|
PREFIX="$(pwd)/build/x86_64"
|
|
LIBVPXPREFIX=../libvpx/build/$ARCH_NAME
|
|
ADDITIONAL_CONFIGURE_FLAG="--disable-asm"
|
|
|
|
MESON_CPU=x86_64
|
|
MESON_CPU_FAMILY=x86_64
|
|
|
|
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="$(pwd)/build/arm64-v8a"
|
|
LIBVPXPREFIX=../libvpx/build/$CPU
|
|
ADDITIONAL_CONFIGURE_FLAG="--enable-neon --enable-optimizations"
|
|
|
|
MESON_CPU=arm64
|
|
MESON_CPU_FAMILY=aarch64
|
|
|
|
build_one
|
|
;;
|
|
arm)
|
|
ANDROID_API=16
|
|
|
|
ARCH=arm
|
|
ARCH_NAME=arm
|
|
PREBUILT_ARCH=arm
|
|
PREBUILT_MIDDLE="-linux-androideabi"
|
|
CLANG_PREFIX=armv7a
|
|
BIN_MIDDLE=androideabi
|
|
CPU=armv7-a
|
|
OPTIMIZE_CFLAGS="-marm -march=$CPU"
|
|
PREFIX="$(pwd)/build/armeabi-v7a"
|
|
LIBVPXPREFIX=../libvpx/build/armeabi-v7a
|
|
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
|
|
|
|
MESON_CPU=armv7
|
|
MESON_CPU_FAMILY=arm
|
|
|
|
build_one
|
|
;;
|
|
x86)
|
|
ANDROID_API=16
|
|
|
|
ARCH=x86
|
|
ARCH_NAME=i686
|
|
PREBUILT_ARCH=x86
|
|
PREBUILT_MIDDLE=
|
|
CLANG_PREFIX=i686
|
|
BIN_MIDDLE=android
|
|
CPU=i686
|
|
OPTIMIZE_CFLAGS="-march=$CPU"
|
|
PREFIX="$(pwd)/build/x86"
|
|
LIBVPXPREFIX=../libvpx/build/$ARCH
|
|
ADDITIONAL_CONFIGURE_FLAG="--disable-x86asm --disable-inline-asm --disable-asm"
|
|
|
|
MESON_CPU=i686
|
|
MESON_CPU_FAMILY=x86
|
|
|
|
build_one
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
if (( $# == 0 )); then
|
|
build x86_64 x86 arm arm64
|
|
else
|
|
build $@
|
|
fi |