#!/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!"