1d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#
2d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck## Cross-compile env for Android
3d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck# Requires Android NDK >= r8
4d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck# Requires the following env variables:
5d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#
6d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#    NDK_BASE         -  path to your NDK's root directory
7d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#                        e.g., /home/user/android-ndk
8d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#    OPENSSL_ANDROID  -  path to NDK built openssl
9d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#                        e.g., /home/user/src/openssl-android
10d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#
11d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
12d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck# Android NDK setup
13d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_COMPILER_VERSION=4.6
14d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_ABI=arm
15d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_BASE ?=  /usr/local/android-ndk
16d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck#platform level >= 8 required for dladdr()
17d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_PLATFORM_LEVEL ?= 8
18d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_SYSROOT=$(NDK_BASE)/platforms/android-$(NDK_PLATFORM_LEVEL)/arch-arm
19d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_UNAME=`uname -s | tr '[A-Z]' '[a-z]'`
20d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_TOOLCHAIN=$(NDK_BASE)/toolchains/$(NDK_ABI)-linux-androideabi-$(NDK_COMPILER_VERSION)/prebuilt/$(NDK_UNAME)-x86
21d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
22d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck# to use the real HOST tag, you need the latest libtool files:
23d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck# http://stackoverflow.com/questions/4594736/configure-does-not-recognize-androideabi
24d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckNDK_UNAME := `uname -s | tr '[A-Z]' '[a-z]'`
25d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckHOST := arm-linux-androideabi
26d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
27d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckLOCAL_LDFLAGS   = -L$(OPENSSL_ANDROID)/obj/local/armeabi/ -ldl -lcrypto -lssl -lz
28d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckLOCAL_LDFLAGS += -L$(NDK_TOOLCHAIN)/lib/gcc/arm-linux-androideabi/$($NDK_COMPILER_VERSION) -lgcc
29d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckCFLAGS = -I$(OPENSSL_ANDROID)/include
30d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckCC := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-gcc --sysroot=$(NDK_SYSROOT)
31d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckCXX := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-g++
32d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckCPP := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-cpp
33d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckLD := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-ld
34d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckAR := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-ar
35d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckRANLIB := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-ranlib
36d942768bfe626ab1ce89be74bf808ef5312e5515Abel LuckSTRIP := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-strip \
37d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
38d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luckall: $(OPENSSL_ANDROID)/libs/armeabi/libcrypto.so tlsdate-build
39d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
40d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck$(OPENSSL_ANDROID)/libs/armeabi/libcrypto.so:
41d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	cd $(OPENSSL_ANDROID) && ndk-build -j4
42d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
43d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luckopenssl-clean:
44d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	-cd $(OPENSSL_ANDROID) && ndk-build clean
45d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
46d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luckopenssl-distclean:
47d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	-cd $(OPENSSL_ANDROID) && ndk-build distclean
48d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
49d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luckconfigure: configure.ac
50d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	./autogen.sh && \
51d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	CFLAGS="$(CFLAGS)" ./configure \
52d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			CC="$(CC)" \
53d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			AR=$(AR) \
54d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			RANLIB=$(RANLIB) \
55d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			CFLAGS="$(CFLAGS)" \
56d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			--disable-static \
57d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			--disable-languages \
58d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			--disable-dbus \
59d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			--host=$(HOST)
60d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			#--prefix=$(prefix) \
61d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck			#--exec-prefix=$(prefix)
62d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
63d942768bfe626ab1ce89be74bf808ef5312e5515Abel Lucktlsdate-build: configure
64d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	make -f Makefile CFLAGS="$(CFLAGS)" LDFLAGS="$(LOCAL_LDFLAGS)"
65d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
66d942768bfe626ab1ce89be74bf808ef5312e5515Abel Lucktlsdate-clean:
67d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	-make -f Makefile clean
68d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
69d942768bfe626ab1ce89be74bf808ef5312e5515Abel Lucktlsdate-distclean:
70d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck	-make -f Makefile distclean && rm configure
71d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
72d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
73d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luckclean: openssl-clean tlsdate-clean
74d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luckdistclean: openssl-distclean tlsdate-distclean
75d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck
76d942768bfe626ab1ce89be74bf808ef5312e5515Abel Luck.PHONY: clean openssl-clean tlsdate-clean
77