-
-
Save gumob/641b23bbb4d0a2bcc1aa to your computer and use it in GitHub Desktop.
This file contains 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