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