#!/usr/bin/env bash case $ANDROID_ABI in armeabi-v7a) EXTRA_BUILD_CONFIGURATION_FLAGS=--enable-thumb ;; x86) # Disabling assembler optimizations, because they have text relocations EXTRA_BUILD_CONFIGURATION_FLAGS=--disable-asm ;; x86_64) EXTRA_BUILD_CONFIGURATION_FLAGS=--x86asmexe=${FAM_YASM} ;; esac if [ "$FFMPEG_GPL_ENABLED" = true ] ; then EXTRA_BUILD_CONFIGURATION_FLAGS="$EXTRA_BUILD_CONFIGURATION_FLAGS --enable-gpl" fi # Preparing flags for enabling requested libraries ADDITIONAL_COMPONENTS= for LIBARY_NAME in ${FFMPEG_EXTERNAL_LIBRARIES[@]} do ADDITIONAL_COMPONENTS+=" --enable-$LIBARY_NAME" done # Referencing dependencies without pkgconfig DEP_CFLAGS="-I${BUILD_DIR_EXTERNAL}/${ANDROID_ABI}/include" DEP_LD_FLAGS="-L${BUILD_DIR_EXTERNAL}/${ANDROID_ABI}/lib $FFMPEG_EXTRA_LD_FLAGS" # Everything that goes below ${EXTRA_BUILD_CONFIGURATION_FLAGS} is my project-specific. # You are free to enable/disable whatever you actually need. ./configure \ --prefix=${BUILD_DIR_FFMPEG}/${ANDROID_ABI} \ --enable-cross-compile \ --target-os=android \ --arch=${TARGET_TRIPLE_MACHINE_ARCH} \ --sysroot=${SYSROOT_PATH} \ --cc=${FAM_CC} \ --cxx=${FAM_CXX} \ --ld=${FAM_LD} \ --ar=${FAM_AR} \ --as=${FAM_CC} \ --nm=${FAM_NM} \ --ranlib=${FAM_RANLIB} \ --strip=${FAM_STRIP} \ --extra-cflags="-O3 -fPIC $DEP_CFLAGS" \ --extra-ldflags="$DEP_LD_FLAGS" \ --enable-shared \ --disable-static \ --pkg-config=${PKG_CONFIG_EXECUTABLE} \ ${EXTRA_BUILD_CONFIGURATION_FLAGS} \ --disable-runtime-cpudetect \ --disable-programs \ --disable-muxers \ --disable-encoders \ --disable-avdevice \ --disable-postproc \ --disable-swresample \ --disable-avfilter \ --disable-doc \ --disable-debug \ --disable-pthreads \ --disable-network \ --disable-bsfs \ $ADDITIONAL_COMPONENTS || exit 1 ${MAKE_EXECUTABLE} clean ${MAKE_EXECUTABLE} -j${HOST_NPROC} ${MAKE_EXECUTABLE} install