* #39101: updated pjsip stack, many android build enhancements.

The main issue here is due to the build system of the stack compared to a pure Android
NDK project. Generating arm and x86 ABI at the same time does not seem to be possible.
diff --git a/jni/pjproject-android/pjlib/build/os-auto.mak.in b/jni/pjproject-android/pjlib/build/os-auto.mak.in
index 3f35dce..1c7e330 100644
--- a/jni/pjproject-android/pjlib/build/os-auto.mak.in
+++ b/jni/pjproject-android/pjlib/build/os-auto.mak.in
@@ -23,7 +23,8 @@
 #
 # Additional LDFLAGS for pjlib-test
 #
-export TEST_LDFLAGS += @LDFLAGS@ @LIBS@
+# Disabled, as this causes duplicated LDFLAGS, which may raise linking errors
+#export TEST_LDFLAGS += @LDFLAGS@ @LIBS@
 
 #
 # TARGETS are make targets in the Makefile, to be executed for this given
diff --git a/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h b/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h
index 1d62ff7..1011728 100644
--- a/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h
+++ b/jni/pjproject-android/pjlib/include/pj/compat/cc_gcc.h
@@ -1,4 +1,4 @@
-/* $Id: cc_gcc.h 4624 2013-10-21 06:37:30Z ming $ */
+/* $Id: cc_gcc.h 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -63,7 +63,7 @@
 #endif
 
 #define PJ_INT64(val)		val##LL
-#define PJ_UINT64(val)		val##LLU
+#define PJ_UINT64(val)		val##ULL
 #define PJ_INT64_FMT		"L"
 
 
diff --git a/jni/pjproject-android/pjlib/include/pj/string.h b/jni/pjproject-android/pjlib/include/pj/string.h
index 849a474..20be005 100644
--- a/jni/pjproject-android/pjlib/include/pj/string.h
+++ b/jni/pjproject-android/pjlib/include/pj/string.h
@@ -1,4 +1,4 @@
-/* $Id: string.h 4440 2013-03-14 07:18:13Z riza $ */
+/* $Id: string.h 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -575,6 +575,15 @@
 				   unsigned base);
 
 /**
+ * Convert string to float.
+ *
+ * @param str	the string.
+ *
+ * @return the value.
+ */
+PJ_DECL(float) pj_strtof(const pj_str_t *str);
+
+/**
  * Utility to convert unsigned integer to string. Note that the
  * string will be NULL terminated.
  *
diff --git a/jni/pjproject-android/pjlib/include/pj/types.h b/jni/pjproject-android/pjlib/include/pj/types.h
index 230175a..a592703 100644
--- a/jni/pjproject-android/pjlib/include/pj/types.h
+++ b/jni/pjproject-android/pjlib/include/pj/types.h
@@ -1,4 +1,4 @@
-/* $Id: types.h 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id: types.h 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -86,15 +86,18 @@
 #   define PJ_T(literal_str)	literal_str
 #endif
 
+/** Some constants */
+enum pj_constants_
+{
+    /** Status is OK. */
+    PJ_SUCCESS=0,
 
-/** Status is OK. */
-#define PJ_SUCCESS  0
+    /** True value. */
+    PJ_TRUE=1,
 
-/** True value. */
-#define PJ_TRUE	    1
-
-/** False value. */
-#define PJ_FALSE    0
+    /** False value. */
+    PJ_FALSE=0
+};
 
 /**
  * File offset type.
diff --git a/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c b/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c
index eea57a9..85186dd 100644
--- a/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c
+++ b/jni/pjproject-android/pjlib/src/pj/ioqueue_epoll.c
@@ -1,4 +1,4 @@
-/* $Id: ioqueue_epoll.c 4528 2013-05-30 07:01:11Z ming $ */
+/* $Id: ioqueue_epoll.c 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
diff --git a/jni/pjproject-android/pjlib/src/pj/string.c b/jni/pjproject-android/pjlib/src/pj/string.c
index 22c3fde..decd58f 100644
--- a/jni/pjproject-android/pjlib/src/pj/string.c
+++ b/jni/pjproject-android/pjlib/src/pj/string.c
@@ -1,4 +1,4 @@
-/* $Id: string.c 4537 2013-06-19 06:47:43Z riza $ */
+/* $Id: string.c 4704 2014-01-16 05:30:46Z ming $ */
 /* 
  * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
  * Copyright (C) 2003-2008 Benny Prijono <benny@prijono.org>
@@ -175,6 +175,44 @@
     return value;
 }
 
+PJ_DEF(float) pj_strtof(const pj_str_t *str)
+{
+    pj_str_t part;
+    char *pdot;
+    float val;
+
+    if (str->slen == 0)
+	return 0;
+
+    pdot = (char*)pj_memchr(str->ptr, '.', str->slen);
+    part.ptr = str->ptr;
+    part.slen = pdot ? pdot - str->ptr : str->slen;
+
+    if (part.slen)
+	val = (float)pj_strtol(&part);
+    else
+	val = 0;
+
+    if (pdot) {
+	part.ptr = pdot + 1;
+	part.slen = (str->ptr + str->slen - pdot - 1);
+	if (part.slen) {
+	    pj_str_t endptr;
+	    float fpart, fdiv;
+	    int i;
+	    fpart = (float)pj_strtoul2(&part, &endptr, 10);
+	    fdiv = 1.0;
+	    for (i=0; i<(part.slen - endptr.slen); ++i)
+		    fdiv = fdiv * 10;
+	    if (val >= 0)
+		val += (fpart / fdiv);
+	    else
+		val -= (fpart / fdiv);
+	}
+    }
+    return val;
+}
+
 PJ_DEF(int) pj_utoa(unsigned long val, char *buf)
 {
     return pj_utoa_pad(val, buf, 0, 0);