| #!/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 |