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