aboutsummaryrefslogtreecommitdiffhomepage
path: root/build-android/build.sh
blob: c2e14c328f4e33e05976faf7b40addb2c092f2c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/sh

build_version=1
ANDROID_PLATFORM=android-21
archs="armeabi armeabi-v7a x86 x86_64"
package_name=mailcore2-android
ctemplate_build_version=1
icu4c_build_version=1
libetpan_build_version=1
libxml2_build_version=1
uchardet_build_version=1
tidy_html5_build_version=1
openssl_build_version=1

current_dir="`pwd`"

if test "x$ANDROID_NDK" = x ; then
  echo should set ANDROID_NDK before running this script.
  exit 1
fi

function download_dep {
    name="$1"
    version="$2"
    if test ! -f "$current_dir/third-party/$name-$version.zip" ; then
        if curl -f -O "http://d.etpan.org/mailcore2-deps/$name/$name-$version.zip" ; then
            unzip "$name-$version.zip"
        else
            echo Could not download $name-$version.zip
            exit 1
        fi
    fi
}

function build {
    rm -rf "$current_dir/obj"
  
    cd "$current_dir/jni"
    $ANDROID_NDK/ndk-build TARGET_PLATFORM=$ANDROID_PLATFORM TARGET_ARCH_ABI=$TARGET_ARCH_ABI \
        NDK_TOOLCHAIN_VERSION=4.9 \
        CTEMPLATE_PATH=$current_dir/third-party/ctemplate-android-1 \
        ICU4C_PATH=$current_dir/third-party/icu4c-android-1 \
        LIBETPAN_PATH=$current_dir/third-party/libetpan-android-1 \
        LIBXML2_PATH=$current_dir/third-party/libxml2-android-1 \
        UCHARDET_PATH=$current_dir/third-party/uchardet-android-1 \
        TIDY_HTML5_PATH=$current_dir/third-party/tidy-html5-android-1 \
        OPENSSL_PATH=$current_dir/third-party/openssl-android-1

    mkdir -p "$current_dir/$package_name-$build_version/libs/$TARGET_ARCH_ABI"
    cp "$current_dir/libs/$TARGET_ARCH_ABI/libMailCore.so" "$current_dir/$package_name-$build_version/libs/$TARGET_ARCH_ABI"
    rm -rf "$current_dir/obj"
    rm -rf "$current_dir/libs"
}

mkdir -p "$current_dir/cmake-build"
cd "$current_dir/cmake-build"
cmake ../..

mkdir -p "$current_dir/include"
cp -R "$current_dir/cmake-build/src/include/MailCore" "$current_dir/include"
mkdir -p "$current_dir/$package_name-$build_version/include"
cp -R "$current_dir/cmake-build/src/include/MailCore" "$current_dir/$package_name-$build_version/include"

mkdir -p "$current_dir/third-party"
cd "$current_dir/third-party"
download_dep "ctemplate-android" $ctemplate_build_version
download_dep "icu4c-android" $icu4c_build_version
download_dep "libetpan-android" $libetpan_build_version
download_dep "libxml2-android" $libxml2_build_version
download_dep "uchardet-android" $uchardet_build_version
download_dep "tidy-html5-android" $tidy_html5_build_version
download_dep "openssl-android" $openssl_build_version

# Start building.
for arch in $archs ; do
  TARGET_ARCH_ABI=$arch
  build
done

cd "$current_dir"
zip -qry "$package_name-$build_version.zip" "$package_name-$build_version"
rm -rf "$package_name-$build_version"