Files
uv-k1-k5v3-firmware-custom/compile-with-docker.sh
T

171 lines
5.4 KiB
Bash
Executable File

#!/bin/sh
IMAGE_NAME="uvk5"
FIRMWARE_DIR="${PWD}/compiled-firmware"
# Create firmware output directory if it doesn't exist
mkdir -p "$FIRMWARE_DIR"
# Clean previously compiled firmware files
rm -f "$FIRMWARE_DIR"/*
# Build image only if it doesn't already exist
if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
echo "Docker image '$IMAGE_NAME' not found, building..."
if ! docker build --build-arg BUILDPLATFORM=linux/amd64 -t "$IMAGE_NAME" .; then
echo "❌ Failed to build docker image"
exit 1
fi
fi
# ------------------ BUILD VARIANTS ------------------
custom() {
echo "🔧 Custom compilation..."
docker run --rm -v "${PWD}:/app" --user $(id -u):$(id -g) "$IMAGE_NAME" /bin/bash -c "\
cd /app && git submodule update --init --recursive && make -s clean && make -s \
EDITION_STRING=Custom \
TARGET=f4hwn.custom \
&& mv f4hwn.custom* compiled-firmware/ \
&& make -s clean"
}
standard() {
echo "📦 Standard compilation..."
docker run --rm -v "${PWD}:/app" --user $(id -u):$(id -g) "$IMAGE_NAME" /bin/bash -c "\
cd /app && git submodule update --init --recursive && make -s clean && make -s \
ENABLE_SPECTRUM=0 \
ENABLE_FMRADIO=0 \
ENABLE_AIRCOPY=0 \
ENABLE_NOAA=0 \
EDITION_STRING=Standard \
TARGET=f4hwn.standard \
&& mv f4hwn.standard* compiled-firmware/ \
&& make -s clean"
}
bandscope() {
echo "📺 Bandscope compilation..."
docker run --rm -v "${PWD}:/app" --user $(id -u):$(id -g) "$IMAGE_NAME" /bin/bash -c "\
cd /app && git submodule update --init --recursive && make -s clean && make -s \
ENABLE_SPECTRUM=1 \
ENABLE_FMRADIO=0 \
ENABLE_VOX=0 \
ENABLE_AIRCOPY=1 \
ENABLE_FEAT_F4HWN_GAME=0 \
ENABLE_FEAT_F4HWN_PMR=1 \
ENABLE_FEAT_F4HWN_GMRS_FRS_MURS=1 \
ENABLE_NOAA=0 \
ENABLE_FEAT_F4HWN_RESCUE_OPS=0 \
EDITION_STRING=Bandscope \
TARGET=f4hwn.bandscope \
&& mv f4hwn.bandscope* compiled-firmware/ \
&& make -s clean"
}
broadcast() {
echo "📻 Broadcast compilation..."
docker run --rm -v "${PWD}:/app" --user $(id -u):$(id -g) "$IMAGE_NAME" /bin/bash -c "\
cd /app && git submodule update --init --recursive && make -s clean && make -s \
ENABLE_SPECTRUM=0 \
ENABLE_FMRADIO=1 \
ENABLE_VOX=1 \
ENABLE_AIRCOPY=1 \
ENABLE_FEAT_F4HWN_GAME=0 \
ENABLE_FEAT_F4HWN_PMR=1 \
ENABLE_FEAT_F4HWN_GMRS_FRS_MURS=1 \
ENABLE_NOAA=0 \
ENABLE_FEAT_F4HWN_RESCUE_OPS=0 \
EDITION_STRING=Broadcast \
TARGET=f4hwn.broadcast \
&& mv f4hwn.broadcast* compiled-firmware/ \
&& make -s clean"
}
basic() {
echo "☘️ Basic compilation..."
docker run --rm -v "${PWD}:/app" --user $(id -u):$(id -g) "$IMAGE_NAME" /bin/bash -c "\
cd /app && git submodule update --init --recursive && make -s clean && make -s \
ENABLE_SPECTRUM=1 \
ENABLE_FMRADIO=1 \
ENABLE_VOX=0 \
ENABLE_AIRCOPY=0 \
ENABLE_FEAT_F4HWN_GAME=0 \
ENABLE_FEAT_F4HWN_SPECTRUM=0 \
ENABLE_FEAT_F4HWN_PMR=1 \
ENABLE_FEAT_F4HWN_GMRS_FRS_MURS=1 \
ENABLE_NOAA=0 \
ENABLE_AUDIO_BAR=0 \
ENABLE_FEAT_F4HWN_RESUME_STATE=0 \
ENABLE_FEAT_F4HWN_CHARGING_C=0 \
ENABLE_FEAT_F4HWN_INV=1 \
ENABLE_FEAT_F4HWN_CTR=0 \
ENABLE_FEAT_F4HWN_NARROWER=0 \
ENABLE_FEAT_F4HWN_RESCUE_OPS=0 \
EDITION_STRING=Basic \
TARGET=f4hwn.basic \
&& mv f4hwn.basic* compiled-firmware/ \
&& make -s clean"
}
rescueops() {
echo "🚨 RescueOps compilation..."
docker run --rm -v "${PWD}:/app" --user $(id -u):$(id -g) "$IMAGE_NAME" /bin/bash -c "\
cd /app && git submodule update --init --recursive && make -s clean && make -s \
ENABLE_SPECTRUM=0 \
ENABLE_FMRADIO=0 \
ENABLE_VOX=1 \
ENABLE_AIRCOPY=1 \
ENABLE_FEAT_F4HWN_GAME=0 \
ENABLE_FEAT_F4HWN_PMR=1 \
ENABLE_FEAT_F4HWN_GMRS_FRS_MURS=1 \
ENABLE_NOAA=1 \
ENABLE_FEAT_F4HWN_RESCUE_OPS=1 \
EDITION_STRING=RescueOps \
TARGET=f4hwn.rescueops \
&& mv f4hwn.rescueops* compiled-firmware/ \
&& make -s clean"
}
game() {
echo "🎮 Game compilation..."
docker run --rm -v "${PWD}:/app" --user $(id -u):$(id -g) "$IMAGE_NAME" /bin/bash -c "\
cd /app && git submodule update --init --recursive && make -s clean && make -s \
ENABLE_SPECTRUM=0 \
ENABLE_FMRADIO=1 \
ENABLE_VOX=0 \
ENABLE_AIRCOPY=1 \
ENABLE_FEAT_F4HWN_GAME=1 \
ENABLE_FEAT_F4HWN_PMR=1 \
ENABLE_FEAT_F4HWN_GMRS_FRS_MURS=1 \
ENABLE_NOAA=0 \
ENABLE_FEAT_F4HWN_RESCUE_OPS=0 \
EDITION_STRING=Game \
TARGET=f4hwn.game \
&& mv f4hwn.game* compiled-firmware/ \
&& make -s clean"
}
# ------------------ MENU ------------------
case "$1" in
custom) custom ;;
standard) standard ;;
bandscope) bandscope ;;
broadcast) broadcast ;;
basic) basic ;;
rescueops) rescueops ;;
game) game ;;
all)
bandscope
broadcast
basic
rescueops
game
;;
*)
echo "Usage: $0 {custom|standard|bandscope|broadcast|basic|rescueops|game|all} [--rebuild]"
exit 1
;;
esac