2021-12-25 18:19:30 -06:00
|
|
|
#!/usr/bin/env bash
|
2021-12-31 12:56:17 -06:00
|
|
|
# build_linux.sh
|
2019-05-02 17:28:11 -05:00
|
|
|
#
|
2019-05-07 05:27:50 -05:00
|
|
|
# Build script for Ubuntu and Fedora Linux, git pulls codec2 and
|
|
|
|
# lpcnet repos so they are available for parallel development.
|
2019-05-02 17:28:11 -05:00
|
|
|
|
2021-11-07 16:40:56 -06:00
|
|
|
# Echo what you are doing, and fail if any of the steps fail:
|
|
|
|
set -x -e
|
|
|
|
|
2022-04-25 02:16:21 -05:00
|
|
|
UT_ENABLE=${UT_ENABLE:-0}
|
|
|
|
|
2021-12-31 12:56:17 -06:00
|
|
|
# Allow building of either PulseAudio or PortAudio variants
|
|
|
|
FREEDV_VARIANT=${1:-portaudio}
|
|
|
|
if [[ "$FREEDV_VARIANT" != "portaudio" && "$FREEDV_VARIANT" != "pulseaudio" ]]; then
|
|
|
|
echo "Usage: build_linux.sh [portaudio|pulseaudio]"
|
|
|
|
exit -1
|
|
|
|
fi
|
|
|
|
|
2019-05-02 17:28:11 -05:00
|
|
|
export FREEDVGUIDIR=${PWD}
|
|
|
|
export CODEC2DIR=$FREEDVGUIDIR/codec2
|
|
|
|
export LPCNETDIR=$FREEDVGUIDIR/LPCNet
|
|
|
|
|
2019-08-10 15:52:41 -05:00
|
|
|
# change this when working on combined codec2/freedv-gui changes
|
2023-07-24 23:48:53 -05:00
|
|
|
CODEC2_BRANCH=1.2.0
|
2023-05-07 01:37:59 -05:00
|
|
|
LPCNET_BRANCH=v0.5
|
2019-05-02 17:28:11 -05:00
|
|
|
|
|
|
|
# OK, build and test LPCNet
|
|
|
|
cd $FREEDVGUIDIR
|
2021-12-28 13:48:06 -06:00
|
|
|
if [ ! -d LPCNet ]; then
|
|
|
|
git clone https://github.com/drowe67/LPCNet.git
|
|
|
|
fi
|
2022-07-10 04:27:17 -05:00
|
|
|
cd $LPCNETDIR && git switch master && git pull && git checkout $LPCNET_BRANCH
|
2019-05-02 19:32:13 -05:00
|
|
|
mkdir -p build_linux && cd build_linux && rm -Rf *
|
2022-08-20 02:58:15 -05:00
|
|
|
cmake ..
|
2019-05-02 17:28:11 -05:00
|
|
|
make
|
|
|
|
# sanity check test
|
|
|
|
cd src && sox ../../wav/wia.wav -t raw -r 16000 - | ./lpcnet_enc -s | ./lpcnet_dec -s > /dev/null
|
|
|
|
|
2022-08-20 03:06:34 -05:00
|
|
|
# First build and install vanilla codec2 as we need -lcodec2 to build LPCNet
|
|
|
|
cd $FREEDVGUIDIR
|
|
|
|
if [ ! -d codec2 ]; then
|
|
|
|
git clone https://github.com/drowe67/codec2.git
|
|
|
|
fi
|
2023-07-25 00:06:30 -05:00
|
|
|
cd codec2 && git switch main && git pull && git checkout $CODEC2_BRANCH
|
2022-08-20 03:06:34 -05:00
|
|
|
mkdir -p build_linux && cd build_linux && rm -Rf * && cmake -DLPCNET_BUILD_DIR=$LPCNETDIR/build_linux .. && make VERBOSE=1
|
2019-05-02 17:28:11 -05:00
|
|
|
# sanity check test
|
|
|
|
cd src
|
|
|
|
export LD_LIBRARY_PATH=$LPCNETDIR/build_linux/src
|
|
|
|
./freedv_tx 2020 $LPCNETDIR/wav/wia.wav - | ./freedv_rx 2020 - /dev/null
|
|
|
|
|
|
|
|
# Finally, build freedv-gui
|
2022-11-01 02:39:43 -05:00
|
|
|
cd $FREEDVGUIDIR
|
|
|
|
if [ -d .git ]; then
|
|
|
|
git pull
|
|
|
|
fi
|
2019-05-02 19:32:13 -05:00
|
|
|
mkdir -p build_linux && cd build_linux && rm -Rf *
|
2021-12-31 12:56:17 -06:00
|
|
|
if [[ "$FREEDV_VARIANT" == "pulseaudio" ]]; then
|
|
|
|
PULSEAUDIO_PARAM="-DUSE_PULSEAUDIO=1"
|
|
|
|
fi
|
2022-04-25 02:16:21 -05:00
|
|
|
cmake $PULSEAUDIO_PARAM -DUNITTEST=$UT_ENABLE -DCMAKE_BUILD_TYPE=Debug -DCODEC2_BUILD_DIR=$CODEC2DIR/build_linux -DLPCNET_BUILD_DIR=$LPCNETDIR/build_linux ..
|
2019-05-02 19:32:13 -05:00
|
|
|
make VERBOSE=1
|