#
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#

# Run from OpenNetworkLinux top directory
#
#cd /aux/OpenNetworkLinux
set -e
ASFVOLT_REPO_NAME=asfvolt16-driver

# override shell variables to match custom local build environment
: ${ONL_TOPDIR:=`pwd`}
: ${BALSRC_RELEASE:=bal_src_release}
: ${BALREL_TOPDIR:=${ONL_TOPDIR}/${BALSRC_RELEASE}}
: ${BALSRC_TOPDIR:=${ONL_TOPDIR}/${BALSRC_RELEASE}/bal_release}
: ${ASFDRVR_PKGDIR:=${ONL_TOPDIR}/asfdrvr-package-dir}
: ${ASFDVR_TARBALL_NAME:=asfvolt16-voltha-bal}

echo ONL_TOPDIR=${ONL_TOPDIR}
echo BALSRC_RELEASE=${BALSRC_RELEASE}
echo BALREL_TOPDIR=${BALREL_TOPDIR}
echo BALSRC_TOPDIR=${BALSRC_TOPDIR}
echo ASFDRVR_PKGDIR=${ASFDRVR_PKGDIR}
echo ASFDVR_TARBALL_NAME=${ASFDVR_TARBALL_NAME}

ASFDVR_TARBALL_FNAME=${ASFDVR_TARBALL_NAME}.tgz

# Note: removes existing directories: asfvolt16-driver, grpc, protobuf
rm -rf ${ASFDRVR_PKGDIR}


mkdir -p ${ASFDRVR_PKGDIR}
cd ${ASFDRVR_PKGDIR}

#extrace ASFvOLT16 BAL/Maple built release tarball
tar zxf ${BALREL_TOPDIR}/bcm68620_release/asfvolt16/release/release_asfvolt16_V*.tar.gz

# voltha_bal_driver and grpc/protobufs live in /broadcom dir on ASFvOLT16 target
cd broadcom

# add grpc-c libs
cp -pR ${ONL_TOPDIR}/grpc-c/build/lib/.libs/libgrpc-c.so.0.0.0 .
ln -s /broadcom/libgrpc-c.so.0.0.0 libgrpc-c.so.0
ln -s /broadcom/libgrpc-c.so.0.0.0 libgrpc-c.so

# add grpc libs
cp -pR ${ONL_TOPDIR}/grpc/libs/opt/libgrp*.so* .
cp -pR ${ONL_TOPDIR}/grpc/libs/opt/libgpr*.so* .

# add protobuf-c libs
cp -pR ${ONL_TOPDIR}/grpc-c/third_party/protobuf-c/protobuf-c/.libs/libprotobuf-c.so* .

# add protobuf libs
cp -pR ${ONL_TOPDIR}/grpc/thirdparty/protobuf/src/.libs/libprotobuf.so* .
cp -pR ${ONL_TOPDIR}/grpc/thirdparty/protobuf/src/.libs/libprotobuf-lite.so* .
cp -pR ${ONL_TOPDIR}/grpc/thirdparty/protobuf/src/.libs/libprotoc.so* .
rm *.0T

# add voltha_bal_driver
cp -pR ${ONL_TOPDIR}/grpc-c/build/examples/.libs/voltha_bal_driver .

#extract ASFvOLT16 BAL/Maple built release tarball
cd ..
tar cvzf ${ASFDVR_TARBALL_FNAME} broadcom opt

ls -l `pwd`/${ASFDVR_TARBALL_FNAME}
echo "${ASFVOLT_REPO_NAME} package build complete"
