1#!/bin/sh
2# Copyright 2020 Ettus Research, a National Instruments Brand
3#
4# SPDX-License-Identifier: GPL-3.0-or-later
5#
6# Shell script to generate uhd tar.gz packages.
7# Builds 2 packages. One with the firmware, fpga, and mpm folders and one without
8
9set -e
10
11echo_help () {
12    echo "-h/--help: This help doc"
13    echo "-d/--dir /path/to/uhd/root: Point to custom path. Defaults to '../'"
14    echo "-n/--name Specifies package name. Required"
15    echo "-f/--fpganame Specifies fpga package name. If unspecified, '_fpga' gets appended to provided name"
16}
17
18while [[ $# -gt 0 ]]
19do
20key="$1"
21
22case $key in
23    -h|--help)
24        echo_help
25        exit 0
26        ;;
27    -d|--dir)
28        UHD_ROOTDIR="$2"
29        shift # past argument
30        shift # past value
31        ;;
32    -n|--name)
33        UHD_TARNAME="$2"
34        shift # past argument
35        shift # past value
36        ;;
37    -f|--fpganame)
38        UHD_TARFPGANAME="$2"
39        shift # past argument
40        shift # past value
41        ;;
42    *)    # unknown option
43        echo "Unknown argument"
44        exit 1
45        ;;
46esac
47done
48
49if [[ -z "$UHD_ROOTDIR" ]]; then
50    UHD_ROOTDIR='..'
51fi
52echo "Root Dir: "$UHD_ROOTDIR
53
54if [[ -z "$UHD_TARNAME" ]]; then
55    echo_help
56    exit 1
57fi
58
59if [[ -z "$UHD_TARFPGANAME" ]]; then
60    UHD_TARFPGANAME="${UHD_TARNAME}_fpga"
61fi
62
63# Create working directory if it doesn't already exist otherwise clear it
64if [ ! -d "$UHD_ROOTDIR/build/root" ]; then
65    mkdir -p $UHD_ROOTDIR/build/root
66else
67    rm -r $UHD_ROOTDIR/build/root/*
68fi
69
70# Copy basic source and create tar.gz
71cp -R $UHD_ROOTDIR/host $UHD_ROOTDIR/build/root
72cp -R $UHD_ROOTDIR/images $UHD_ROOTDIR/build/root
73cp -R $UHD_ROOTDIR/tools $UHD_ROOTDIR/build/root
74find $UHD_ROOTDIR/build/root/ -type d -name "build*" -exec rm -r {} +
75
76UHD_EXITSTATUS=0
77
78echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.bz2"
79tar --exclude='.git*' -jcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.bz2 -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.bz2 file -- Is bzip2 installed?"; UHD_EXITSTATUS=1; }
80
81echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.gz"
82tar --exclude='.git*' -zcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.gz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.gz file -- Is gzip installed?"; UHD_EXITSTATUS=1; }
83
84echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.xz"
85tar --exclude='.git*' -Jcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.xz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.xz file -- Is xz installed?"; UHD_EXITSTATUS=1; }
86
87echo "Building $UHD_ROOTDIR/build/$UHD_TARNAME.tar.Z"
88tar --exclude='.git*' -Zcf $UHD_ROOTDIR/build/$UHD_TARNAME.tar.Z -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.Z file -- Is compress installed?"; UHD_EXITSTATUS=1; }
89
90# Copy firmware, fpga, and mpm folders and create tar.gz
91cp -R $UHD_ROOTDIR/firmware $UHD_ROOTDIR/build/root
92cp -R $UHD_ROOTDIR/fpga $UHD_ROOTDIR/build/root
93cp -R $UHD_ROOTDIR/mpm $UHD_ROOTDIR/build/root
94find $UHD_ROOTDIR/build/root/ -type d -name "build*" -exec rm -r {} +
95
96echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.bz2"
97tar --exclude='.git*' -jcf  $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.bz2 -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.bz2 file -- Is bzip2 installed?"; UHD_EXITSTATUS=1; }
98
99echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.gz"
100tar --exclude='.git*' -zcf $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.gz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.gz file -- Is gzip installed?"; UHD_EXITSTATUS=1; }
101
102echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.xz"
103tar --exclude='.git*' -Jcf $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.xz -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.xz file -- Is xz installed?"; UHD_EXITSTATUS=1; }
104
105echo "Building $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.Z"
106tar --exclude='.git*' -Zcf $UHD_ROOTDIR/build/$UHD_TARFPGANAME.tar.Z -C $UHD_ROOTDIR/build/root/ . || { echo "Could not create .tar.Z file -- Is compress installed?"; UHD_EXITSTATUS=1; }
107
108exit $UHD_EXITSTATUS
109