diff --git a/jni/libopus/config.log b/jni/libopus/config.log
new file mode 100644
index 0000000..4800e8c
--- /dev/null
+++ b/jni/libopus/config.log
@@ -0,0 +1,1086 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by opus configure 1.0.3, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ ./configure --build=i386
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = pcal
+uname -m = x86_64
+uname -r = 3.11.1-200.fc19.x86_64
+uname -s = Linux
+uname -v = #1 SMP Sat Sep 14 15:04:51 UTC 2013
+
+/usr/bin/uname -p = x86_64
+/bin/uname -X     = unknown
+
+/bin/arch              = x86_64
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+/usr/bin/hostinfo      = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /usr/lib64/qt-3.3/bin
+PATH: /usr/lib64/ccache
+PATH: /usr/local/bin
+PATH: /usr/bin
+PATH: /bin
+PATH: /usr/local/sbin
+PATH: /usr/sbin
+PATH: /home/lisional/.local/bin
+PATH: /usr/local/bin
+PATH: /home/lisional/bin
+PATH: /home/lisional/Dev/ADT/sdk/tools
+PATH: /home/lisional/Dev/ADT/sdk/platform-tools
+PATH: /home/lisional/Dev/ADT/ndk
+PATH: /home/lisional/.local/bin
+PATH: /home/lisional/.local/bin
+PATH: /usr/local/bin
+PATH: /home/lisional/bin
+PATH: /home/lisional/Dev/ADT/sdk/tools
+PATH: /home/lisional/Dev/ADT/sdk/platform-tools
+PATH: /home/lisional/Dev/ADT/ndk
+PATH: /home/lisional/.local/bin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:2413: checking whether make supports nested variables
+configure:2430: result: yes
+configure:2497: checking for a BSD-compatible install
+configure:2565: result: /usr/bin/install -c
+configure:2576: checking whether build environment is sane
+configure:2626: result: yes
+configure:2767: checking for a thread-safe mkdir -p
+configure:2806: result: /usr/bin/mkdir -p
+configure:2819: checking for gawk
+configure:2835: found /usr/bin/gawk
+configure:2846: result: gawk
+configure:2857: checking whether make sets $(MAKE)
+configure:2879: result: yes
+configure:2951: checking whether to enable maintainer-specific portions of Makefiles
+configure:2960: result: yes
+configure:2978: checking build system type
+configure:2992: result: i386-pc-none
+configure:3012: checking host system type
+configure:3025: result: i386-pc-none
+configure:3097: checking how to print strings
+configure:3124: result: printf
+configure:3157: checking for style of include used by make
+configure:3185: result: GNU
+configure:3256: checking for gcc
+configure:3272: found /usr/lib64/ccache/gcc
+configure:3283: result: gcc
+configure:3512: checking for C compiler version
+configure:3521: gcc --version >&5
+gcc (GCC) 4.8.1 20130603 (Red Hat 4.8.1-1)
+Copyright (C) 2013 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:3532: $? = 0
+configure:3521: gcc -v >&5
+Using built-in specs.
+COLLECT_GCC=/usr/bin/gcc
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.1/lto-wrapper
+Target: x86_64-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-isl=/builddir/build/BUILD/gcc-4.8.1-20130603/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.1-20130603/obj-x86_64-redhat-linux/cloog-install --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
+Thread model: posix
+gcc version 4.8.1 20130603 (Red Hat 4.8.1-1) (GCC) 
+configure:3532: $? = 0
+configure:3521: gcc -V >&5
+gcc: error: unrecognized command line option '-V'
+gcc: fatal error: no input files
+compilation terminated.
+configure:3532: $? = 4
+configure:3521: gcc -qversion >&5
+gcc: error: unrecognized command line option '-qversion'
+gcc: fatal error: no input files
+compilation terminated.
+configure:3532: $? = 4
+configure:3552: checking whether the C compiler works
+configure:3574: gcc    conftest.c  >&5
+configure:3578: $? = 0
+configure:3626: result: yes
+configure:3629: checking for C compiler default output file name
+configure:3631: result: a.out
+configure:3637: checking for suffix of executables
+configure:3644: gcc -o conftest    conftest.c  >&5
+configure:3648: $? = 0
+configure:3670: result: 
+configure:3692: checking whether we are cross compiling
+configure:3700: gcc -o conftest    conftest.c  >&5
+configure:3704: $? = 0
+configure:3711: ./conftest
+configure:3715: $? = 0
+configure:3730: result: no
+configure:3735: checking for suffix of object files
+configure:3757: gcc -c   conftest.c >&5
+configure:3761: $? = 0
+configure:3782: result: o
+configure:3786: checking whether we are using the GNU C compiler
+configure:3805: gcc -c   conftest.c >&5
+configure:3805: $? = 0
+configure:3814: result: yes
+configure:3823: checking whether gcc accepts -g
+configure:3843: gcc -c -g  conftest.c >&5
+configure:3843: $? = 0
+configure:3884: result: yes
+configure:3901: checking for gcc option to accept ISO C89
+configure:3965: gcc  -c -g -O2  conftest.c >&5
+configure:3965: $? = 0
+configure:3978: result: none needed
+configure:4000: checking dependency style of gcc
+configure:4111: result: gcc3
+configure:4126: checking for a sed that does not truncate output
+configure:4190: result: /usr/bin/sed
+configure:4208: checking for grep that handles long lines and -e
+configure:4266: result: /usr/bin/grep
+configure:4271: checking for egrep
+configure:4333: result: /usr/bin/grep -E
+configure:4338: checking for fgrep
+configure:4400: result: /usr/bin/grep -F
+configure:4435: checking for ld used by gcc
+configure:4502: result: /usr/bin/ld
+configure:4509: checking if the linker (/usr/bin/ld) is GNU ld
+configure:4524: result: yes
+configure:4536: checking for BSD- or MS-compatible name lister (nm)
+configure:4585: result: /usr/bin/nm -B
+configure:4715: checking the name lister (/usr/bin/nm -B) interface
+configure:4722: gcc -c -g -O2  conftest.c >&5
+configure:4725: /usr/bin/nm -B "conftest.o"
+configure:4728: output
+0000000000000000 B some_variable
+configure:4735: result: BSD nm
+configure:4738: checking whether ln -s works
+configure:4742: result: yes
+configure:4750: checking the maximum length of command line arguments
+configure:4880: result: 1572864
+configure:4897: checking whether the shell understands some XSI constructs
+configure:4907: result: yes
+configure:4911: checking whether the shell understands "+="
+configure:4917: result: yes
+configure:4952: checking how to convert i386-pc-none file names to i386-pc-none format
+configure:4992: result: func_convert_file_noop
+configure:4999: checking how to convert i386-pc-none file names to toolchain format
+configure:5019: result: func_convert_file_noop
+configure:5026: checking for /usr/bin/ld option to reload object files
+configure:5033: result: -r
+configure:5107: checking for objdump
+configure:5123: found /usr/bin/objdump
+configure:5134: result: objdump
+configure:5166: checking how to recognize dependent libraries
+configure:5368: result: unknown
+configure:5453: checking for dlltool
+configure:5483: result: no
+configure:5513: checking how to associate runtime and link libraries
+configure:5540: result: printf %s\n
+configure:5601: checking for ar
+configure:5617: found /usr/bin/ar
+configure:5628: result: ar
+configure:5665: checking for archiver @FILE support
+configure:5682: gcc -c -g -O2  conftest.c >&5
+configure:5682: $? = 0
+configure:5685: ar cru libconftest.a @conftest.lst >&5
+configure:5688: $? = 0
+configure:5693: ar cru libconftest.a @conftest.lst >&5
+ar: conftest.o: No such file or directory
+configure:5696: $? = 1
+configure:5708: result: @
+configure:5766: checking for strip
+configure:5782: found /usr/bin/strip
+configure:5793: result: strip
+configure:5865: checking for ranlib
+configure:5881: found /usr/bin/ranlib
+configure:5892: result: ranlib
+configure:5994: checking command to parse /usr/bin/nm -B output from gcc object
+configure:6114: gcc -c -g -O2  conftest.c >&5
+configure:6117: $? = 0
+configure:6121: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm
+configure:6124: $? = 0
+configure:6190: gcc -o conftest -g -O2   conftest.c conftstm.o >&5
+configure:6193: $? = 0
+configure:6231: result: ok
+configure:6268: checking for sysroot
+configure:6298: result: no
+configure:6554: checking for mt
+configure:6584: result: no
+configure:6604: checking if : is a manifest tool
+configure:6610: : '-?'
+configure:6618: result: no
+configure:7260: checking how to run the C preprocessor
+configure:7291: gcc -E  conftest.c
+configure:7291: $? = 0
+configure:7305: gcc -E  conftest.c
+conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
+ #include <ac_nonexistent.h>
+                            ^
+compilation terminated.
+configure:7305: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME "opus"
+| #define PACKAGE_TARNAME "opus"
+| #define PACKAGE_VERSION "1.0.3"
+| #define PACKAGE_STRING "opus 1.0.3"
+| #define PACKAGE_BUGREPORT "opus@xiph.org"
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:7330: result: gcc -E
+configure:7350: gcc -E  conftest.c
+configure:7350: $? = 0
+configure:7364: gcc -E  conftest.c
+conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
+ #include <ac_nonexistent.h>
+                            ^
+compilation terminated.
+configure:7364: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME "opus"
+| #define PACKAGE_TARNAME "opus"
+| #define PACKAGE_VERSION "1.0.3"
+| #define PACKAGE_STRING "opus 1.0.3"
+| #define PACKAGE_BUGREPORT "opus@xiph.org"
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:7393: checking for ANSI C header files
+configure:7413: gcc -c -g -O2  conftest.c >&5
+configure:7413: $? = 0
+configure:7486: gcc -o conftest -g -O2   conftest.c  >&5
+configure:7486: $? = 0
+configure:7486: ./conftest
+configure:7486: $? = 0
+configure:7497: result: yes
+configure:7510: checking for sys/types.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for sys/stat.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for stdlib.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for string.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for memory.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for strings.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for inttypes.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for stdint.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7510: checking for unistd.h
+configure:7510: gcc -c -g -O2  conftest.c >&5
+configure:7510: $? = 0
+configure:7510: result: yes
+configure:7524: checking for dlfcn.h
+configure:7524: gcc -c -g -O2  conftest.c >&5
+configure:7524: $? = 0
+configure:7524: result: yes
+configure:7730: checking for objdir
+configure:7745: result: .libs
+configure:8016: checking if gcc supports -fno-rtti -fno-exceptions
+configure:8034: gcc -c -g -O2  -fno-rtti -fno-exceptions conftest.c >&5
+cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default]
+cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default]
+configure:8038: $? = 0
+configure:8051: result: no
+configure:8378: checking for gcc option to produce PIC
+configure:8385: result: -fPIC -DPIC
+configure:8393: checking if gcc PIC flag -fPIC -DPIC works
+configure:8411: gcc -c -g -O2  -fPIC -DPIC -DPIC conftest.c >&5
+configure:8415: $? = 0
+configure:8428: result: yes
+configure:8457: checking if gcc static flag -static works
+configure:8485: result: no
+configure:8500: checking if gcc supports -c -o file.o
+configure:8521: gcc -c -g -O2  -o out/conftest2.o conftest.c >&5
+configure:8525: $? = 0
+configure:8547: result: yes
+configure:8555: checking if gcc supports -c -o file.o
+configure:8602: result: yes
+configure:8635: checking whether the gcc linker (/usr/bin/ld) supports shared libraries
+configure:9788: result: yes
+configure:9825: checking whether -lc should be explicitly linked in
+configure:9833: gcc -c -g -O2  conftest.c >&5
+configure:9836: $? = 0
+configure:9851: gcc -shared  -fPIC -DPIC conftest.o  -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/bin/grep  -lc  \>/dev/null 2\>\&1
+configure:9854: $? = 0
+configure:9868: result: no
+configure:10028: checking dynamic linker characteristics
+configure:10765: result: no
+configure:10872: checking how to hardcode library paths into programs
+configure:10897: result: immediate
+configure:11437: checking whether stripping libraries is possible
+configure:11442: result: yes
+configure:11477: checking if libtool supports shared libraries
+configure:11479: result: no
+configure:11482: checking whether to build shared libraries
+configure:11503: result: no
+configure:11506: checking whether to build static libraries
+configure:11510: result: yes
+configure:11548: checking whether gcc and cc understand -c and -o together
+configure:11579: gcc -c conftest.c -o conftest2.o >&5
+configure:11583: $? = 0
+configure:11589: gcc -c conftest.c -o conftest2.o >&5
+configure:11593: $? = 0
+configure:11604: cc -c conftest.c >&5
+configure:11608: $? = 0
+configure:11616: cc -c conftest.c -o conftest2.o >&5
+configure:11620: $? = 0
+configure:11626: cc -c conftest.c -o conftest2.o >&5
+configure:11630: $? = 0
+configure:11648: result: yes
+configure:11674: checking for gcc option to accept ISO C99
+configure:11823: gcc  -c -g -O2  conftest.c >&5
+conftest.c:71:29: error: expected ';', ',' or ')' before 'text'
+ test_restrict (ccp restrict text)
+                             ^
+conftest.c: In function 'main':
+conftest.c:125:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'newvar'
+   char *restrict newvar = "Another string";
+                  ^
+conftest.c:125:18: error: 'newvar' undeclared (first use in this function)
+conftest.c:125:18: note: each undeclared identifier is reported only once for each function it appears in
+conftest.c:135:3: error: 'for' loop initial declarations are only allowed in C99 mode
+   for (int i = 0; i < ia->datasize; ++i)
+   ^
+conftest.c:135:3: note: use option -std=c99 or -std=gnu99 to compile your code
+configure:11823: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME "opus"
+| #define PACKAGE_TARNAME "opus"
+| #define PACKAGE_VERSION "1.0.3"
+| #define PACKAGE_STRING "opus 1.0.3"
+| #define PACKAGE_BUGREPORT "opus@xiph.org"
+| #define PACKAGE_URL ""
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #define LT_OBJDIR ".libs/"
+| /* end confdefs.h.  */
+| #include <stdarg.h>
+| #include <stdbool.h>
+| #include <stdlib.h>
+| #include <wchar.h>
+| #include <stdio.h>
+| 
+| // Check varargs macros.  These examples are taken from C99 6.10.3.5.
+| #define debug(...) fprintf (stderr, __VA_ARGS__)
+| #define showlist(...) puts (#__VA_ARGS__)
+| #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+| static void
+| test_varargs_macros (void)
+| {
+|   int x = 1234;
+|   int y = 5678;
+|   debug ("Flag");
+|   debug ("X = %d\n", x);
+|   showlist (The first, second, and third items.);
+|   report (x>y, "x is %d but y is %d", x, y);
+| }
+| 
+| // Check long long types.
+| #define BIG64 18446744073709551615ull
+| #define BIG32 4294967295ul
+| #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+| #if !BIG_OK
+|   your preprocessor is broken;
+| #endif
+| #if BIG_OK
+| #else
+|   your preprocessor is broken;
+| #endif
+| static long long int bignum = -9223372036854775807LL;
+| static unsigned long long int ubignum = BIG64;
+| 
+| struct incomplete_array
+| {
+|   int datasize;
+|   double data[];
+| };
+| 
+| struct named_init {
+|   int number;
+|   const wchar_t *name;
+|   double average;
+| };
+| 
+| typedef const char *ccp;
+| 
+| static inline int
+| test_restrict (ccp restrict text)
+| {
+|   // See if C++-style comments work.
+|   // Iterate through items via the restricted pointer.
+|   // Also check for declarations in for loops.
+|   for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+|     continue;
+|   return 0;
+| }
+| 
+| // Check varargs and va_copy.
+| static void
+| test_varargs (const char *format, ...)
+| {
+|   va_list args;
+|   va_start (args, format);
+|   va_list args_copy;
+|   va_copy (args_copy, args);
+| 
+|   const char *str;
+|   int number;
+|   float fnumber;
+| 
+|   while (*format)
+|     {
+|       switch (*format++)
+| 	{
+| 	case 's': // string
+| 	  str = va_arg (args_copy, const char *);
+| 	  break;
+| 	case 'd': // int
+| 	  number = va_arg (args_copy, int);
+| 	  break;
+| 	case 'f': // float
+| 	  fnumber = va_arg (args_copy, double);
+| 	  break;
+| 	default:
+| 	  break;
+| 	}
+|     }
+|   va_end (args_copy);
+|   va_end (args);
+| }
+| 
+| int
+| main ()
+| {
+| 
+|   // Check bool.
+|   _Bool success = false;
+| 
+|   // Check restrict.
+|   if (test_restrict ("String literal") == 0)
+|     success = true;
+|   char *restrict newvar = "Another string";
+| 
+|   // Check varargs.
+|   test_varargs ("s, d' f .", "string", 65, 34.234);
+|   test_varargs_macros ();
+| 
+|   // Check flexible array members.
+|   struct incomplete_array *ia =
+|     malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+|   ia->datasize = 10;
+|   for (int i = 0; i < ia->datasize; ++i)
+|     ia->data[i] = i * 1.234;
+| 
+|   // Check named initializers.
+|   struct named_init ni = {
+|     .number = 34,
+|     .name = L"Test wide string",
+|     .average = 543.34343,
+|   };
+| 
+|   ni.number = 58;
+| 
+|   int dynamic_array[ni.number];
+|   dynamic_array[ni.number - 1] = 543;
+| 
+|   // work around unused variable warnings
+|   return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+| 	  || dynamic_array[ni.number - 1] != 543);
+| 
+|   ;
+|   return 0;
+| }
+configure:11823: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:11823: $? = 0
+configure:11843: result: -std=gnu99
+configure:11851: checking for an ANSI C-conforming const
+configure:11916: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:11916: $? = 0
+configure:11923: result: yes
+configure:11931: checking for inline
+configure:11947: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:11947: $? = 0
+configure:11955: result: inline
+configure:11976: checking for C/C++ restrict keyword
+configure:12001: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:12001: $? = 0
+configure:12009: result: __restrict
+configure:12026: checking for C99 variable-size arrays
+configure:12039: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:12039: $? = 0
+configure:12049: result: yes
+configure:12055: checking alloca.h usability
+configure:12055: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:12055: $? = 0
+configure:12055: result: yes
+configure:12055: checking alloca.h presence
+configure:12055: gcc -E  conftest.c
+configure:12055: $? = 0
+configure:12055: result: yes
+configure:12055: checking for alloca.h
+configure:12055: result: yes
+configure:12055: checking getopt.h usability
+configure:12055: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:12055: $? = 0
+configure:12055: result: yes
+configure:12055: checking getopt.h presence
+configure:12055: gcc -E  conftest.c
+configure:12055: $? = 0
+configure:12055: result: yes
+configure:12055: checking for getopt.h
+configure:12055: result: yes
+configure:12065: checking for alloca
+configure:12081: gcc -std=gnu99 -c -g -O2  conftest.c >&5
+configure:12081: $? = 0
+configure:12095: result: yes
+configure:12098: checking for exp
+configure:12098: gcc -std=gnu99 -o conftest -g -O2   conftest.c  >&5
+conftest.c:49:6: warning: conflicting types for built-in function 'exp' [enabled by default]
+ char exp ();
+      ^
+/tmp/ccb37J8e.o: In function `main':
+/home/lisional/git/sflphone-android/jni/libopus/conftest.c:60: undefined reference to `exp'
+collect2: error: ld returned 1 exit status
+configure:12098: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME "opus"
+| #define PACKAGE_TARNAME "opus"
+| #define PACKAGE_VERSION "1.0.3"
+| #define PACKAGE_STRING "opus 1.0.3"
+| #define PACKAGE_BUGREPORT "opus@xiph.org"
+| #define PACKAGE_URL ""
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #define LT_OBJDIR ".libs/"
+| #define restrict __restrict
+| #define OPUS_BUILD /**/
+| #define VAR_ARRAYS /**/
+| #define HAVE_ALLOCA_H 1
+| #define HAVE_GETOPT_H 1
+| /* end confdefs.h.  */
+| /* Define exp to an innocuous variant, in case <limits.h> declares exp.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define exp innocuous_exp
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char exp (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef exp
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char exp ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_exp || defined __stub___exp
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return exp ();
+|   ;
+|   return 0;
+| }
+configure:12098: result: no
+configure:12106: checking for exp in -lm
+configure:12131: gcc -std=gnu99 -o conftest -g -O2   conftest.c -lm   >&5
+conftest.c:33:6: warning: conflicting types for built-in function 'exp' [enabled by default]
+ char exp ();
+      ^
+configure:12131: $? = 0
+configure:12140: result: yes
+configure:12249: checking for doxygen
+configure:12265: found /usr/bin/doxygen
+configure:12277: result: yes
+configure:12300: checking if gcc -std=gnu99 supports -fvisibility=hidden
+configure:12306: gcc -std=gnu99 -c -g -O2 -fvisibility=hidden  conftest.c >&5
+configure:12306: $? = 0
+configure:12307: result: yes
+configure:12322: checking if gcc -std=gnu99 supports -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes
+configure:12328: gcc -std=gnu99 -c -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes  conftest.c >&5
+configure:12328: $? = 0
+configure:12329: result: yes
+configure:12341: checking for lrintf
+configure:12341: gcc -std=gnu99 -o conftest -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes   conftest.c -lm  >&5
+conftest.c:49:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ char lrintf ();
+ ^
+conftest.c:49:6: warning: conflicting types for built-in function 'lrintf' [enabled by default]
+ char lrintf ();
+      ^
+conftest.c:58:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ main ()
+ ^
+configure:12341: $? = 0
+configure:12341: result: yes
+configure:12352: checking for lrint
+configure:12352: gcc -std=gnu99 -o conftest -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes   conftest.c -lm  >&5
+conftest.c:50:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ char lrint ();
+ ^
+conftest.c:50:6: warning: conflicting types for built-in function 'lrint' [enabled by default]
+ char lrint ();
+      ^
+conftest.c:59:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ main ()
+ ^
+configure:12352: $? = 0
+configure:12352: result: yes
+configure:12363: checking for __malloc_hook
+configure:12363: gcc -std=gnu99 -o conftest -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes   conftest.c -lm  >&5
+conftest.c:51:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ char __malloc_hook ();
+ ^
+conftest.c:60:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ main ()
+ ^
+configure:12363: $? = 0
+configure:12363: result: yes
+configure:12377: checking size of short
+configure:12382: gcc -std=gnu99 -o conftest -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes   conftest.c -lm  >&5
+conftest.c:62:17: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static long int longval () { return (long int) (sizeof (short)); }
+                 ^
+conftest.c:63:26: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static unsigned long int ulongval () { return (long int) (sizeof (short)); }
+                          ^
+conftest.c:67:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ main ()
+ ^
+configure:12382: $? = 0
+configure:12382: ./conftest
+configure:12382: $? = 0
+configure:12396: result: 2
+configure:12410: checking size of int
+configure:12415: gcc -std=gnu99 -o conftest -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes   conftest.c -lm  >&5
+conftest.c:63:17: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static long int longval () { return (long int) (sizeof (int)); }
+                 ^
+conftest.c:64:26: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static unsigned long int ulongval () { return (long int) (sizeof (int)); }
+                          ^
+conftest.c:68:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ main ()
+ ^
+configure:12415: $? = 0
+configure:12415: ./conftest
+configure:12415: $? = 0
+configure:12429: result: 4
+configure:12443: checking size of long
+configure:12448: gcc -std=gnu99 -o conftest -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes   conftest.c -lm  >&5
+conftest.c:64:17: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static long int longval () { return (long int) (sizeof (long)); }
+                 ^
+conftest.c:65:26: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static unsigned long int ulongval () { return (long int) (sizeof (long)); }
+                          ^
+conftest.c:69:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ main ()
+ ^
+configure:12448: $? = 0
+configure:12448: ./conftest
+configure:12448: $? = 0
+configure:12462: result: 8
+configure:12476: checking size of long long
+configure:12481: gcc -std=gnu99 -o conftest -g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes   conftest.c -lm  >&5
+conftest.c:65:17: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static long int longval () { return (long int) (sizeof (long long)); }
+                 ^
+conftest.c:66:26: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ static unsigned long int ulongval () { return (long int) (sizeof (long long)); }
+                          ^
+conftest.c:70:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ main ()
+ ^
+configure:12481: $? = 0
+configure:12481: ./conftest
+configure:12481: $? = 0
+configure:12495: result: 8
+configure:12718: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by opus config.status 1.0.3, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on pcal
+
+config.status:1122: creating Makefile
+config.status:1122: creating opus.pc
+config.status:1122: creating opus-uninstalled.pc
+config.status:1122: creating doc/Makefile
+config.status:1122: creating doc/Doxyfile
+config.status:1122: creating config.h
+config.status:1351: executing depfiles commands
+config.status:1351: executing libtool commands
+configure:14982: result:
+------------------------------------------------------------------------
+  opus 1.0.3:  Automatic configuration OK.
+
+    Compiler support:
+
+      C99 var arrays: ................ yes
+      C99 lrintf: .................... yes
+      Alloca: ........................ yes
+
+    General configuration:
+
+      Floating point support: ........ yes
+      Fast float approximations: ..... no
+      Fixed point debugging: ......... no
+      Custom modes: .................. no
+      Assertion checking: ............ no
+      Fuzzing: ....................... no
+
+      API documentation: ............. yes
+------------------------------------------------------------------------
+
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_build=i386-pc-none
+ac_cv_c_compiler_gnu=yes
+ac_cv_c_const=yes
+ac_cv_c_inline=inline
+ac_cv_c_restrict=__restrict
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=
+ac_cv_env_build_alias_set=set
+ac_cv_env_build_alias_value=i386
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_func___malloc_hook=yes
+ac_cv_func_exp=no
+ac_cv_func_lrint=yes
+ac_cv_func_lrintf=yes
+ac_cv_header_alloca_h=yes
+ac_cv_header_dlfcn_h=yes
+ac_cv_header_getopt_h=yes
+ac_cv_header_inttypes_h=yes
+ac_cv_header_memory_h=yes
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=yes
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=yes
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_types_h=yes
+ac_cv_header_unistd_h=yes
+ac_cv_host=i386-pc-none
+ac_cv_lib_m_exp=yes
+ac_cv_objext=o
+ac_cv_path_EGREP='/usr/bin/grep -E'
+ac_cv_path_FGREP='/usr/bin/grep -F'
+ac_cv_path_GREP=/usr/bin/grep
+ac_cv_path_SED=/usr/bin/sed
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_path_mkdir=/usr/bin/mkdir
+ac_cv_prog_AWK=gawk
+ac_cv_prog_CPP='gcc -E'
+ac_cv_prog_HAVE_DOXYGEN=yes
+ac_cv_prog_ac_ct_AR=ar
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_ac_ct_OBJDUMP=objdump
+ac_cv_prog_ac_ct_RANLIB=ranlib
+ac_cv_prog_ac_ct_STRIP=strip
+ac_cv_prog_cc_c89=
+ac_cv_prog_cc_c99=-std=gnu99
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cc_gcc_c_o=yes
+ac_cv_prog_make_make_set=yes
+ac_cv_sizeof_int=4
+ac_cv_sizeof_long=8
+ac_cv_sizeof_long_long=8
+ac_cv_sizeof_short=2
+am_cv_CC_dependencies_compiler_type=gcc3
+am_cv_make_support_nested_variables=yes
+lt_cv_ar_at_file=@
+lt_cv_archive_cmds_need_lc=no
+lt_cv_deplibs_check_method=unknown
+lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_ld_reload_flag=-r
+lt_cv_nm_interface='BSD nm'
+lt_cv_objdir=.libs
+lt_cv_path_LD=/usr/bin/ld
+lt_cv_path_NM='/usr/bin/nm -B'
+lt_cv_path_mainfest_tool=no
+lt_cv_prog_compiler_c_o=yes
+lt_cv_prog_compiler_pic='-fPIC -DPIC'
+lt_cv_prog_compiler_pic_works=yes
+lt_cv_prog_compiler_rtti_exceptions=no
+lt_cv_prog_compiler_static_works=no
+lt_cv_prog_gnu_ld=yes
+lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
+lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[	 ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[	 ][	 ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
+lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"\2", (void *) \&\2},/p'\'''
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/  {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/  {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/  {"lib\2", (void *) \&\2},/p'\'''
+lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\'''
+lt_cv_sys_max_cmd_len=1572864
+lt_cv_to_host_file_cmd=func_convert_file_noop
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+ACLOCAL='${SHELL} /home/lisional/git/sflphone-android/jni/libopus/missing --run aclocal-1.11'
+AMDEPBACKSLASH='\'
+AMDEP_FALSE='#'
+AMDEP_TRUE=''
+AMTAR='$${TAR-tar}'
+AM_BACKSLASH='\'
+AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+AM_DEFAULT_VERBOSITY='0'
+AM_V='$(V)'
+AR='ar'
+AUTOCONF='${SHELL} /home/lisional/git/sflphone-android/jni/libopus/missing --run autoconf'
+AUTOHEADER='${SHELL} /home/lisional/git/sflphone-android/jni/libopus/missing --run autoheader'
+AUTOMAKE='${SHELL} /home/lisional/git/sflphone-android/jni/libopus/missing --run automake-1.11'
+AWK='gawk'
+CC='gcc -std=gnu99'
+CCDEPMODE='depmode=gcc3'
+CFLAGS='-g -O2 -fvisibility=hidden -W -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes'
+CPP='gcc -E'
+CPPFLAGS=''
+CUSTOM_MODES_FALSE=''
+CUSTOM_MODES_TRUE='#'
+CYGPATH_W='echo'
+DEFS='-DHAVE_CONFIG_H'
+DEPDIR='.deps'
+DLLTOOL='false'
+DSYMUTIL=''
+DUMPBIN=''
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='/usr/bin/grep -E'
+EXEEXT=''
+FGREP='/usr/bin/grep -F'
+FIXED_POINT_FALSE=''
+FIXED_POINT_TRUE='#'
+GREP='/usr/bin/grep'
+HAVE_DOXYGEN='yes'
+HAVE_DOXYGEN_FALSE='#'
+HAVE_DOXYGEN_TRUE=''
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
+LD='/usr/bin/ld'
+LDFLAGS=''
+LIBM='-lm'
+LIBOBJS=''
+LIBS='-lm '
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+LIPO=''
+LN_S='ln -s'
+LTLIBOBJS=''
+MAINT=''
+MAINTAINER_MODE_FALSE='#'
+MAINTAINER_MODE_TRUE=''
+MAKEINFO='${SHELL} /home/lisional/git/sflphone-android/jni/libopus/missing --run makeinfo'
+MANIFEST_TOOL=':'
+MKDIR_P='/usr/bin/mkdir -p'
+NM='/usr/bin/nm -B'
+NMEDIT=''
+OBJDUMP='objdump'
+OBJEXT='o'
+OPUS_LT_AGE='4'
+OPUS_LT_CURRENT='4'
+OPUS_LT_REVISION='0'
+OTOOL64=''
+OTOOL=''
+PACKAGE='opus'
+PACKAGE_BUGREPORT='opus@xiph.org'
+PACKAGE_NAME='opus'
+PACKAGE_STRING='opus 1.0.3'
+PACKAGE_TARNAME='opus'
+PACKAGE_URL=''
+PACKAGE_VERSION='1.0.3'
+PATH_SEPARATOR=':'
+PC_BUILD='floating-point'
+PC_LIBM='-lm'
+RANLIB='ranlib'
+SED='/usr/bin/sed'
+SET_MAKE=''
+SHELL='/bin/sh'
+SIZE16='short'
+SIZE32='int'
+STRIP='strip'
+SYMBOL_VISIBILITY='-fvisibility=hidden'
+VERSION='1.0.3'
+ac_ct_AR='ar'
+ac_ct_CC='gcc'
+ac_ct_DUMPBIN=''
+am__EXEEXT_FALSE=''
+am__EXEEXT_TRUE='#'
+am__fastdepCC_FALSE='#'
+am__fastdepCC_TRUE=''
+am__include='include'
+am__isrc=''
+am__leading_dot='.'
+am__nodep='_no'
+am__quote=''
+am__tar='$${TAR-tar} chof - "$$tardir"'
+am__untar='$${TAR-tar} xf -'
+bindir='${exec_prefix}/bin'
+build='i386-pc-none'
+build_alias='i386'
+build_cpu='i386'
+build_os='none'
+build_vendor='pc'
+datadir='${datarootdir}'
+datarootdir='${prefix}/share'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+dvidir='${docdir}'
+exec_prefix='${prefix}'
+host='i386-pc-none'
+host_alias=''
+host_cpu='i386'
+host_os='none'
+host_vendor='pc'
+htmldir='${docdir}'
+includedir='${prefix}/include'
+infodir='${datarootdir}/info'
+install_sh='${SHELL} /home/lisional/git/sflphone-android/jni/libopus/install-sh'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localedir='${datarootdir}/locale'
+localstatedir='${prefix}/var'
+mandir='${datarootdir}/man'
+mkdir_p='/usr/bin/mkdir -p'
+oldincludedir='/usr/include'
+pdfdir='${docdir}'
+prefix='/usr/local'
+program_transform_name='s,x,x,'
+psdir='${docdir}'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+/* confdefs.h */
+#define PACKAGE_NAME "opus"
+#define PACKAGE_TARNAME "opus"
+#define PACKAGE_VERSION "1.0.3"
+#define PACKAGE_STRING "opus 1.0.3"
+#define PACKAGE_BUGREPORT "opus@xiph.org"
+#define PACKAGE_URL ""
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_DLFCN_H 1
+#define LT_OBJDIR ".libs/"
+#define restrict __restrict
+#define OPUS_BUILD /**/
+#define VAR_ARRAYS /**/
+#define HAVE_ALLOCA_H 1
+#define HAVE_GETOPT_H 1
+#define HAVE_LRINTF 1
+#define HAVE_LRINT 1
+#define HAVE___MALLOC_HOOK 1
+#define SIZEOF_SHORT 2
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 8
+#define SIZEOF_LONG_LONG 8
+
+configure: exit 0
