161 lines
4.3 KiB
Bash
Executable file
161 lines
4.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
# This script builds a tar file that contains a bunch of deps that OBS needs for
|
|
# advanced functionality on OSX. Currently this tar file is pulled down off of s3
|
|
# and used in the CI build process on travis.
|
|
# Mostly this sets build flags to compile with older SDKS and make sure that
|
|
# the libs are portable.
|
|
|
|
exists()
|
|
{
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
if ! exists nasm; then
|
|
echo "nasm not found. Try brew install nasm"
|
|
exit
|
|
fi
|
|
|
|
CURDIR=$(pwd)
|
|
|
|
# the temp directory
|
|
WORK_DIR=`mktemp -d`
|
|
|
|
# deletes the temp directory
|
|
function cleanup {
|
|
#rm -rf "$WORK_DIR"
|
|
echo "Deleted temp working directory $WORK_DIR"
|
|
}
|
|
|
|
# register the cleanup function to be called on the EXIT signal
|
|
trap cleanup EXIT
|
|
|
|
cd $WORK_DIR
|
|
|
|
DEPS_DEST=$WORK_DIR/obsdeps
|
|
|
|
# make dest dirs
|
|
mkdir $DEPS_DEST
|
|
mkdir $DEPS_DEST/bin
|
|
mkdir $DEPS_DEST/include
|
|
mkdir $DEPS_DEST/lib
|
|
|
|
# OSX COMPAT
|
|
export MACOSX_DEPLOYMENT_TARGET=10.11
|
|
|
|
# If you need an olders SDK and Xcode won't give it to you
|
|
# https://github.com/phracker/MacOSX-SDKs
|
|
|
|
# libopus
|
|
curl -L -O https://ftp.osuosl.org/pub/xiph/releases/opus/opus-1.2.1.tar.gz
|
|
tar -xf opus-1.2.1.tar.gz
|
|
cd ./opus-1.2.1
|
|
mkdir build
|
|
cd ./build
|
|
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
|
make -j 12
|
|
make install
|
|
|
|
cd $WORK_DIR
|
|
|
|
# libogg
|
|
curl -L -O https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.3.tar.gz
|
|
tar -xf libogg-1.3.3.tar.gz
|
|
cd ./libogg-1.3.3
|
|
mkdir build
|
|
cd ./build
|
|
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
|
make -j 12
|
|
make install
|
|
|
|
cd $WORK_DIR
|
|
|
|
# libvorbis
|
|
curl -L -O https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.6.tar.gz
|
|
tar -xf libvorbis-1.3.6.tar.gz
|
|
cd ./libvorbis-1.3.6
|
|
mkdir build
|
|
cd ./build
|
|
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
|
make -j 12
|
|
make install
|
|
|
|
cd $WORK_DIR
|
|
|
|
# libvpx
|
|
curl -L -O https://chromium.googlesource.com/webm/libvpx/+archive/v1.7.0.tar.gz
|
|
mkdir -p ./libvpx-v1.7.0
|
|
tar -xf v1.7.0.tar.gz -C $PWD/libvpx-v1.7.0
|
|
cd ./libvpx-v1.7.0
|
|
mkdir -p build
|
|
cd ./build
|
|
../configure --disable-shared --prefix="/tmp/obsdeps" --libdir="/tmp/obsdeps/lib"
|
|
make -j 12
|
|
make install
|
|
|
|
cd $WORK_DIR
|
|
|
|
# x264
|
|
git clone git://git.videolan.org/x264.git
|
|
cd ./x264
|
|
git checkout origin/stable
|
|
mkdir build
|
|
cd ./build
|
|
../configure --extra-ldflags="-mmacosx-version-min=10.11" --enable-static --prefix="/tmp/obsdeps"
|
|
make -j 12
|
|
make install
|
|
../configure --extra-ldflags="-mmacosx-version-min=10.11" --enable-shared --libdir="/tmp/obsdeps/bin" --prefix="/tmp/obsdeps"
|
|
make -j 12
|
|
ln -f -s libx264.*.dylib libx264.dylib
|
|
find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
|
|
rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/
|
|
rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
|
|
|
|
cd $WORK_DIR
|
|
|
|
# janson
|
|
curl -L -O http://www.digip.org/jansson/releases/jansson-2.11.tar.gz
|
|
tar -xf jansson-2.11.tar.gz
|
|
cd jansson-2.11
|
|
mkdir build
|
|
cd ./build
|
|
../configure --libdir="/tmp/obsdeps/bin" --enable-shared --disable-static
|
|
make -j 12
|
|
find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
|
|
rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/
|
|
rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
|
|
|
|
cd $WORK_DIR
|
|
|
|
export LDFLAGS="-L/tmp/obsdeps/lib"
|
|
export CFLAGS="-I/tmp/obsdeps/include"
|
|
|
|
# FFMPEG
|
|
curl -L -O https://github.com/FFmpeg/FFmpeg/archive/n4.0.2.zip
|
|
unzip ./n4.0.2.zip
|
|
cd ./FFmpeg-n4.0.2
|
|
mkdir build
|
|
cd ./build
|
|
../configure --pkg-config-flags="--static" --extra-ldflags="-mmacosx-version-min=10.11" --enable-shared --disable-static --shlibdir="/tmp/obsdeps/bin" --enable-gpl --disable-doc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx --disable-outdev=sdl
|
|
make -j 12
|
|
find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
|
|
rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/
|
|
rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
|
|
|
|
#luajit
|
|
curl -L -O https://luajit.org/download/LuaJIT-2.0.5.tar.gz
|
|
tar -xf LuaJIT-2.0.5.tar.gz
|
|
cd LuaJIT-2.0.5
|
|
make PREFIX=/tmp/obsdeps
|
|
make PREFIX=/tmp/obsdeps install
|
|
find /tmp/obsdeps/lib -name libluajit\*.dylib -exec cp \{\} $DEPS_DEST/lib/ \;
|
|
rsync -avh --include="*/" --include="*.h" --exclude="*" src/* $DEPS_DEST/include/
|
|
make PREFIX=/tmp/obsdeps uninstall
|
|
|
|
cd $WORK_DIR
|
|
|
|
tar -czf osx-deps.tar.gz obsdeps
|
|
|
|
cp ./osx-deps.tar.gz $CURDIR
|