123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- #!/bin/sh
- # directories
- FF_VERSION="4.3.1"
- #FF_VERSION="snapshot-git"
- if [[ $FFMPEG_VERSION != "" ]]; then
- FF_VERSION=$FFMPEG_VERSION
- fi
- SOURCE="ffmpeg-$FF_VERSION"
- FAT="FFmpeg-iOS"
- SCRATCH="scratch"
- # must be an absolute path
- THIN=`pwd`/"thin"
- # absolute path to x264 library
- X264=`pwd`/x264-iOS
- #FDK_AAC=`pwd`/../fdk-aac-build-script-for-iOS/fdk-aac-ios
- CONFIGURE_FLAGS="--enable-cross-compile --disable-debug \
- --disable-doc --enable-pic"
-
- #添加FFmpeg配置选项->默认配置
- #--enable-cross-compile: 交叉编译
- #--disable-debug: 禁止使用调试模式
- #--disable-programs:禁用程序(不允许建立命令行程序)
- #--disable-doc:不需要编译文档
- #--enable-pic:允许建立与位置无关代码
- CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-doc --enable-pic"
- #核心库(编解码->最重要的库):avcodec
- CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avdevice --enable-avcodec --enable-avformat"
- CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-swresample --enable-swscale --disable-postproc"
- CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avfilter --enable-avutil --enable-avresample "
- if [ "$X264" ]
- then
- CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264"
- fi
- if [ "$FDK_AAC" ]
- then
- CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-libfdk-aac --enable-nonfree"
- fi
- # avresample
- #CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-avresample"
- ARCHS="arm64 armv7"
- COMPILE="y"
- LIPO="y"
- DEPLOYMENT_TARGET="8.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
-
- # grep -rl AVMediaType ./$SOURCE | xargs sed -i .bak s@AVMediaType@FFmpegAVMediaType@g
- CWD=`pwd`
- for ARCH in $ARCHS
- do
- echo "building $ARCH..."
- mkdir -p "$SCRATCH/$ARCH"
- cd "$SCRATCH/$ARCH"
- CFLAGS="-arch $ARCH"
- if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]
- then
- PLATFORM="iPhoneSimulator"
- CFLAGS="$CFLAGS -mios-simulator-version-min=$DEPLOYMENT_TARGET"
- else
- PLATFORM="iPhoneOS"
- CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET"
- if [ "$ARCH" = "arm64" ]
- then
- EXPORT="GASPP_FIX_XCODE5=1"
- fi
- fi
- XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'`
- CC="xcrun -sdk $XCRUN_SDK clang"
- # force "configure" to use "gas-preprocessor.pl" (FFmpeg 3.3)
- if [ "$ARCH" = "arm64" ]
- then
- AS="gas-preprocessor.pl -arch aarch64 -- $CC"
- else
- AS="gas-preprocessor.pl -- $CC"
- fi
- 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" \
- --as="$AS" \
- $CONFIGURE_FLAGS \
- --extra-cflags="$CFLAGS" \
- --extra-ldflags="$LDFLAGS" \
- --prefix="$THIN/$ARCH" \
- || exit 1
- 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
|