Skip to content

Commit

Permalink
Merge pull request #459 from koreader/houqp-master
Browse files Browse the repository at this point in the history
adapt build system for android ndk-r12b
  • Loading branch information
chrox committed Oct 10, 2016
2 parents afe729c + 132b166 commit 3792d26
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 25 deletions.
8 changes: 5 additions & 3 deletions .ci/android_install.sh
Expand Up @@ -9,12 +9,14 @@ if [ "$NDKREV" = "r9c" ]; then
curl -L http://dl.google.com/android/ndk/android-ndk-${NDKREV}-linux-x86_64.tar.bz2 -O
echo "extracting android ndk"
bzip2 -dc android-ndk-${NDKREV}-linux-x86_64.tar.bz2 | tar xf -
fi

if [ "$NDKREV" = "r11c" ]; then
elif [ "$NDKREV" = "r11c" ]; then
curl -L http://dl.google.com/android/repository/android-ndk-${NDKREV}-linux-x86_64.zip -O
echo "extracting android ndk"
unzip -q android-ndk-${NDKREV}-linux-x86_64.zip
elif [ "$NDKREV" = "r12b" ]; then
wget https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
echo "extracting android ndk"
unzip -q android-ndk-${NDKREV}-linux-x86_64.zip
fi

export NDK=`pwd`/android-ndk-${NDKREV}
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -17,6 +17,7 @@ env:
- TARGET=kobo
- TARGET=android NDKREV=r9c
- TARGET=android NDKREV=r11c
- TARGET=android NDKREV=r12b

addons:
apt:
Expand All @@ -41,4 +42,3 @@ install:
script:
- .ci/build_script.sh
- if [ "$EMULATE_READER" = 1 ]; then source .ci/test_script.sh; fi

8 changes: 6 additions & 2 deletions Makefile
Expand Up @@ -133,11 +133,15 @@ $(OUTPUT_DIR)/extr: extr.c $(MUPDF_LIB) $(MUPDF_DIR)/include $(JPEG_LIB) $(FREET
# helper target for creating standalone android toolchain from NDK
# NDK variable should be set in your environment and it should point to
# the root directory of the NDK

android-toolchain:
ifeq ($(wildcard $(NDK)/build/tools/make_standalone_toolchain.py),)
install -d $(ANDROID_TOOLCHAIN)
$(NDK)/build/tools/make-standalone-toolchain.sh --platform=android-9 \
$(NDK)/build/tools/make-standalone-toolchain.sh --platform=android-$(NDKABI) \
--install-dir=$(ANDROID_TOOLCHAIN)
else
$(NDK)/build/tools/make_standalone_toolchain.py --force --install-dir=$(ANDROID_TOOLCHAIN) \
--arch arm --api $(NDKABI)
endif

# ===========================================================================
# helper target for creating standalone pocket toolchain from
Expand Down
13 changes: 7 additions & 6 deletions Makefile.defs
Expand Up @@ -9,9 +9,10 @@ endif

UNAME:=$(shell uname -s)

TOOLCHAIN_DIR=toolchain
ANDROID_TOOLCHAIN=$(TOOLCHAIN_DIR)/android-toolchain
TOOLCHAIN_DIR=$(CURDIR)/toolchain
POCKETBOOK_TOOLCHAIN=$(TOOLCHAIN_DIR)/pocketbook-toolchain
ANDROID_TOOLCHAIN=$(TOOLCHAIN_DIR)/android-toolchain
NDKABI=9

# CMAKE=cmake --no-warn-unused-cli
CMAKE=cmake
Expand Down Expand Up @@ -41,8 +42,8 @@ else ifeq ($(TARGET), ubuntu-touch)
export UBUNTUTOUCH=1
else ifeq ($(TARGET), android)
export ANDROID=1
export PATH:=$(CURDIR)/$(ANDROID_TOOLCHAIN)/bin:$(PATH)
export SYSROOT=$(NDK)/platforms/android-9/arch-arm
export PATH:=$(ANDROID_TOOLCHAIN)/bin:$(PATH)
export SYSROOT=$(NDK)/platforms/android-$(NDKABI)/arch-arm
CHOST?=arm-linux-androideabi
else ifeq ($(TARGET), win32)
CHOST?=i686-w64-mingw32
Expand All @@ -52,8 +53,8 @@ else ifeq ($(TARGET), pocketbook)
CHOST?=arm-obreey-linux-gnueabi
export LEGACY=1
export POCKETBOOK=1
export PATH:=$(CURDIR)/$(POCKETBOOK_TOOLCHAIN)/bin:$(PATH)
export SYSROOT=$(CURDIR)/$(POCKETBOOK_TOOLCHAIN)/arm-obreey-linux-gnueabi/sysroot
export PATH:=$(POCKETBOOK_TOOLCHAIN)/bin:$(PATH)
export SYSROOT=$(POCKETBOOK_TOOLCHAIN)/arm-obreey-linux-gnueabi/sysroot
else ifndef TARGET
# if TARGET is not defined we will build an emulator on current machine
export EMULATE_READER=1
Expand Down
3 changes: 2 additions & 1 deletion Makefile.third
Expand Up @@ -221,6 +221,7 @@ $(LIBGETTEXT): $(LIBICONV) $(THIRDPARTY_DIR)/gettext/CMakeLists.txt
-DCHOST_OPTS="$(if $(EMULATE_READER),,--host=$(if $(ANDROID),arm-linux,$(CHOST)))" \
$(if $(ANDROID),-DIS_ANDROID:BOOL=on,) \
$(if $(ANDROID),-DNDK=$(NDK),) \
$(if $(ANDROID),-DNDKABI=$(NDKABI),) \
$(CURDIR)/thirdparty/gettext && \
$(MAKE)

Expand Down Expand Up @@ -427,7 +428,7 @@ ifdef POCKETBOOK
$(ZMQ_DIR)/lib/libzmq.la
# and the libuuid.so is also missing in the PocketBook SDK, but libuuid.la
# may let the build system assume that libuuid is installed
rm -f $(CURDIR)/$(POCKETBOOK_TOOLCHAIN)/arm-obreey-linux-gnueabi/sysroot/usr/lib/libuuid*
rm -f $(POCKETBOOK_TOOLCHAIN)/arm-obreey-linux-gnueabi/sysroot/usr/lib/libuuid*
endif

$(CZMQ_LIB): $(ZMQ_LIB) $(THIRDPARTY_DIR)/czmq/CMakeLists.txt
Expand Down
6 changes: 4 additions & 2 deletions thirdparty/gettext/CMakeLists.txt
Expand Up @@ -15,9 +15,11 @@ ep_get_binary_dir(BINARY_DIR)
set(CFG_ENV_VAR "CC=\"${CC}\"")
if(${IS_ANDROID})
# workaround of 'undefined reference to getdtablesize' for NDK-r11c
set(CFG_ENV_VAR "${CFG_ENV_VAR} LDFLAGS=-lc LIBS=${NDK}/platforms/android-9/arch-arm/usr/lib/libc.a")
set(CFG_ENV_VAR "${CFG_ENV_VAR} LDFLAGS=-lc LIBS=${NDK}/platforms/android-${NDKABI}/arch-arm/usr/lib/libc.a")
endif()
set(CFG_OPTS "--with-threads=none --prefix=${BINARY_DIR} --with-libiconv-prefix=${LIBICONV_PREFIX} --enable-shared=false --enable-static=true ${CHOST_OPTS}")
set(CFG_OPTS "--with-threads=none --disable-acl --disable-curses --disable-openmp --disable-native-java --disable-java")
set(CFG_OPTS "${CFG_OPTS} --prefix=${BINARY_DIR} --with-libiconv-prefix=${LIBICONV_PREFIX}")
set(CFG_OPTS "${CFG_OPTS} --enable-shared=false --enable-static=true ${CHOST_OPTS}")
set(CFG_CMD sh -c "${CFG_ENV_VAR} ${SOURCE_DIR}/configure ${CFG_OPTS}")
# remove HAVE_PWD_H for android build
if(${IS_ANDROID})
Expand Down
4 changes: 4 additions & 0 deletions thirdparty/glib/CMakeLists.txt
Expand Up @@ -27,6 +27,10 @@ set(gen_arm_config "${gen_arm_config}glib_cv_eventfd=no\\n")
set(gen_arm_config "${gen_arm_config}ac_cv_func_pipe2=no\\n")
set(gen_arm_config "${gen_arm_config}ac_cv_func_posix_getpwuid_r=no\\n")
set(gen_arm_config "${gen_arm_config}ac_cv_func_posix_getgrgid_r=no\\n")
# disable getpwuid, getgrgid and timegm for > android-12
set(gen_arm_config "${gen_arm_config}ac_cv_func_getpwuid_r=no\\n")
set(gen_arm_config "${gen_arm_config}ac_cv_func_getgrgid_r=no\\n")
set(gen_arm_config "${gen_arm_config}ac_cv_func_timegm=no\\n")
set(gen_arm_config sh -c "printf \"${gen_arm_config}\" > arm_cache.conf")

set(CFG_ENV_VAR "CC=\"${CC} -std=gnu89\"")
Expand Down
23 changes: 13 additions & 10 deletions toolchain/Makefile
@@ -1,26 +1,29 @@
SDK_DL_URL="https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz"
SDK_TARBALL="android-sdk_r24.4.1-linux.tgz"
SHELL:=/bin/bash


SDK_DL_URL=https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
SDK_TARBALL=android-sdk_r24.4.1-linux.tgz
SDK_SUM="978ee9da3dda10fb786709b7c2e924c0"
SDK_DIR="android-sdk-linux"
SDK_DIR=android-sdk-linux

android-sdk:
[ -e $(SDK_TARBALL) ] || wget $(SDK_DL_URL)
@CHECKSUM=$(shell md5sum $(SDK_TARBALL) | awk '{ print $$1 }'); \
[ $$CHECKSUM = $(SDK_SUM) ] || \
CHECKSUM=`md5sum $(SDK_TARBALL) | awk '{ print $$1 }'`; \
[[ "$$CHECKSUM" = $(SDK_SUM) ]] || \
{ echo "$(SDK_TARBALL) has the wrong checksum!"; exit 1; }
tar xvf $(SDK_TARBALL)
rm -f $(SDK_TARBALL)


NDK_DL_URL="https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip"
NDK_TARBALL="android-ndk-r12b-linux-x86_64.zip"
NDK_DL_URL=https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
NDK_TARBALL=android-ndk-r12b-linux-x86_64.zip
NDK_SUM="1d1a5ee71a5123be01e0dd9adb5df80d"
NDK_DIR="android-ndk-r12b"
NDK_DIR=android-ndk-r12b

android-ndk:
[ -e $(NDK_TARBALL) ] || wget $(NDK_DL_URL)
@CHECKSUM=$(shell md5sum $(NDK_TARBALL) | awk '{ print $$1 }'); \
[ $$CHECKSUM = $(NDK_SUM) ] || \
CHECKSUM=`md5sum $(NDK_TARBALL) | awk '{ print $$1 }'`; \
[[ "$$CHECKSUM" = $(NDK_SUM) ]] || \
{ echo "$(NDK_TARBALL) has the wrong checksum!"; exit 1; }
unzip $(NDK_TARBALL)
rm -f $(NDK_TARBALL)

0 comments on commit 3792d26

Please sign in to comment.