mirror of https://github.com/jetkvm/kvm.git
75 lines
2.3 KiB
Bash
Executable File
75 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# .devcontainer/install_audio_deps.sh
|
|
# Build ALSA and Opus static libs for ARM in /opt/jetkvm-audio-libs
|
|
set -e
|
|
|
|
# Sudo wrapper function
|
|
SUDO_PATH=$(which sudo 2>/dev/null || echo "")
|
|
function use_sudo() {
|
|
if [ "$UID" -eq 0 ]; then
|
|
"$@"
|
|
elif [ -n "$SUDO_PATH" ]; then
|
|
${SUDO_PATH} -E "$@"
|
|
else
|
|
"$@"
|
|
fi
|
|
}
|
|
|
|
# Accept version parameters or use defaults
|
|
ALSA_VERSION="${1:-1.2.14}"
|
|
OPUS_VERSION="${2:-1.5.2}"
|
|
|
|
AUDIO_LIBS_DIR="/opt/jetkvm-audio-libs"
|
|
BUILDKIT_PATH="/opt/jetkvm-native-buildkit"
|
|
BUILDKIT_FLAVOR="arm-rockchip830-linux-uclibcgnueabihf"
|
|
CROSS_PREFIX="$BUILDKIT_PATH/bin/$BUILDKIT_FLAVOR"
|
|
|
|
# Create directory with proper permissions
|
|
use_sudo mkdir -p "$AUDIO_LIBS_DIR"
|
|
use_sudo chmod 777 "$AUDIO_LIBS_DIR"
|
|
cd "$AUDIO_LIBS_DIR"
|
|
|
|
# Download sources
|
|
[ -f alsa-lib-${ALSA_VERSION}.tar.bz2 ] || wget -N https://www.alsa-project.org/files/pub/lib/alsa-lib-${ALSA_VERSION}.tar.bz2
|
|
[ -f opus-${OPUS_VERSION}.tar.gz ] || wget -N https://downloads.xiph.org/releases/opus/opus-${OPUS_VERSION}.tar.gz
|
|
|
|
# Extract
|
|
[ -d alsa-lib-${ALSA_VERSION} ] || tar xf alsa-lib-${ALSA_VERSION}.tar.bz2
|
|
[ -d opus-${OPUS_VERSION} ] || tar xf opus-${OPUS_VERSION}.tar.gz
|
|
|
|
# Optimization flags for ARM Cortex-A7 with NEON (simplified to avoid FD_SETSIZE issues)
|
|
OPTIM_CFLAGS="-O2 -mfpu=neon -mtune=cortex-a7 -mfloat-abi=hard"
|
|
|
|
export CC="${CROSS_PREFIX}-gcc"
|
|
export CFLAGS="$OPTIM_CFLAGS"
|
|
export CXXFLAGS="$OPTIM_CFLAGS"
|
|
|
|
# Build ALSA
|
|
cd alsa-lib-${ALSA_VERSION}
|
|
if [ ! -f .built ]; then
|
|
chown -R $(whoami):$(whoami) .
|
|
# Use minimal ALSA configuration to avoid FD_SETSIZE issues in devcontainer
|
|
CFLAGS="$OPTIM_CFLAGS" ./configure --host $BUILDKIT_FLAVOR \
|
|
--enable-static=yes --enable-shared=no \
|
|
--with-pcm-plugins=rate,linear \
|
|
--disable-seq --disable-rawmidi --disable-ucm \
|
|
--disable-python --disable-old-symbols \
|
|
--disable-topology --disable-hwdep --disable-mixer \
|
|
--disable-alisp --disable-aload --disable-resmgr
|
|
make -j$(nproc)
|
|
touch .built
|
|
fi
|
|
cd ..
|
|
|
|
# Build Opus
|
|
cd opus-${OPUS_VERSION}
|
|
if [ ! -f .built ]; then
|
|
chown -R $(whoami):$(whoami) .
|
|
CFLAGS="$OPTIM_CFLAGS" ./configure --host $BUILDKIT_FLAVOR --enable-static=yes --enable-shared=no --enable-fixed-point
|
|
make -j$(nproc)
|
|
touch .built
|
|
fi
|
|
cd ..
|
|
|
|
echo "ALSA and Opus built in $AUDIO_LIBS_DIR"
|