123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #!/bin/sh
- # directories
- SOURCE="ffmpeg-3.1.1"
- FAT="FFmpeg-tvOS"
- SCRATCH="scratch-tvos"
- # must be an absolute path
- THIN=`pwd`/"thin-tvos"
- # absolute path to x264 library
- #X264=`pwd`/../x264-ios/x264-iOS
- #FDK_AAC=`pwd`/fdk-aac/fdk-aac-ios
- CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs \
- --disable-doc --enable-pic --disable-indev=avfoundation"
- if [ "$X264" ]
- then
- CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"
- fi
- if [ "$FDK_AAC" ]
- then
- CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-libfdk-aac"
- fi
- # avresample
- #CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample"
- ARCHS="arm64 x86_64"
- COMPILE="y"
- LIPO="y"
- DEPLOYMENT_TARGET="9.0"
- if [ "$*" ]
- then
- if [ "$*" = "lipo" ]
- then
- # skip compile
- COMPILE=
- else
- ARCHS="$*"
- if [ $# -eq 1 ]
- then
- # skip lipo
- LIPO=
- fi
- fi
- fi
- if [ "$COMPILE" ]
- then
- if [ ! `which yasm` ]
- then
- echo 'Yasm not found'
- if [ ! `which brew` ]
- then
- echo 'Homebrew not found. Trying to install...'
- ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \
- || exit 1
- fi
- echo 'Trying to install Yasm...'
- brew install yasm || exit 1
- fi
- if [ ! `which gas-preprocessor.pl` ]
- then
- echo 'gas-preprocessor.pl not found. Trying to install...'
- (curl -L https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl \
- -o /usr/local/bin/gas-preprocessor.pl \
- && chmod +x /usr/local/bin/gas-preprocessor.pl) \
- || exit 1
- fi
- if [ ! -r $SOURCE ]
- then
- echo 'FFmpeg source not found. Trying to download...'
- curl http://www.ffmpeg.org/releases/$SOURCE.tar.bz2 | tar xj \
- || exit 1
- fi
- CWD=`pwd`
- for ARCH in $ARCHS
- do
- echo "building $ARCH..."
- mkdir -p "$SCRATCH/$ARCH"
- cd "$SCRATCH/$ARCH"
- CFLAGS="-arch $ARCH"
- if [ "$ARCH" = "x86_64" ]
- then
- PLATFORM="AppleTVSimulator"
- CFLAGS="$CFLAGS -mtvos-simulator-version-min=$DEPLOYMENT_TARGET"
- else
- PLATFORM="AppleTVOS"
- CFLAGS="$CFLAGS -mtvos-version-min=$DEPLOYMENT_TARGET -fembed-bitcode"
- if [ "$ARCH" = "arm64" ]
- then
- EXPORT="GASPP_FIX_XCODE5=1"
- fi
- fi
- XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
- CC="xcrun -sdk $XCRUN_SDK clang"
- AR="xcrun -sdk $XCRUN_SDK ar"
- CXXFLAGS="$CFLAGS"
- LDFLAGS="$CFLAGS"
- if [ "$X264" ]
- then
- CFLAGS="$CFLAGS -I$X264/include"
- LDFLAGS="$LDFLAGS -L$X264/lib"
- fi
- if [ "$FDK_AAC" ]
- then
- CFLAGS="$CFLAGS -I$FDK_AAC/include"
- LDFLAGS="$LDFLAGS -L$FDK_AAC/lib"
- fi
- TMPDIR=${TMPDIR/%\/} $CWD/$SOURCE/configure \
- --target-os=darwin \
- --arch=$ARCH \
- --cc="$CC" \
- --ar="$AR" \
- $CONFIGURE_FLAGS \
- --extra-cflags="$CFLAGS" \
- --extra-ldflags="$LDFLAGS" \
- --prefix="$THIN/`basename $PWD`" \
- || exit 1
- xcrun -sdk $XCRUN_SDK make -j3 install $EXPORT || exit 1
- cd $CWD
- done
- fi
- if [ "$LIPO" ]
- then
- echo "building fat binaries..."
- mkdir -p $FAT/lib
- set - $ARCHS
- CWD=`pwd`
- cd $THIN/$1/lib
- for LIB in *.a
- do
- cd $CWD
- echo lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB 1>&2
- lipo -create `find $THIN -name $LIB` -output $FAT/lib/$LIB || exit 1
- done
- cd $CWD
- cp -rf $THIN/$1/include $FAT
- fi
- echo Done
|