-
-
Save gumob/641b23bbb4d0a2bcc1aa to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| : << '#__REM__' | |
| ffmpegをiOS用にビルドします。ダウンロード、toolchainsの作成、複数のアーキテクチャのビルドまでを自動で行います。デフォルトでは2.2.3をi386 x86_64 armv7 armv7sのアーキテクチャを作成します。arm64にするとエラーする | |
| Build for iOS and ffmpeg. Build a full auto of architecture and multiple creation of toolchains and downloads Create the following architecture, version 2.2.3 by default | |
| i386 x86_64 armv7 armv7s | |
| #__REM__ | |
| TARGET_VERSION="2.2.3" | |
| ARCHIVE_BASENAME="ffmpeg" | |
| ARCHIVE_FILE="${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.bz2" | |
| ARCHIVE_TYPE="tar.bz2" | |
| DOWNLOAD_URL="http://www.ffmpeg.org/releases/${ARCHIVE_FILE}" | |
| OUTPUT_LIBS="libavcodec.a libavfilter.a libavformat.a libavutil.a libswresample.a libswscale.a" | |
| #livavもarm64はビルドできなかった | |
| #TARGET_VERSION="head" | |
| #ARCHIVE_BASENAME="libav" | |
| #ARCHIVE_FILE="${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.gz" | |
| #ARCHIVE_TYPE="tar.gz" | |
| #DOWNLOAD_URL="http://git.libav.org/?p=libav.git;a=snapshot;h=HEAD;sf=tgz" | |
| #OUTPUT_LIBS="libavcodec.a libavfilter.a libavformat.a libavutil.a libswresample.a libswscale.a" | |
| #ios | |
| DEPLOYMENT_TARGET="ios" | |
| SDK_VERSION="7.1" | |
| MIN_OS_VERSION="7.0" | |
| ARCHS="i386 x86_64 armv7 armv7s" | |
| #osx | |
| #DEPLOYMENT_TARGET="osx" | |
| #SDK_VERSION="10.9" | |
| #MIN_OS_VERSION="10.9" | |
| #ARCHS="i386 x86_64" | |
| MAC_CPU=corei7 | |
| #MAC_CPU=core2 | |
| FILE_API_32=0 | |
| COCOS2DX=1 | |
| DEBUG=0 | |
| VERBOSE=1 | |
| ######################################## | |
| DEVELOPER=`xcode-select -print-path` | |
| #DEVELOPER="/Applications/Xcode.app/Contents/Developer" | |
| cd "`dirname \"$0\"`" | |
| REPOROOT=$(pwd) | |
| OUTPUT_DIR="${REPOROOT}/dependencies-lib" | |
| mkdir -p "${OUTPUT_DIR}/include" | |
| mkdir -p "${OUTPUT_DIR}/lib" | |
| BUILD_DIR="${REPOROOT}/build" | |
| SRC_DIR="${BUILD_DIR}/src" | |
| mkdir -p "${SRC_DIR}" | |
| WORK_DIR="${BUILD_DIR}/work" | |
| mkdir -p "${WORK_DIR}" | |
| INTER_DIR="${BUILD_DIR}/built" | |
| mkdir -p "$INTER_DIR" | |
| ######################################## | |
| cd $SRC_DIR | |
| set -e | |
| if [ "${ARCHIVE_FILE}" == "" ]; then | |
| ARCHIVE_FILE="src_archive.${ARCHIVE_TYPE}" | |
| fi | |
| if [ "`ls -F | grep /`" == "" ]; then | |
| cat <<_EOT_ | |
| ############################################################################## | |
| #### | |
| #### Downloading ${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.gz | |
| #### | |
| ############################################################################## | |
| _EOT_ | |
| #curl -O ${DOWNLOAD_URL} | |
| wget "${DOWNLOAD_URL}" -O "${ARCHIVE_FILE}" | |
| echo "Done." ; echo "" | |
| cat <<_EOT_ | |
| ############################################################################## | |
| #### | |
| #### Using ${ARCHIVE_FILE} | |
| #### | |
| ############################################################################## | |
| _EOT_ | |
| #tar jxf ${ARCHIVE_FILE} -C ${SRC_DIR} | |
| #tar zxf ${ARCHIVE_FILE} -C ${SRC_DIR} | |
| case "${ARCHIVE_TYPE}" in | |
| "tar.gz" ) | |
| tar zxf ${ARCHIVE_FILE} -C ${SRC_DIR} | |
| ;; | |
| "tar.bz2" ) | |
| tar jxf ${ARCHIVE_FILE} -C ${SRC_DIR} | |
| ;; | |
| "tar.xz" ) | |
| tar Jxf ${ARCHIVE_FILE} -C ${SRC_DIR} | |
| ;; | |
| ".tar.lzma" ) | |
| tar xf --lzma ${ARCHIVE_FILE} -C ${SRC_DIR} | |
| ;; | |
| esac | |
| fi | |
| cd $WORK_DIR | |
| GAS_PREPROCESSOR_DIR="${WORK_DIR}/gas-preprocessor-master" | |
| if [ ! -e "${GAS_PREPROCESSOR_DIR}/gas-preprocessor.pl" ]; then | |
| cat <<_EOT_ | |
| ############################################################################## | |
| #### | |
| #### Downloading gas-preprocessor.pl (libav gas-preprocessor) | |
| #### | |
| ############################################################################## | |
| _EOT_ | |
| wget --no-check-certificate "https://github.com/libav/gas-preprocessor/archive/master.zip" | |
| unzip "master.zip" | |
| chmod 755 ${GAS_PREPROCESSOR_DIR}/gas-preprocessor.pl | |
| echo "Done." ; echo "" | |
| fi | |
| ARCHIVE_OUT="`ls -F ${SRC_DIR} | grep /`" | |
| cd "${SRC_DIR}/${ARCHIVE_OUT}" | |
| export ORIGINALPATH=$PATH | |
| if [ "${DEPLOYMENT_TARGET}" == "ios" ]; then | |
| X86PLATFORM="iPhoneSimulator" | |
| PLATFORM_DEPLOYMENT_TARGET="IPHONEOS_DEPLOYMENT_TARGET" | |
| else | |
| X86PLATFORM="MacOSX" | |
| PLATFORM_DEPLOYMENT_TARGET="OSX_DEPLOYMENT_TARGET" | |
| fi | |
| for ARCH in ${ARCHS} | |
| do | |
| if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ]; then | |
| PLATFORM=${X86PLATFORM} | |
| else | |
| PLATFORM="iPhoneOS" | |
| fi | |
| if [ "${DEPLOYMENT_TARGET}" == "ios" ]; then | |
| if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ]; then | |
| CFLAG_VERSION_MIN="-mios-simulator-version-min" | |
| else | |
| CFLAG_VERSION_MIN="-miphoneos-version-min" | |
| fi | |
| else | |
| CFLAG_VERSION_MIN="-mmacosx-version-min" | |
| fi | |
| PREFIX="${INTER_DIR}/${PLATFORM}${SDK_VERSION}-${ARCH}.sdk" | |
| mkdir -p "${PREFIX}" | |
| export PATH=$ORIGINALPATH | |
| export PATH="${GAS_PREPROCESSOR_DIR}:${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/usr/bin:${DEVELOPER}/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" | |
| cat <<_EOT_ | |
| ############################################################################## | |
| #### | |
| #### Configure ${ARCH} | |
| #### | |
| ############################################################################## | |
| _EOT_ | |
| case "${ARCH}" in | |
| "i386" | "x86" ) | |
| TOOLCHAIN="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr" | |
| HOST_PLATFORM=${DEVELOPER}/Platforms/${PLATFORM}.platform | |
| HOST_SYSROOT=$HOST_PLATFORM/Developer/SDKs/${PLATFORM}${SDK_VERSION}.sdk | |
| HOST_CFLAGS="-isysroot $HOST_SYSROOT -arch ${ARCH} -I${TOOLCHAIN}/include ${CFLAG_VERSION_MIN}=${MIN_OS_VERSION} -mtune=${MAC_CPU}" | |
| HOST_LDFLAGS="-isysroot $HOST_SYSROOT -arch ${ARCH} -I${TOOLCHAIN}/include ${CFLAG_VERSION_MIN}=${MIN_OS_VERSION} -mtune=${MAC_CPU}" | |
| export ${PLATFORM_DEPLOYMENT_TARGET}=$SDK_VERSION | |
| if [ "${DEBUG}" == 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -O3 -DNDEBUG" | |
| else | |
| HOST_CFLAGS="${HOST_CFLAGS} -O0 -g -DDEBUG" | |
| fi | |
| if [ ${COCOS2DX} -ne 0 ]; then | |
| FILE_API_32=1 | |
| if [ ${DEBUG} -ne 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -DCOCOS2D_DEBUG=2" | |
| fi | |
| fi | |
| if [ ${FILE_API_32} -ne 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -U_LARGEFILE_SOURCE -U_FILE_OFFSET_BITS -D_FILE_OFFSET_BITS=32 -DUSE_FILE32API" | |
| fi | |
| ./configure \ | |
| --prefix=$PREFIX \ | |
| --enable-static \ | |
| --disable-shared \ | |
| --disable-doc \ | |
| --disable-ffmpeg \ | |
| --disable-ffplay \ | |
| --disable-ffprobe \ | |
| --disable-ffserver \ | |
| --disable-avdevice \ | |
| --disable-symver \ | |
| --target-os=darwin \ | |
| --arch=i386 \ | |
| --cpu=${MAC_CPU} \ | |
| --enable-cross-compile \ | |
| --sysroot=${HOST_SYSROOT} \ | |
| --disable-yasm \ | |
| --extra-cflags="${HOST_CFLAGS}" \ | |
| --extra-ldflags="${HOST_LDFLAGS}" \ | |
| ${CONFIGURE_EXTEA} | |
| ;; | |
| "i686" | "x86_64" ) | |
| TOOLCHAIN="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr" | |
| HOST_PLATFORM=${DEVELOPER}/Platforms/${PLATFORM}.platform | |
| HOST_SYSROOT=$HOST_PLATFORM/Developer/SDKs/${PLATFORM}${SDK_VERSION}.sdk | |
| HOST_CFLAGS="-isysroot $HOST_SYSROOT -arch ${ARCH} -I${TOOLCHAIN}/include ${CFLAG_VERSION_MIN}=${MIN_OS_VERSION} -mtune=${MAC_CPU}" | |
| HOST_LDFLAGS="-isysroot $HOST_SYSROOT -arch ${ARCH} -I${TOOLCHAIN}/include ${CFLAG_VERSION_MIN}=${MIN_OS_VERSION} -mtune=${MAC_CPU}" | |
| export ${PLATFORM_DEPLOYMENT_TARGET}=$SDK_VERSION | |
| if [ "${DEBUG}" == 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -O3 -DNDEBUG" | |
| else | |
| HOST_CFLAGS="${HOST_CFLAGS} -O0 -g -DDEBUG" | |
| fi | |
| if [ ${COCOS2DX} -ne 0 ]; then | |
| FILE_API_32=1 | |
| if [ ${DEBUG} -ne 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -DCOCOS2D_DEBUG=2" | |
| fi | |
| fi | |
| if [ ${FILE_API_32} -ne 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -U_LARGEFILE_SOURCE -U_FILE_OFFSET_BITS -D_FILE_OFFSET_BITS=32 -DUSE_FILE32API" | |
| fi | |
| ./configure \ | |
| --prefix=$PREFIX \ | |
| --enable-static \ | |
| --disable-shared \ | |
| --disable-doc \ | |
| --disable-ffmpeg \ | |
| --disable-ffplay \ | |
| --disable-ffprobe \ | |
| --disable-ffserver \ | |
| --disable-avdevice \ | |
| --disable-symver \ | |
| --target-os=darwin \ | |
| --arch=i686 \ | |
| --cpu=${MAC_CPU} \ | |
| --enable-cross-compile \ | |
| --sysroot=${HOST_SYSROOT} \ | |
| --disable-yasm \ | |
| --extra-cflags="${HOST_CFLAGS}" \ | |
| --extra-ldflags="${HOST_LDFLAGS}" \ | |
| ${CONFIGURE_EXTEA} | |
| ;; | |
| "armv7" | "armv7s" | "arm64" ) | |
| TOOLCHAIN="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr" | |
| HOST_PLATFORM=${DEVELOPER}/Platforms/${PLATFORM}.platform | |
| HOST_SYSROOT=$HOST_PLATFORM/Developer/SDKs/${PLATFORM}${SDK_VERSION}.sdk | |
| HOST_CFLAGS="-isysroot $HOST_SYSROOT -arch ${ARCH} -I${TOOLCHAIN}/include ${CFLAG_VERSION_MIN}=${MIN_OS_VERSION}" | |
| HOST_LDFLAGS="-isysroot $HOST_SYSROOT -arch ${ARCH} -I${TOOLCHAIN}/include ${CFLAG_VERSION_MIN}=${MIN_OS_VERSION}" | |
| export ${PLATFORM_DEPLOYMENT_TARGET}=$SDK_VERSION | |
| if [ "${DEBUG}" == 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -O3 -DNDEBUG" | |
| else | |
| HOST_CFLAGS="${HOST_CFLAGS} -O0 -g -DDEBUG" | |
| fi | |
| if [ ${COCOS2DX} -ne 0 ]; then | |
| FILE_API_32=1 | |
| if [ ${DEBUG} -ne 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -DCOCOS2D_DEBUG=2" | |
| fi | |
| fi | |
| if [ ${FILE_API_32} -ne 0 ]; then | |
| HOST_CFLAGS="${HOST_CFLAGS} -U_LARGEFILE_SOURCE -U_FILE_OFFSET_BITS -D_FILE_OFFSET_BITS=32 -DUSE_FILE32API" | |
| fi | |
| ./configure \ | |
| --prefix=$PREFIX \ | |
| --enable-static \ | |
| --disable-shared \ | |
| --disable-doc \ | |
| --disable-ffmpeg \ | |
| --disable-ffplay \ | |
| --disable-ffprobe \ | |
| --disable-ffserver \ | |
| --disable-avdevice \ | |
| --disable-symver \ | |
| --target-os=darwin \ | |
| --arch=${ARCH} \ | |
| --enable-cross-compile \ | |
| --sysroot=${HOST_SYSROOT} \ | |
| --extra-cflags="${HOST_CFLAGS}" \ | |
| --extra-ldflags="${HOST_LDFLAGS}" \ | |
| ${CONFIGURE_EXTEA} | |
| ;; | |
| esac | |
| echo "Done." ; echo "" | |
| cat <<_EOT_ | |
| ############################################################################## | |
| #### | |
| #### Make ${ARCH} | |
| #### | |
| ############################################################################## | |
| _EOT_ | |
| make V=${VERBOSE} clean | |
| make -j4 V=${VERBOSE} | |
| make -j4 V=${VERBOSE} install | |
| echo "Done." ; echo "" | |
| done | |
| ######################################## | |
| cat <<_EOT_ | |
| ############################################################################## | |
| #### | |
| #### Build library ... | |
| #### | |
| ############################################################################## | |
| _EOT_ | |
| for OUTPUT_LIB in ${OUTPUT_LIBS}; do | |
| INPUT_LIBS="" | |
| for ARCH in ${ARCHS}; do | |
| if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ]; then | |
| PLATFORM=${X86PLATFORM} | |
| else | |
| PLATFORM="iPhoneOS" | |
| fi | |
| INPUT_ARCH_LIB="${INTER_DIR}/${PLATFORM}${SDK_VERSION}-${ARCH}.sdk/lib/${OUTPUT_LIB}" | |
| if [ -e $INPUT_ARCH_LIB ]; then | |
| INPUT_LIBS="${INPUT_LIBS} ${INPUT_ARCH_LIB}" | |
| fi | |
| done | |
| # Combine the three architectures into a universal library. | |
| if [ -n "$INPUT_LIBS" ]; then | |
| lipo -create $INPUT_LIBS \ | |
| -output "${OUTPUT_DIR}/lib/${OUTPUT_LIB}" | |
| else | |
| echo "$OUTPUT_LIB does not exist, skipping (are the dependencies installed?)" | |
| fi | |
| done | |
| for ARCH in ${ARCHS}; do | |
| if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ]; then | |
| PLATFORM=${X86PLATFORM} | |
| else | |
| PLATFORM="iPhoneOS" | |
| fi | |
| cp -R ${INTER_DIR}/${PLATFORM}${SDK_VERSION}-${ARCH}.sdk/include/* ${OUTPUT_DIR}/include/ | |
| if [ $? == "0" ]; then | |
| # We only need to copy the headers over once. (So break out of forloop | |
| # once we get first success.) | |
| break | |
| fi | |
| echo "Done." ; echo "" | |
| done | |
| echo "Done all." ; echo "" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment