cog/Scripts/ffmpeg-build-universal.sh

66 lines
2.1 KiB
Bash
Executable File

#!/bin/sh
# Run from ffmpeg repo.
info() {
GREEN="\033[1;32m"
RESET="\033[0m"
echo "$GREEN==>$RESET $@"
}
info "Installing build dependencies of FFmpeg with Homebrew"
brew install --only-dependencies ffmpeg
brew install yasm
info "Installing build dependencies for cross build with Homebrew"
arch -x86_64 /usr/local/bin/brew install --only-dependencies ffmpeg
ARCHS="arm64 x86_64"
LIBS="libavcodec libavformat libavutil libswresample"
BASEDIR=$(dirname "$0")
COG_FFMPEG_PREFIX="$BASEDIR/../ThirdParty/ffmpeg"
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:"$BASEDIR/../ThirdParty/fdk-aac/lib/pkgconfig"
for arch in $ARCHS; do
info "Building FFmpeg for $arch"
$BASEDIR/ffmpeg-build-$arch.sh $COG_FFMPEG_PREFIX
rm -rf $COG_FFMPEG_PREFIX/pkgconfig
rm -rf $COG_FFMPEG_PREFIX/share
# Workaround Xcode linking error
git clean -ffdx > /dev/null 2>&1
done
all_out_libs=""
for lib in $LIBS; do
out_lib=$(find -E "$COG_FFMPEG_PREFIX/arm64/lib" -type l -regex ".*/$lib\.[0-9]+\.dylib")
out_lib=$(echo "$out_lib" | awk -F "/" '{ print $NF }')
all_out_libs="$all_out_libs $out_lib"
done
echo "all_out_libs: $all_out_libs"
mkdir -p $COG_FFMPEG_PREFIX/lib
for lib in $LIBS; do
out_lib=$(find -E "$COG_FFMPEG_PREFIX/arm64/lib" -type l -regex ".*/$lib\.[0-9]+\.dylib")
out_lib=$(echo "$out_lib" | awk -F "/" '{ print $NF }')
all_libs=""
all_symlinks=""
for arch in $ARCHS; do
libs=$(find -E "$COG_FFMPEG_PREFIX/$arch/lib" -type f -regex ".*/$lib\..*\.dylib")
symlinks=$(find -E "$COG_FFMPEG_PREFIX/$arch/lib" -type l -regex ".*/$lib\..*dylib")
all_libs="$all_libs $libs"
all_symlinks="$all_symlinks $symlinks"
# clean up ids and import paths
install_name_tool -id "@rpath/$out_lib" $libs
for temp_out_lib in $all_out_libs; do
install_name_tool -change "$COG_FFMPEG_PREFIX/$arch/lib/$temp_out_lib" "@rpath/$temp_out_lib" $libs
done
done
info "Making $lib universal"
lipo -create -output $COG_FFMPEG_PREFIX/lib/$out_lib $all_libs
rm $all_libs
rm $all_symlinks
done
info "Done!"