#!/usr/bin/env bash
# ==========================================================================
#         _   _      _   ____            __ __  __      _
#        | \ | | ___| |_|  _ \ ___ _ __ / _|  \/  | ___| |_ ___ _ __
#        |  \| |/ _ \ __| |_) / _ \ '__| |_| |\/| |/ _ \ __/ _ \ '__|
#        | |\  |  __/ |_|  __/  __/ |  |  _| |  | |  __/ ||  __/ |
#        |_| \_|\___|\__|_|   \___|_|  |_| |_|  |_|\___|\__\___|_|
#
#                  NetPerfMeter -- Network Performance Meter
#                 Copyright (C) 2009-2026 by Thomas Dreibholz
# ==========================================================================
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Contact:  dreibh@simula.no
# Homepage: https://www.nntb.no/~dreibh/netperfmeter/

set -eu


# ====== Check arguments ====================================================
TEST=0
while [ $# -gt 0 ] ; do
   if [ "$1" == "-t" ] || [ "$1" == "--test" ] ; then
      TEST=1
   else
      echo >&2 "Usage: $0 [-t|--test]"
      exit 1
   fi
   shift
done


# ====== Clone and build Linux QUIC =========================================
cd ~/src
if [ ! -e quic ] ; then
   git clone https://github.com/lxin/quic.git
   cd quic
else
   cd quic
   git pull
fi

./autogen.sh
./configure --prefix=/usr
make
sudo make install
if [ ${TEST} -ge 1 ] ; then
   sudo make check
fi


# ====== Load the Linux QUIC kernel module ==================================
sudo modprobe quic
lsmod | grep "^quic"
