| # |
| ## Cross-compile env for Android |
| # Requires Android NDK >= r8 |
| # Requires the following env variables: |
| # |
| # NDK_BASE - path to your NDK's root directory |
| # e.g., /home/user/android-ndk |
| # OPENSSL_ANDROID - path to NDK built openssl |
| # e.g., /home/user/src/openssl-android |
| # |
| |
| # Android NDK setup |
| NDK_COMPILER_VERSION=4.6 |
| NDK_ABI=arm |
| NDK_BASE ?= /usr/local/android-ndk |
| #platform level >= 8 required for dladdr() |
| NDK_PLATFORM_LEVEL ?= 8 |
| NDK_SYSROOT=$(NDK_BASE)/platforms/android-$(NDK_PLATFORM_LEVEL)/arch-arm |
| NDK_UNAME=`uname -s | tr '[A-Z]' '[a-z]'` |
| NDK_TOOLCHAIN=$(NDK_BASE)/toolchains/$(NDK_ABI)-linux-androideabi-$(NDK_COMPILER_VERSION)/prebuilt/$(NDK_UNAME)-x86 |
| |
| # to use the real HOST tag, you need the latest libtool files: |
| # http://stackoverflow.com/questions/4594736/configure-does-not-recognize-androideabi |
| NDK_UNAME := `uname -s | tr '[A-Z]' '[a-z]'` |
| HOST := arm-linux-androideabi |
| |
| LOCAL_LDFLAGS = -L$(OPENSSL_ANDROID)/obj/local/armeabi/ -ldl -lcrypto -lssl -lz |
| LOCAL_LDFLAGS += -L$(NDK_TOOLCHAIN)/lib/gcc/arm-linux-androideabi/$($NDK_COMPILER_VERSION) -lgcc |
| CFLAGS = -I$(OPENSSL_ANDROID)/include |
| CC := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-gcc --sysroot=$(NDK_SYSROOT) |
| CXX := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-g++ |
| CPP := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-cpp |
| LD := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-ld |
| AR := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-ar |
| RANLIB := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-ranlib |
| STRIP := $(NDK_TOOLCHAIN)/bin/arm-linux-androideabi-strip \ |
| |
| all: $(OPENSSL_ANDROID)/libs/armeabi/libcrypto.so tlsdate-build |
| |
| $(OPENSSL_ANDROID)/libs/armeabi/libcrypto.so: |
| cd $(OPENSSL_ANDROID) && ndk-build -j4 |
| |
| openssl-clean: |
| -cd $(OPENSSL_ANDROID) && ndk-build clean |
| |
| openssl-distclean: |
| -cd $(OPENSSL_ANDROID) && ndk-build distclean |
| |
| configure: configure.ac |
| ./autogen.sh && \ |
| CFLAGS="$(CFLAGS)" ./configure \ |
| CC="$(CC)" \ |
| AR=$(AR) \ |
| RANLIB=$(RANLIB) \ |
| CFLAGS="$(CFLAGS)" \ |
| --disable-static \ |
| --disable-languages \ |
| --disable-dbus \ |
| --host=$(HOST) |
| #--prefix=$(prefix) \ |
| #--exec-prefix=$(prefix) |
| |
| tlsdate-build: configure |
| make -f Makefile CFLAGS="$(CFLAGS)" LDFLAGS="$(LOCAL_LDFLAGS)" |
| |
| tlsdate-clean: |
| -make -f Makefile clean |
| |
| tlsdate-distclean: |
| -make -f Makefile distclean && rm configure |
| |
| |
| clean: openssl-clean tlsdate-clean |
| distclean: openssl-distclean tlsdate-distclean |
| |
| .PHONY: clean openssl-clean tlsdate-clean |