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
