diff options
author | Mamadou DIOP <bossiel@yahoo.fr> | 2015-08-17 01:56:35 +0200 |
---|---|---|
committer | Mamadou DIOP <bossiel@yahoo.fr> | 2015-08-17 01:56:35 +0200 |
commit | 631fffee8a28b1bec5ed1f1d26a20e0135967f99 (patch) | |
tree | 74afe3bf3efe15aa82bcd0272b2b0f4d48c2d837 /android-projects | |
parent | 7908865936604036e6f200f1b5e069f8752f3a3a (diff) | |
download | doubango-631fffee8a28b1bec5ed1f1d26a20e0135967f99.zip doubango-631fffee8a28b1bec5ed1f1d26a20e0135967f99.tar.gz |
-
Diffstat (limited to 'android-projects')
-rw-r--r-- | android-projects/buildAll.sh | 9 | ||||
-rw-r--r-- | android-projects/makefile | 39 | ||||
-rw-r--r-- | android-projects/root.mk | 184 |
3 files changed, 232 insertions, 0 deletions
diff --git a/android-projects/buildAll.sh b/android-projects/buildAll.sh new file mode 100644 index 0000000..f012ce0 --- /dev/null +++ b/android-projects/buildAll.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Build tinyDEMO for Google Android Systems + +for project in tinySAK tinyNET tinyHTTP tinyXCAP tinyIPSec tinySMS tinySIGCOMP tinySDP tinyRTP tinyMSRP tinyMEDIA tinyDAV tinySIP +do + echo -e building "$project....\n" + make PROJECT=$project clean + make PROJECT=$project BT=$1 all +done diff --git a/android-projects/makefile b/android-projects/makefile new file mode 100644 index 0000000..3857d92 --- /dev/null +++ b/android-projects/makefile @@ -0,0 +1,39 @@ +include ./root.mk + +ifeq ($(PROJECT), tinyWRAP) +PROJECT_ROOT:=../bindings/java/android +else +PROJECT_ROOT:=../$(PROJECT) +endif + +ifeq ($(STRIP_LIB), ) + STRIP_LIB:=no + ifeq ($(DEBUG), no) + ifeq ($(BT), shared) + STRIP_LIB:=yes + endif + endif +endif + + +ifeq ($(STRIP_LIB), yes) +all: + (cd $(PROJECT_ROOT); \ + $(MAKE) -f droid-makefile all; \ + $(STRIP) --strip-all --remove-section=.comment --remove-section=.note ./lib$(PROJECT)_$(MARCH).$(EXT); \ + cp -f ./lib$(PROJECT)_$(MARCH).$(EXT) $(OUTPUT_DIR);\ + ) +else +all: + (cd $(PROJECT_ROOT); $(MAKE) -f droid-makefile all; cp -f lib$(PROJECT)_$(MARCH).$(EXT) $(OUTPUT_DIR)) +endif + +install: + (cd $(PROJECT_ROOT) ; $(MAKE) -f droid-makefile install) + +clean: + (cd $(PROJECT_ROOT); $(MAKE) -f droid-makefile clean) + +gdbserver: + $(ANDROID_SDK_ROOT)/tools/adb forward tcp:1234: tcp:1234 + $(ANDROID_SDK_ROOT)/tools/adb shell $(EXEC_DIR)/gdbserver :1234 $(EXEC_DIR)/test
\ No newline at end of file diff --git a/android-projects/root.mk b/android-projects/root.mk new file mode 100644 index 0000000..658e4ee --- /dev/null +++ b/android-projects/root.mk @@ -0,0 +1,184 @@ +###### +## Root configuration file shared by all android projects. +###### + +ifeq ($(ANDROID_NDK_ROOT),) + export ANDROID_NDK_ROOT=/cygdrive/c/android-ndk-r7c +endif +ifeq ($(ANDROID_SDK_ROOT),) + export ANDROID_SDK_ROOT=/cygdrive/c/android-sdk +endif +ifeq ($(ANDROID_PLATFORM),) + export ANDROID_PLATFORM=android-3 +endif +ifeq ($(ANDROID_HOST),) + export ANDROID_HOST=windows +endif +ifeq ($(NEON), yes) + export MARCH=armv7-a + export ANDROID_EABI=armeabi-v7a +else + export MARCH=armv5te + export ANDROID_EABI=armeabi +endif + +export ANDROID_GCC_VERSIONS=4.6 4.4.3 4.4.0 4.2.1 # list of preferred GCC versions seperated by SPACE (most preferred first) +export ANDROID_GCC_PREFIXES=arm-eabi arm-linux-androideabi # list of preferred GCC prefixes seperated by SPACE (most preferred first) + +# Output directory +export OUTPUT_DIR=$(shell pwd)/output +$(shell mkdir -p $(OUTPUT_DIR)) + +# Some toolchains cannot find libs in cygwin paths +export OUTPUT_DIR_CYGWIN=$(shell \ + if [[ $(OUTPUT_DIR) = /cygdrive/c/* ]]; then \ + echo $(OUTPUT_DIR) | sed -e "s/\/cygdrive\/c/C:/g"; \ + fi \ +) + +# Path where to copy executables -on the device or emulator- +export EXEC_DIR=/data/tmp +# Path where to copy libraries (*.so) -on the device or emulator- +export LIB_DIR=/system/lib + +# Test the NDK directory structure +export ANDROID_NDK_BASE=$(shell if [ -r $(ANDROID_NDK_ROOT)/build/platforms ] ; then \ + echo $(ANDROID_NDK_ROOT)/build/platforms ; \ + elif [ -r $(ANDROID_NDK_ROOT)/platforms ] ; then \ + echo $(ANDROID_NDK_ROOT)/platforms ; \ + else \ + echo "Err_Unable_to_recognize_the_NDK_structure_for_ANDROID_NDK_BASE" ; \ + fi) + +export ANDROID_NDK_TOOL_BASE=$(shell \ +for gcc_prefix in $(ANDROID_GCC_PREFIXES) ; do \ + for gcc_version in $(ANDROID_GCC_VERSIONS) ; do \ + if [ -r $(ANDROID_NDK_ROOT)/build/prebuilt/$(ANDROID_HOST)/$$gcc_prefix-$$gcc_version ] ; then \ + echo "$(ANDROID_NDK_ROOT)/build/prebuilt/$(ANDROID_HOST)/$$gcc_prefix-$$gcc_version"; \ + break; \ + elif [ -r $(ANDROID_NDK_ROOT)/toolchains/$$gcc_prefix-$$gcc_version/prebuilt/$(ANDROID_HOST) ] ; then \ + echo "$(ANDROID_NDK_ROOT)/toolchains/$$gcc_prefix-$$gcc_version/prebuilt/$(ANDROID_HOST)"; \ + break; \ + fi \ + done \ + done \ +) +export ANDROID_GCC_PREFIX=$(shell \ +for gcc_prefix in $(ANDROID_GCC_PREFIXES) ; do \ + for gcc_version in $(ANDROID_GCC_VERSIONS) ; do \ + if [ -r $(ANDROID_NDK_ROOT)/build/prebuilt/$(ANDROID_HOST)/$$gcc_prefix-$$gcc_version ] ; then \ + echo "$$gcc_prefix"; \ + break; \ + elif [ -r $(ANDROID_NDK_ROOT)/toolchains/$$gcc_prefix-$$gcc_version/prebuilt/$(ANDROID_HOST) ] ; then \ + echo "$$gcc_prefix"; \ + break; \ + fi \ + done \ + done \ +) + +ifeq ($(ANDROID_NDK_TOOL_BASE),) + export ANDROID_NDK_TOOL_BASE="Err_Unable_to_recognize_the_NDK_structure_for_ANDROID_NDK_TOOL_BASE" +endif + +export ANDROID_GNU_STL_ROOT=$(shell \ +if [ -r $(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/$(ANDROID_EABI) ] ; then \ + echo "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++"; \ +else \ + for gcc_version in $(ANDROID_GCC_VERSIONS) ; do \ + if [ -r $(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/$$gcc_version/libs/$(ANDROID_EABI) ] ; then \ + echo "$(ANDROID_NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/$$gcc_version"; \ + break; \ + fi \ + done \ +fi \ +) + +ifeq ($(ANDROID_GNU_STL_ROOT),) + export ANDROID_GNU_STL_ROOT="Err_Unable_to_find_gnu_stl_root_dir" +endif + +################################################################################## + +export PATH:=$(PATH):$(ANDROID_NDK_TOOL_BASE)/bin +export AR=$(ANDROID_GCC_PREFIX)-ar +export AS=$(ANDROID_GCC_PREFIX)-as +export CC=$(ANDROID_GCC_PREFIX)-gcc +export CPP=$(ANDROID_GCC_PREFIX)-g++ +export STRIP=$(ANDROID_GCC_PREFIX)-strip +export TARGET_ARCH=arm + +ifeq ($(ANDROID_GCC_PREFIX), arm-linux-androideabi) + export ARMELF_XSC=$(ANDROID_NDK_TOOL_BASE)/$(ANDROID_GCC_PREFIX)/lib/ldscripts/armelf_linux_eabi.xsc +else + export ARMELF_XSC=$(ANDROID_NDK_TOOL_BASE)/$(ANDROID_GCC_PREFIX)/lib/ldscripts/armelf.xsc +endif + +ifeq ($(LICENSE),) + export LICENSE=gpl +endif + + +export CFLAGS_COMMON=$(CFLAGS) $(DEBUG_FLAGS) -I$(ANDROID_NDK_BASE)/$(ANDROID_PLATFORM)/arch-arm/usr/include -L$(ANDROID_GNU_STL_ROOT)/include \ +-msoft-float \ +-fpic \ +-fno-exceptions \ +-mthumb-interwork \ +-funwind-tables \ +-fstack-protector \ +-D__arm__\ +-D__ARM_ARCH__ \ +-D__ARM_ARCH_5__ \ +-D__ARM_ARCH_5T__ \ +-D__ARM_ARCH_5E__ \ +-D__ARM_ARCH_5TE__ \ +-MMD \ +-MP \ +-fno-short-enums \ +-DWEBRTC_ANDROID \ +-DWEBRTC_ARCH_ARM \ +-D__ANDROID__ \ +-DANDROID=1 \ + +# Size reduction: use separate sections ("-ffunction-sections -fdata-sections") then link executable/shared lib using "-Wl,-gc-sections,-u,main" +export CFLAGS_COMMON+=-ffunction-sections -fdata-sections + +ifeq ($(NEON), yes) +export MARCH=armv7-a +export ARCH_ARM_HAVE_NEON=true +export ARCH_ARM_HAVE_ARMV7A=true +export CFLAGS_COMMON+=-march=$(MARCH) -mno-thumb-interwork -mtune=cortex-a8 -mfpu=neon -flax-vector-conversions -DHAVE_NEON=1 -DWEBRTC_DETECT_ARM_NEON -DARCH_ARM_HAVE_NEON -DARCH_ARM_HAVE_ARMV7A \ +-D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -DWEBRTC_ARM_INLINE_CALLS -DWEBRTC_ANDROID_ARMV7A_NEON -DWEBRTC_ARCH_ARM_NEON -Wno-psabi -mfloat-abi=softfp +else +export MARCH=armv5te +export CFLAGS_COMMON+=-march=$(MARCH) -mtune=xscale +endif + +export CFLAGS_LIB= $(CFLAGS_COMMON) \ +-fomit-frame-pointer \ +-fno-strict-aliasing \ +-finline-limit=64 + +ifeq ($(DEBUG), yes) +export CFLAGS_LIB+=-O0 -g -DDEBUG_LEVEL=DEBUG_LEVEL_INFO +else +export CFLAGS_LIB+=-Os -s +DEBUG:=no +endif + +export LDFLAGS_COMMON=$(LDFLAGS) -Wl,--gc-sections,-rpath=/system/lib,-rpath-link=$(ANDROID_NDK_BASE)/$(ANDROID_PLATFORM)/arch-arm/usr/lib,-rpath-link=$(OUTPUT_DIR),-dynamic-linker=/system/bin/linker,-T,$(ARMELF_XSC) -L$(ANDROID_NDK_BASE)/$(ANDROID_PLATFORM)/arch-arm/usr/lib -L$(ANDROID_GNU_STL_ROOT)/libs/$(ANDROID_EABI) +export LDFLAGS_COMMON+=-nostdlib -lc -L$(OUTPUT_DIR) -L$(OUTPUT_DIR_CYGWIN) + +ifeq ($(BT), static) + export EXT=a + export LDFLAGS_LIB= + + export CFLAGS_LIB+=-static +else + export EXT=so + + export LDFLAGS_LIB=$(LDFLAGS_COMMON) + export LDFLAGS_LIB+=-Wl,--no-undefined + export LDFLAGS_LIB+=-Wl,--no-whole-archive + export LDFLAGS_LIB+=-Wl,-soname,lib$(PROJECT).$(EXT),-Bsymbolic,-shared,--whole-archive +endif |