Rework the build scripts and dockerfiles with generic embedded targets

This commit is contained in:
Cameron Gutman
2023-09-19 23:43:43 +00:00
parent a8aef4714c
commit 72ec840806
34 changed files with 304 additions and 98 deletions

View File

@@ -1,6 +1,6 @@
set -e
BASE_FFMPEG_ARGS="--enable-pic --enable-static --disable-shared --disable-all --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=av1 --enable-libdrm --enable-decoder=h264_v4l2m2m --enable-decoder=hevc_v4l2m2m --extra-cflags=-I/usr/include/libdrm"
BASE_FFMPEG_ARGS="--enable-pic --enable-static --disable-shared --disable-all --disable-vulkan --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=av1 --enable-libdrm --enable-decoder=h264_v4l2m2m --enable-decoder=hevc_v4l2m2m --extra-cflags=-I/usr/include/libdrm"
echo "Building dependencies for $TARGET"
if [ "$TARGET" == "rpi" ] || [ "$TARGET" == "rpi64" ]; then
@@ -33,6 +33,9 @@ elif [ "$TARGET" == "desktop" ]; then
# Enable VAAPI, VDPAU, and NVDEC decoders
EXTRA_FFMPEG_ARGS="--enable-nvdec --enable-hwaccel=h264_nvdec --enable-hwaccel=hevc_nvdec --enable-hwaccel=av1_nvdec --enable-hwaccel=h264_vaapi --enable-hwaccel=hevc_vaapi --enable-hwaccel=av1_vaapi --enable-hwaccel=h264_vdpau --enable-hwaccel=hevc_vdpau --enable-hwaccel=av1_vdpau"
elif [ "$TARGET" == "embedded" ]; then
# Enable stateless V4L2 support
EXTRA_FFMPEG_ARGS="--enable-v4l2-request --enable-hwaccel=h264_v4l2request --enable-hwaccel=hevc_v4l2request"
else
echo "Unrecognized target: $TARGET"
exit 1

View File

@@ -18,18 +18,30 @@ if [ "$TARGET" == "rpi" ]; then
EXTRA_DEPS="libraspberrypi0 | rbp-userland-osmc"
EXTRA_CONFIG="CONFIG+=glslow"
elif [ "$TARGET" == "rpi64" ]; then
EXTRA_BUILD_DEPS=""
EXTRA_DEPS=""
EXTRA_CONFIG="CONFIG+=glslow"
elif [ "$TARGET" == "l4t" ]; then
EXTRA_BUILD_DEPS=""
EXTRA_DEPS=""
elif [ "$TARGET" == "desktop" ]; then
EXTRA_BUILD_DEPS="libwayland-dev, wayland-protocols, libva-dev, libvdpau-dev"
elif [ "$TARGET" == "embedded" ]; then
EXTRA_CONFIG="CONFIG+=glslow"
else
echo "Unrecognized target: $TARGET"
exit 1
fi
# Determine extra distro-specific dependencies
if [ "$DISTRO" != "buster" ] && [ $DISTRO != "bionic" ]; then
EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libfreetype-dev"
else
EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libfreetype6-dev"
fi
if [ "$DISTRO" != "bionic" ]; then
EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libgl-dev"
else
EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libgl1-mesa-dev"
fi
# Create a build directory
mkdir /opt/build

View File

@@ -1,6 +1,18 @@
set -e
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y curl g++ make ninja-build python3-pip devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libfreetype6-dev libasound2-dev libdbus-1-dev libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglu1-mesa-dev libibus-1.0-dev libpulse-dev libudev-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxss-dev libxt-dev libxv-dev libxxf86vm-dev cmake
apt-get install -y curl g++ make ninja-build meson devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libasound2-dev libdbus-1-dev libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglu1-mesa-dev libibus-1.0-dev libpulse-dev libudev-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxss-dev libxt-dev libxv-dev libxxf86vm-dev cmake
apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libopus-dev
pip3 install meson==0.61.5 # Last version compatible with Python 3.6 on Bionic
if [ "$DISTRO" != "buster" ] && [ "$DISTRO" != "bionic" ]; then
apt-get install -y libfreetype-dev
else
apt-get install -y libfreetype6-dev
fi
if [ "$DISTRO" != "bionic" ]; then
apt-get install -y libgl-dev
else
apt-get install -y libgl1-mesa-dev
fi