#!/bin/bash
# Copyright (c) 2000-2020 Synology Inc. All rights reserved.

case ${MakeClean} in
	[Yy][Ee][Ss])
		if [ -f ffbuild/config.mak ]; then
			make distclean
		fi
		;;
esac

case ${CleanOnly} in
	[Yy][Ee][Ss])
		return
		;;
esac

if checkPlatformFunction SYNO_FEA_USE_FFMPEG_2; then
	SkipThisProject
	return
fi

CONFIGURE="./configure"


case "$PLATFORM_FAMILY" in
	SYNOPLAT_F_I686|SYNOPLAT_F_X86_64)
		arch="i686"
		;;
	SYNOPLAT_F_ARMV7)
		arch="armv7"
		;;
	SYNOPLAT_F_ARMV8)
		arch="arm64"
		;;
	*)
		SkipThisProject
		return
		;;
esac


STANDALONE="FALSE"

JSONC_INC=$(pkg-config --cflags json-c)
JSONC_LIB=$(pkg-config --libs json-c)

if [ "TRUE" = "${STANDALONE}" ]; then
	CUSTOM_CONFIG="
		--disable-shared
		--enable-static
	"
	CUSTOM_CFLAGS="-DSTANDALONE"
else
	CUSTOM_CONFIG="
		--enable-shared
		--disable-static
	"
	CUSTOM_CFLAGS=""
fi

PACKAGE_DIR="/var/packages/VideoStation/target"
COMMON_RPATH="-Wl,-rpath=${PACKAGE_DIR}/lib/ffmpeg -Wl,-rpath=${PACKAGE_DIR}/lib -Wl,-rpath=${PACKAGE_DIR}/lib/libva"
COMMON_RPATH_LINK="-Wl,-rpath-link=${SysRootPrefix}/pkg/lib"
CFLAGS="${CFLAGS} ${CUSTOM_CFLAGS} -DSYNO_VIDEOSTATION"
LDFLAGS="${LDFLAGS} ${COMMON_RPATH} ${COMMON_RPATH_LINK}"

COMMON_CONFIG="
	--prefix=/usr/pkg
	--incdir=\${prefix}/include/ffmpeg
	--arch=${arch}
	--pkg-config=/usr/bin/pkg-config
	--target-os=linux
	--cross-prefix=${ToolChainPrefix}
	--enable-cross-compile
	--enable-optimizations
	--enable-pic
	--enable-gpl
	--enable-version3
	--enable-nonfree
	--enable-encoders
	--enable-pthreads
	--disable-protocols
	--disable-protocol=rtp
	--enable-protocol=file
	--enable-protocol=http
	--enable-protocol=pipe
	--disable-muxer=image2 --disable-muxer=image2pipe
	--disable-swscale-alpha
	--disable-ffplay
	--disable-doc
	--disable-devices
	--disable-bzlib
	--disable-altivec
	--enable-libopencore-amrnb
	--enable-libopencore-amrwb
	--enable-libmp3lame
	--disable-decoder=amrnb
	--disable-encoder=zmbv
	--disable-encoder=dca
	--disable-decoder=dca
	--disable-encoder=ac3
	--disable-encoder=ac3_fixed
	--disable-encoder=eac3
	--disable-decoder=eac3
	--disable-encoder=truehd
	--disable-decoder=truehd
	--disable-encoder=aac
	--disable-decoder=aac
	--disable-decoder=aac_fixed
	--disable-encoder=hevc_vaapi
	--disable-decoder=hevc
	--disable-muxer=hevc
	--disable-demuxer=hevc
	--disable-parser=hevc
	--disable-bsf=hevc_mp4toannexb
	--x86asmexe=yasm
	--extra-cflags=-I${SysRootPrefix}/pkg/include
	--extra-ldflags=-L${SysRootPrefix}/pkg/lib
	--cc=${CC}
	${CUSTOM_CONFIG}
	"

if checkPlatformFunction SYNO_PLAT_NEON_LIBSWSCALE; then
	# for alpine neon libswscale patch
	export EXPORT_BUILD_TARGET="ALPINE"
fi


if checkPlatformFunction SYNO_FEA_VA_API ; then
env CC=${CC} \
	CFLAGS="${CFLAGS}" \
	LDFLAGS="${LDFLAGS}" \
	PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SysRootPrefix}/pkg/lib/pkgconfig" \
	${CONFIGURE} \
		${COMMON_CONFIG} \
		--enable-vaapi \
		--enable-yasm \
		--enable-libx264 \
		--enable-encoder=h264_vaapi \
		--enable-encoder=libx264

elif [ "i686" = "${arch}" ] || checkPlatformFunction SYNO_PLAT_NEON_LIBSWSCALE ; then
env CC=${CC} \
	CFLAGS="${CFLAGS}" \
	LDFLAGS="${LDFLAGS}" \
	PKG_CONFIG_PATH="${SysRootPrefix}/pkg/lib/pkgconfig" \
	${CONFIGURE} \
		${COMMON_CONFIG} \
		--enable-yasm \
		--enable-libx264 \
		--enable-encoder=libx264

elif [ "armv7" = "${arch}" -o "arm64" = "${arch}" ]; then
env CC=${CC} \
	CFLAGS="${CFLAGS}" \
	LDFLAGS="${LDFLAGS}" \
	bigendian_platform="${BIG_ENDIAN}" \
	${CONFIGURE} \
		${COMMON_CONFIG}

else
	SkipThisProject
	return
fi


make ${MAKE_FLAGS}
# vim:ft=sh
