Skip to content

Commit

Permalink
Merge pull request #3 from davidshen84/master
Browse files Browse the repository at this point in the history
Fix Android build script
  • Loading branch information
leenjewel committed Jan 6, 2017
2 parents 8f5d3db + 17e1bb5 commit e39d2a3
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 85 deletions.
12 changes: 11 additions & 1 deletion tools/_shared.sh
@@ -1,5 +1,12 @@
#!/bin/bash

TOOLS_ROOT=`pwd`
ARCHS=("android" "android-armeabi" "android64-aarch64" "android-x86" "android64" "android-mips" "android-mips64")
ABIS=("armeabi" "armeabi-v7a" "arm64-v8a" "x86" "x86_64" "mips" "mips64")
# Default to API 21 for it is the minimum requirement for 64 bit archs.
ANDROID_API=${ANDROID_API:-21}
NDK=${ANDROID_NDK}

configure() {
ARCH=$1; OUT=$2; CLANG=${3:-""};

Expand Down Expand Up @@ -48,6 +55,7 @@ configure() {
--stl libc++ \
--install-dir=${TOOLCHAIN_ROOT} \
$NDK_FLAGS

export TOOLCHAIN_PATH=${TOOLCHAIN_ROOT}/bin
export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL}
export SYSROOT=${TOOLCHAIN_ROOT}/sysroot
Expand All @@ -68,8 +76,10 @@ configure() {
export LIBS=${LIBS:-""}
export CFLAGS="${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64"
export CXXFLAGS="${CFLAGS} -std=c++11 -frtti -fexceptions"
export LDFLAGS="${ARCH_LINK} ${LDFLAGS:-""}"
export LDFLAGS="${ARCH_LINK}"
echo "**********************************************"
echo "use ANDROID_API=${ANDROID_API}"
echo "use NDK=${NDK}"
echo "export ARCH=${ARCH}"
echo "export NDK_TOOLCHAIN_BASENAME=${NDK_TOOLCHAIN_BASENAME}"
echo "export SYSROOT=${SYSROOT}"
Expand Down
59 changes: 29 additions & 30 deletions tools/build-curl4android.sh
Expand Up @@ -16,64 +16,63 @@

set -u

SOURCE="$0"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
pwd_path="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

source ./_shared.sh

# Setup architectures, library name and other vars + cleanup from previous runs
ARCHS=("android" "android-armeabi" "android64-aarch64" "android-x86" "android64" "android-mips" "android-mips64")
OUTNAME=("armeabi" "armeabi-v7a" "arm64-v8a" "x86" "x86_64" "mips" "mips64")
TOOLS_ROOT="${pwd_path}"
TOOLS_ROOT=`pwd`
LIB_NAME="curl-7.51.0"
LIB_DEST_DIR=${TOOLS_ROOT}/../output/android
NDK=$ANDROID_NDK_ROOT
ANDROID_PLATFORM="android-23"
ANDROID_API="23"
LIB_DEST_DIR=${TOOLS_ROOT}/libs
[ -f ${LIB_NAME}.tar.gz ] || wget https://curl.haxx.se/download/${LIB_NAME}.tar.gz
# Unarchive library, then configure and make for specified architectures
configure_make()
{
ARCH=$1; OUT=$2;
configure_make() {
ARCH=$1; ABI=$2;
[ -d "${LIB_NAME}" ] && rm -rf "${LIB_NAME}"
tar xfz "${LIB_NAME}.tar.gz"
pushd "${LIB_NAME}";

configure $*
# fix me
cp ${TOOLS_ROOT}/../output/android/openssl-android-${OUT}/lib/libssl.a ${SYSROOT}/usr/lib
cp ${TOOLS_ROOT}/../output/android/openssl-android-${OUT}/lib/libcrypto.a ${SYSROOT}/usr/lib
cp -r ${TOOLS_ROOT}/../output/android/openssl-android-${OUT}/include/openssl ${SYSROOT}/usr/include
cp ${TOOLS_ROOT}/../output/android/openssl-${ABI}/lib/libssl.a ${SYSROOT}/usr/lib
cp ${TOOLS_ROOT}/../output/android/openssl-${ABI}/lib/libcrypto.a ${SYSROOT}/usr/lib
cp -r ${TOOLS_ROOT}/../output/android/openssl-${ABI}/include/openssl ${SYSROOT}/usr/include

PREFIX_DIR=${LIB_DEST_DIR}/curl-android-${OUT}
if [ -d "${PREFIX_DIR}" ]; then
rm -fr ${PREFIX_DIR}
fi
./configure --prefix=${PREFIX_DIR} \
mkdir -p ${LIB_DEST_DIR}/${ABI}
./configure --prefix=${LIB_DEST_DIR}/${ABI} \
--with-sysroot=${SYSROOT} \
--host=${TOOL} \
--with-ssl=/usr \
--enable-ipv6 \
--enable-static \
--disable-shared \
--disable-verbose \
--enable-threaded-resolver \
--enable-ipv6
--disable-dict \
--disable-gopher \
--disable-ldap --disable-ldaps \
--disable-manual \
--disable-pop3 --disable-smtp --disable-imap \
--disable-rtsp \
--disable-shared \
--disable-smb \
--disable-telnet \
--disable-verbose
PATH=$TOOLCHAIN_PATH:$PATH
if make -j4
then
make install

OUTPUT_ROOT=${TOOLS_ROOT}/../output/android/curl-${ABI}
[ -d ${OUTPUT_ROOT}/include ] || mkdir -p ${OUTPUT_ROOT}/include
cp -r ${LIB_DEST_DIR}/${ABI}/include/curl ${OUTPUT_ROOT}/include

[ -d ${OUTPUT_ROOT}/lib ] || mkdir -p ${OUTPUT_ROOT}/lib
cp ${LIB_DEST_DIR}/${ABI}/lib/libcurl.a ${OUTPUT_ROOT}/lib
fi;
popd;
}

for ((i=0; i < ${#ARCHS[@]}; i++))
do
if [[ $# -eq 0 ]] || [[ "$1" == "${ARCHS[i]}" ]]; then
configure_make "${ARCHS[i]}" "${OUTNAME[i]}"
[[ ${ANDROID_API} < 21 ]] && ( echo "${ABIS[i]}" | grep 64 > /dev/null ) && continue;
configure_make "${ARCHS[i]}" "${ABIS[i]}"
fi
done
48 changes: 19 additions & 29 deletions tools/build-openssl4android.sh
Expand Up @@ -16,40 +16,23 @@

set -u

SOURCE="$0"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
pwd_path="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

source ./_shared.sh

# Setup architectures, library name and other vars + cleanup from previous runs
ARCHS=("android" "android-armeabi" "android64-aarch64" "android-x86" "android64" "android-mips" "android-mips64")
OUTNAME=("armeabi" "armeabi-v7a" "arm64-v8a" "x86" "x86_64" "mips" "mips64")
TOOLS_ROOT="${pwd_path}"
LIB_NAME="openssl-1.1.0c"
LIB_DEST_DIR=${TOOLS_ROOT}/../output/android
NDK=$ANDROID_NDK_ROOT
ANDROID_API="23"
LIB_DEST_DIR=${TOOLS_ROOT}/libs
[ -d ${LIB_DEST_DIR} ] && rm -rf ${LIB_DEST_DIR}
[ -f "${LIB_NAME}.tar.gz" ] || wget https://www.openssl.org/source/${LIB_NAME}.tar.gz;
# Unarchive library, then configure and make for specified architectures
configure_make() {
ARCH=$1; OUT=$2;
ARCH=$1; ABI=$2;
rm -rf "${LIB_NAME}"
tar xfz "${LIB_NAME}.tar.gz"
pushd "${LIB_NAME}";

PREFIX_DIR=${LIB_DEST_DIR}/openssl-android-${OUT}
if [ -d "${PREFIX_DIR}" ]; then
rm -fr ${PREFIX_DIR}
fi
pushd "${LIB_NAME}"

configure $*
./Configure $ARCH \
--prefix=${PREFIX_DIR} \
--prefix=${LIB_DEST_DIR}/${ABI} \
--with-zlib-include=$SYSROOT/usr/include \
--with-zlib-lib=$SYSROOT/usr/lib \
zlib \
Expand All @@ -58,20 +41,27 @@ configure_make() {
no-unit-test
PATH=$TOOLCHAIN_PATH:$PATH

if make -j4
then
if make -j4; then
make install
# [ -d ${TOOLS_ROOT}/../include/$OUT ] || mkdir -p ${TOOLS_ROOT}/../include/$OUT
# cp -r include/openssl ${TOOLS_ROOT}/../include/$OUT

# [ -d ${TOOLS_ROOT}/../lib/$OUT ] || mkdir -p ${TOOLS_ROOT}/../lib/$OUT
# find . -type f -iname \( 'libssl.a' -or -iname 'libcrypto.a' \) -exec cp {} ${TOOLS_ROOT}/../lib/$OUT \;
OUTPUT_ROOT=${TOOLS_ROOT}/../output/android/openssl-${ABI}
[ -d ${OUTPUT_ROOT}/include ] || mkdir -p ${OUTPUT_ROOT}/include
cp -r ${LIB_DEST_DIR}/${ABI}/include/openssl ${OUTPUT_ROOT}/include

[ -d ${OUTPUT_ROOT}/lib ] || mkdir -p ${OUTPUT_ROOT}/lib
cp ${LIB_DEST_DIR}/${ABI}/lib/libcrypto.a ${OUTPUT_ROOT}/lib
cp ${LIB_DEST_DIR}/${ABI}/lib/libssl.a ${OUTPUT_ROOT}/lib
fi;
popd

}

for ((i=0; i < ${#ARCHS[@]}; i++))
do
if [[ $# -eq 0 ]] || [[ "$1" == "${ARCHS[i]}" ]]; then
configure_make "${ARCHS[i]}" "${OUTNAME[i]}"
# Do not build 64 bit arch if ANDROID_API is less than 21 which is
# the minimum supported API level for 64 bit.
[[ ${ANDROID_API} < 21 ]] && ( echo "${ABIS[i]}" | grep 64 > /dev/null ) && continue;
configure_make "${ARCHS[i]}" "${ABIS[i]}"
fi
done
39 changes: 14 additions & 25 deletions tools/build-protobuf4android.sh
Expand Up @@ -16,48 +16,30 @@

set -u

SOURCE="$0"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
pwd_path="$( cd -P "$( dirname "$SOURCE" )" && pwd )"

source ./_shared.sh

# Setup architectures, library name and other vars + cleanup from previous runs
ARCHS=("android" "android-armeabi" "android64-aarch64" "android-x86" "android64" "android-mips" "android-mips64")
OUTNAME=("armeabi" "armeabi-v7a" "arm64-v8a" "x86" "x86_64" "mips" "mips64")
TOOLS_ROOT=${pwd_path}
LIB_NAME="protobuf"
LIB_VERSION="3.1.0"
LIB_FILENAME=${LIB_NAME}-${LIB_VERSION}
LIB_DEST_DIR=${TOOLS_ROOT}/../output/android
NDK=$ANDROID_NDK_ROOT
ANDROID_API="23"
LIB_DEST_DIR=${TOOLS_ROOT}/libs
# rm -rf ${LIB_DEST_DIR}
[ -f ${LIB_FILENAME}.tar.gz ] || wget https://github.com/google/${LIB_NAME}/archive/v${LIB_VERSION}.tar.gz -O ${LIB_FILENAME}.tar.gz
# Unarchive library, then configure and make for specified architectures
configure_make() {
ARCH=$1; OUT=$2;
ARCH=$1; ABI=$2;

[ -d ${LIB_FILENAME} ] && rm -rf "${LIB_FILENAME}"
tar xfz "${LIB_FILENAME}.tar.gz"
pushd "${LIB_FILENAME}";

PREFIX_DIR=${LIB_DEST_DIR}/protobuf-android-${OUT}
if [ -d "${PREFIX_DIR}" ]; then
rm -fr ${PREFIX_DIR}
fi

export LDFLAGS="-static-libstdc++"
export LIBS="-lc++_static -latomic"
configure $* "clang"
export LDFLAGS="${LDFLAGS} -static-libstdc++"
export LIBS="${LIBS:-""} -lc++_static -latomic"
# fix CXXFLAGS
export CXXFLAGS=${CXXFLAGS/"-finline-limit=64"/""}
./autogen.sh
./configure --prefix=${PREFIX_DIR} \
./configure --prefix=${LIB_DEST_DIR}/${ABI} \
--with-sysroot=${SYSROOT} \
--with-protoc=`which protoc` \
--with-zlib \
Expand All @@ -68,8 +50,14 @@ configure_make() {
PATH=$TOOLCHAIN_PATH:$PATH
if make -j4
then
mkdir -p ${LIB_DEST_DIR}/${OUT}
make install

OUTPUT_ROOT=${TOOLS_ROOT}/../output/android/protobuf-${ABI}
[ -d ${OUTPUT_ROOT}/include ] || mkdir -p ${OUTPUT_ROOT}/include
cp -r ${LIB_DEST_DIR}/$ABI/include/ ${OUTPUT_ROOT}/include

[ -d ${OUTPUT_ROOT}/lib ] || mkdir -p ${OUTPUT_ROOT}/lib
find ${LIB_DEST_DIR}/${ABI}/lib -type f -iname '*.a' -exec cp {} ${OUTPUT_ROOT}/lib \;
fi;
popd;
}
Expand All @@ -79,6 +67,7 @@ configure_make() {
for ((i=0; i < ${#ARCHS[@]}; i++))
do
if [[ $# -eq 0 ]] || [[ "$1" == "${ARCHS[i]}" ]]; then
configure_make "${ARCHS[i]}" "${OUTNAME[i]}"
[[ ${ANDROID_API} < 21 ]] && ( echo "${ABIS[i]}" | grep 64 > /dev/null ) && continue;
configure_make "${ARCHS[i]}" "${ABIS[i]}"
fi
done

0 comments on commit e39d2a3

Please sign in to comment.