Home | History | Annotate | Download | only in tlsdate
      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