#!/bin/bash
# Builds the media driver and updates the workspace path with output files

exec_name=$0

cpu_num=$(grep -c processor /proc/cpuinfo)

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

CROSS_COMPILE=$DIR/../prebuilt/toolchain/aarch64/bin/aarch64-cros-linux-gnu-
KERNEL_ARCH=arm64
KDIR=$DIR/../kernel
INCLUDE=$DIR/drivers/include
MEDIA_MODULES=$DIR/drivers
CONFIGS="CONFIG_AMLOGIC_MEDIA_VDEC_MPEG12=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_MPEG2_MULTI=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_MPEG4_MULTI=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_VC1=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_H264=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_H264_MULTI=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_H264_MVC=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_H265=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_VP9=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_MJPEG=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_MJPEG_MULTI=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_REAL=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_AVS=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_AVS_MULTI=m \
	CONFIG_AMLOGIC_MEDIA_VDEC_AVS2=m \
	CONFIG_AMLOGIC_MEDIA_VENC_H264=m \
	CONFIG_AMLOGIC_MEDIA_VENC_H265=m \
	CONFIG_FRAME_WARN=4096"

set -o errtrace
trap 'echo Fatal error: script ${exec_name} aborting at line $LINENO, command \"$BASH_COMMAND\" returned $?; exit 1' ERR

function usage(){
  echo "Usage: ${exec_name} <product> [workspace path]"
  echo "supported products: sabrina"
  echo "Note: if [workspace path] is not set, it still builds"
}

if (( $# < 1 ))
then
  usage
  exit 2
fi

readonly product=$1
readonly workspace_path=$2

pushd $DIR


make -C $KDIR M=$MEDIA_MODULES ARCH=$KERNEL_ARCH \
CROSS_COMPILE=$CROSS_COMPILE $CONFIGS \
EXTRA_CFLAGS+=-I$INCLUDE modules -j64

case $product in
  sabrina*)
    ;;
  *)
    echo "unknown product: $product"
    exit 1
esac

popd

if [ ! -z $workspace_path ]; then
  media_out_dir=${workspace_path}/device/google/${product}-kernel/lib/modules
  mkdir -p ${media_out_dir}

  for ko in aml_hardware_dmx.ko \
            amvdec_avs2.ko \
            amvdec_avs.ko \
            amvdec_h264.ko \
            amvdec_h264mvc.ko \
            amvdec_h265.ko \
            amvdec_mh264.ko \
            amvdec_mjpeg.ko \
            amvdec_mmjpeg.ko \
            amvdec_mmpeg12.ko \
            amvdec_mmpeg4.ko \
            amvdec_mpeg12.ko \
            amvdec_mpeg4.ko \
            amvdec_real.ko \
            amvdec_vc1.ko \
            amvdec_vp9.ko \
            decoder_common.ko \
            encoder.ko \
            firmware.ko \
            media_clock.ko \
            stream_input.ko \
            vpu.ko \
            amvdec_ports.ko \
            video_framerate_adapter.ko \
            media_sync.ko
  do
    find $MEDIA_MODULES -name $ko | xargs -i cp {} $media_out_dir
  done
  media_fw_out_dir=${workspace_path}/device/google/${product}-kernel/lib/firmware/video/
  mkdir -p $media_fw_out_dir
  cp -r firmware/* $media_fw_out_dir
fi
