From ef3a8843119e7c13aca24d8bf13c553d31fb1280 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 23 Jan 2013 14:08:55 +0100 Subject: [PATCH 0001/1192] Replace eXosip/osip by belle-sip add a checktools utility Add belle-sip Add antlr3c --- .gitmodules | 14 +- Makefile | 21 +- check_tools.sh | 52 +++++ jni/Android.mk | 4 +- jni/Application.mk | 2 +- submodules/belle-sip | 1 + submodules/externals/build/exosip/Android.mk | 70 ------- .../build/exosip/libeXosip2_AndroidConfig.h | 123 ------------ .../externals/build/libantlr3c/Android.mk | 39 ++++ .../externals/build/libantlr3c/antlr3config.h | 180 ++++++++++++++++++ submodules/externals/build/osip/Android.mk | 92 --------- .../build/osip/libosip2_AndroidConfig.h | 117 ------------ submodules/externals/exosip | 1 - submodules/externals/libantlr3c | 1 + submodules/externals/osip | 1 - submodules/linphone | 2 +- 16 files changed, 303 insertions(+), 417 deletions(-) create mode 100755 check_tools.sh create mode 160000 submodules/belle-sip delete mode 100755 submodules/externals/build/exosip/Android.mk delete mode 100755 submodules/externals/build/exosip/libeXosip2_AndroidConfig.h create mode 100644 submodules/externals/build/libantlr3c/Android.mk create mode 100644 submodules/externals/build/libantlr3c/antlr3config.h delete mode 100755 submodules/externals/build/osip/Android.mk delete mode 100755 submodules/externals/build/osip/libosip2_AndroidConfig.h delete mode 160000 submodules/externals/exosip create mode 160000 submodules/externals/libantlr3c delete mode 160000 submodules/externals/osip diff --git a/.gitmodules b/.gitmodules index a21a0a5c3..fde6a7a47 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,6 @@ [submodule "linphone"] path = submodules/linphone - url = git://git.linphone.org/linphone.git -[submodule "submodules/externals/osip"] - path = submodules/externals/osip - url = git://git.linphone.org/osip.git -[submodule "submodules/externals/exosip"] - path = submodules/externals/exosip - url = git://git.linphone.org/exosip.git + url = gitosis@git.linphone.org:linphone-private [submodule "submodules/externals/gsm"] path = submodules/externals/gsm url = git://git.linphone.org/gsm.git @@ -58,3 +52,9 @@ [submodule "submodules/externals/webrtc"] path = submodules/externals/webrtc url = git://git.linphone.org/webrtc.git +[submodule "submodules/belle-sip"] + path = submodules/belle-sip + url = gitosis@git.linphone.org:belle-sip +[submodule "submodules/externals/libantlr3c"] + path = submodules/externals/libantlr3c + url = gitosis@git.linphone.org:libantlr3c diff --git a/Makefile b/Makefile index 48c0055f4..159b3a8f7 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,6 @@ PATCH_FFMPEG=$(shell cd submodules/externals/ffmpeg && git status | grep neon) LINPHONE_VERSION=$(shell cd submodules/linphone && git describe) LINPHONE_ANDROID_DEBUG_VERSION=$(shell git describe) ANDROID_MOST_RECENT_TARGET=$(shell android list target -c | grep android | tail -n1) - BUILD_X264=0 BUILD_AMRNB=full # 0, light or full BUILD_AMRWB=0 @@ -19,6 +18,13 @@ BUILD_WEBRTC_AECM=1 BUILD_FOR_X86=1 USE_JAVAH=1 +# Checks +CHECK_MSG=$(shell ./check_tools.sh) +ifneq ($(CHECK_MSG),) + $(error $(CHECK_MSG)) +endif +include check_tools.mk + all: update-project prepare-sources generate-apk install: install-apk run-linphone @@ -84,7 +90,18 @@ prepare-mediastreamer2: if ! [ -e yuv2rgb.vs.h ]; then echo "yuv2rgb.vs.h creation error (do you have 'xxd' application installed ?)"; exit 1; fi && \ if ! [ -e yuv2rgb.fs.h ]; then echo "yuv2rgb.fs.h creation error (do you have 'xxd' application installed ?)"; exit 1; fi -prepare-sources: prepare-ffmpeg prepare-ilbc prepare-vpx prepare-silk prepare-srtp prepare-mediastreamer2 + +LIBANLTR3C_SRC_DIR=$(TOPDIR)/submodules/externals/libantlr3c +LIBANTLR3C_BUILD_DIR=$(LIBANTLR3C_SRC_DIR) +prepare-libantlr3c: $(TOPDIR)/submodules/externals/build/libantlr3c/antlr3config.h + cp $(TOPDIR)/submodules/externals/build/libantlr3c/antlr3config.h $(LIBANLTR3C_SRC_DIR) + +BELLESIP_SRC_DIR=$(TOPDIR)/submodules/belle-sip +BELLESIP_BUILD_DIR=$(BELLESIP_SRC_DIR) +prepare-belle-sip: + $(ANTLR) -make -fo $(BELLESIP_BUILD_DIR)/src/ $(BELLESIP_SRC_DIR)/src/belle_sip_message.g $(BELLESIP_SRC_DIR)/src/belle_sdp.g + +prepare-sources: prepare-ffmpeg prepare-ilbc prepare-vpx prepare-silk prepare-srtp prepare-mediastreamer2 prepare-libantlr3c prepare-belle-sip generate-libs: $(NDK_PATH)/ndk-build LINPHONE_VERSION=$(LINPHONE_VERSION) BUILD_X264=$(BUILD_X264) BUILD_AMRNB=$(BUILD_AMRNB) BUILD_AMRWB=$(BUILD_AMRWB) BUILD_GPLV3_ZRTP=$(BUILD_GPLV3_ZRTP) BUILD_SILK=$(BUILD_SILK) BUILD_G729=$(BUILD_G729) BUILD_TUNNEL=$(BUILD_TUNNEL) BUILD_WEBRTC_AECM=$(BUILD_WEBRTC_AECM) BUILD_FOR_X86=$(BUILD_FOR_X86) USE_JAVAH=$(USE_JAVAH) -j$(NUMCPUS) diff --git a/check_tools.sh b/check_tools.sh new file mode 100755 index 000000000..0a163e8e9 --- /dev/null +++ b/check_tools.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +rm -f check_tools.mk +touch check_tools.mk + +# Check java +JAVA=\"$(which java)\" +if [ -z ${JAVA} ]; then + echo "Could not find java. Please install java"; + exit -1; +fi + +# Check antlr +antlr_java_prefixes="/usr/share/java /usr/local/share/java /usr/share/java /opt/local/share/java" +antlr_jar="no" +for antlr_java_prefix in ${antlr_java_prefixes} +do + antlr_jar=${antlr_java_prefix}/antlr.jar + if [ ! -f ${antlr_jar} ]; then + antlr_jar="no" + else + break; + fi +done +if test ${antlr_jar} = "no" ; then + echo "Could not find antlr.jar. Please install antlr3"; + exit -1; +fi +ANTLR="${JAVA} -jar \"${antlr_jar}\""; + +# Check NDK +NDK=$(which ndk-build) +if [ -z ${NDK} ]; then + echo "Could not find ndk-build. Please install android ndk"; + exit -1; +fi + +# Check SDK +SDK=$(which android) +if [ -z ${SDK} ]; then + echo "Could not find android. Please install android sdk"; + exit -1; +fi + +SDK_PLATFORM_TOOLS=$(which adb) +if [ -z ${SDK_PLATFORM_TOOLS} ]; then + echo "Could not find adb. Please install android sdk platform tools"; + exit -1; +fi + +echo JAVA=${JAVA} >> check_tools.mk +echo ANTLR=${ANTLR} >> check_tools.mk diff --git a/jni/Android.mk b/jni/Android.mk index 300f025e0..c787daade 100755 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -51,9 +51,9 @@ else include $(linphone-root-dir)/submodules/externals/prebuilts/gsm.mk endif -include $(linphone-root-dir)/submodules/externals/build/exosip/Android.mk -include $(linphone-root-dir)/submodules/externals/build/osip/Android.mk +include $(linphone-root-dir)/submodules/externals/build/libantlr3c/Android.mk +include $(linphone-root-dir)/submodules/belle-sip/build/android/Android.mk # Openssl ifeq ($(wildcard $(linphone-root-dir)/submodules/externals/prebuilts/ssl.mk),) diff --git a/jni/Application.mk b/jni/Application.mk index 224f4faa8..a0cd63919 100644 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -1,5 +1,5 @@ APP_PROJECT_PATH := $(call my-dir)/../ -APP_MODULES :=libspeex libgsm libortp libosip2 libeXosip2 libmediastreamer2 liblinphone liblinphonenoneon libneon +APP_MODULES :=libspeex libgsm libortp libantlr3c libbellesip libmediastreamer2 liblinphone liblinphonenoneon libneon APP_STL := stlport_static #default values diff --git a/submodules/belle-sip b/submodules/belle-sip new file mode 160000 index 000000000..3d52f64ac --- /dev/null +++ b/submodules/belle-sip @@ -0,0 +1 @@ +Subproject commit 3d52f64ac2b26724c99b2c660b74d3c9e2f9a5c2 diff --git a/submodules/externals/build/exosip/Android.mk b/submodules/externals/build/exosip/Android.mk deleted file mode 100755 index 761e2ef2c..000000000 --- a/submodules/externals/build/exosip/Android.mk +++ /dev/null @@ -1,70 +0,0 @@ - -LOCAL_PATH:= $(call my-dir)/../../exosip -include $(CLEAR_VARS) - -LOCAL_MODULE := libeXosip2 - -# Don't prelink this library. -LOCAL_PRELINK_MODULE := false - -LOCAL_SRC_FILES = \ - src/eXosip.c \ - src/eXconf.c \ - src/eXregister_api.c \ - src/eXcall_api.c \ - src/eXmessage_api.c \ - src/eXtransport.c \ - src/jrequest.c \ - src/jresponse.c \ - src/jcallback.c \ - src/jdialog.c \ - src/udp.c \ - src/jcall.c \ - src/jreg.c \ - src/eXutils.c \ - src/jevents.c \ - src/misc.c \ - src/jauth.c \ - src/eXosip_transport_hook.c - -LOCAL_SRC_FILES += \ - src/eXtl.c \ - src/eXtl_udp.c \ - src/eXtl_tcp.c \ - src/eXtl_dtls.c \ - src/eXtl_tls.c - -LOCAL_SRC_FILES += \ - src/milenage.c \ - src/rijndael.c - -# BUILD_MAXSIZE: -UMINISIZE -LOCAL_SRC_FILES += \ - src/eXsubscription_api.c \ - src/eXoptions_api.c \ - src/eXinsubscription_api.c \ - src/eXpublish_api.c \ - src/jnotify.c \ - src/jsubscribe.c \ - src/inet_ntop.c \ - src/jpipe.c \ - src/eXrefer_api.c \ - src/jpublish.c \ - src/sdp_offans.c -#SOCKET_PROGRESS_TIMEOUT=1000 to take care of edge network -LOCAL_CFLAGS += \ - -UHAVE_CONFIG_H \ - -include $(LOCAL_PATH)/../build/exosip/libeXosip2_AndroidConfig.h \ - -DOSIP_MT \ - -DENABLE_TRACE \ - -DSOCKET_TIMEOUT=50 \ - -DSOCKET_PROGRESS_TIMEOUT=1000 \ - -include $(LOCAL_PATH)/include/eXosip2/eXosip_transport_hook.h - - -LOCAL_C_INCLUDES += \ - $(LOCAL_PATH)/include \ - $(LOCAL_PATH)/../osip/include \ - $(LOCAL_PATH)/../openssl/include \ - -include $(BUILD_STATIC_LIBRARY) diff --git a/submodules/externals/build/exosip/libeXosip2_AndroidConfig.h b/submodules/externals/build/exosip/libeXosip2_AndroidConfig.h deleted file mode 100755 index 8beb75474..000000000 --- a/submodules/externals/build/exosip/libeXosip2_AndroidConfig.h +++ /dev/null @@ -1,123 +0,0 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.in by autoheader. */ - -/* Define to 1 if you have the header file. */ -#define HAVE_ARPA_INET_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_ARPA_NAMESER_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_ASSERT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_CTYPE_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the `getifaddrs' function. */ -/* #undef HAVE_GETIFADDRS */ - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_NETDB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_OPENSSL_SSL_H 1 - -/* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_RESOLV8_COMPAT_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_RESOLV_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SEMAPHORE_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SIGNAL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDARG_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDIO_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_SELECT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_SIGNAL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_SOUNDCARD_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_VARARGS_H */ - -/* Name of package */ -#define PACKAGE "libeXosip2" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "" - -/* Define to the necessary symbol if this constant uses a non-standard name on - your system. */ -/* #undef PTHREAD_CREATE_JOINABLE */ - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -#define VERSION "3.1.0" diff --git a/submodules/externals/build/libantlr3c/Android.mk b/submodules/externals/build/libantlr3c/Android.mk new file mode 100644 index 000000000..21cd8269c --- /dev/null +++ b/submodules/externals/build/libantlr3c/Android.mk @@ -0,0 +1,39 @@ + +LOCAL_PATH:= $(call my-dir)/../../libantlr3c/src +include $(CLEAR_VARS) + +LOCAL_MODULE:= libantlr3c + +LOCAL_C_INCLUDES += \ + $(LOCAL_PATH)/../../../externals/libantlr3c/ \ + $(LOCAL_PATH)/../../../externals/libantlr3c/include \ + +LOCAL_SRC_FILES := \ + antlr3baserecognizer.c \ + antlr3basetree.c \ + antlr3basetreeadaptor.c \ + antlr3bitset.c \ + antlr3collections.c \ + antlr3commontoken.c \ + antlr3commontree.c \ + antlr3commontreeadaptor.c \ + antlr3commontreenodestream.c \ + antlr3convertutf.c \ + antlr3cyclicdfa.c \ + antlr3debughandlers.c \ + antlr3encodings.c \ + antlr3exception.c \ + antlr3filestream.c \ + antlr3inputstream.c \ + antlr3intstream.c \ + antlr3lexer.c \ + antlr3parser.c \ + antlr3rewritestreams.c \ + antlr3string.c \ + antlr3stringstream.c \ + antlr3tokenstream.c \ + antlr3treeparser.c \ + antlr3ucs2inputstream.c + +include $(BUILD_STATIC_LIBRARY) + diff --git a/submodules/externals/build/libantlr3c/antlr3config.h b/submodules/externals/build/libantlr3c/antlr3config.h new file mode 100644 index 000000000..4b63a803c --- /dev/null +++ b/submodules/externals/build/libantlr3c/antlr3config.h @@ -0,0 +1,180 @@ +/* antlr3config.h. Generated from antlr3config.h.in by configure. */ +/* antlr3config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if ANTLR debugger not required */ +/* #undef ANTLR3_NODEBUGGER */ + +/* Define if 64 bit mode required */ +/* #undef ANTLR3_USE_64BIT */ + +/* Define to 1 if you have the `accept' function. */ +/* #undef HAVE_ACCEPT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ARPA_NAMESER_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CTYPE_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if the system has the type `intptr_t'. */ +/* #undef HAVE_INTPTR_T */ + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MALLOC_H */ + +/* Define to 1 if you have the `memmove' function. */ +/* #undef HAVE_MEMMOVE */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +/* #undef HAVE_MEMSET */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_NETDB_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_TCP_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_RESOLV_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SOCKET_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDARG_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strdup' function. */ +/* #undef HAVE_STRDUP */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MALLOC_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if the system has the type `uintptr_t'. */ +/* #undef HAVE_UINTPTR_T */ + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Name of package */ +#define PACKAGE "libantlr3c" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "jimi@temporal-wave.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libantlr3c" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libantlr3c 3.2" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libantlr3c" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "3.2" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "3.2" + +/* Define for Solaris 2.5.1 so the uint32_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +/* #undef _UINT32_T */ + +/* Define for Solaris 2.5.1 so the uint64_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +/* #undef _UINT64_T */ + +/* Define for Solaris 2.5.1 so the uint8_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +/* #undef _UINT8_T */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to the type of a signed integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int16_t */ + +/* Define to the type of a signed integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int32_t */ + +/* Define to the type of a signed integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +/* #undef int64_t */ + +/* Define to the type of a signed integer type of width exactly 8 bits if such + a type exists and the standard includes do not define it. */ +/* #undef int8_t */ + +/* Define to the type of a signed integer type wide enough to hold a pointer, + if such a type exists, and if the system does not define it. */ +/* #undef intptr_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to the type of an unsigned integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint16_t */ + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint32_t */ + +/* Define to the type of an unsigned integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint64_t */ + +/* Define to the type of an unsigned integer type of width exactly 8 bits if + such a type exists and the standard includes do not define it. */ +/* #undef uint8_t */ + +/* Define to the type of an unsigned integer type wide enough to hold a + pointer, if such a type exists, and if the system does not define it. */ +/* #undef uintptr_t */ diff --git a/submodules/externals/build/osip/Android.mk b/submodules/externals/build/osip/Android.mk deleted file mode 100755 index b8bb072a7..000000000 --- a/submodules/externals/build/osip/Android.mk +++ /dev/null @@ -1,92 +0,0 @@ - -LOCAL_PATH:= $(call my-dir)/../../osip -include $(CLEAR_VARS) - - -libosip2_SRC_FILES = \ - src/osip2/ict_fsm.c \ - src/osip2/ist_fsm.c \ - src/osip2/nict_fsm.c \ - src/osip2/nist_fsm.c \ - src/osip2/ict.c \ - src/osip2/ist.c \ - src/osip2/nict.c \ - src/osip2/nist.c \ - src/osip2/fsm_misc.c \ - src/osip2/osip.c \ - src/osip2/osip_transaction.c \ - src/osip2/osip_event.c \ - src/osip2/port_fifo.c \ - src/osip2/osip_dialog.c \ - src/osip2/osip_time.c \ - src/osip2/port_sema.c \ - src/osip2/port_thread.c \ - src/osip2/port_condv.c - -libosipparser2_SRC_FILES = \ - src/osipparser2/osip_proxy_authorization.c \ - src/osipparser2/osip_cseq.c \ - src/osipparser2/osip_record_route.c \ - src/osipparser2/osip_route.c \ - src/osipparser2/osip_to.c \ - src/osipparser2/osip_from.c \ - src/osipparser2/osip_uri.c \ - src/osipparser2/osip_authorization.c \ - src/osipparser2/osip_header.c \ - src/osipparser2/osip_www_authenticate.c \ - src/osipparser2/osip_via.c \ - src/osipparser2/osip_body.c \ - src/osipparser2/osip_md5c.c \ - src/osipparser2/osip_message.c \ - src/osipparser2/osip_list.c \ - src/osipparser2/osip_call_id.c \ - src/osipparser2/osip_message_parse.c \ - src/osipparser2/osip_contact.c \ - src/osipparser2/osip_message_to_str.c \ - src/osipparser2/osip_content_length.c \ - src/osipparser2/osip_parser_cfg.c \ - src/osipparser2/osip_content_type.c \ - src/osipparser2/osip_proxy_authenticate.c \ - src/osipparser2/osip_mime_version.c \ - src/osipparser2/osip_port.c - -# BUILD_MAXSIZE: -UMINISIZE -libosipparser2_SRC_FILES += \ - src/osipparser2/osip_accept_encoding.c \ - src/osipparser2/osip_content_encoding.c \ - src/osipparser2/osip_authentication_info.c \ - src/osipparser2/osip_proxy_authentication_info.c \ - src/osipparser2/osip_accept_language.c \ - src/osipparser2/osip_accept.c \ - src/osipparser2/osip_alert_info.c \ - src/osipparser2/osip_error_info.c \ - src/osipparser2/osip_allow.c \ - src/osipparser2/osip_content_disposition.c \ - src/osipparser2/sdp_accessor.c \ - src/osipparser2/sdp_message.c \ - src/osipparser2/osip_call_info.c - -LOCAL_SRC_FILES := \ - $(libosip2_SRC_FILES) \ - $(libosipparser2_SRC_FILES) - -LOCAL_C_INCLUDES += \ - $(LOCAL_PATH)/include - -LOCAL_MODULE:= libosip2 - -# global flags -LOCAL_CFLAGS += \ - -UHAVE_CONFIG_H \ - -include $(LOCAL_PATH)/../build/osip/libosip2_AndroidConfig.h - -# specific flags -LOCAL_CFLAGS += \ - -DOSIP_MT \ - -DHAVE_PTHREAD \ - -DENABLE_TRACE \ - -DUSE_GPERF - -#LOCAL_LDLIBS += -lpthread - -include $(BUILD_STATIC_LIBRARY) diff --git a/submodules/externals/build/osip/libosip2_AndroidConfig.h b/submodules/externals/build/osip/libosip2_AndroidConfig.h deleted file mode 100755 index b754cebf7..000000000 --- a/submodules/externals/build/osip/libosip2_AndroidConfig.h +++ /dev/null @@ -1,117 +0,0 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.in by autoheader. */ - -/* Define to 1 if you have the header file. */ -#define HAVE_ASSERT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_CTYPE_H 1 - -/* Define to 1 if you have header file */ -/* #undef HAVE_DICT_DICT_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Defined if you have lrand48 */ -#define HAVE_LRAND48 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SEMAPHORE_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SIGNAL_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDARG_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDIO_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if the system has the type `struct timeval'. */ -#define HAVE_STRUCT_TIMEVAL 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYSLOG_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_SELECT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_SIGNAL_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_SYS_UNISTD_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_VARARGS_H */ - -/* Name of package */ -#define PACKAGE "libosip2" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "" - -/* Define to the necessary symbol if this constant uses a non-standard name on - your system. */ -/* #undef PTHREAD_CREATE_JOINABLE */ - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -#define VERSION "3.1.0" diff --git a/submodules/externals/exosip b/submodules/externals/exosip deleted file mode 160000 index 73097acf6..000000000 --- a/submodules/externals/exosip +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 73097acf6afaef4827e6fe39214e77e53a1fbfd4 diff --git a/submodules/externals/libantlr3c b/submodules/externals/libantlr3c new file mode 160000 index 000000000..eb738fb40 --- /dev/null +++ b/submodules/externals/libantlr3c @@ -0,0 +1 @@ +Subproject commit eb738fb406d2b75e7e94457da800c38d8bfc3c71 diff --git a/submodules/externals/osip b/submodules/externals/osip deleted file mode 160000 index 7e98a3379..000000000 --- a/submodules/externals/osip +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7e98a3379280307811ed4ad67a95fbf73ba5bbb6 diff --git a/submodules/linphone b/submodules/linphone index ade529b01..fa4a074f2 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit ade529b01ce4d8554635781846c8dc029426b49b +Subproject commit fa4a074f21c3161ed745003b4f2e3f6ddd0a9d94 From ca859883e9960357aa59e1759cac25a5f7247a40 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 24 Jan 2013 18:18:00 +0100 Subject: [PATCH 0002/1192] Change libantlr3c repo url --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index fde6a7a47..f35db9c64 100644 --- a/.gitmodules +++ b/.gitmodules @@ -57,4 +57,4 @@ url = gitosis@git.linphone.org:belle-sip [submodule "submodules/externals/libantlr3c"] path = submodules/externals/libantlr3c - url = gitosis@git.linphone.org:libantlr3c + url = git://git.linphone.org/libantlr3c.git From 172130803cc2b8900a5fdc98988bf04487456ca3 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 25 Jan 2013 10:07:40 +0100 Subject: [PATCH 0003/1192] Update linphone and belle-sip modules --- submodules/belle-sip | 2 +- submodules/linphone | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/belle-sip b/submodules/belle-sip index 3d52f64ac..75eaecd44 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 3d52f64ac2b26724c99b2c660b74d3c9e2f9a5c2 +Subproject commit 75eaecd44d4f4d3c2e42b0d4c350052452112ceb diff --git a/submodules/linphone b/submodules/linphone index fa4a074f2..5ac4b44a7 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit fa4a074f21c3161ed745003b4f2e3f6ddd0a9d94 +Subproject commit 5ac4b44a7f44ea52ce2720ed21fc2fceaad7f6c1 From 5b778995b567bc1586d18a77a7c6074fc303fa03 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 7 Feb 2013 11:51:56 +0100 Subject: [PATCH 0004/1192] Fix makefile in order to avoid recompilation of belle-sip/antlr each times --- Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 7e794a99a..31f52c4e8 100644 --- a/Makefile +++ b/Makefile @@ -95,13 +95,16 @@ prepare-mediastreamer2: ANLTR3_SRC_DIR=$(TOPDIR)/submodules/externals/antlr3/runtime/C/include/ ANTLR3_BUILD_DIR=$(ANTLR3_SRC_DIR) -prepare-antlr3: $(TOPDIR)/submodules/externals/build/antlr3/antlr3config.h +$(ANLTR3_SRC_DIR)/antlr3config.h: $(TOPDIR)/submodules/externals/build/antlr3/antlr3config.h cp $(TOPDIR)/submodules/externals/build/antlr3/antlr3config.h $(ANLTR3_SRC_DIR) +prepare-antlr3: $(ANLTR3_SRC_DIR)/antlr3config.h + +%.tokens: %.g + $(ANTLR) -make -fo $(dir $^) $^ BELLESIP_SRC_DIR=$(TOPDIR)/submodules/belle-sip BELLESIP_BUILD_DIR=$(BELLESIP_SRC_DIR) -prepare-belle-sip: - $(ANTLR) -make -fo $(BELLESIP_BUILD_DIR)/src/ $(BELLESIP_SRC_DIR)/src/belle_sip_message.g $(BELLESIP_SRC_DIR)/src/belle_sdp.g +prepare-belle-sip: $(BELLESIP_SRC_DIR)/src/belle_sip_message.tokens $(BELLESIP_SRC_DIR)/src/belle_sdp.tokens prepare-sources: prepare-ffmpeg prepare-ilbc prepare-vpx prepare-silk prepare-srtp prepare-mediastreamer2 prepare-antlr3 prepare-belle-sip From 269891ebbff22146a5083db117a6804287400c05 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 7 Feb 2013 15:18:47 +0100 Subject: [PATCH 0005/1192] Update linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index e9398144e..d70a69100 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit e9398144e97f7423ef107f9c7fda0e695e0412fd +Subproject commit d70a691001821a6a333c25cc7794d6682b26daac From c46c595ae75e5a5ba78c9c80293f64f2cf13d6d1 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 7 Feb 2013 15:39:23 +0100 Subject: [PATCH 0006/1192] Update linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index d70a69100..94dc35278 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit d70a691001821a6a333c25cc7794d6682b26daac +Subproject commit 94dc35278fbbaf0f5df0140ff9ef764e14a45951 From 0a4f1039b28f2db7a254a7a2a79fe42d3b346763 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 12 Feb 2013 10:55:45 +0100 Subject: [PATCH 0007/1192] Update belle-sip submodule --- submodules/belle-sip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/belle-sip b/submodules/belle-sip index 2a172e581..c1a2880e3 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 2a172e5811851ffa4c3cc17648b9d0423b296bb6 +Subproject commit c1a2880e338a97a409465a6decb30e9b3b884a88 From ff1804968862945abf3441a831ebfc63a27577dd Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 12 Feb 2013 15:57:27 +0100 Subject: [PATCH 0008/1192] Update belle-sip submodule for resolver. --- submodules/belle-sip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/belle-sip b/submodules/belle-sip index c1a2880e3..3017fe57a 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit c1a2880e338a97a409465a6decb30e9b3b884a88 +Subproject commit 3017fe57adcafad9fe9b1d9e122a8bfb3a036fc7 From bf90e09515a6fe3791dd463f62b0d6c3ac4cec27 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 20 Feb 2013 10:35:44 +0100 Subject: [PATCH 0009/1192] Update linphone and belle-sip submodule --- submodules/belle-sip | 2 +- submodules/linphone | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/belle-sip b/submodules/belle-sip index 4b2cf2c14..a15b647e5 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 4b2cf2c147b7e118a9224930adbc74c2c2696563 +Subproject commit a15b647e5cf2f1e9dece14555896f866e9c902ec diff --git a/submodules/linphone b/submodules/linphone index 93f5931bf..5b14c78bb 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 93f5931bfb9054cda9308451b6d106487e212d7b +Subproject commit 5b14c78bbd4a22494ec54531129e5ab30b4d1667 From 48792a7fcd7584159f5c1077e248ca3050d286bc Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 22 Feb 2013 16:14:38 +0100 Subject: [PATCH 0010/1192] Update belle-sip and linphone submodules --- submodules/belle-sip | 2 +- submodules/linphone | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/belle-sip b/submodules/belle-sip index a15b647e5..498e68f29 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit a15b647e5cf2f1e9dece14555896f866e9c902ec +Subproject commit 498e68f29049363b72031a800df8bd8612685db9 diff --git a/submodules/linphone b/submodules/linphone index d83779419..6791abd00 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit d8377941920f52ffbedf2b8fb90b2e884e1a0dc5 +Subproject commit 6791abd00d0fbb07eeb8aa1cbbba346777c81337 From d0b4e78fa0b46589947e4a59591cf38e1d6884a8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 28 Feb 2013 10:47:07 +0100 Subject: [PATCH 0011/1192] Update linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 8e9b2b9a2..1a5169a14 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 8e9b2b9a2453279e4fea1322ac6e7024f46b0d6a +Subproject commit 1a5169a1472b81e1d68b8248550dc789b54b607c From 0f936a4dca0134423b605e6c3ecdf2ca47aaa59f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 28 Feb 2013 11:35:36 +0100 Subject: [PATCH 0012/1192] Update belle-sip submodule --- submodules/belle-sip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/belle-sip b/submodules/belle-sip index 498e68f29..5c4514cf7 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 498e68f29049363b72031a800df8bd8612685db9 +Subproject commit 5c4514cf7d37a40e20f4d314b79ce81aae85c7c5 From 38cb1347511447d0277d6b608b1d0c01b770907b Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Fri, 1 Mar 2013 15:29:02 +0100 Subject: [PATCH 0013/1192] AdressText cleared display name should be null object --- src/org/linphone/ui/AddressText.java | 2 +- submodules/belle-sip | 2 +- submodules/linphone | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/linphone/ui/AddressText.java b/src/org/linphone/ui/AddressText.java index f0fef5bd6..3b6677578 100644 --- a/src/org/linphone/ui/AddressText.java +++ b/src/org/linphone/ui/AddressText.java @@ -56,7 +56,7 @@ public class AddressText extends EditText implements AddressType { } public void clearDisplayedName() { - displayedName = ""; + displayedName = null; } public String getDisplayedName() { diff --git a/submodules/belle-sip b/submodules/belle-sip index 5c4514cf7..525a4ffb7 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 5c4514cf7d37a40e20f4d314b79ce81aae85c7c5 +Subproject commit 525a4ffb798c5cc2ef137af52d1255de9ef95fbf diff --git a/submodules/linphone b/submodules/linphone index 644008c62..bf0db8f9e 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 644008c6295236c9bb2dd2a1e443f616afca7967 +Subproject commit bf0db8f9e4e18b4745a55e7943b59ced8ff4a8d2 From cbd762fd9d9b70622002d85c3c4f41e95fb461d6 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 4 Mar 2013 08:36:24 +0100 Subject: [PATCH 0014/1192] add ant terget to deliver sdk --- build.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/build.xml b/build.xml index cc1aeac67..2bab7486c 100644 --- a/build.xml +++ b/build.xml @@ -90,4 +90,21 @@ + + Creating library output jar file... + + + + + + + + + + + + + + From 5f24d46d23cd5d45a351f7bf627b427110bf586f Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 4 Mar 2013 15:24:16 +0100 Subject: [PATCH 0015/1192] add new target generate-sdk --- Makefile | 5 ++++- custom_rules.xml | 19 +++++++++++++++++ jni/Android.mk | 17 ++++++++-------- jni/Application.mk | 4 +++- jni/libneon/Android.mk | 37 ---------------------------------- jni/libneon/libneon_jni.cc | 37 ---------------------------------- src/org/linphone/CpuUtils.java | 34 ------------------------------- submodules/linphone | 2 +- 8 files changed, 36 insertions(+), 119 deletions(-) delete mode 100755 jni/libneon/Android.mk delete mode 100644 jni/libneon/libneon_jni.cc delete mode 100644 src/org/linphone/CpuUtils.java diff --git a/Makefile b/Makefile index 7e09bc98e..e28ed6af1 100644 --- a/Makefile +++ b/Makefile @@ -109,7 +109,7 @@ prepare-belle-sip: $(BELLESIP_SRC_DIR)/src/belle_sip_message.tokens $(BELLESIP_S prepare-sources: prepare-ffmpeg prepare-ilbc prepare-vpx prepare-silk prepare-srtp prepare-mediastreamer2 prepare-antlr3 prepare-belle-sip -generate-libs: +generate-libs: prepare-sources $(NDK_PATH)/ndk-build LINPHONE_VERSION=$(LINPHONE_VERSION) BUILD_UPNP=$(BUILD_UPNP) BUILD_REMOTE_PROVISIONING=$(BUILD_REMOTE_PROVISIONING) BUILD_X264=$(BUILD_X264) BUILD_AMRNB=$(BUILD_AMRNB) BUILD_AMRWB=$(BUILD_AMRWB) BUILD_GPLV3_ZRTP=$(BUILD_GPLV3_ZRTP) BUILD_SILK=$(BUILD_SILK) BUILD_G729=$(BUILD_G729) BUILD_TUNNEL=$(BUILD_TUNNEL) BUILD_WEBRTC_AECM=$(BUILD_WEBRTC_AECM) BUILD_FOR_X86=$(BUILD_FOR_X86) USE_JAVAH=$(USE_JAVAH) -j$(NUMCPUS) update-project: @@ -149,3 +149,6 @@ clean: .PHONY: clean +generate-sdk: generate-apk + ant liblinphone-sdk + diff --git a/custom_rules.xml b/custom_rules.xml index cda9d1e46..fdecf9fbb 100644 --- a/custom_rules.xml +++ b/custom_rules.xml @@ -121,4 +121,23 @@ + + + Creating library output jar file... + + + + + + + + + + + + + + + diff --git a/jni/Android.mk b/jni/Android.mk index bf21aee00..2a6fd7472 100755 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -19,7 +19,7 @@ LINPHONE_VIDEO=0 BUILD_X264=0 endif -include $(linphone-root-dir)/jni/libneon/Android.mk +include $(linphone-root-dir)/submodules/linphone/mediastreamer2/jni/libneon/Android.mk ##ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) ifeq ($(BUILD_GPLV3_ZRTP), 1) @@ -64,13 +64,6 @@ endif include $(linphone-root-dir)/submodules/externals/build/antlr3/Android.mk include $(linphone-root-dir)/submodules/belle-sip/build/android/Android.mk -# Openssl -ifeq ($(wildcard $(linphone-root-dir)/submodules/externals/prebuilts/ssl.mk),) -include $(linphone-root-dir)/submodules/externals/openssl/Android.mk -else -include $(linphone-root-dir)/submodules/externals/prebuilts/ssl.mk -include $(linphone-root-dir)/submodules/externals/prebuilts/crypto.mk -endif include $(linphone-root-dir)/submodules/linphone/oRTP/build/android/Android.mk @@ -80,6 +73,14 @@ include $(linphone-root-dir)/submodules/linphone/mediastreamer2/tools/Android.mk ifeq ($(BUILD_TUNNEL), 1) +# Openssl +ifeq ($(wildcard $(linphone-root-dir)/submodules/externals/prebuilts/ssl.mk),) +include $(linphone-root-dir)/submodules/externals/openssl/Android.mk +else +include $(linphone-root-dir)/submodules/externals/prebuilts/ssl.mk +include $(linphone-root-dir)/submodules/externals/prebuilts/crypto.mk +endif +#tunnel include $(linphone-root-dir)/submodules/tunnel/Android.mk endif diff --git a/jni/Application.mk b/jni/Application.mk index 9adfaf8d3..d8cb8da7e 100644 --- a/jni/Application.mk +++ b/jni/Application.mk @@ -72,7 +72,10 @@ APP_MODULES += libtunnelclient endif ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) +ifeq ($(BUILD_TUNNEL), 1) APP_MODULES += liblincrypto liblinssl +endif + APP_MODULES +=libmsilbc ifeq ($(BUILD_GPLV3_ZRTP), 1) @@ -93,4 +96,3 @@ APP_ABI := armeabi-v7a armeabi ifeq ($(BUILD_FOR_X86), 1) APP_ABI += x86 endif -APP_CFLAGS:=-DDISABLE_NEON diff --git a/jni/libneon/Android.mk b/jni/libneon/Android.mk deleted file mode 100755 index dbdb0078f..000000000 --- a/jni/libneon/Android.mk +++ /dev/null @@ -1,37 +0,0 @@ -## -## Android.mk -Android build script- -## -## -## Copyright (C) 2010 Belledonne Communications, Grenoble, France -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## - -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_CPP_EXTENSION := .cc - -LOCAL_SRC_FILES := \ - libneon_jni.cc - -LOCAL_STATIC_LIBRARIES := cpufeatures - -LOCAL_MODULE := libneon - -include $(BUILD_SHARED_LIBRARY) - -$(call import-module,android/cpufeatures) diff --git a/jni/libneon/libneon_jni.cc b/jni/libneon/libneon_jni.cc deleted file mode 100644 index 15298e803..000000000 --- a/jni/libneon/libneon_jni.cc +++ /dev/null @@ -1,37 +0,0 @@ -/* -libneon_jni.cc -Copyright (C) 2013 Belledonne Communications, Grenoble, France - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include - -extern "C" { -#include -#include - -static JavaVM *jvm=0; - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *ajvm, void *reserved) -{ - jvm=ajvm; - return JNI_VERSION_1_2; -} - -extern "C" jboolean Java_org_linphone_CpuUtils_hasNeon(JNIEnv* env, jobject thiz) { - return android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON; -} -} diff --git a/src/org/linphone/CpuUtils.java b/src/org/linphone/CpuUtils.java deleted file mode 100644 index 3882f6098..000000000 --- a/src/org/linphone/CpuUtils.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.linphone; -/* -CpuUtils.java -Copyright (C) 2013 Belledonne Communications, Grenoble, France - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/** - * @author Sylvain Berfini - */ -public class CpuUtils { - private native boolean hasNeon(); - - public CpuUtils() { - - } - - public boolean isCpuNeon() { - return hasNeon(); - } -} diff --git a/submodules/linphone b/submodules/linphone index bf0db8f9e..d44378253 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit bf0db8f9e4e18b4745a55e7943b59ced8ff4a8d2 +Subproject commit d44378253138ee5be1146c3da1b1c0dc20625b2f From 8df7ffb90e68c2d614b2e270a14685cb35fe469d Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 4 Mar 2013 19:03:22 +0100 Subject: [PATCH 0016/1192] update belle-sip,linphone --- jni/Android.mk | 2 +- submodules/belle-sip | 2 +- submodules/linphone | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jni/Android.mk b/jni/Android.mk index 2a6fd7472..45268eda7 100755 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -19,7 +19,7 @@ LINPHONE_VIDEO=0 BUILD_X264=0 endif -include $(linphone-root-dir)/submodules/linphone/mediastreamer2/jni/libneon/Android.mk +include $(linphone-root-dir)/submodules/linphone/mediastreamer2/src/android/libneon/Android.mk ##ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) ifeq ($(BUILD_GPLV3_ZRTP), 1) diff --git a/submodules/belle-sip b/submodules/belle-sip index 525a4ffb7..6b058ba83 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 525a4ffb798c5cc2ef137af52d1255de9ef95fbf +Subproject commit 6b058ba830644578da70c9bb85a41acdb06c03dd diff --git a/submodules/linphone b/submodules/linphone index d44378253..9d3f8f7d9 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit d44378253138ee5be1146c3da1b1c0dc20625b2f +Subproject commit 9d3f8f7d94080f4dd293bca53b4bcf9afac88d78 From 82905401fd00fdbf46269505d57990a213b15447 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 5 Mar 2013 16:36:49 +0100 Subject: [PATCH 0017/1192] add userid +upnp settings --- res/values/non_localizable_defaults.xml | 1 + res/values/non_localizable_strings.xml | 2 ++ res/values/strings.xml | 6 ++++ res/xml/account_preferences.xml | 3 ++ res/xml/preferences.xml | 5 +++- .../linphone/AccountPreferencesFragment.java | 13 +++++++-- src/org/linphone/LinphoneManager.java | 29 ++++++++++++++----- src/org/linphone/PreferencesFragment.java | 24 +++++++++++++++ submodules/belle-sip | 2 +- submodules/linphone | 2 +- 10 files changed, 74 insertions(+), 13 deletions(-) diff --git a/res/values/non_localizable_defaults.xml b/res/values/non_localizable_defaults.xml index 1b5bd2618..89378bde6 100644 --- a/res/values/non_localizable_defaults.xml +++ b/res/values/non_localizable_defaults.xml @@ -36,6 +36,7 @@ false stun.linphone.org false + false true 5060 @string/pref_transport_udp_key diff --git a/res/values/non_localizable_strings.xml b/res/values/non_localizable_strings.xml index cf20690e0..9391b5e81 100644 --- a/res/values/non_localizable_strings.xml +++ b/res/values/non_localizable_strings.xml @@ -49,6 +49,7 @@ pref_domain_key pref_passwd_key pref_username_key + pref_auth_userid_key pref_wizard_key pref_activated_key pref_debug_key @@ -112,4 +113,5 @@ pref_rfc2833_dtmf_key pref_sipinfo_dtmf_key + pref_upnp_enable_key diff --git a/res/values/strings.xml b/res/values/strings.xml index 26560350a..76189a5a6 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -422,4 +422,10 @@ Incoming Background mode + + Auth userid* + + Enter authentication userid (optionnal) + + Enable UPNP diff --git a/res/xml/account_preferences.xml b/res/xml/account_preferences.xml index 2c23bfeb1..7fff9fedd 100644 --- a/res/xml/account_preferences.xml +++ b/res/xml/account_preferences.xml @@ -7,6 +7,9 @@ + android:defaultValue="@bool/pref_ice_enabled_default"/> 0 && password != null) { - LinphoneAuthInfo lAuthInfo = LinphoneCoreFactory.instance().createAuthInfo(username, password, null); + LinphoneAuthInfo lAuthInfo = LinphoneCoreFactory.instance().createAuthInfo(username + , userid + , password + , null + ,null); mLc.addAuthInfo(lAuthInfo); if (domain != null && domain.length() > 0) { @@ -812,9 +818,16 @@ public final class LinphoneManager implements LinphoneCoreListener { //stun server String lStun = getPrefString(R.string.pref_stun_server_key, getString(R.string.default_stun)); boolean useICE = getPrefBoolean(R.string.pref_ice_enable_key, mR.getBoolean(R.bool.pref_ice_enabled_default)); + boolean useUpnp = getPrefBoolean(R.string.pref_upnp_enable_key, mR.getBoolean(R.bool.pref_upnp_enabled_default)); + mLc.setStunServer(lStun); - if (lStun!=null && lStun.length()>0) { - mLc.setFirewallPolicy(useICE ? FirewallPolicy.UseIce : FirewallPolicy.UseStun); + if (lStun!=null && lStun.length()>0 && useICE) { + mLc.setFirewallPolicy(FirewallPolicy.UseIce); + if (useUpnp) Log.e("Cannot have both ice and upnp enabled, disabling upnp"); + } if (useUpnp) { + mLc.setFirewallPolicy(FirewallPolicy.UseUpnp); + } else if (lStun!=null && lStun.length()>0){ + mLc.setFirewallPolicy(FirewallPolicy.UseStun); } else { mLc.setFirewallPolicy(FirewallPolicy.NoFirewall); } diff --git a/src/org/linphone/PreferencesFragment.java b/src/org/linphone/PreferencesFragment.java index 95720c3ad..daf98c696 100644 --- a/src/org/linphone/PreferencesFragment.java +++ b/src/org/linphone/PreferencesFragment.java @@ -247,6 +247,30 @@ public class PreferencesFragment extends PreferencesListFragment implements EcCa } }); + final CheckBoxPreference useIce = (CheckBoxPreference) findPreference(R.string.pref_ice_enable_key); + final CheckBoxPreference useUpnp = (CheckBoxPreference) findPreference(R.string.pref_upnp_enable_key); + + useIce.setEnabled(!useUpnp.isChecked()); + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + useUpnp.setEnabled(lc.upnpAvailable() && !useIce.isChecked()); + + useIce.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + boolean isChecked = (Boolean) newValue; + useUpnp.setEnabled(!isChecked); + return true; + } + }); + useUpnp.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + boolean isChecked = (Boolean) newValue; + useIce.setEnabled(!isChecked); + return true; + } + }); + if (getResources().getBoolean(R.bool.disable_every_log)) { uncheckDisableAndHideCheckbox(R.string.pref_debug_key); } diff --git a/submodules/belle-sip b/submodules/belle-sip index 6b058ba83..3b347644c 160000 --- a/submodules/belle-sip +++ b/submodules/belle-sip @@ -1 +1 @@ -Subproject commit 6b058ba830644578da70c9bb85a41acdb06c03dd +Subproject commit 3b347644ce220d97b08112a9fd835194c64000e5 diff --git a/submodules/linphone b/submodules/linphone index 9d3f8f7d9..018fbdb7f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 9d3f8f7d94080f4dd293bca53b4bcf9afac88d78 +Subproject commit 018fbdb7f1dbb634eb99c01c6fa9cc663147dae8 From 0c3339afeb18b4901aa7eb3fd61086565d5d83da Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 7 Mar 2013 17:35:05 +0100 Subject: [PATCH 0018/1192] Add liblinphone tester project --- .gitmodules | 3 + Makefile | 11 ++ liblinphone_tester/.classpath | 10 ++ liblinphone_tester/.gitignore | 18 +++ liblinphone_tester/.project | 40 +++++++ liblinphone_tester/AndroidManifest.xml | 32 ++++++ liblinphone_tester/jni/Android.mk | 3 + liblinphone_tester/jni/Application.mk | 7 ++ .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 9397 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 5237 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 14383 bytes .../res/layout/activity_main.xml | 34 ++++++ liblinphone_tester/res/menu/activity_main.xml | 9 ++ liblinphone_tester/res/raw/laure_rc | 42 +++++++ liblinphone_tester/res/raw/marie_rc | 47 ++++++++ liblinphone_tester/res/raw/multi_account_lrc | 61 ++++++++++ liblinphone_tester/res/raw/pauline_rc | 46 ++++++++ liblinphone_tester/res/values-v11/styles.xml | 11 ++ liblinphone_tester/res/values-v14/styles.xml | 12 ++ liblinphone_tester/res/values/strings.xml | 8 ++ liblinphone_tester/res/values/styles.xml | 20 ++++ .../src/org/linphone/tester/MainActivity.java | 97 ++++++++++++++++ .../src/org/linphone/tester/Tester.java | 106 ++++++++++++++++++ submodules/externals/build/cunit/Android.mk | 24 ++++ submodules/externals/cunit | 1 + submodules/linphone | 2 +- 26 files changed, 643 insertions(+), 1 deletion(-) create mode 100644 liblinphone_tester/.classpath create mode 100644 liblinphone_tester/.gitignore create mode 100644 liblinphone_tester/.project create mode 100644 liblinphone_tester/AndroidManifest.xml create mode 100644 liblinphone_tester/jni/Android.mk create mode 100644 liblinphone_tester/jni/Application.mk create mode 100644 liblinphone_tester/res/drawable-hdpi/ic_launcher.png create mode 100644 liblinphone_tester/res/drawable-mdpi/ic_launcher.png create mode 100644 liblinphone_tester/res/drawable-xhdpi/ic_launcher.png create mode 100644 liblinphone_tester/res/layout/activity_main.xml create mode 100644 liblinphone_tester/res/menu/activity_main.xml create mode 100644 liblinphone_tester/res/raw/laure_rc create mode 100644 liblinphone_tester/res/raw/marie_rc create mode 100644 liblinphone_tester/res/raw/multi_account_lrc create mode 100644 liblinphone_tester/res/raw/pauline_rc create mode 100644 liblinphone_tester/res/values-v11/styles.xml create mode 100644 liblinphone_tester/res/values-v14/styles.xml create mode 100644 liblinphone_tester/res/values/strings.xml create mode 100644 liblinphone_tester/res/values/styles.xml create mode 100644 liblinphone_tester/src/org/linphone/tester/MainActivity.java create mode 100644 liblinphone_tester/src/org/linphone/tester/Tester.java create mode 100644 submodules/externals/build/cunit/Android.mk create mode 160000 submodules/externals/cunit diff --git a/.gitmodules b/.gitmodules index b6715c22c..9b6f29f6c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -64,3 +64,6 @@ [submodule "submodules/externals/libupnp"] path = submodules/externals/libupnp url = git://git.code.sf.net/p/pupnp/code +[submodule "submodules/externals/cunit"] + path = submodules/externals/cunit + url = gitosis@git.linphone.org:cunit.git diff --git a/Makefile b/Makefile index e28ed6af1..a50dedbca 100644 --- a/Makefile +++ b/Makefile @@ -107,6 +107,14 @@ BELLESIP_SRC_DIR=$(TOPDIR)/submodules/belle-sip BELLESIP_BUILD_DIR=$(BELLESIP_SRC_DIR) prepare-belle-sip: $(BELLESIP_SRC_DIR)/src/belle_sip_message.tokens $(BELLESIP_SRC_DIR)/src/belle_sdp.tokens +prepare-cunit: $(TOPDIR)/submodules/externals/cunit/CUnit/Headers/*.h + [ -d $(TOPDIR)/submodules/externals/build/cunit/CUnit ] || mkdir $(TOPDIR)/submodules/externals/build/cunit/CUnit + cp $^ $(TOPDIR)/submodules/externals/build/cunit/CUnit + +prepare-liblinphone_tester: $(TOPDIR)/submodules/linphone/tester/*_lrc $(TOPDIR)/submodules/linphone/tester/*_rc +# [ -d $(TOPDIR)/liblinphone_tester/res/raw ] || mkdir $(TOPDIR)/liblinphone_tester/res/raw +# cp $^ $(TOPDIR)/liblinphone_tester/res/raw + prepare-sources: prepare-ffmpeg prepare-ilbc prepare-vpx prepare-silk prepare-srtp prepare-mediastreamer2 prepare-antlr3 prepare-belle-sip generate-libs: prepare-sources @@ -115,6 +123,9 @@ generate-libs: prepare-sources update-project: $(SDK_PATH)/android update project --path . --target $(ANDROID_MOST_RECENT_TARGET) +liblinphone_tester: prepare-sources prepare-cunit prepare-liblinphone_tester + $(NDK_PATH)/ndk-build -C liblinphone_tester NDK_DEBUG=1 LINPHONE_VERSION=$(LINPHONE_VERSION) BUILD_UPNP=$(BUILD_UPNP) BUILD_REMOTE_PROVISIONING=$(BUILD_REMOTE_PROVISIONING) BUILD_X264=$(BUILD_X264) BUILD_AMRNB=$(BUILD_AMRNB) BUILD_AMRWB=$(BUILD_AMRWB) BUILD_GPLV3_ZRTP=$(BUILD_GPLV3_ZRTP) BUILD_SILK=$(BUILD_SILK) BUILD_G729=$(BUILD_G729) BUILD_TUNNEL=$(BUILD_TUNNEL) BUILD_WEBRTC_AECM=$(BUILD_WEBRTC_AECM) BUILD_FOR_X86=$(BUILD_FOR_X86) USE_JAVAH=$(USE_JAVAH) -j$(NUMCPUS) + generate-apk: ant partial-clean echo "version.name=$(LINPHONE_ANDROID_DEBUG_VERSION)" > default.properties diff --git a/liblinphone_tester/.classpath b/liblinphone_tester/.classpath new file mode 100644 index 000000000..08e877a4e --- /dev/null +++ b/liblinphone_tester/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/liblinphone_tester/.gitignore b/liblinphone_tester/.gitignore new file mode 100644 index 000000000..00dfbd2c3 --- /dev/null +++ b/liblinphone_tester/.gitignore @@ -0,0 +1,18 @@ +# built application files +*.apk +*.ap_ + +# files for the dex VM +*.dex + +# Java class files +*.class + +# generated files +bin/ +gen/ +libs/ +obj/ + +# Local configuration file (sdk path, etc) +local.properties diff --git a/liblinphone_tester/.project b/liblinphone_tester/.project new file mode 100644 index 000000000..15cf6a0c3 --- /dev/null +++ b/liblinphone_tester/.project @@ -0,0 +1,40 @@ + + + liblinphoneTester + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + + + mediastreamer2 + 2 + /Users/ydiorcet/Desktop/linphone-android/submodules/linphone/mediastreamer2/java/src + + + diff --git a/liblinphone_tester/AndroidManifest.xml b/liblinphone_tester/AndroidManifest.xml new file mode 100644 index 000000000..95dfc350d --- /dev/null +++ b/liblinphone_tester/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/liblinphone_tester/jni/Android.mk b/liblinphone_tester/jni/Android.mk new file mode 100644 index 000000000..bacf8a993 --- /dev/null +++ b/liblinphone_tester/jni/Android.mk @@ -0,0 +1,3 @@ +include ../jni/Android.mk +include $(linphone-root-dir)/submodules/externals/build/cunit/Android.mk +include $(linphone-root-dir)/submodules/linphone/build/android/liblinphone_tester.mk diff --git a/liblinphone_tester/jni/Application.mk b/liblinphone_tester/jni/Application.mk new file mode 100644 index 000000000..1e824c4cd --- /dev/null +++ b/liblinphone_tester/jni/Application.mk @@ -0,0 +1,7 @@ +LOCAL_PATH:= $(call my-dir) +include ../jni/Application.mk +APP_PROJECT_PATH := $(LOCAL_PATH)/../ +APP_BUILD_SCRIPT := $(LOCAL_PATH)/Android.mk +APP_OPTIM := debug + +APP_MODULES += cunit liblinphone_tester liblinphone_testernoneon diff --git a/liblinphone_tester/res/drawable-hdpi/ic_launcher.png b/liblinphone_tester/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..96a442e5b8e9394ccf50bab9988cb2316026245d GIT binary patch literal 9397 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 literal 0 HcmV?d00001 diff --git a/liblinphone_tester/res/drawable-xhdpi/ic_launcher.png b/liblinphone_tester/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..71c6d760f05183ef8a47c614d8d13380c8528499 GIT binary patch literal 14383 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 literal 0 HcmV?d00001 diff --git a/liblinphone_tester/res/layout/activity_main.xml b/liblinphone_tester/res/layout/activity_main.xml new file mode 100644 index 000000000..69f4752d0 --- /dev/null +++ b/liblinphone_tester/res/layout/activity_main.xml @@ -0,0 +1,34 @@ + + +