Android: changed to NDK, install to /data/local because /system has not enough space
authorSven-Ola Tuecke <sven-ola@gmx.de>
Mon, 14 Sep 2009 16:23:07 +0000 (18:23 +0200)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Mon, 14 Sep 2009 16:23:07 +0000 (18:23 +0200)
Makefile
lib/secure/src/olsrd_secure.c
lib/txtinfo/src/olsrd_txtinfo.h
make/Makefile.android
src/olsr_types.h

index 47316e0..11c47a1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -144,15 +144,20 @@ rpm:
 #
 
 # This is quite ugly but at least it works
-ifeq ($(OS),$(filter $(OS),linux android))
+ifeq ($(OS),linux)
 SUBDIRS = $(notdir $(shell find lib -maxdepth 2 -name Makefile -not -path lib/Makefile -printf "%h\n"|sort))
 else
 ifeq ($(OS),win32)
 SUBDIRS := dot_draw httpinfo mini pgraph secure txtinfo
 else
+ifeq ($(OS),android)
+# nameservice: no regex
+SUBDIRS := bmf dot_draw dyn_gw_plain httpinfo mini quagga secure tas txtinfo watchdog
+else
 SUBDIRS := bmf dot_draw dyn_gw dyn_gw_plain httpinfo mini nameservice pgraph secure txtinfo watchdog
 endif
 endif
+endif
 
 libs:
                set -e;for dir in $(SUBDIRS);do $(MAKECMD) -C lib/$$dir LIBDIR=$(LIBDIR);done
index 007d794..92e94f6 100644 (file)
@@ -44,9 +44,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#ifdef linux
-#include <linux/in_route.h>
-#endif
 #include <unistd.h>
 #include <errno.h>
 #include <signal.h>
index 6f37b1b..8b776a9 100644 (file)
@@ -64,6 +64,12 @@ int olsrd_plugin_init(void);
 void olsr_plugin_exit(void);
 void olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size);
 
+#ifdef android
+#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
+static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+static const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
+#endif
+
 #endif
 
 /*
index c1d44f4..0bb6af9 100644 (file)
@@ -2,7 +2,7 @@
 # LINUX SPECIFIC CONFIGURATION
 #
 
-PREFIX ?= /system
+PREFIX ?= /data/local
 SBINDIR = $(PREFIX)/bin
 ETCDIR = $(PREFIX)/etc
 LIBDIR = $(PREFIX)/lib
@@ -13,7 +13,12 @@ SRCS +=      $(wildcard src/linux/*.c src/unix/*.c)
 HDRS +=                $(wildcard src/linux/*.h src/unix/*.h)
 
 CPPFLAGS +=    -Dlinux
-LIBS +=                
+CPPFLAGS +=    -Dandroid
+CPPFLAGS +=    -DINET_ADDRSTRLEN=16
+CPPFLAGS +=    -Dipv6mr_interface=ipv6mr_ifindex
+CPPFLAGS +=    -D'IPTOS_PREC(tos)=((tos)&0xe0)'
+CPPFLAGS +=    -D'IPTOS_TOS(tos)=((tos)&0x1e)'
+CPPFLAGS +=    -DOLSRD_GLOBAL_CONF_FILE=\"$(CFGFILE)\"
 
 PLUGIN_FULLNAME ?= $(PLUGIN_NAME).so.$(PLUGIN_VER)
 INSTALL_LIB =  install -D -m 755 $(PLUGIN_FULLNAME) $(LIBDIR)/$(PLUGIN_FULLNAME); \
@@ -22,19 +27,38 @@ INSTALL_LIB =       install -D -m 755 $(PLUGIN_FULLNAME) $(LIBDIR)/$(PLUGIN_FULLNAME);
 ifdef OLSRD_PLUGIN
 GENERATE_PIC = true
 endif
-ifeq ($(filter-out alpha x86_64 parisc64 ia64, $(ARCH)),)
-GENERATE_PIC = true
-LDFLAGS += -static
-endif
 
 ifdef GENERATE_PIC
 CFLAGS +=      -fPIC
 LDFLAGS +=     -fPIC
 endif
 
-OS_LIB_PTHREAD = -lpthread
-OS_CFLAG_PTHREAD = -pthread
-OS_LIB_DYNLOAD = -ldl
+# You need to download and extract the Android NDK from
+# http://developer.android.com/sdk/ndk/1.5_r1/index.html
+
+NDK = /usr/src/android-ndk-1.5_r1
+NDK_ARCH = $(NDK)/build/platforms/android-1.5/arch-arm
+
+ifneq ($(shell uname -m),armv6l)
+# You are not compiling with Debian direct on the phone
+CROSS_COMPILE = $(NDK)/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-
+CC = $(CROSS_COMPILE)gcc
+endif
+
+CFLAGS += -I$(NDK_ARCH)/usr/include
+
+LDFLAGS += -nostartfiles -nodefaultlibs -nostdlib
+LDFLAGS += -Wl,--dynamic-linker -Wl,/system/bin/linker
+LDFLAGS += -Wl,-L$(NDK_ARCH)/usr/lib
+LDFLAGS += -Wl,-rpath-link -Wl,$(NDK_ARCH)/usr/lib
+ifndef OLSRD_PLUGIN
+LDFLAGS += $(NDK_ARCH)/usr/lib/crtbegin_dynamic.o
+endif
+
+LIBS += -Wl,-lc -Wl,-lm -Wl,-lgcc
+ifndef OLSRD_PLUGIN
+LIBS += $(NDK_ARCH)/usr/lib/crtend_android.o
+endif
 
 # Local Variables:
 # mode: makefile
index dddf3b9..f5be2e0 100644 (file)
@@ -86,6 +86,9 @@ typedef signed int int32_t;
 /* user defined cookies */
 typedef uint16_t olsr_cookie_t;
 
+/* manpage says: fd_set is in sys/select.h with posix (at least with the Android-NDK) */
+#include <sys/select.h>
+
 /* OpenBSD wants this here */
 #include <sys/types.h>