aboutsummaryrefslogtreecommitdiffhomepage
path: root/build-android
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-12-06 22:53:16 -0800
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2014-12-06 22:54:00 -0800
commit5d4c2897b76a49374dc5e95aaf114db8b88b807d (patch)
tree26f74866c701ea99d50e4d95a66ed47e72fc83ea /build-android
parenta97f41bcc5afc356117462b7ead626ff195cd7bc (diff)
Build for Android
Diffstat (limited to 'build-android')
-rw-r--r--build-android/.gitignore3
-rw-r--r--build-android/README.md11
-rwxr-xr-xbuild-android/build.sh71
-rw-r--r--build-android/jni/Android.mk64
4 files changed, 149 insertions, 0 deletions
diff --git a/build-android/.gitignore b/build-android/.gitignore
new file mode 100644
index 00000000..725c6cf4
--- /dev/null
+++ b/build-android/.gitignore
@@ -0,0 +1,3 @@
+third-party
+include
+mailcore2-android-*.zip
diff --git a/build-android/README.md b/build-android/README.md
new file mode 100644
index 00000000..03d415b1
--- /dev/null
+++ b/build-android/README.md
@@ -0,0 +1,11 @@
+## Build instruction for Android ##
+
+```
+$ export ANDROID_NDK=/path/to/android-ndk
+$ cd build-android
+$ ./build.sh
+```
+
+It will produce the following binaries:
+
+- mailcore2-android-*version*.zip
diff --git a/build-android/build.sh b/build-android/build.sh
new file mode 100755
index 00000000..8851314f
--- /dev/null
+++ b/build-android/build.sh
@@ -0,0 +1,71 @@
+#!/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 \
+ 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/obj/local/$TARGET_ARCH_ABI/libMailCore.a" "$current_dir/$package_name-$build_version/libs/$TARGET_ARCH_ABI"
+ rm -rf "$current_dir/obj"
+}
+
+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"
diff --git a/build-android/jni/Android.mk b/build-android/jni/Android.mk
new file mode 100644
index 00000000..dee660ec
--- /dev/null
+++ b/build-android/jni/Android.mk
@@ -0,0 +1,64 @@
+CURRENT_DIR := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := MailCore
+
+src_dir := $(CURRENT_DIR)/../../src
+subdirs = \
+ core \
+ core/basetypes \
+ core/abstract \
+ core/imap \
+ core/nntp \
+ core/pop \
+ core/provider \
+ core/renderer \
+ core/rfc822 \
+ core/security \
+ core/smtp \
+ core/zip \
+ core/zip/MiniZip
+LOCAL_C_INCLUDES := \
+ $(CURRENT_DIR)/../include \
+ $(CTEMPLATE_PATH)/include \
+ $(ICU4C_PATH)/include \
+ $(LIBETPAN_PATH)/include \
+ $(LIBXML2_PATH)/include \
+ $(UCHARDET_PATH)/include \
+ $(TIDY_HTML5_PATH)/include \
+ $(OPENSSL_PATH)/include \
+ $(ANDROID_NDK)/sources/cxx-stl/llvm-libc++/libcxx/include \
+ $(ANDROID_NDK)/sources/cxx-stl/llvm-libc++abi/libcxxabi/include \
+ $(addprefix $(src_dir)/, $(subdirs))
+core_excludes = MCWin32.cpp MCStringWin32.cpp MCMainThreadWin32.cpp MCMainThreadGTK.cpp
+core_src_files := $(filter-out \
+ $(addprefix $(src_dir)/core/basetypes/, $(core_excludes)), \
+ $(wildcard $(src_dir)/core/basetypes/*.cpp) $(wildcard $(src_dir)/core/basetypes/*.c))
+abstract_src_files := $(wildcard $(src_dir)/core/abstract/*.cpp)
+imap_src_files := $(wildcard $(src_dir)/core/imap/*.cpp)
+nntp_src_files := $(wildcard $(src_dir)/core/nntp/*.cpp)
+pop_src_files := $(wildcard $(src_dir)/core/pop/*.cpp)
+provider_src_files := $(wildcard $(src_dir)/core/provider/*.cpp)
+renderer_src_files := $(wildcard $(src_dir)/core/renderer/*.cpp)
+rfc822_src_files := $(wildcard $(src_dir)/core/rfc822/*.cpp)
+security_src_files := $(wildcard $(src_dir)/core/security/*.cpp)
+smtp_src_files := $(wildcard $(src_dir)/core/smtp/*.cpp)
+zip_src_files := $(wildcard $(src_dir)/core/zip/*.cpp)
+minizip_src_files := \
+ $(src_dir)/core/zip/MiniZip/ioapi.c \
+ $(src_dir)/core/zip/MiniZip/unzip.c \
+ $(src_dir)/core/zip/MiniZip/zip.c
+async_imap_src_files := $(wildcard $(src_dir)/async/imap/*.cpp)
+async_nntp_src_files := $(wildcard $(src_dir)/async/nntp/*.cpp)
+async_pop_src_files := $(wildcard $(src_dir)/async/pop/*.cpp)
+async_smtp_src_files := $(wildcard $(src_dir)/async/smtp/*.cpp)
+
+LOCAL_SRC_FILES := $(core_src_files) $(abstract_src_files) $(imap_src_files) $(nntp_src_files) \
+ $(pop_src_files) $(provider_src_files) $(renderer_src_files) $(rfc822_src_files) \
+ $(security_src_files) $(smtp_src_files) $(zip_src_files) $(minizip_src_files) \
+ $(async_imap_src_files) $(async_nntp_src_files) $(async_pop_src_files) $(async_smtp_src_files)
+LOCAL_CPPFLAGS := -frtti
+LOCAL_CFLAGS := -DNOCRYPT
+
+include $(BUILD_STATIC_LIBRARY)