Files
UnrealEngine/Engine/Source/ThirdParty/libvpx/build/Linux/build-libvpx-linux.sh
2025-05-18 13:04:45 +08:00

119 lines
3.3 KiB
Bash

#!/bin/bash
# Needs to be run on a Linux installation
usage ()
{
cat << EOF
Usage:
$0 [OPTIONS]
Build libvpx for linux platform.
OPTIONS:
-v VER libVpx version [$VER]
-d Debug mode (trace commands)
-h Show this message
EOF
}
while getopts :v:dh OPTION; do
case $OPTION in
v) VER=$OPTARG ;;
d) DEBUG=1 ;;
h) usage; exit 1 ;;
esac
done
[ "$DEBUG" = 1 ] && set -x
#####################
# configuration
# library versions - expected to match tarball and directory names
VER=${VER:-1.14.1}
LIBVPX_DIR=libvpx-$VER
CUR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# don't forget to match archive options with tarball type (bz/gz)
TARBALL=$CUR_DIR/../$LIBVPX_DIR.tar.gz
# includ PID in scratch dir - needs to be absolute
SCRATCH_DIR=/tmp/scratch/$$
DIR=$SCRATCH_DIR/$LIBVPX_DIR
DEST_DIR=$CUR_DIR
#####################
# unpack
rm -rf $SCRATCH_DIR
mkdir -p $SCRATCH_DIR
echo "#######################################"
echo "# Unpacking the tarballs"
tar xzf $TARBALL -C $SCRATCH_DIR
#####################
# build
BUILD_CFLAGS="-fvisibility=hidden"
CONFIG_OPTIONS="--enable-postproc --enable-multi-res-encoding --enable-temporal-denoising --enable-vp9-temporal-denoising --enable-vp9-postproc --size-limit=16384x16384 --enable-realtime-only --disable-examples --disable-tools --disable-docs --disable-unit-tests --disable-libyuv --enable-vp9-highbitdepth --disable-avx512 --disable-neon-dotprod --disable-shared --enable-static --as=yasm"
SLICE="x86_64-linux-gcc"
# SLICE="generic-gnu"
# setup for using custom toolchain
if [[ ! -z "$UE_SYSROOT" ]]; then
TOOLCHAIN="x86_64-unknown-linux-gnu"
export CFLAGS="--sysroot=$UE_SYSROOT/$TOOLCHAIN"
export CXXFLAGS="--sysroot=$UE_SYSROOT/$TOOLCHAIN -I$UE_SYSROOT/include/c++/v1"
export LDFLAGS="--sysroot=$UE_SYSROOT/$TOOLCHAIN"
export CROSS="$TOOLCHAIN-"
export PATH=$UE_SYSROOT/$TOOLCHAIN/bin:$PATH
fi
cd $DIR
echo "#######################################"
echo "# Configuring $LIBVPX_DIR"
./configure --target=${SLICE} ${CONFIG_OPTIONS} --disable-pic --extra-cflags="${BUILD_CFLAGS}" > $DEST_DIR/build.log
echo "# Building $LIBVPX_DIR"
# use make -j SHELL="sh -x" to see command line of every call
make -j8 >> $DEST_DIR/build.log 2>&1
if [ $? -ne 0 ]; then
echo ""
echo "#######################################"
echo "# ERROR!"
echo ""
exit 1
fi
# use some hardcoded knowledge and get static library out
cp $DIR/libvpx.a $DEST_DIR/libvpx.a
cp $DIR/libvpx_g.a $DEST_DIR/libvpx_g.a
#####################
# build PIC version
cd $DIR
make clean > /dev/null
echo "#######################################"
echo "# Configuring $LIBVPX_DIR with PIC"
./configure --target=${SLICE} ${CONFIG_OPTIONS} --enable-pic --extra-cflags="${BUILD_CFLAGS}" > $DEST_DIR/build-pic.log
echo "# Building $LIBVPX_DIR with PIC"
# use make -j SHELL="sh -x" to see command line of every call
make -j8 >> $DEST_DIR/build-pic.log 2>&1
if [ $? -ne 0 ]; then
echo ""
echo "#######################################"
echo "# ERROR!"
echo ""
exit 1
fi
# use some hardcoded knowledge and get static library out
cp $DIR/libvpx.a $DEST_DIR/libvpx_fPIC.a
cp $DIR/libvpx_g.a $DEST_DIR/libvpx_g_fPIC.a
if [ $? -eq 0 ]; then
echo ""
echo "#######################################"
echo "# Newly built libs have been put into $DEST_DIR directory."
echo ""
fi