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

source ${PWD}/SynoBuildConf/utils-virtual-dvacore

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

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

CheckSkipBuild

arch=$(GetArch)

CONFIGURE="./configure"

PACKAGE_DIR="/var/packages/SurveillanceStation/target/dvacore"
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} -DSYNO_SURVEILLANCESTATION"
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}
	--extra-libs=-ldl
	--enable-cross-compile
	--enable-optimizations
	--enable-pic
	--enable-gpl
	--enable-shared
	--disable-static
	--enable-version3
	--enable-encoders
	--enable-pthreads
	--disable-protocols
	--disable-protocol=rtp
	--enable-protocol=file
	--enable-protocol=http
	--enable-protocol=pipe
	--enable-muxer=mp4
	--enable-avfilter
	--disable-muxer=image2 --disable-muxer=image2pipe
	--disable-swscale-alpha
	--disable-ffplay
	--disable-devices
	--disable-bzlib
	--disable-altivec
	--enable-libopencore-amrnb
	--enable-libopencore-amrwb
	--enable-libmp3lame
	--disable-decoder=aac
	--disable-decoder=aac_fixed
	--disable-encoder=aac
	--disable-decoder=amrnb
	--disable-encoder=zmbv
	--disable-encoder=dca
	--disable-encoder=ac3
	--disable-encoder=ac3_fixed
	--disable-encoder=eac3
	--disable-decoder=dca
	--disable-decoder=eac3
	--disable-decoder=truehd
	--disable-doc
	--enable-libx264
	--enable-encoder=libx264
	--extra-cflags=-I${SysRootPrefix}/pkg/include
	--extra-ldflags=-L${SysRootPrefix}/pkg/lib
	"

CUDA_CONFIG="
	--enable-cuda
	--enable-cuvid
	--enable-nvenc
	--enable-ffnvcodec
	"

VAAPI_CONFIG="
	--enable-vaapi
"

CUSTOM_CONFIG=""
if checkPlatformFunction SYNO_FEA_GPU_SUPPORT; then
	CUSTOM_CONFIG="
		${CUSTOM_CONFIG}
		${CUDA_CONFIG}
	"
fi

if NeedBuildVaapi ; then
	CUSTOM_CONFIG="
		${CUSTOM_CONFIG}
		${VAAPI_CONFIG}
	"
fi

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

if [ "i686" = "${arch}" ]; then
	CUSTOM_CONFIG="
		${CUSTOM_CONFIG}
		--enable-yasm
		--x86asmexe=yasm
		--enable-x86asm
	"
fi

env CC=${CC} \
	CFLAGS="${CFLAGS}" \
	LDFLAGS="${LDFLAGS}" \
	PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SysRootPrefix}/pkg/lib/pkgconfig" \
	${CONFIGURE} \
		${COMMON_CONFIG} \
		${CUSTOM_CONFIG}

## check HEVC VAAPI HWACCEL is enabled
if NeedBuildVaapi ; then
	if grep -q '^CONFIG_HEVC_VAAPI_HWACCEL=yes$' "ffbuild/config.mak"; then
		echo "HEVC VAAPI HWACCEL check ok"
	else
		echo "Error: NO HEVC VAAPI HWACCEL"
		exit 1
	fi
fi

make ${MAKE_FLAGS}
