Forked from 43z3com/build-android-libjpeg-turbo.sh
Last active
October 31, 2019 19:48
-
-
Save tastyone/da6ec6d4a2579abd0339 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__' | |
指定さたライブラリをAndroid用にフルオートで作成します。ダウンロード、toolchainsの作成、複数のアーキテクチャのビルドも自動的に行います。デフォルトではarmv5te、armv7-a、mips1、i386のアーキテクチャを作成します。 | |
Create a full-auto for Android the library specified. Creating download, toolchains, build the architecture of multiple automatically. Create architecture, mips1, i386 armv5te, armv7-a by default. | |
#__REM__ | |
TARGET_VERSION="1.3.1" | |
ARCHIVE_BASENAME="libjpeg-turbo" | |
DOWNLOAD_URL="http://sourceforge.net/projects/${ARCHIVE_BASENAME}/files/${TARGET_VERSION}/${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.gz" | |
#check the version | |
#http://sourceforge.net/projects/libjpeg-turbo/files/?source=navbar | |
#android | |
#NDK_ROOT="/Workshop/Android-SDK/android-ndk-r8e" | |
DEPLOYMENT_TARGET="android" | |
# see ${NDK-ROOT}/platforms | |
ANDROID_PLATFORM=9 | |
# see ${NDK-ROOT}/toolchains | |
ARCHS="[email protected] [email protected] [email protected] [email protected]" | |
NEON=1 #arm architecture valid only | |
DEBUG=0 | |
VERBOSE=0 | |
######################################## | |
if [ ! -n "${NDK_ROOT}" ]; then | |
echo "NDK_ROOT is not defined" | |
exit ; | |
fi | |
NDK="${NDK_ROOT}" | |
cd "`dirname \"$0\"`" | |
REPOROOT="$(pwd)" | |
OUTPUT_DIR="${REPOROOT}/dependencies-lib" | |
mkdir -p "${OUTPUT_DIR}" | |
BUILD_DIR="${REPOROOT}/build" | |
SRC_DIR="${BUILD_DIR}/src" | |
mkdir -p "${SRC_DIR}" | |
INTER_DIR="${BUILD_DIR}/built" | |
mkdir -p "${INTER_DIR}" | |
export TOOLCHAIN_BASE_DIR="${BUILD_DIR}/toolchain" | |
######################################## | |
#set -x | |
cd $SRC_DIR | |
set -e | |
if [ ! -e "${SRC_DIR}/${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.gz" ]; then | |
cat <<_EOT_ | |
############################################################################## | |
#### | |
#### Downloading ${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.gz | |
#### | |
############################################################################## | |
_EOT_ | |
#curl -O ${DOWNLOAD_URL} | |
wget ${DOWNLOAD_URL} | |
echo "Done." ; echo "" | |
fi | |
cat <<_EOT_ | |
############################################################################## | |
#### | |
#### Using ${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.gz | |
#### | |
############################################################################## | |
_EOT_ | |
tar zxf ${ARCHIVE_BASENAME}-${TARGET_VERSION}.tar.gz -C $SRC_DIR | |
cd "${SRC_DIR}/${ARCHIVE_BASENAME}-${TARGET_VERSION}" | |
export ORIGINALPATH="$PATH" | |
MACHINE=`uname -m | tr '[A-Z]' '[a-z]'` | |
SYSNAME=`uname -s | tr '[A-Z]' '[a-z]'` | |
BUILD="${MACHINE}-${SYSNAME}" | |
for ELEM in ${ARCHS} | |
do | |
OIFS="$IFS"; IFS='@' | |
set -- ${ELEM}; IFS="$OIFS" | |
ARCH="$1" | |
TOOLCHAIN="$2" | |
if [ ! -e "${TOOLCHAIN_BASE_DIR}/${ARCH}@${TOOLCHAIN}" ]; then | |
cat <<_EOT_ | |
############################################################################## | |
#### | |
#### Generate toolchain ${TOOLCHAIN} | |
#### | |
############################################################################## | |
_EOT_ | |
"${NDK}/build/tools/make-standalone-toolchain.sh" --platform="android-${ANDROID_PLATFORM}" --toolchain="${TOOLCHAIN}" --install-dir="${TOOLCHAIN_BASE_DIR}/${ARCH}@${TOOLCHAIN}" --system="${SYSNAME}-${MACHINE}" | |
echo "" | |
fi | |
TOOLCHAIN_DIR="${TOOLCHAIN_BASE_DIR}/${ARCH}@${TOOLCHAIN}" | |
PREFIX="${INTER_DIR}/${ARCHIVE_BASENAME}-${TARGET_VERSION}-android-${ANDROID_PLATFORM}-${ARCH}" | |
mkdir -p "${PREFIX}" | |
export PATH="$ORIGINALPATH" | |
autoreconf -fiv | |
cat <<_EOT_ | |
############################################################################## | |
#### | |
#### Configure ${ARCH} | |
#### | |
############################################################################## | |
_EOT_ | |
case "${ARCH}" in | |
"armv5te" ) | |
export PATH="${TOOLCHAIN_DIR}/bin:${TOOLCHAIN_DIR}/arm-linux-androideabi/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin" | |
HOST_CC="${TOOLCHAIN_DIR}/bin/arm-linux-androideabi-gcc" | |
HOST_CFLAGS="\ | |
-march=armv5te -mtune=xscale -msoft-float \ | |
\ | |
-D_GNU_SOURCE=1 -DANDROID -DAL_LIBTYPE_STATIC -DAL_ALEXT_PROTOTYPES \ | |
-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \ | |
-DUSE_FILE32API \ | |
\ | |
-ffunction-sections -funwind-tables -fomit-frame-pointer -fstrict-aliasing \ | |
-funswitch-loops -finline-limit=300 \ | |
\ | |
-Winline -Wall -Wextra -fvisibility=internal -Wmissing-field-initializers" | |
HOST_LDFLAGS="" | |
HOST_SYSROOT="${TOOLCHAIN_DIR}/sysroot" | |
if [ "${DEBUG}" == 0 ]; then | |
HOST_CFLAGS="${HOST_CFLAGS} -O3 -DNDEBUG" | |
else | |
HOST_CFLAGS="${HOST_CFLAGS} -O0 -g -DDEBUG -DCOCOS2D_DEBUG=2" | |
fi | |
./configure \ | |
--prefix="${PREFIX}" \ | |
--build ${BUILD} \ | |
--host arm-linux-androideabi \ | |
--enable-static \ | |
--disable-shared \ | |
--disable-silent-rules \ | |
--with-pic \ | |
--with-sysroot ${HOST_SYSROOT} \ | |
CC="$HOST_CC" \ | |
CFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_CFLAGS}" \ | |
LDFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_LDFLAGS}" | |
;; | |
"armv7" | "armv7-a" ) | |
export PATH="${TOOLCHAIN_DIR}/bin:${TOOLCHAIN_DIR}/arm-linux-androideabi/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin" | |
HOST_CC="${TOOLCHAIN_DIR}/bin/arm-linux-androideabi-gcc" | |
HOST_CFLAGS="\ | |
-march=${ARCH} -mfloat-abi=softfp -mfpu=vfpv3-d16 \ | |
\ | |
-D_GNU_SOURCE=1 -DANDROID -DAL_LIBTYPE_STATIC -DAL_ALEXT_PROTOTYPES \ | |
-D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ \ | |
-DUSE_FILE32API \ | |
\ | |
-ffunction-sections -funwind-tables -fomit-frame-pointer -fstrict-aliasing \ | |
-funswitch-loops -finline-limit=300 \ | |
\ | |
-Winline -Wall -Wextra -fvisibility=internal -Wmissing-field-initializers" | |
HOST_LDFLAGS="-Wl,--fix-cortex-a8" | |
HOST_SYSROOT="${TOOLCHAIN_DIR}/sysroot" | |
if [ ! ${NEON} -eq 0 ]; then | |
HOST_CFLAGS="${HOST_CFLAGS} -mfpu=neon" | |
fi | |
if [ ${DEBUG} -eq 0 ]; then | |
HOST_CFLAGS="${HOST_CFLAGS} -O3 -DNDEBUG" | |
else | |
HOST_CFLAGS="${HOST_CFLAGS} -O0 -g -DDEBUG -DCOCOS2D_DEBUG=2" | |
fi | |
./configure \ | |
--prefix="${PREFIX}" \ | |
--build ${BUILD} \ | |
--host arm-linux-androideabi \ | |
--enable-static \ | |
--disable-shared \ | |
--disable-silent-rules \ | |
--with-pic \ | |
--with-sysroot ${HOST_SYSROOT} \ | |
CC="$HOST_CC" \ | |
CFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_CFLAGS}" \ | |
LDFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_LDFLAGS}" | |
;; | |
"mips1" | "mips2" | "mips3" | "mips4" | "mips32" | "mips32r2" ) | |
export PATH="${TOOLCHAIN_DIR}/bin:${TOOLCHAIN_DIR}/mipsel-linux-android/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin" | |
HOST_CC="${TOOLCHAIN_DIR}/bin/mipsel-linux-android-gcc" | |
HOST_CFLAGS="\ | |
-march=${ARCH} \ | |
\ | |
-D_GNU_SOURCE=1 -DANDROID -DAL_LIBTYPE_STATIC -DAL_ALEXT_PROTOTYPES \ | |
-DUSE_FILE32API \ | |
\ | |
-ffunction-sections -funwind-tables -fomit-frame-pointer -fstrict-aliasing \ | |
-funswitch-loops -finline-limit=300 \ | |
\ | |
-Winline -Wall -Wextra -fvisibility=internal -Wmissing-field-initializers" | |
HOST_LDFLAGS="" | |
HOST_SYSROOT="${TOOLCHAIN_DIR}/sysroot" | |
if [ ${DEBUG} -eq 0 ]; then | |
HOST_CFLAGS="${HOST_CFLAGS} -O3 -DNDEBUG" | |
else | |
HOST_CFLAGS="${HOST_CFLAGS} -O0 -g -DDEBUG -DCOCOS2D_DEBUG=2" | |
fi | |
./configure \ | |
--prefix="${PREFIX}" \ | |
--build ${BUILD} \ | |
--host mipsel-linux-android \ | |
--enable-static \ | |
--disable-shared \ | |
--disable-silent-rules \ | |
--with-pic \ | |
--with-sysroot ${HOST_SYSROOT} \ | |
CC="$HOST_CC" \ | |
CFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_CFLAGS}" \ | |
LDFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_LDFLAGS}" | |
;; | |
"i386" ) | |
export PATH="${TOOLCHAIN_DIR}/bin:${TOOLCHAIN_DIR}/i686-linux-android/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin" | |
HOST_CC="${TOOLCHAIN_DIR}/bin/i686-linux-android-gcc" | |
HOST_CFLAGS="\ | |
-march=${ARCH} \ | |
\ | |
-D_GNU_SOURCE=1 -DANDROID -DAL_LIBTYPE_STATIC -DAL_ALEXT_PROTOTYPES \ | |
-DUSE_FILE32API \ | |
\ | |
-ffunction-sections -funwind-tables -fomit-frame-pointer -fstrict-aliasing \ | |
-funswitch-loops -finline-limit=300 \ | |
\ | |
-Winline -Wall -Wextra -fvisibility=internal -Wmissing-field-initializers" | |
HOST_LDFLAGS="" | |
HOST_SYSROOT="${TOOLCHAIN_DIR}/sysroot" | |
if [ ${DEBUG} -eq 0 ]; then | |
HOST_CFLAGS="${HOST_CFLAGS} -O3 -DNDEBUG" | |
else | |
HOST_CFLAGS="${HOST_CFLAGS} -O0 -g -DDEBUG -DCOCOS2D_DEBUG=2" | |
fi | |
./configure \ | |
--prefix="${PREFIX}" \ | |
--build ${BUILD} \ | |
--host x86 \ | |
--enable-static \ | |
--disable-shared \ | |
--disable-silent-rules \ | |
--with-pic \ | |
--with-sysroot ${HOST_SYSROOT} \ | |
CC="$HOST_CC" \ | |
CFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_CFLAGS}" \ | |
LDFLAGS="-isysroot ${HOST_SYSROOT} ${HOST_LDFLAGS}" | |
;; | |
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 "" | |
cat <<_EOT_ | |
############################################################################## | |
#### | |
#### Build library ${ARCH} | |
#### | |
############################################################################## | |
_EOT_ | |
PREFIX="${INTER_DIR}/${ARCHIVE_BASENAME}-${TARGET_VERSION}-android-${ANDROID_PLATFORM}-${ARCH}" | |
PLATFORM_OUT_DIR="${OUTPUT_DIR}/${ARCHIVE_BASENAME}-${TARGET_VERSION}-android-${ANDROID_PLATFORM}-${ARCH}" | |
mkdir -p "${PLATFORM_OUT_DIR}" | |
cp -R "${PREFIX}/include" "${PLATFORM_OUT_DIR}" | |
cp -R "${PREFIX}/lib" "${PLATFORM_OUT_DIR}" | |
echo "Done." ; echo "" | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment