Support Linux distros & others in build script

This adds Debian, Fedora, Arch and Gentoo to compile when using Linux distros, also supports based with popular Linux operating systems.

Fixed wrong swap of Git pull command vvenc & vvdec, added -p argument for making a directory to avoid error.

- Martin Eesmaa
This commit is contained in:
MartinEesmaa 2024-09-28 19:57:33 +10:00
parent bc767c1cd3
commit 4abde3c3b4
No known key found for this signature in database
GPG Key ID: FD65711850BEEE70
1 changed files with 62 additions and 13 deletions

View File

@ -1,12 +1,42 @@
#!/bin/bash
OS=$(uname)
DISTRO=""
# Detect Linux distribution
if [ "$OS" = "Linux" ]; then
if [ -f /etc/os-release ]; then
DISTRO=$(awk -F= '/^ID=/{print $2}' /etc/os-release)
fi
fi
echo "Martin Eesmaa / VVC Compiler (vvenc and vvdec)"
echo "You're running on $OS of bash script version to compile VVC binaries"
if [ "$OS" = "Linux" ]; then
echo "You're running on $OS with distribution $DISTRO of bash script version to compile VVC binaries"
else
echo "You're running on $OS of bash script version to compile VVC binaries"
fi
echo "Checking and installing required packages..."
setup_linux() {
setup_debian() {
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential cmake -y
sudo apt install build-essential cmake git -y
}
setup_fedora() {
sudo dnf update -y
sudo dnf install cmake gcc gcc-c++ make git -y
}
setup_arch() {
sudo pacman -Syu --noconfirm
sudo pacman -S --noconfirm base-devel cmake git
}
setup_gentoo() {
sudo emerge --sync
sudo emerge cmake git
}
setup_macos() {
@ -35,34 +65,53 @@ build_repos() {
if [ ! -d vvenc ]; then
git clone --depth=1 https://github.com/fraunhoferhhi/vvenc
else
git pull -C vvenc
git -C vvenc pull
fi
if [ ! -d vvdec ]; then
git clone --depth=1 https://github.com/fraunhoferhhi/vvdec
else
git pull -C vvdec
git -C vvdec pull
fi
for REPO in vvenc vvdec; do
cd $REPO
mkdir build && cd build
mkdir -p build && cd build
if [ "$OS" = "Darwin" ]; then
CORES=$(sysctl -n hw.ncpu || echo 1)
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . -j $(sysctl -n hw.ncpu)
cmake --build . -j $CORES
else
CORES=$(nproc || echo 1)
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS="-static" ..
cmake --build . -j $(nproc)
fi
cd -
done
cmake --build . -j $CORES
fi
cd -
done
echo "Please see the build files starting with (vvenc/vvdec)/bin/release-static."
}
# Main script execution
case "$OS" in
Linux)
setup_linux
case "$DISTRO" in
debian|ubuntu)
setup_debian
;;
fedora)
setup_fedora
;;
arch)
setup_arch
;;
gentoo)
setup_gentoo
;;
*)
echo "Unsupported Linux distribution: $DISTRO"
exit 1
;;
esac
;;
Darwin)
setup_macos
@ -82,4 +131,4 @@ case "$OS" in
esac
build_repos
read -p "Finished building vvenc & vvdec. Press [Enter] to continue..."
read -p "Finished building vvenc & vvdec. Press [Enter] to continue..."