This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.68.  Invocation command line was

  $ ./configure --host=arm-linux-androideabi --with-sysroot=/home/evigier/android-14b-toolchain/sysroot --prefix=/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr

## --------- ##
## Platform. ##
## --------- ##

hostname = evigier-ThinkPad-X220
uname -m = x86_64
uname -r = 3.0.0-17-generic
uname -s = Linux
uname -v = #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /home/evigier/android-14b-toolchain/bin
PATH: /home/evigier/android-14b-toolchain/bin
PATH: /home/evigier/tools/git-tools/bin
PATH: /usr/bin
PATH: /home/evigier/android-14b-toolchain/bin
PATH: /home/evigier/tools/git-tools/bin
PATH: /usr/bin
PATH: /home/evigier/bin
PATH: /usr/lib/lightdm/lightdm
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/games
PATH: /home/evigier/.vim/custom
PATH: /home/evigier/bin
PATH: /home/evigier/eclipse
PATH: /home/evigier/android-sdk-linux/tools
PATH: /home/evigier/android-sdk-linux/platform-tools
PATH: /home/evigier/android-ndk-r8b
PATH: /home/evigier/.vim/custom
PATH: /home/evigier/bin
PATH: /home/evigier/eclipse
PATH: /home/evigier/android-sdk-linux/tools
PATH: /home/evigier/android-sdk-linux/platform-tools
PATH: /home/evigier/android-ndk-r8b


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2609: checking build system type
configure:2623: result: x86_64-unknown-linux-gnu
configure:2643: checking host system type
configure:2656: result: arm-unknown-linux-androideabi
configure:2676: checking target system type
configure:2689: result: arm-unknown-linux-androideabi
configure:2724: checking for arm-linux-androideabi-gcc
configure:2740: found /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-gcc
configure:2751: result: arm-linux-androideabi-gcc
configure:3020: checking for C compiler version
configure:3029: arm-linux-androideabi-gcc --version >&5
arm-linux-androideabi-gcc (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 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:3040: $? = 0
configure:3029: arm-linux-androideabi-gcc -v >&5
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-gcc
COLLECT_LTO_WRAPPER=/home/evigier/android-14b-toolchain/bin/../libexec/gcc/arm-linux-androideabi/4.6.x-google/lto-wrapper
Target: arm-linux-androideabi
Configured with: /usr/local/google/home/andrewhsieh/ndk-andrewhsieh/src/build/../gcc/gcc-4.6/configure --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpfr=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpc=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --without-ppl --without-cloog --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --with-sysroot=/tmp/ndk-andrewhsieh/build/toolchain/prefix/sysroot --with-binutils-version=2.21 --with-mpfr-version=2.4.1 --with-mpc-version=0.8.1 --with-gmp-version=5.0.5 --with-gcc-version=4.6 --with-gdb-version=7.3.x --disable-bootstrap --disable-libquadmath --disable-plugin --enable-gold --enable-ld=default --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold
Thread model: posix
gcc version 4.6.x-google 20120106 (prerelease) (GCC) 
configure:3040: $? = 0
configure:3029: arm-linux-androideabi-gcc -V >&5
arm-linux-androideabi-gcc: error: unrecognized option '-V'
arm-linux-androideabi-gcc: fatal error: no input files
compilation terminated.
configure:3040: $? = 1
configure:3029: arm-linux-androideabi-gcc -qversion >&5
arm-linux-androideabi-gcc: error: unrecognized option '-qversion'
arm-linux-androideabi-gcc: fatal error: no input files
compilation terminated.
configure:3040: $? = 1
configure:3060: checking whether the C compiler works
configure:3082: arm-linux-androideabi-gcc    conftest.c  >&5
configure:3086: $? = 0
configure:3134: result: yes
configure:3137: checking for C compiler default output file name
configure:3139: result: a.out
configure:3145: checking for suffix of executables
configure:3152: arm-linux-androideabi-gcc -o conftest    conftest.c  >&5
configure:3156: $? = 0
configure:3178: result: 
configure:3200: checking whether we are cross compiling
configure:3208: arm-linux-androideabi-gcc -o conftest    conftest.c  >&5
configure:3212: $? = 0
configure:3219: ./conftest
/system/bin/linker: No such file or directory
configure:3223: $? = 255
configure:3238: result: yes
configure:3243: checking for suffix of object files
configure:3265: arm-linux-androideabi-gcc -c   conftest.c >&5
configure:3269: $? = 0
configure:3290: result: o
configure:3294: checking whether we are using the GNU C compiler
configure:3313: arm-linux-androideabi-gcc -c   conftest.c >&5
configure:3313: $? = 0
configure:3322: result: yes
configure:3331: checking whether arm-linux-androideabi-gcc accepts -g
configure:3351: arm-linux-androideabi-gcc -c -g  conftest.c >&5
configure:3351: $? = 0
configure:3392: result: yes
configure:3409: checking for arm-linux-androideabi-gcc option to accept ISO C89
configure:3473: arm-linux-androideabi-gcc  -c -g -O2  conftest.c >&5
configure:3473: $? = 0
configure:3486: result: none needed
configure:3511: checking how to run the C preprocessor
configure:3542: arm-linux-androideabi-gcc -E  conftest.c
configure:3542: $? = 0
configure:3556: arm-linux-androideabi-gcc -E  conftest.c
conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:3556: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3581: result: arm-linux-androideabi-gcc -E
configure:3601: arm-linux-androideabi-gcc -E  conftest.c
configure:3601: $? = 0
configure:3615: arm-linux-androideabi-gcc -E  conftest.c
conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:3615: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:3651: checking for arm-linux-androideabi-gcc
configure:3678: result: arm-linux-androideabi-gcc
configure:3947: checking for C compiler version
configure:3956: arm-linux-androideabi-gcc --version >&5
arm-linux-androideabi-gcc (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 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:3967: $? = 0
configure:3956: arm-linux-androideabi-gcc -v >&5
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-gcc
COLLECT_LTO_WRAPPER=/home/evigier/android-14b-toolchain/bin/../libexec/gcc/arm-linux-androideabi/4.6.x-google/lto-wrapper
Target: arm-linux-androideabi
Configured with: /usr/local/google/home/andrewhsieh/ndk-andrewhsieh/src/build/../gcc/gcc-4.6/configure --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpfr=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpc=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --without-ppl --without-cloog --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --with-sysroot=/tmp/ndk-andrewhsieh/build/toolchain/prefix/sysroot --with-binutils-version=2.21 --with-mpfr-version=2.4.1 --with-mpc-version=0.8.1 --with-gmp-version=5.0.5 --with-gcc-version=4.6 --with-gdb-version=7.3.x --disable-bootstrap --disable-libquadmath --disable-plugin --enable-gold --enable-ld=default --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold
Thread model: posix
gcc version 4.6.x-google 20120106 (prerelease) (GCC) 
configure:3967: $? = 0
configure:3956: arm-linux-androideabi-gcc -V >&5
arm-linux-androideabi-gcc: error: unrecognized option '-V'
arm-linux-androideabi-gcc: fatal error: no input files
compilation terminated.
configure:3967: $? = 1
configure:3956: arm-linux-androideabi-gcc -qversion >&5
arm-linux-androideabi-gcc: error: unrecognized option '-qversion'
arm-linux-androideabi-gcc: fatal error: no input files
compilation terminated.
configure:3967: $? = 1
configure:3971: checking whether we are using the GNU C compiler
configure:3999: result: yes
configure:4008: checking whether arm-linux-androideabi-gcc accepts -g
configure:4069: result: yes
configure:4086: checking for arm-linux-androideabi-gcc option to accept ISO C89
configure:4163: result: none needed
configure:4197: checking for arm-linux-androideabi-g++
configure:4213: found /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-g++
configure:4224: result: arm-linux-androideabi-g++
configure:4295: checking for C++ compiler version
configure:4304: arm-linux-androideabi-g++ --version >&5
arm-linux-androideabi-g++ (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 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:4315: $? = 0
configure:4304: arm-linux-androideabi-g++ -v >&5
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-g++
COLLECT_LTO_WRAPPER=/home/evigier/android-14b-toolchain/bin/../libexec/gcc/arm-linux-androideabi/4.6.x-google/lto-wrapper
Target: arm-linux-androideabi
Configured with: /usr/local/google/home/andrewhsieh/ndk-andrewhsieh/src/build/../gcc/gcc-4.6/configure --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpfr=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpc=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --without-ppl --without-cloog --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --with-sysroot=/tmp/ndk-andrewhsieh/build/toolchain/prefix/sysroot --with-binutils-version=2.21 --with-mpfr-version=2.4.1 --with-mpc-version=0.8.1 --with-gmp-version=5.0.5 --with-gcc-version=4.6 --with-gdb-version=7.3.x --disable-bootstrap --disable-libquadmath --disable-plugin --enable-gold --enable-ld=default --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold
Thread model: posix
gcc version 4.6.x-google 20120106 (prerelease) (GCC) 
configure:4315: $? = 0
configure:4304: arm-linux-androideabi-g++ -V >&5
arm-linux-androideabi-g++: error: unrecognized option '-V'
arm-linux-androideabi-g++: fatal error: no input files
compilation terminated.
configure:4315: $? = 1
configure:4304: arm-linux-androideabi-g++ -qversion >&5
arm-linux-androideabi-g++: error: unrecognized option '-qversion'
arm-linux-androideabi-g++: fatal error: no input files
compilation terminated.
configure:4315: $? = 1
configure:4319: checking whether we are using the GNU C++ compiler
configure:4338: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:4338: $? = 0
configure:4347: result: yes
configure:4356: checking whether arm-linux-androideabi-g++ accepts -g
configure:4376: arm-linux-androideabi-g++ -c -g  conftest.cpp >&5
configure:4376: $? = 0
configure:4417: result: yes
configure:4445: checking how to run the C++ preprocessor
configure:4472: arm-linux-androideabi-g++ -E  conftest.cpp
configure:4472: $? = 0
configure:4486: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:9:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:4486: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:4511: result: arm-linux-androideabi-g++ -E
configure:4531: arm-linux-androideabi-g++ -E  conftest.cpp
configure:4531: $? = 0
configure:4545: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:9:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:4545: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:4685: checking for C++ compiler version
configure:4694: arm-linux-androideabi-g++ --version >&5
arm-linux-androideabi-g++ (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 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:4705: $? = 0
configure:4694: arm-linux-androideabi-g++ -v >&5
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-g++
COLLECT_LTO_WRAPPER=/home/evigier/android-14b-toolchain/bin/../libexec/gcc/arm-linux-androideabi/4.6.x-google/lto-wrapper
Target: arm-linux-androideabi
Configured with: /usr/local/google/home/andrewhsieh/ndk-andrewhsieh/src/build/../gcc/gcc-4.6/configure --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpfr=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpc=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --without-ppl --without-cloog --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --with-sysroot=/tmp/ndk-andrewhsieh/build/toolchain/prefix/sysroot --with-binutils-version=2.21 --with-mpfr-version=2.4.1 --with-mpc-version=0.8.1 --with-gmp-version=5.0.5 --with-gcc-version=4.6 --with-gdb-version=7.3.x --disable-bootstrap --disable-libquadmath --disable-plugin --enable-gold --enable-ld=default --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold
Thread model: posix
gcc version 4.6.x-google 20120106 (prerelease) (GCC) 
configure:4705: $? = 0
configure:4694: arm-linux-androideabi-g++ -V >&5
arm-linux-androideabi-g++: error: unrecognized option '-V'
arm-linux-androideabi-g++: fatal error: no input files
compilation terminated.
configure:4705: $? = 1
configure:4694: arm-linux-androideabi-g++ -qversion >&5
arm-linux-androideabi-g++: error: unrecognized option '-qversion'
arm-linux-androideabi-g++: fatal error: no input files
compilation terminated.
configure:4705: $? = 1
configure:4709: checking whether we are using the GNU C++ compiler
configure:4737: result: yes
configure:4746: checking whether arm-linux-androideabi-g++ accepts -g
configure:4807: result: yes
configure:4832: checking for grep that handles long lines and -e
configure:4890: result: /bin/grep
configure:4895: checking for egrep
configure:4957: result: /bin/grep -E
configure:4962: checking for ANSI C header files
configure:4982: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:4982: $? = 0
configure:5066: result: yes
configure:5079: checking for sys/types.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for sys/stat.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for stdlib.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for string.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for memory.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for strings.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for inttypes.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for stdint.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5079: checking for unistd.h
configure:5079: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5079: $? = 0
configure:5079: result: yes
configure:5092: checking minix/config.h usability
configure:5092: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:52:26: fatal error: minix/config.h: No such file or directory
compilation terminated.
configure:5092: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <minix/config.h>
configure:5092: result: no
configure:5092: checking minix/config.h presence
configure:5092: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:19:26: fatal error: minix/config.h: No such file or directory
compilation terminated.
configure:5092: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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
| /* end confdefs.h.  */
| #include <minix/config.h>
configure:5092: result: no
configure:5092: checking for minix/config.h
configure:5092: result: no
configure:5113: checking whether it is safe to define __EXTENSIONS__
configure:5131: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:5131: $? = 0
configure:5138: result: yes
configure:5161: checking for arm-linux-androideabi-gcc
configure:5188: result: arm-linux-androideabi-gcc
configure:5457: checking for C compiler version
configure:5466: arm-linux-androideabi-gcc --version >&5
arm-linux-androideabi-gcc (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 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:5477: $? = 0
configure:5466: arm-linux-androideabi-gcc -v >&5
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-gcc
COLLECT_LTO_WRAPPER=/home/evigier/android-14b-toolchain/bin/../libexec/gcc/arm-linux-androideabi/4.6.x-google/lto-wrapper
Target: arm-linux-androideabi
Configured with: /usr/local/google/home/andrewhsieh/ndk-andrewhsieh/src/build/../gcc/gcc-4.6/configure --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpfr=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpc=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --without-ppl --without-cloog --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --with-sysroot=/tmp/ndk-andrewhsieh/build/toolchain/prefix/sysroot --with-binutils-version=2.21 --with-mpfr-version=2.4.1 --with-mpc-version=0.8.1 --with-gmp-version=5.0.5 --with-gcc-version=4.6 --with-gdb-version=7.3.x --disable-bootstrap --disable-libquadmath --disable-plugin --enable-gold --enable-ld=default --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold
Thread model: posix
gcc version 4.6.x-google 20120106 (prerelease) (GCC) 
configure:5477: $? = 0
configure:5466: arm-linux-androideabi-gcc -V >&5
arm-linux-androideabi-gcc: error: unrecognized option '-V'
arm-linux-androideabi-gcc: fatal error: no input files
compilation terminated.
configure:5477: $? = 1
configure:5466: arm-linux-androideabi-gcc -qversion >&5
arm-linux-androideabi-gcc: error: unrecognized option '-qversion'
arm-linux-androideabi-gcc: fatal error: no input files
compilation terminated.
configure:5477: $? = 1
configure:5481: checking whether we are using the GNU C compiler
configure:5509: result: yes
configure:5518: checking whether arm-linux-androideabi-gcc accepts -g
configure:5579: result: yes
configure:5596: checking for arm-linux-androideabi-gcc option to accept ISO C89
configure:5673: result: none needed
configure:5698: checking how to run the C preprocessor
configure:5768: result: arm-linux-androideabi-gcc -E
configure:5788: arm-linux-androideabi-gcc -E  conftest.c
configure:5788: $? = 0
configure:5802: arm-linux-androideabi-gcc -E  conftest.c
conftest.c:24:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:5802: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:5830: checking for library containing strerror
configure:5861: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  >&5
configure:5861: $? = 0
configure:5878: result: none required
configure:5907: checking for MSC environment
configure:5930: result: no
configure:6344: checking how to print strings
configure:6371: result: printf
configure:6392: checking for a sed that does not truncate output
configure:6456: result: /bin/sed
configure:6474: checking for fgrep
configure:6536: result: /bin/grep -F
configure:6571: checking for ld used by arm-linux-androideabi-gcc
configure:6638: result: /home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld
configure:6645: checking if the linker (/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld) is GNU ld
configure:6660: result: yes
configure:6672: checking for BSD- or MS-compatible name lister (nm)
configure:6721: result: /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-nm -B
configure:6851: checking the name lister (/home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-nm -B) interface
configure:6858: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:6861: /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-nm -B "conftest.o"
configure:6864: output
00000000 B some_variable
configure:6871: result: BSD nm
configure:6874: checking whether ln -s works
configure:6878: result: yes
configure:6886: checking the maximum length of command line arguments
configure:7011: result: 1572864
configure:7028: checking whether the shell understands some XSI constructs
configure:7038: result: yes
configure:7042: checking whether the shell understands "+="
configure:7048: result: yes
configure:7083: checking how to convert x86_64-unknown-linux-gnu file names to arm-unknown-linux-androideabi format
configure:7123: result: func_convert_file_noop
configure:7130: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format
configure:7150: result: func_convert_file_noop
configure:7157: checking for /home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld option to reload object files
configure:7164: result: -r
configure:7198: checking for arm-linux-androideabi-objdump
configure:7225: result: objdump
configure:7294: checking how to recognize dependent libraries
configure:7496: result: pass_all
configure:7541: checking for arm-linux-androideabi-dlltool
configure:7568: result: dlltool
configure:7638: checking how to associate runtime and link libraries
configure:7665: result: printf %s\n
configure:7681: checking for arm-linux-androideabi-ar
configure:7697: found /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-ar
configure:7708: result: arm-linux-androideabi-ar
configure:7789: checking for archiver @FILE support
configure:7806: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:7806: $? = 0
configure:7809: arm-linux-androideabi-ar cru libconftest.a @conftest.lst >&5
configure:7812: $? = 0
configure:7817: arm-linux-androideabi-ar cru libconftest.a @conftest.lst >&5
arm-linux-androideabi-ar: conftest.o: No such file or directory
configure:7820: $? = 1
configure:7832: result: @
configure:7850: checking for arm-linux-androideabi-strip
configure:7866: found /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-strip
configure:7877: result: arm-linux-androideabi-strip
configure:7949: checking for arm-linux-androideabi-ranlib
configure:7965: found /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-ranlib
configure:7976: result: arm-linux-androideabi-ranlib
configure:8093: checking for gawk
configure:8109: found /usr/bin/gawk
configure:8120: result: gawk
configure:8160: checking command to parse /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-nm -B output from arm-linux-androideabi-gcc object
configure:8279: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:8282: $? = 0
configure:8286: /home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-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:8289: $? = 0
configure:8355: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp conftstm.o >&5
configure:8358: $? = 0
configure:8396: result: ok
configure:8433: checking for sysroot
configure:8463: result: /home/evigier/android-14b-toolchain/sysroot
configure:8667: checking for arm-linux-androideabi-mt
configure:8697: result: no
configure:8707: checking for mt
configure:8723: found /bin/mt
configure:8734: result: mt
configure:8746: WARNING: using cross tools not prefixed with host triplet
configure:8757: checking if mt is a manifest tool
configure:8763: mt '-?'
configure:8771: result: no
configure:9400: checking for dlfcn.h
configure:9400: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:9400: $? = 0
configure:9400: result: yes
configure:9595: checking for objdir
configure:9610: result: .libs
configure:9881: checking if arm-linux-androideabi-gcc supports -fno-rtti -fno-exceptions
configure:9899: arm-linux-androideabi-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]
configure:9903: $? = 0
configure:9916: result: no
configure:10226: checking for arm-linux-androideabi-gcc option to produce PIC
configure:10233: result: -fPIC -DPIC
configure:10241: checking if arm-linux-androideabi-gcc PIC flag -fPIC -DPIC works
configure:10259: arm-linux-androideabi-gcc -c -g -O2  -fPIC -DPIC -DPIC conftest.c >&5
configure:10263: $? = 0
configure:10276: result: yes
configure:10305: checking if arm-linux-androideabi-gcc static flag -static works
configure:10333: result: yes
configure:10348: checking if arm-linux-androideabi-gcc supports -c -o file.o
configure:10369: arm-linux-androideabi-gcc -c -g -O2  -o out/conftest2.o conftest.c >&5
configure:10373: $? = 0
configure:10395: result: yes
configure:10403: checking if arm-linux-androideabi-gcc supports -c -o file.o
configure:10450: result: yes
configure:10483: checking whether the arm-linux-androideabi-gcc linker (/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld) supports shared libraries
configure:11645: result: yes
configure:11682: checking whether -lc should be explicitly linked in
configure:11690: arm-linux-androideabi-gcc -c -g -O2  conftest.c >&5
configure:11693: $? = 0
configure:11708: arm-linux-androideabi-gcc -shared  -fPIC -DPIC conftest.o  -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep  -lc  \>/dev/null 2\>\&1
configure:11711: $? = 0
configure:11725: result: no
configure:11890: checking dynamic linker characteristics
configure:12405: arm-linux-androideabi-gcc -o conftest -g -O2   -Wl,-rpath -Wl,/foo conftest.c  >&5
configure:12405: $? = 0
configure:12639: result: GNU/Linux ld.so
configure:12746: checking how to hardcode library paths into programs
configure:12771: result: immediate
configure:13311: checking whether stripping libraries is possible
configure:13316: result: yes
configure:13351: checking if libtool supports shared libraries
configure:13353: result: yes
configure:13356: checking whether to build shared libraries
configure:13377: result: yes
configure:13380: checking whether to build static libraries
configure:13384: result: yes
configure:13407: checking how to run the C++ preprocessor
configure:13473: result: arm-linux-androideabi-g++ -E
configure:13493: arm-linux-androideabi-g++ -E  conftest.cpp
configure:13493: $? = 0
configure:13507: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:26:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:13507: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:13677: checking for ld used by arm-linux-androideabi-g++
configure:13744: result: /home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld
configure:13751: checking if the linker (/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld) is GNU ld
configure:13766: result: yes
configure:13821: checking whether the arm-linux-androideabi-g++ linker (/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld) supports shared libraries
configure:14825: result: yes
configure:14860: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:14863: $? = 0
configure:15383: checking for arm-linux-androideabi-g++ option to produce PIC
configure:15390: result: -fPIC -DPIC
configure:15398: checking if arm-linux-androideabi-g++ PIC flag -fPIC -DPIC works
configure:15416: arm-linux-androideabi-g++ -c -Wno-psabi  -fPIC -DPIC -DPIC conftest.cpp >&5
configure:15420: $? = 0
configure:15433: result: yes
configure:15456: checking if arm-linux-androideabi-g++ static flag -static works
configure:15484: result: yes
configure:15496: checking if arm-linux-androideabi-g++ supports -c -o file.o
configure:15517: arm-linux-androideabi-g++ -c -Wno-psabi  -o out/conftest2.o conftest.cpp >&5
configure:15521: $? = 0
configure:15543: result: yes
configure:15548: checking if arm-linux-androideabi-g++ supports -c -o file.o
configure:15595: result: yes
configure:15625: checking whether the arm-linux-androideabi-g++ linker (/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld) supports shared libraries
configure:15662: result: yes
configure:15805: checking dynamic linker characteristics
configure:16488: result: GNU/Linux ld.so
configure:16541: checking how to hardcode library paths into programs
configure:16566: result: immediate
configure:16641: checking for a BSD-compatible install
configure:16709: result: /usr/bin/install -c
configure:16720: checking whether build environment is sane
configure:16770: result: yes
configure:16819: checking for arm-linux-androideabi-strip
configure:16846: result: arm-linux-androideabi-strip
configure:16911: checking for a thread-safe mkdir -p
configure:16950: result: /bin/mkdir -p
configure:16959: checking whether make sets $(MAKE)
configure:16981: result: yes
configure:17011: checking for style of include used by make
configure:17039: result: GNU
configure:17124: checking dependency style of arm-linux-androideabi-gcc
configure:17234: result: gcc3
configure:17251: checking dependency style of arm-linux-androideabi-g++
configure:17361: result: gcc3
configure:17380: checking for C/C++ restrict keyword
configure:17405: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17405: $? = 0
configure:17413: result: __restrict
configure:17426: checking for working volatile
configure:17445: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17445: $? = 0
configure:17452: result: yes
configure:17460: checking for inline
configure:17476: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17476: $? = 0
configure:17484: result: inline
configure:17535: checking for arm-linux-androideabi-ranlib
configure:17562: result: arm-linux-androideabi-ranlib
configure:17633: checking for genorated automake files
configure:17645: result: found
configure:17651: checking whether to enable maintainer-specific portions of Makefiles
configure:17660: result: no
configure:17693: checking for Win32 gnu environment
configure:17721: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp: In function 'int main()':
conftest.cpp:42:8: error: '__RETURN_WIN32__' was not declared in this scope
configure:17721: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| /* end confdefs.h.  */
| 
|             #ifdef  __WIN32__
|             #ifdef __MINGW32__
|             #define __RETURN_WIN32__ __MINGW32__
|             #endif
|             #ifdef __CYGWIN32__
|             #define __RETURN_WIN32__ __CYGWIN32__
|             #endif
|             #endif
| 
| int
| main ()
| {
| return __RETURN_WIN32__;
|   ;
|   return 0;
| }
configure:17732: result: no
configure:17737: checking whether system meets Posix.1
configure:17760: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17760: $? = 0
configure:17769: result: yes
configure:17791: checking features.h usability
configure:17791: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17791: $? = 0
configure:17791: result: yes
configure:17791: checking features.h presence
configure:17791: arm-linux-androideabi-g++ -E  conftest.cpp
configure:17791: $? = 0
configure:17791: result: yes
configure:17791: checking for features.h
configure:17791: result: yes
configure:17808: checking fcntl.h usability
configure:17808: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17808: $? = 0
configure:17808: result: yes
configure:17808: checking fcntl.h presence
configure:17808: arm-linux-androideabi-g++ -E  conftest.cpp
configure:17808: $? = 0
configure:17808: result: yes
configure:17808: checking for fcntl.h
configure:17808: result: yes
configure:17808: checking sys/fcntl.h usability
configure:17808: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:65:23: fatal error: sys/fcntl.h: No such file or directory
compilation terminated.
configure:17808: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/fcntl.h>
configure:17808: result: no
configure:17808: checking sys/fcntl.h presence
configure:17808: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:32:23: fatal error: sys/fcntl.h: No such file or directory
compilation terminated.
configure:17808: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| /* end confdefs.h.  */
| #include <sys/fcntl.h>
configure:17808: result: no
configure:17808: checking for sys/fcntl.h
configure:17808: result: no
configure:17821: checking whether time.h and sys/time.h may both be included
configure:17841: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17841: $? = 0
configure:17848: result: yes
configure:17858: checking sys/time.h usability
configure:17858: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17858: $? = 0
configure:17858: result: yes
configure:17858: checking sys/time.h presence
configure:17858: arm-linux-androideabi-g++ -E  conftest.cpp
configure:17858: $? = 0
configure:17858: result: yes
configure:17858: checking for sys/time.h
configure:17858: result: yes
configure:17876: checking for sys/types.h
configure:17876: result: yes
configure:17876: checking bits/wordsize.h usability
configure:17876: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:68:27: fatal error: bits/wordsize.h: No such file or directory
compilation terminated.
configure:17876: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <bits/wordsize.h>
configure:17876: result: no
configure:17876: checking bits/wordsize.h presence
configure:17876: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:35:27: fatal error: bits/wordsize.h: No such file or directory
compilation terminated.
configure:17876: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| /* end confdefs.h.  */
| #include <bits/wordsize.h>
configure:17876: result: no
configure:17876: checking for bits/wordsize.h
configure:17876: result: no
configure:17936: checking endian.h usability
configure:17936: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:17936: $? = 0
configure:17936: result: yes
configure:17936: checking endian.h presence
configure:17936: arm-linux-androideabi-g++ -E  conftest.cpp
configure:17936: $? = 0
configure:17936: result: yes
configure:17936: checking for endian.h
configure:17936: result: yes
configure:17979: checking for sigaction
configure:17979: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:17979: $? = 0
configure:17979: result: yes
configure:17990: checking for setitimer
configure:17990: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:17990: $? = 0
configure:17990: result: yes
configure:18001: checking for sigwait
configure:18001: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:18001: $? = 0
configure:18001: result: yes
configure:18012: checking bsd/signal.h usability
configure:18012: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:75:24: fatal error: bsd/signal.h: No such file or directory
compilation terminated.
configure:18012: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <bsd/signal.h>
configure:18012: result: no
configure:18012: checking bsd/signal.h presence
configure:18012: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:42:24: fatal error: bsd/signal.h: No such file or directory
compilation terminated.
configure:18012: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| /* end confdefs.h.  */
| #include <bsd/signal.h>
configure:18012: result: no
configure:18012: checking for bsd/signal.h
configure:18012: result: no
configure:18022: checking return type of signal handlers
configure:18040: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp: In function 'int main()':
conftest.cpp:48:27: error: void value not ignored as it ought to be
configure:18040: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| /* end confdefs.h.  */
| #include <sys/types.h>
| #include <signal.h>
| 
| int
| main ()
| {
| return *(signal (0, 0)) (0) == 1;
|   ;
|   return 0;
| }
configure:18047: result: void
configure:18055: checking whether sigwait has 2 arguments
configure:18081: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:18081: $? = 0
configure:18090: result: yes
configure:18103: checking for strcasecmp
configure:18103: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:18103: $? = 0
configure:18103: result: yes
configure:18115: checking for strings.h
configure:18115: result: yes
configure:18115: checking alloca.h usability
configure:18115: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:18115: $? = 0
configure:18115: result: yes
configure:18115: checking alloca.h presence
configure:18115: arm-linux-androideabi-g++ -E  conftest.cpp
configure:18115: $? = 0
configure:18115: result: yes
configure:18115: checking for alloca.h
configure:18115: result: yes
configure:18135: checking for getopt
configure:18135: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:18135: $? = 0
configure:18135: result: yes
configure:18197: checking getopt.h usability
configure:18197: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:18197: $? = 0
configure:18197: result: yes
configure:18197: checking getopt.h presence
configure:18197: arm-linux-androideabi-g++ -E  conftest.cpp
configure:18197: $? = 0
configure:18197: result: yes
configure:18197: checking for getopt.h
configure:18197: result: yes
configure:18207: checking for getopt_long in -lgnugetopt
configure:18232: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lgnugetopt   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lgnugetopt
collect2: ld returned 1 exit status
configure:18232: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| /* end confdefs.h.  */
| 
| /* 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 getopt_long ();
| int
| main ()
| {
| return getopt_long ();
|   ;
|   return 0;
| }
configure:18241: result: no
configure:18254: checking for getopt_long
configure:18254: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:18254: $? = 0
configure:18254: result: yes
configure:18282: checking for dlfcn.h
configure:18282: result: yes
configure:18292: checking for shl_load in -ldld
configure:18317: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -ldld   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -ldld
collect2: ld returned 1 exit status
configure:18317: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| /* end confdefs.h.  */
| 
| /* 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 shl_load ();
| int
| main ()
| {
| return shl_load ();
|   ;
|   return 0;
| }
configure:18326: result: no
configure:18335: checking for dlopen in -ldl
configure:18360: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -ldl   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:18360: $? = 0
configure:18369: result: yes
configure:18488: checking pthread.h usability
configure:18488: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:18488: $? = 0
configure:18488: result: yes
configure:18488: checking pthread.h presence
configure:18488: arm-linux-androideabi-g++ -E  conftest.cpp
configure:18488: $? = 0
configure:18488: result: yes
configure:18488: checking for pthread.h
configure:18488: result: yes
configure:18555: checking sys/atomic_op.h usability
configure:18555: arm-linux-androideabi-g++ -c   conftest.cpp >&5
conftest.cpp:89:27: fatal error: sys/atomic_op.h: No such file or directory
compilation terminated.
configure:18555: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/atomic_op.h>
configure:18555: result: no
configure:18555: checking sys/atomic_op.h presence
configure:18555: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:56:27: fatal error: sys/atomic_op.h: No such file or directory
compilation terminated.
configure:18555: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| #include <sys/atomic_op.h>
configure:18555: result: no
configure:18555: checking for sys/atomic_op.h
configure:18555: result: no
configure:18571: checking sys/atomic.h usability
configure:18571: arm-linux-androideabi-g++ -c   conftest.cpp >&5
conftest.cpp:89:24: fatal error: sys/atomic.h: No such file or directory
compilation terminated.
configure:18571: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/atomic.h>
configure:18571: result: no
configure:18571: checking sys/atomic.h presence
configure:18571: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:56:24: fatal error: sys/atomic.h: No such file or directory
compilation terminated.
configure:18571: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| #include <sys/atomic.h>
configure:18571: result: no
configure:18571: checking for sys/atomic.h
configure:18571: result: no
configure:18714: checking thread.h usability
configure:18714: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:89:20: fatal error: thread.h: No such file or directory
compilation terminated.
configure:18714: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <thread.h>
configure:18714: result: no
configure:18714: checking thread.h presence
configure:18714: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:56:20: fatal error: thread.h: No such file or directory
compilation terminated.
configure:18714: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| #include <thread.h>
configure:18714: result: no
configure:18714: checking for thread.h
configure:18714: result: no
configure:18745: checking whether arm-linux-androideabi-gcc accepts -kthread
configure:18753: result: no
configure:18745: checking whether arm-linux-androideabi-gcc accepts -pthread
configure:18750: result: yes
configure:18772: checking for pthread_self in -lpthread
configure:18797: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lpthread   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lpthread
collect2: ld returned 1 exit status
configure:18797: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_self ();
| int
| main ()
| {
| return pthread_self ();
|   ;
|   return 0;
| }
configure:18806: result: no
configure:18811: checking for pthread_self in -lc_r
configure:18836: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc_r   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lc_r
collect2: ld returned 1 exit status
configure:18836: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_self ();
| int
| main ()
| {
| return pthread_self ();
|   ;
|   return 0;
| }
configure:18845: result: no
configure:18850: checking for pthread_kill in -lpthread
configure:18875: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lpthread   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lpthread
collect2: ld returned 1 exit status
configure:18875: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_kill ();
| int
| main ()
| {
| return pthread_kill ();
|   ;
|   return 0;
| }
configure:18884: result: no
configure:18889: checking for pthread_self in -lpthreads
configure:18914: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lpthreads   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lpthreads
collect2: ld returned 1 exit status
configure:18914: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_self ();
| int
| main ()
| {
| return pthread_self ();
|   ;
|   return 0;
| }
configure:18923: result: no
configure:18928: checking for pthread_self in -lthread
configure:18953: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lthread   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lthread
collect2: ld returned 1 exit status
configure:18953: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_self ();
| int
| main ()
| {
| return pthread_self ();
|   ;
|   return 0;
| }
configure:18962: result: no
configure:18978: checking for pthread_self in -lgthreads
configure:19003: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lgthreads   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lgthreads
collect2: ld returned 1 exit status
configure:19003: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_self ();
| int
| main ()
| {
| return pthread_self ();
|   ;
|   return 0;
| }
configure:19012: result: no
configure:19066: checking for pthread_self in -lcma
configure:19091: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lcma   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lcma
collect2: ld returned 1 exit status
configure:19091: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_self ();
| int
| main ()
| {
| return pthread_self ();
|   ;
|   return 0;
| }
configure:19100: result: no
configure:19109: checking for pthread_self in -lc
configure:19134: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19134: $? = 0
configure:19143: result: yes
configure:19161: checking for pthread_mach_thread_np in -lc
configure:19186: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/cckXkCzs.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `pthread_mach_thread_np'
collect2: ld returned 1 exit status
configure:19186: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_mach_thread_np ();
| int
| main ()
| {
| return pthread_mach_thread_np ();
|   ;
|   return 0;
| }
configure:19196: result: no
configure:19207: checking for nanosleep in -lc
configure:19232: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19232: $? = 0
configure:19242: result: yes
configure:19345: checking for clock_gettime in -lrt
configure:19370: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lrt   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lrt
collect2: ld returned 1 exit status
configure:19370: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| /* end confdefs.h.  */
| 
| /* 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 clock_gettime ();
| int
| main ()
| {
| return clock_gettime ();
|   ;
|   return 0;
| }
configure:19379: result: no
configure:19392: checking for clock_gettime
configure:19392: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19392: $? = 0
configure:19392: result: yes
configure:19409: checking for mlockall in -lrt
configure:19434: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lrt   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lrt
collect2: ld returned 1 exit status
configure:19434: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| /* end confdefs.h.  */
| 
| /* 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 mlockall ();
| int
| main ()
| {
| return mlockall ();
|   ;
|   return 0;
| }
configure:19443: result: no
configure:19458: checking for mlock
configure:19458: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19458: $? = 0
configure:19458: result: yes
configure:19469: checking for mlockall
configure:19469: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/cc4CjWKk.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `mlockall'
collect2: ld returned 1 exit status
configure:19469: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| /* end confdefs.h.  */
| /* Define mlockall to an innocuous variant, in case <limits.h> declares mlockall.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define mlockall innocuous_mlockall
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char mlockall (); 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 mlockall
| 
| /* 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 mlockall ();
| /* 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_mlockall || defined __stub___mlockall
| choke me
| #endif
| 
| int
| main ()
| {
| return mlockall ();
|   ;
|   return 0;
| }
configure:19469: result: no
configure:19490: checking if more special flags are required for pthreads
configure:19497: result: no
configure:19509: checking pthread_np.h usability
configure:19509: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:93:24: fatal error: pthread_np.h: No such file or directory
compilation terminated.
configure:19509: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <pthread_np.h>
configure:19509: result: no
configure:19509: checking pthread_np.h presence
configure:19509: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:60:24: fatal error: pthread_np.h: No such file or directory
compilation terminated.
configure:19509: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| /* end confdefs.h.  */
| #include <pthread_np.h>
configure:19509: result: no
configure:19509: checking for pthread_np.h
configure:19509: result: no
configure:19522: checking semaphore.h usability
configure:19522: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:19522: $? = 0
configure:19522: result: yes
configure:19522: checking semaphore.h presence
configure:19522: arm-linux-androideabi-g++ -E  conftest.cpp
configure:19522: $? = 0
configure:19522: result: yes
configure:19522: checking for semaphore.h
configure:19522: result: yes
configure:19534: checking sched.h usability
configure:19534: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:19534: $? = 0
configure:19534: result: yes
configure:19534: checking sched.h presence
configure:19534: arm-linux-androideabi-g++ -E  conftest.cpp
configure:19534: $? = 0
configure:19534: result: yes
configure:19534: checking for sched.h
configure:19534: result: yes
configure:19546: checking sys/sched.h usability
configure:19546: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:95:23: fatal error: sys/sched.h: No such file or directory
compilation terminated.
configure:19546: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/sched.h>
configure:19546: result: no
configure:19546: checking sys/sched.h presence
configure:19546: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:62:23: fatal error: sys/sched.h: No such file or directory
compilation terminated.
configure:19546: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| /* end confdefs.h.  */
| #include <sys/sched.h>
configure:19546: result: no
configure:19546: checking for sys/sched.h
configure:19546: result: no
configure:19558: checking for sched_getscheduler
configure:19558: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19558: $? = 0
configure:19558: result: yes
configure:19567: checking for recursive mutex type support
configure:19605: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp: In function 'int main()':
conftest.cpp:73:21: error: 'PTHREAD_MUTEXTYPE_RECURSIVE' was not declared in this scope
configure:19605: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| /* end confdefs.h.  */
| #include <pthread.h>
| int
| main ()
| {
| 
|         #ifndef PTHREAD_MUTEXTYPE_RECURSIVE
|         #ifdef PTHREAD_MUTEX_RECURSIVE
|         #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE
|         #endif
|         #endif
|         return (int)PTHREAD_MUTEXTYPE_RECURSIVE;
| 
|   ;
|   return 0;
| }
configure:19664: result: linux
configure:19713: checking for pthread_mutexattr_settype in -lc
configure:19738: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19738: $? = 0
configure:19748: result: yes
configure:19851: checking for pthread_rwlock_init in -lc
configure:19876: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19876: $? = 0
configure:19886: result: yes
configure:19897: checking for pread in -lc
configure:19922: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:19922: $? = 0
configure:19931: result: yes
configure:20033: checking for pthread_suspend in -lc
configure:20058: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/cc4BEaEJ.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `pthread_suspend'
collect2: ld returned 1 exit status
configure:20058: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_suspend ();
| int
| main ()
| {
| return pthread_suspend ();
|   ;
|   return 0;
| }
configure:20068: result: no
configure:20078: checking for pthread_attr_setstacksize in -lc
configure:20103: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:20103: $? = 0
configure:20113: result: yes
configure:20123: checking for pthread_yield_np in -lc
configure:20148: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccat42RW.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `pthread_yield_np'
collect2: ld returned 1 exit status
configure:20148: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_yield_np ();
| int
| main ()
| {
| return pthread_yield_np ();
|   ;
|   return 0;
| }
configure:20158: result: no
configure:20167: checking for pthread_yield in -lc
configure:20192: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccqfUNv2.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `pthread_yield'
collect2: ld returned 1 exit status
configure:20192: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_yield ();
| int
| main ()
| {
| return pthread_yield ();
|   ;
|   return 0;
| }
configure:20202: result: no
configure:20211: checking for sched_yield in -lc
configure:20236: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:20236: $? = 0
configure:20246: result: yes
configure:20262: checking for pthread_cancel in -lc
configure:20287: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccMmwaDl.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `pthread_cancel'
collect2: ld returned 1 exit status
configure:20287: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_cancel ();
| int
| main ()
| {
| return pthread_cancel ();
|   ;
|   return 0;
| }
configure:20297: result: no
configure:20397: checking for pthread_setcanceltype in -lc
configure:20422: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/cckCWstu.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `pthread_setcanceltype'
collect2: ld returned 1 exit status
configure:20422: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_setcanceltype ();
| int
| main ()
| {
| return pthread_setcanceltype ();
|   ;
|   return 0;
| }
configure:20432: result: no
configure:20448: checking for pthread_delay_np in -lc
configure:20473: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccMYD9QG.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `pthread_delay_np'
collect2: ld returned 1 exit status
configure:20473: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| /* end confdefs.h.  */
| 
| /* 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 pthread_delay_np ();
| int
| main ()
| {
| return pthread_delay_np ();
|   ;
|   return 0;
| }
configure:20483: result: no
configure:20557: checking for setenv
configure:20557: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:20557: $? = 0
configure:20557: result: yes
configure:20567: checking for localtime_r in -lc_r
configure:20592: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc_r   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lc_r
collect2: ld returned 1 exit status
configure:20592: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| /* end confdefs.h.  */
| 
| /* 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 localtime_r ();
| int
| main ()
| {
| return localtime_r ();
|   ;
|   return 0;
| }
configure:20602: result: no
configure:20614: checking for strtok_r in -lc
configure:20639: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:20639: $? = 0
configure:20648: result: yes
configure:20655: checking for localtime_r in -lc
configure:20680: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:20680: $? = 0
configure:20689: result: yes
configure:20700: checking for readdir_r in -lc_r
configure:20725: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc_r   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lc_r
collect2: ld returned 1 exit status
configure:20725: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| /* end confdefs.h.  */
| 
| /* 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 readdir_r ();
| int
| main ()
| {
| return readdir_r ();
|   ;
|   return 0;
| }
configure:20735: result: no
configure:20744: checking for readdir_r in -lc
configure:20769: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:20769: $? = 0
configure:20778: result: yes
configure:20789: checking for strerror_r in -lc_r
configure:20814: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc_r   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lc_r
collect2: ld returned 1 exit status
configure:20814: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| /* end confdefs.h.  */
| 
| /* 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 strerror_r ();
| int
| main ()
| {
| return strerror_r ();
|   ;
|   return 0;
| }
configure:20824: result: no
configure:20833: checking for strerror_r in -lc
configure:20858: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:20858: $? = 0
configure:20867: result: yes
configure:20878: checking for getpwuid_r in -lc_r
configure:20903: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc_r   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lc_r
collect2: ld returned 1 exit status
configure:20903: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| /* end confdefs.h.  */
| 
| /* 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 getpwuid_r ();
| int
| main ()
| {
| return getpwuid_r ();
|   ;
|   return 0;
| }
configure:20913: result: no
configure:20925: checking for getpwuid_r in -lc
configure:20950: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccgltn7T.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `getpwuid_r'
collect2: ld returned 1 exit status
configure:20950: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| /* end confdefs.h.  */
| 
| /* 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 getpwuid_r ();
| int
| main ()
| {
| return getpwuid_r ();
|   ;
|   return 0;
| }
configure:20959: result: no
configure:20966: checking for getpwnam_r in -lc
configure:20991: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccYJpbM2.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `getpwnam_r'
collect2: ld returned 1 exit status
configure:20991: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| /* end confdefs.h.  */
| 
| /* 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 getpwnam_r ();
| int
| main ()
| {
| return getpwnam_r ();
|   ;
|   return 0;
| }
configure:21000: result: no
configure:21011: checking for getgrnam_r in -lc_r
configure:21036: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc_r   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lc_r
collect2: ld returned 1 exit status
configure:21036: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| /* end confdefs.h.  */
| 
| /* 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 getgrnam_r ();
| int
| main ()
| {
| return getgrnam_r ();
|   ;
|   return 0;
| }
configure:21046: result: no
configure:21055: checking for getgrnam_r in -lc
configure:21080: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccuE4fRo.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `getgrnam_r'
collect2: ld returned 1 exit status
configure:21080: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| /* end confdefs.h.  */
| 
| /* 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 getgrnam_r ();
| int
| main ()
| {
| return getgrnam_r ();
|   ;
|   return 0;
| }
configure:21089: result: no
configure:21106: checking poll.h usability
configure:21106: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21106: $? = 0
configure:21106: result: yes
configure:21106: checking poll.h presence
configure:21106: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21106: $? = 0
configure:21106: result: yes
configure:21106: checking for poll.h
configure:21106: result: yes
configure:21106: checking sys/poll.h usability
configure:21106: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21106: $? = 0
configure:21106: result: yes
configure:21106: checking sys/poll.h presence
configure:21106: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21106: $? = 0
configure:21106: result: yes
configure:21106: checking for sys/poll.h
configure:21106: result: yes
configure:21106: checking sys/stream.h usability
configure:21106: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:109:24: fatal error: sys/stream.h: No such file or directory
compilation terminated.
configure:21106: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/stream.h>
configure:21106: result: no
configure:21106: checking sys/stream.h presence
configure:21106: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:76:24: fatal error: sys/stream.h: No such file or directory
compilation terminated.
configure:21106: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| /* end confdefs.h.  */
| #include <sys/stream.h>
configure:21106: result: no
configure:21106: checking for sys/stream.h
configure:21106: result: no
configure:21118: checking for poll
configure:21118: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:21118: $? = 0
configure:21118: result: yes
configure:21141: checking net/if.h usability
configure:21141: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21141: $? = 0
configure:21141: result: yes
configure:21141: checking net/if.h presence
configure:21141: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21141: $? = 0
configure:21141: result: yes
configure:21141: checking for net/if.h
configure:21141: result: yes
configure:21153: checking sys/socket.h usability
configure:21153: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21153: $? = 0
configure:21153: result: yes
configure:21153: checking sys/socket.h presence
configure:21153: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21153: $? = 0
configure:21153: result: yes
configure:21153: checking for sys/socket.h
configure:21153: result: yes
configure:21162: checking select.h usability
configure:21162: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:112:20: fatal error: select.h: No such file or directory
compilation terminated.
configure:21162: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <select.h>
configure:21162: result: no
configure:21162: checking select.h presence
configure:21162: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:79:20: fatal error: select.h: No such file or directory
compilation terminated.
configure:21162: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| /* end confdefs.h.  */
| #include <select.h>
configure:21162: result: no
configure:21162: checking for select.h
configure:21162: result: no
configure:21162: checking sys/select.h usability
configure:21162: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21162: $? = 0
configure:21162: result: yes
configure:21162: checking sys/select.h presence
configure:21162: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21162: $? = 0
configure:21162: result: yes
configure:21162: checking for sys/select.h
configure:21162: result: yes
configure:21162: checking netinet/in_systm.h usability
configure:21162: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21162: $? = 0
configure:21162: result: yes
configure:21162: checking netinet/in_systm.h presence
configure:21162: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21162: $? = 0
configure:21162: result: yes
configure:21162: checking for netinet/in_systm.h
configure:21162: result: yes
configure:21162: checking netinet/ip.h usability
configure:21162: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21162: $? = 0
configure:21162: result: yes
configure:21162: checking netinet/ip.h presence
configure:21162: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21162: $? = 0
configure:21162: result: yes
configure:21162: checking for netinet/ip.h
configure:21162: result: yes
configure:21175: checking netinet/inet.h usability
configure:21175: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:115:26: fatal error: netinet/inet.h: No such file or directory
compilation terminated.
configure:21175: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <netinet/inet.h>
configure:21175: result: no
configure:21175: checking netinet/inet.h presence
configure:21175: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:82:26: fatal error: netinet/inet.h: No such file or directory
compilation terminated.
configure:21175: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| /* end confdefs.h.  */
| #include <netinet/inet.h>
configure:21175: result: no
configure:21175: checking for netinet/inet.h
configure:21175: result: no
configure:21175: checking netinet/in.h usability
configure:21175: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21175: $? = 0
configure:21175: result: yes
configure:21175: checking netinet/in.h presence
configure:21175: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21175: $? = 0
configure:21175: result: yes
configure:21175: checking for netinet/in.h
configure:21175: result: yes
configure:21187: checking arpa/inet.h usability
configure:21187: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21187: $? = 0
configure:21187: result: yes
configure:21187: checking arpa/inet.h presence
configure:21187: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21187: $? = 0
configure:21187: result: yes
configure:21187: checking for arpa/inet.h
configure:21187: result: yes
configure:21199: checking sys/sockio.h usability
configure:21199: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:117:24: fatal error: sys/sockio.h: No such file or directory
compilation terminated.
configure:21199: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/sockio.h>
configure:21199: result: no
configure:21199: checking sys/sockio.h presence
configure:21199: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:84:24: fatal error: sys/sockio.h: No such file or directory
compilation terminated.
configure:21199: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| /* end confdefs.h.  */
| #include <sys/sockio.h>
configure:21199: result: no
configure:21199: checking for sys/sockio.h
configure:21199: result: no
configure:21211: checking sys/un.h usability
configure:21211: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
In file included from /home/evigier/android-14b-toolchain/bin/../sysroot/usr/include/sys/un.h:31:0,
                 from conftest.cpp:117:
/home/evigier/android-14b-toolchain/bin/../sysroot/usr/include/linux/un.h:18:2: error: 'sa_family_t' does not name a type
configure:21211: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/un.h>
configure:21211: result: no
configure:21211: checking sys/un.h presence
configure:21211: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21211: $? = 0
configure:21211: result: yes
configure:21211: WARNING: sys/un.h: present but cannot be compiled
configure:21211: WARNING: sys/un.h:     check for missing prerequisite headers?
configure:21211: WARNING: sys/un.h: see the Autoconf documentation
configure:21211: WARNING: sys/un.h:     section "Present But Cannot Be Compiled"
configure:21211: WARNING: sys/un.h: proceeding with the compiler's result
configure:21211: checking for sys/un.h
configure:21211: result: no
configure:21246: checking for socket in -lsocket
configure:21271: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lsocket   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/home/evigier/android-14b-toolchain/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: cannot find -lsocket
collect2: ld returned 1 exit status
configure:21271: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| /* end confdefs.h.  */
| 
| /* 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 socket ();
| int
| main ()
| {
| return socket ();
|   ;
|   return 0;
| }
configure:21280: result: no
configure:21292: checking for getaddrinfo in -lc
configure:21317: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:21317: $? = 0
configure:21327: result: yes
configure:21346: checking netinet6/in6.h usability
configure:21346: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:118:26: fatal error: netinet6/in6.h: No such file or directory
compilation terminated.
configure:21346: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <netinet6/in6.h>
configure:21346: result: no
configure:21346: checking netinet6/in6.h presence
configure:21346: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:85:26: fatal error: netinet6/in6.h: No such file or directory
compilation terminated.
configure:21346: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| /* end confdefs.h.  */
| #include <netinet6/in6.h>
configure:21346: result: no
configure:21346: checking for netinet6/in6.h
configure:21346: result: no
configure:21346: checking linux/in6.h usability
configure:21346: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21346: $? = 0
configure:21346: result: yes
configure:21346: checking linux/in6.h presence
configure:21346: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21346: $? = 0
configure:21346: result: yes
configure:21346: checking for linux/in6.h
configure:21346: result: yes
configure:21357: checking for inet_pton in -lc
configure:21382: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:21382: $? = 0
configure:21392: result: yes
configure:21402: checking for gethostbyname2 in -lc
configure:21427: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:21427: $? = 0
configure:21437: result: yes
configure:21451: checking sys/libcsys.h usability
configure:21451: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:121:25: fatal error: sys/libcsys.h: No such file or directory
compilation terminated.
configure:21451: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sys/libcsys.h>
configure:21451: result: no
configure:21451: checking sys/libcsys.h presence
configure:21451: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:88:25: fatal error: sys/libcsys.h: No such file or directory
compilation terminated.
configure:21451: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| /* end confdefs.h.  */
| #include <sys/libcsys.h>
configure:21451: result: no
configure:21451: checking for sys/libcsys.h
configure:21451: result: no
configure:21465: checking for inet_aton in -lc
configure:21490: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp -lc   -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:21490: $? = 0
configure:21500: result: yes
configure:21509: checking for socklen_t defined
configure:21542: result: yes
configure:21563: checking errno.h usability
configure:21563: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21563: $? = 0
configure:21563: result: yes
configure:21563: checking errno.h presence
configure:21563: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21563: $? = 0
configure:21563: result: yes
configure:21563: checking for errno.h
configure:21563: result: yes
configure:21563: checking limits.h usability
configure:21563: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21563: $? = 0
configure:21563: result: yes
configure:21563: checking limits.h presence
configure:21563: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21563: $? = 0
configure:21563: result: yes
configure:21563: checking for limits.h
configure:21563: result: yes
configure:21563: checking for sys/types.h
configure:21563: result: yes
configure:21563: checking for sys/socket.h
configure:21563: result: yes
configure:21563: checking sys/ioctl.h usability
configure:21563: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21563: $? = 0
configure:21563: result: yes
configure:21563: checking sys/ioctl.h presence
configure:21563: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21563: $? = 0
configure:21563: result: yes
configure:21563: checking for sys/ioctl.h
configure:21563: result: yes
configure:21563: checking for unistd.h
configure:21563: result: yes
configure:21575: checking for net/if.h
configure:21575: result: yes
configure:21593: checking for linux/netfilter_ipv4.h
configure:21593: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21593: $? = 0
configure:21593: result: yes
configure:21593: checking for linux/netfilter_ipv6.h
configure:21593: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21593: $? = 0
configure:21593: result: yes
configure:21930: checking zlib.h usability
configure:21930: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21930: $? = 0
configure:21930: result: yes
configure:21930: checking zlib.h presence
configure:21930: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21930: $? = 0
configure:21930: result: yes
configure:21930: checking for zlib.h
configure:21930: result: yes
configure:21992: checking sys/file.h usability
configure:21992: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking sys/file.h presence
configure:21992: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking for sys/file.h
configure:21992: result: yes
configure:21992: checking sys/param.h usability
configure:21992: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking sys/param.h presence
configure:21992: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking for sys/param.h
configure:21992: result: yes
configure:21992: checking sys/wait.h usability
configure:21992: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking sys/wait.h presence
configure:21992: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking for sys/wait.h
configure:21992: result: yes
configure:21992: checking syslog.h usability
configure:21992: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking syslog.h presence
configure:21992: arm-linux-androideabi-g++ -E  conftest.cpp
configure:21992: $? = 0
configure:21992: result: yes
configure:21992: checking for syslog.h
configure:21992: result: yes
configure:21992: checking syslog.hposix_evlog.h usability
configure:21992: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:143:33: fatal error: syslog.hposix_evlog.h: No such file or directory
compilation terminated.
configure:21992: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <syslog.hposix_evlog.h>
configure:21992: result: no
configure:21992: checking syslog.hposix_evlog.h presence
configure:21992: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:110:33: fatal error: syslog.hposix_evlog.h: No such file or directory
compilation terminated.
configure:21992: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| /* end confdefs.h.  */
| #include <syslog.hposix_evlog.h>
configure:21992: result: no
configure:21992: checking for syslog.hposix_evlog.h
configure:21992: result: no
configure:21992: checking ss.h usability
configure:21992: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:143:16: fatal error: ss.h: No such file or directory
compilation terminated.
configure:21992: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <ss.h>
configure:21992: result: no
configure:21992: checking ss.h presence
configure:21992: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:110:16: fatal error: ss.h: No such file or directory
compilation terminated.
configure:21992: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| /* end confdefs.h.  */
| #include <ss.h>
configure:21992: result: no
configure:21992: checking for ss.h
configure:21992: result: no
configure:21992: checking ioctl.h usability
configure:21992: arm-linux-androideabi-g++ -c -Wno-psabi  conftest.cpp >&5
conftest.cpp:143:19: fatal error: ioctl.h: No such file or directory
compilation terminated.
configure:21992: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <ioctl.h>
configure:21992: result: no
configure:21992: checking ioctl.h presence
configure:21992: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:110:19: fatal error: ioctl.h: No such file or directory
compilation terminated.
configure:21992: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| /* end confdefs.h.  */
| #include <ioctl.h>
configure:21992: result: no
configure:21992: checking for ioctl.h
configure:21992: result: no
configure:22005: checking for realpath
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22005: $? = 0
configure:22005: result: yes
configure:22005: checking for lstat
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22005: $? = 0
configure:22005: result: yes
configure:22005: checking for snprintf
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22005: $? = 0
configure:22005: result: yes
configure:22005: checking for memmove
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22005: $? = 0
configure:22005: result: yes
configure:22005: checking for strdup
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22005: $? = 0
configure:22005: result: yes
configure:22005: checking for lockf
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccoknyam.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `lockf'
collect2: ld returned 1 exit status
configure:22005: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| /* end confdefs.h.  */
| /* Define lockf to an innocuous variant, in case <limits.h> declares lockf.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define lockf innocuous_lockf
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char lockf (); 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 lockf
| 
| /* 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 lockf ();
| /* 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_lockf || defined __stub___lockf
| choke me
| #endif
| 
| int
| main ()
| {
| return lockf ();
|   ;
|   return 0;
| }
configure:22005: result: no
configure:22005: checking for waitpid
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22005: $? = 0
configure:22005: result: yes
configure:22005: checking for wait4
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/cckmcIXl.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `wait4'
collect2: ld returned 1 exit status
configure:22005: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| /* end confdefs.h.  */
| /* Define wait4 to an innocuous variant, in case <limits.h> declares wait4.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define wait4 innocuous_wait4
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char wait4 (); 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 wait4
| 
| /* 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 wait4 ();
| /* 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_wait4 || defined __stub___wait4
| choke me
| #endif
| 
| int
| main ()
| {
| return wait4 ();
|   ;
|   return 0;
| }
configure:22005: result: no
configure:22005: checking for gettimeofday
configure:22005: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22005: $? = 0
configure:22005: result: yes
configure:22017: checking for posix_memalign
configure:22017: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/cckfvgtI.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `posix_memalign'
collect2: ld returned 1 exit status
configure:22017: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| /* end confdefs.h.  */
| /* Define posix_memalign to an innocuous variant, in case <limits.h> declares posix_memalign.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define posix_memalign innocuous_posix_memalign
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char posix_memalign (); 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 posix_memalign
| 
| /* 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 posix_memalign ();
| /* 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_posix_memalign || defined __stub___posix_memalign
| choke me
| #endif
| 
| int
| main ()
| {
| return posix_memalign ();
|   ;
|   return 0;
| }
configure:22017: result: no
configure:22017: checking for setegid
configure:22017: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22017: $? = 0
configure:22017: result: yes
configure:22017: checking for setpgrp
configure:22017: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
configure:22017: $? = 0
configure:22017: result: yes
configure:22017: checking for getpagesize
configure:22017: arm-linux-androideabi-g++ -o conftest -Wno-psabi   conftest.cpp  -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib >&5
/tmp/ccUPUulc.o: In function `main':
conftest.cpp:(.text+0x8): undefined reference to `getpagesize'
collect2: ld returned 1 exit status
configure:22017: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| /* end confdefs.h.  */
| /* Define getpagesize to an innocuous variant, in case <limits.h> declares getpagesize.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define getpagesize innocuous_getpagesize
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char getpagesize (); 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 getpagesize
| 
| /* 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 getpagesize ();
| /* 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_getpagesize || defined __stub___getpagesize
| choke me
| #endif
| 
| int
| main ()
| {
| return getpagesize ();
|   ;
|   return 0;
| }
configure:22017: result: no
configure:22036: checking how to run the C preprocessor
configure:22106: result: arm-linux-androideabi-gcc -E
configure:22126: arm-linux-androideabi-gcc -E  conftest.c
configure:22126: $? = 0
configure:22140: arm-linux-androideabi-gcc -E  conftest.c
conftest.c:119:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:22140: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:22280: checking for C++ compiler version
configure:22289: arm-linux-androideabi-g++ --version >&5
arm-linux-androideabi-g++ (GCC) 4.6.x-google 20120106 (prerelease)
Copyright (C) 2011 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:22300: $? = 0
configure:22289: arm-linux-androideabi-g++ -v >&5
Using built-in specs.
COLLECT_GCC=arm-linux-androideabi-g++
COLLECT_LTO_WRAPPER=/home/evigier/android-14b-toolchain/bin/../libexec/gcc/arm-linux-androideabi/4.6.x-google/lto-wrapper
Target: arm-linux-androideabi
Configured with: /usr/local/google/home/andrewhsieh/ndk-andrewhsieh/src/build/../gcc/gcc-4.6/configure --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpfr=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --with-mpc=/tmp/ndk-andrewhsieh/build/toolchain/temp-install --without-ppl --without-cloog --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/tmp/ndk-andrewhsieh/build/toolchain/prefix --with-sysroot=/tmp/ndk-andrewhsieh/build/toolchain/prefix/sysroot --with-binutils-version=2.21 --with-mpfr-version=2.4.1 --with-mpc-version=0.8.1 --with-gmp-version=5.0.5 --with-gcc-version=4.6 --with-gdb-version=7.3.x --disable-bootstrap --disable-libquadmath --disable-plugin --enable-gold --enable-ld=default --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold
Thread model: posix
gcc version 4.6.x-google 20120106 (prerelease) (GCC) 
configure:22300: $? = 0
configure:22289: arm-linux-androideabi-g++ -V >&5
arm-linux-androideabi-g++: error: unrecognized option '-V'
arm-linux-androideabi-g++: fatal error: no input files
compilation terminated.
configure:22300: $? = 1
configure:22289: arm-linux-androideabi-g++ -qversion >&5
arm-linux-androideabi-g++: error: unrecognized option '-qversion'
arm-linux-androideabi-g++: fatal error: no input files
compilation terminated.
configure:22300: $? = 1
configure:22304: checking whether we are using the GNU C++ compiler
configure:22332: result: yes
configure:22341: checking whether arm-linux-androideabi-g++ accepts -g
configure:22402: result: yes
configure:22430: checking how to run the C++ preprocessor
configure:22496: result: arm-linux-androideabi-g++ -E
configure:22516: arm-linux-androideabi-g++ -E  conftest.cpp
configure:22516: $? = 0
configure:22530: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:119:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:22530: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:22570: checking whether arm-linux-androideabi-g++ has built-in bool type
configure:22586: arm-linux-androideabi-g++ -c   conftest.cpp >&5
configure:22586: $? = 0
configure:22595: result: yes
configure:22768: checking whether arm-linux-androideabi-g++ supports -fhandle-exceptions
configure:22784: result: no
configure:22790: checking whether arm-linux-androideabi-g++ supports exception handling
configure:22817: arm-linux-androideabi-g++ -c   conftest.cpp >&5
configure:22817: $? = 0
configure:22826: result: yes
configure:22836: checking exception usability
configure:22836: arm-linux-androideabi-g++ -c   conftest.cpp >&5
conftest.cpp:154:21: fatal error: exception: No such file or directory
compilation terminated.
configure:22836: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| #define HAVE_BOOL_TYPE 1
| #define CCXX_EXCEPTIONS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <exception>
configure:22836: result: no
configure:22836: checking exception presence
configure:22836: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:121:21: fatal error: exception: No such file or directory
compilation terminated.
configure:22836: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| #define HAVE_BOOL_TYPE 1
| #define CCXX_EXCEPTIONS 1
| /* end confdefs.h.  */
| #include <exception>
configure:22836: result: no
configure:22836: checking for exception
configure:22836: result: no
configure:22875: checking whether arm-linux-androideabi-g++ supports mutable
configure:22892: arm-linux-androideabi-g++ -c   conftest.cpp >&5
configure:22892: $? = 0
configure:22901: result: yes
configure:22929: checking whether arm-linux-androideabi-g++ supports namespace
configure:22947: arm-linux-androideabi-g++ -c   conftest.cpp >&5
conftest.cpp:122:20: fatal error: iostream: No such file or directory
compilation terminated.
configure:22947: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| #define HAVE_BOOL_TYPE 1
| #define CCXX_EXCEPTIONS 1
| /* end confdefs.h.  */
| 
| #include <iostream>
| namespace Test { using namespace std; }
| int
| main ()
| {
| return 0;
|   ;
|   return 0;
| }
configure:22956: result: no
configure:22985: checking wheather old style iostreams
configure:23013: arm-linux-androideabi-g++ -c   conftest.cpp >&5
conftest.cpp:122:20: fatal error: iostream: No such file or directory
compilation terminated.
configure:23013: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| #define HAVE_BOOL_TYPE 1
| #define CCXX_EXCEPTIONS 1
| /* end confdefs.h.  */
| 
| #include <iostream>
| using namespace std;
| 
| class mystr : public streambuf, public iostream
| {
|     mystr();
| };
| 
| mystr::mystr() : streambuf(), iostream((streambuf *)this)
| {
| }
| 
| int
| main ()
| {
| return 0;
|   ;
|   return 0;
| }
configure:23022: result: yes
configure:23031: checking sstream usability
configure:23031: arm-linux-androideabi-g++ -c   conftest.cpp >&5
conftest.cpp:155:19: fatal error: sstream: No such file or directory
compilation terminated.
configure:23031: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| #define HAVE_BOOL_TYPE 1
| #define CCXX_EXCEPTIONS 1
| #define HAVE_OLD_IOSTREAM 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <sstream>
configure:23031: result: no
configure:23031: checking sstream presence
configure:23031: arm-linux-androideabi-g++ -E  conftest.cpp
conftest.cpp:122:19: fatal error: sstream: No such file or directory
compilation terminated.
configure:23031: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| #define HAVE_BOOL_TYPE 1
| #define CCXX_EXCEPTIONS 1
| #define HAVE_OLD_IOSTREAM 1
| /* end confdefs.h.  */
| #include <sstream>
configure:23031: result: no
configure:23031: checking for sstream
configure:23031: result: no
configure:23067: checking whether arm-linux-androideabi-g++ has new(size_t,void*)
configure:23087: arm-linux-androideabi-g++ -c   conftest.cpp >&5
conftest.cpp:122:15: fatal error: new: No such file or directory
compilation terminated.
configure:23087: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #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 __EXTENSIONS__ 1
| #define _ALL_SOURCE 1
| #define _GNU_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define _TANDEM_SOURCE 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define PACKAGE "commoncpp2"
| #define VERSION "1.8.1"
| #define restrict __restrict
| #define HAVE_UNISTD_H 1
| #define HAVE_FEATURES_H 1
| #define HAVE_FCNTL_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_TYPES_STD 1
| #define HAVE_SYS_TYPES_64 1
| #define HAVE_LONG_LONG 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_SIGACTION 1
| #define HAVE_SETITIMER 1
| #define HAVE_SIGWAIT 1
| #define RETSIGTYPE void
| #define HAVE_SIGWAIT2 1
| #define HAVE_STRCASECMP 1
| #define HAVE_STRINGS_H 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT 1
| #define HAVE_GETOPT_H 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_GETOPT_LONG 1
| #define HAVE_DLFCN_H 1
| #define HAVE_MODULES 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_NANOSLEEP 1
| #define HAVE_CLOCK_GETTIME 1
| #define HAVE_HIRES_TIMER 1
| #define HAVE_MLOCK 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_GETSCHEDULER 1
| #define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
| #define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
| #define HAVE_PTHREAD_RWLOCK 1
| #define HAVE_PREAD_PWRITE 1
| #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
| #define HAVE_PTHREAD_SCHED_YIELD 1
| #define HAVE_SETENV 1
| #define HAVE_STRTOK_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_READDIR_R 1
| #define HAVE_STRERROR_R 1
| #define HAVE_POLL_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_POLL 1
| #define HAVE_NET_IF_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_NETINET_IN_SYSTM_H 1
| #define HAVE_NETINET_IP_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_GETADDRINFO 1
| #define HAVE_LINUX_IN6_H 1
| #define HAVE_INET_PTON 1
| #define HAVE_GETHOSTBYNAME2 1
| #define HAVE_INET_SOCKETS 1
| #define HAVE_INET_ATON 1
| #define HAVE_SOCKLEN_T 1
| #define HAVE_ERRNO_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_LINUX_NETFILTER_IPV4_H 1
| #define HAVE_LINUX_NETFILTER_IPV6_H 1
| #define HAVE_NAT_NETFILTER 1
| #define CCXX_NAT 1
| #define USE_MONOTONIC_TIMER 1
| #define HAVE_EXTRAS 1
| #define HAVE_ZLIB_H 1
| #define HAVE_ZLIB_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_REALPATH 1
| #define HAVE_LSTAT 1
| #define HAVE_SNPRINTF 1
| #define HAVE_MEMMOVE 1
| #define HAVE_STRDUP 1
| #define HAVE_WAITPID 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_SETEGID 1
| #define HAVE_SETPGRP 1
| #define HAVE_BOOL_TYPE 1
| #define CCXX_EXCEPTIONS 1
| #define HAVE_OLD_IOSTREAM 1
| /* end confdefs.h.  */
| #include <new>
| #include <iostream>
| using namespace std;
| int
| main ()
| {
| int* p1 = new int();
| int* p2 = new (p1) int();
| return 0;
|   ;
|   return 0;
| }
configure:23096: result: no
configure:23224: checking for debugging
configure:23237: result: no
configure:23239: checking for profiling
configure:23251: result: no
configure:23361: checking for doxygen
configure:23392: result: no
configure:23589: creating ./config.status

## ---------------------- ##
## Running config.status. ##
## ---------------------- ##

This file was extended by config.status, which was
generated by GNU Autoconf 2.68.  Invocation command line was

  CONFIG_FILES    = 
  CONFIG_HEADERS  = 
  CONFIG_LINKS    = 
  CONFIG_COMMANDS = 
  $ ./config.status 

on evigier-ThinkPad-X220

config.status:1327: creating src/ccgnu2-config
config.status:1327: creating src/libccext2.pc
config.status:1327: creating src/libccgnu2.pc
config.status:1327: creating src/Makefile
config.status:1327: creating w32/Makefile
config.status:1327: creating w32/vs2008/Makefile
config.status:1327: creating w32/vs2008/ccext2.vcproj
config.status:1327: creating w32/vs2008/ccgnu2.vcproj
config.status:1327: creating w32/vs2008/common.sln
config.status:1327: creating m4/Makefile
config.status:1327: creating doc/Doxyfile
config.status:1327: creating doc/Makefile
config.status:1327: creating demo/Makefile
config.status:1327: creating inc/Makefile
config.status:1327: creating inc/cc++/Makefile
config.status:1327: creating Makefile
config.status:1327: creating commoncpp2.spec
config.status:1327: creating tests/Makefile
config.status:1327: creating commoncpp2.list
config.status:1435: WARNING:  'commoncpp2.list.in' seems to ignore the --datarootdir setting
config.status:1327: creating w32/ccgnu2.dsp
config.status:1327: creating w32/ccext2.dsp
config.status:1327: creating w32/ccgnu2.vcproj
config.status:1327: creating w32/ccext2.vcproj
config.status:1327: creating config.h
config.status:1556: executing libtool commands
config.status:1556: executing depfiles commands

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_c_inline=inline
ac_cv_c_restrict=__restrict
ac_cv_c_volatile=yes
ac_cv_cxx_bool_type=yes
ac_cv_cxx_compiler_gnu=yes
ac_cv_cxx_exception_flag=no
ac_cv_cxx_exception_handling=yes
ac_cv_cxx_new_init=no
ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
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_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=set
ac_cv_env_CXXFLAGS_value=-Wno-psabi
ac_cv_env_CXX_set=
ac_cv_env_CXX_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=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=arm-linux-androideabi
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_func_clock_gettime=yes
ac_cv_func_getopt=yes
ac_cv_func_getopt_long=yes
ac_cv_func_getpagesize=no
ac_cv_func_gettimeofday=yes
ac_cv_func_lockf=no
ac_cv_func_lstat=yes
ac_cv_func_memmove=yes
ac_cv_func_mlock=yes
ac_cv_func_mlockall=no
ac_cv_func_poll=yes
ac_cv_func_posix_memalign=no
ac_cv_func_realpath=yes
ac_cv_func_sched_getscheduler=yes
ac_cv_func_setegid=yes
ac_cv_func_setenv=yes
ac_cv_func_setitimer=yes
ac_cv_func_setpgrp=yes
ac_cv_func_sigaction=yes
ac_cv_func_sigwait=yes
ac_cv_func_snprintf=yes
ac_cv_func_strcasecmp=yes
ac_cv_func_strdup=yes
ac_cv_func_wait4=no
ac_cv_func_waitpid=yes
ac_cv_header_alloca_h=yes
ac_cv_header_arpa_inet_h=yes
ac_cv_header_bits_wordsize_h=no
ac_cv_header_bsd_signal_h=no
ac_cv_header_dlfcn_h=yes
ac_cv_header_endian_h=yes
ac_cv_header_errno_h=yes
ac_cv_header_exception=no
ac_cv_header_fcntl_h=yes
ac_cv_header_features_h=yes
ac_cv_header_getopt_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_ioctl_h=no
ac_cv_header_limits_h=yes
ac_cv_header_linux_in6_h=yes
ac_cv_header_linux_netfilter_ipv4_h=yes
ac_cv_header_linux_netfilter_ipv6_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_minix_config_h=no
ac_cv_header_net_if_h=yes
ac_cv_header_netinet6_in6_h=no
ac_cv_header_netinet_in_h=yes
ac_cv_header_netinet_in_systm_h=yes
ac_cv_header_netinet_inet_h=no
ac_cv_header_netinet_ip_h=yes
ac_cv_header_poll_h=yes
ac_cv_header_pthread_h=yes
ac_cv_header_pthread_np_h=no
ac_cv_header_sched_h=yes
ac_cv_header_select_h=no
ac_cv_header_semaphore_h=yes
ac_cv_header_ss_h=no
ac_cv_header_sstream=no
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_atomic_h=no
ac_cv_header_sys_atomic_op_h=no
ac_cv_header_sys_fcntl_h=no
ac_cv_header_sys_file_h=yes
ac_cv_header_sys_ioctl_h=yes
ac_cv_header_sys_libcsys_h=no
ac_cv_header_sys_param_h=yes
ac_cv_header_sys_poll_h=yes
ac_cv_header_sys_sched_h=no
ac_cv_header_sys_select_h=yes
ac_cv_header_sys_socket_h=yes
ac_cv_header_sys_sockio_h=no
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_stream_h=no
ac_cv_header_sys_time_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_sys_un_h=no
ac_cv_header_sys_wait_h=yes
ac_cv_header_syslog_h=yes
ac_cv_header_syslog_hposix_evlog_h=no
ac_cv_header_thread_h=no
ac_cv_header_time=yes
ac_cv_header_unistd_h=yes
ac_cv_header_zlib_h=yes
ac_cv_host=arm-unknown-linux-androideabi
ac_cv_lib_c___getaddrinfo=yes
ac_cv_lib_c___gethostbyname2=yes
ac_cv_lib_c___inet_aton=yes
ac_cv_lib_c___inet_pton=yes
ac_cv_lib_c___nanosleep=yes
ac_cv_lib_c___pthread_attr_setstacksize=yes
ac_cv_lib_c___pthread_cancel=no
ac_cv_lib_c___pthread_delay_np=no
ac_cv_lib_c___pthread_mach_thread_np=no
ac_cv_lib_c___pthread_mutexattr_settype=yes
ac_cv_lib_c___pthread_rwlock_init=yes
ac_cv_lib_c___pthread_setcanceltype=no
ac_cv_lib_c___pthread_suspend=no
ac_cv_lib_c___pthread_yield=no
ac_cv_lib_c___pthread_yield_np=no
ac_cv_lib_c___sched_yield=yes
ac_cv_lib_c_getgrnam_r=no
ac_cv_lib_c_getpwnam_r=no
ac_cv_lib_c_getpwuid_r=no
ac_cv_lib_c_localtime_r=yes
ac_cv_lib_c_pread=yes
ac_cv_lib_c_pthread_self=yes
ac_cv_lib_c_r___getgrnam_r=no
ac_cv_lib_c_r___getpwuid_r=no
ac_cv_lib_c_r___localtime_r=no
ac_cv_lib_c_r___readdir_r=no
ac_cv_lib_c_r___strerror_r=no
ac_cv_lib_c_r_pthread_self=no
ac_cv_lib_c_readdir_r=yes
ac_cv_lib_c_strerror_r=yes
ac_cv_lib_c_strtok_r=yes
ac_cv_lib_cma_pthread_self=no
ac_cv_lib_dl_dlopen=yes
ac_cv_lib_dld_shl_load=no
ac_cv_lib_gnugetopt_getopt_long=no
ac_cv_lib_gthreads_pthread_self=no
ac_cv_lib_pthread_pthread_kill=no
ac_cv_lib_pthread_pthread_self=no
ac_cv_lib_pthreads_pthread_self=no
ac_cv_lib_rt_clock_gettime=no
ac_cv_lib_rt_mlockall=no
ac_cv_lib_socket_socket=no
ac_cv_lib_thread_pthread_self=no
ac_cv_objext=o
ac_cv_ost_sigwait2=yes
ac_cv_path_DOXYGEN=no
ac_cv_path_EGREP='/bin/grep -E'
ac_cv_path_FGREP='/bin/grep -F'
ac_cv_path_GREP=/bin/grep
ac_cv_path_SED=/bin/sed
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/bin/mkdir
ac_cv_prog_AR=arm-linux-androideabi-ar
ac_cv_prog_AWK=gawk
ac_cv_prog_CC=arm-linux-androideabi-gcc
ac_cv_prog_CPP='arm-linux-androideabi-gcc -E'
ac_cv_prog_CXX=arm-linux-androideabi-g++
ac_cv_prog_CXXCPP='arm-linux-androideabi-g++ -E'
ac_cv_prog_DLLTOOL=dlltool
ac_cv_prog_OBJDUMP=objdump
ac_cv_prog_RANLIB=arm-linux-androideabi-ranlib
ac_cv_prog_STRIP=arm-linux-androideabi-strip
ac_cv_prog_ac_ct_MANIFEST_TOOL=mt
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_cxx_g=yes
ac_cv_prog_make_make_set=yes
ac_cv_safe_to_define___extensions__=yes
ac_cv_search_strerror='none required'
ac_cv_target=arm-unknown-linux-androideabi
ac_cv_type_signal=void
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_CXX_dependencies_compiler_type=gcc3
lt_cv_ar_at_file=@
lt_cv_archive_cmds_need_lc=no
lt_cv_deplibs_check_method=pass_all
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=/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld
lt_cv_path_LDCXX=/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld
lt_cv_path_NM='/home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-nm -B'
lt_cv_path_mainfest_tool=no
lt_cv_prog_compiler_c_o=yes
lt_cv_prog_compiler_c_o_CXX=yes
lt_cv_prog_compiler_pic='-fPIC -DPIC'
lt_cv_prog_compiler_pic_CXX='-fPIC -DPIC'
lt_cv_prog_compiler_pic_works=yes
lt_cv_prog_compiler_pic_works_CXX=yes
lt_cv_prog_compiler_rtti_exceptions=no
lt_cv_prog_compiler_static_works=yes
lt_cv_prog_compiler_static_works_CXX=yes
lt_cv_prog_gnu_ld=yes
lt_cv_prog_gnu_ldcxx=yes
lt_cv_sharedlib_from_linklib_cmd='printf %s\n'
lt_cv_shlibpath_overrides_runpath=no
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
np_cv_prog_msc=no
ost_cv_cxx_iostream=yes
ost_cv_cxx_mode=false
ost_cv_cxx_mutable=yes
ost_cv_cxx_namespace=no
ost_cv_dynloader=yes
ost_cv_extras=yes
ost_cv_gnuwin32=no
ost_cv_inet_sockets=yes
ost_cv_ipv6=yes
ost_cv_lib_socket=c
ost_cv_lib_zlib=true
ost_cv_libgetopt_long=false
ost_cv_mutex_recursive=linux
ost_cv_nat=yes
ost_cv_nat_detected=yes
ost_cv_posix_atomic=no
ost_cv_posix_sys_atomic=no
ost_cv_posix_threads=yes
ost_cv_rt_library=none
ost_cv_socklen_t=yes
ost_cv_ssl=no
ost_cv_sys_posix1=yes
ost_cv_thread_flags=-pthread
ost_cv_thread_library=c
ost_cv_thread_rwlock=true
ost_cv_unix_sockets=no

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL='${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run aclocal-1.11'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run tar'
AR='arm-linux-androideabi-ar'
AS='as'
AUTOCONF='${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run autoconf'
AUTOHEADER='${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run autoheader'
AUTOMAKE='${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run automake-1.11'
AWK='gawk'
BASE_LIB='../src/libccgnu2.la'
CC='arm-linux-androideabi-gcc'
CCDEPMODE='depmode=gcc3'
CCXX_DIR='$(top_srcdir)/inc'
CFLAGS='-g -O2'
COMMON_FLAGS='-D_GNU_SOURCE -I/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/include'
CPP='arm-linux-androideabi-gcc -E'
CPPFLAGS=''
CPPUNIT_LIBS=' '
CXX='arm-linux-androideabi-g++'
CXXCPP='arm-linux-androideabi-g++ -E'
CXXDEPMODE='depmode=gcc3'
CXXFLAGS='-Wno-psabi'
CYGPATH_W='echo'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
DLLTOOL='dlltool'
DOXYGEN='no'
DOXY_FALSE=''
DOXY_TRUE='#'
DSYMUTIL=''
DUMPBIN=''
DYN_LOADER='-ldl'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/bin/grep -E'
EXEEXT=''
EXTRAS_FALSE='#'
EXTRAS_TRUE=''
FGREP='/bin/grep -F'
FTPDIR=''
GETOPT_LIBS=''
GETOPT_LONG_FALSE=''
GETOPT_LONG_TRUE='#'
GREP='/bin/grep'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
KDOC_DIR='$(top_srcdir)/doc'
LD='/home/evigier/android-14b-toolchain/arm-linux-androideabi/bin/ld'
LDFLAGS=''
LIBGETOPTOBJS=''
LIBOBJS=''
LIBS=' -L/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/lib'
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
LIB_MAJOR='0'
LIB_VERSION='1_8'
LIPO=''
LN_S='ln -s'
LTLIBOBJS=''
LT_CCXX_VERSION='-version-info 0:1'
LT_MAJOR='0'
LT_MINOR='1'
LT_RELEASE='1.8'
LT_SUBVER='0.1'
MAINT='#'
MAINTAINER_MODE_FALSE=''
MAINTAINER_MODE_TRUE='#'
MAKEINFO='${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/missing --run makeinfo'
MANIFEST_TOOL=':'
MKDIR_P='/bin/mkdir -p'
MODULE_FLAGS='-module -shared -avoid-version'
MSWIN32_FALSE=''
MSWIN32_TRUE='#'
NM='/home/evigier/android-14b-toolchain/bin/arm-linux-androideabi-nm -B'
NMEDIT=''
OBJDUMP='objdump'
OBJEXT='o'
OTOOL64=''
OTOOL=''
PACKAGE='commoncpp2'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_URL=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PTHREAD_CC=''
RANLIB='arm-linux-androideabi-ranlib'
SED='/bin/sed'
SET_MAKE=''
SHARED_FLAGS=''
SHELL='/bin/bash'
SOCKET_LIBS=''
SSL_LIBS=''
STAGE2=''
STRIP='arm-linux-androideabi-strip'
THREAD_FLAGS=''
THREAD_LIBS='  -pthread'
VERSION='1.8.1'
WARN_FLAGS='-pedantic -Wall'
WIN32_FALSE=''
WIN32_TRUE='#'
WINVERSION='1,8,1,0'
WITH_CPPUNIT_TESTS_FALSE=''
WITH_CPPUNIT_TESTS_TRUE='#'
ZSTREAM_LIBS='-lz'
ac_ct_AR=''
ac_ct_CC=''
ac_ct_CXX=''
ac_ct_DUMPBIN=''
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE='#'
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE='#'
am__fastdepCXX_TRUE=''
am__include='include'
am__isrc=''
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
ccincludedir='${includedir}/cc++2'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE}'
dvidir='${docdir}'
etc_confdir='/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/etc'
exec_prefix='${prefix}'
host='arm-unknown-linux-androideabi'
host_alias='arm-linux-androideabi'
host_cpu='arm'
host_os='linux-androideabi'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
incprefix=''
infodir='${datarootdir}/info'
install_sh='${SHELL} /home/evigier/git/commoncpp2-1.8.1-android/autoconf/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p='/bin/mkdir -p'
oldincludedir='/usr/include'
ost_cv_dynloader='yes'
pdfdir='${docdir}'
prefix='/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target='arm-unknown-linux-androideabi'
target_alias=''
target_cpu='arm'
target_os='linux-androideabi'
target_vendor='unknown'
thrprefix='/usr/include'

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PACKAGE_STRING ""
#define PACKAGE_BUGREPORT ""
#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 __EXTENSIONS__ 1
#define _ALL_SOURCE 1
#define _GNU_SOURCE 1
#define _POSIX_PTHREAD_SEMANTICS 1
#define _TANDEM_SOURCE 1
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
#define PACKAGE "commoncpp2"
#define VERSION "1.8.1"
#define restrict __restrict
#define HAVE_UNISTD_H 1
#define HAVE_FEATURES_H 1
#define HAVE_FCNTL_H 1
#define TIME_WITH_SYS_TIME 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_TYPES_STD 1
#define HAVE_SYS_TYPES_64 1
#define HAVE_LONG_LONG 1
#define HAVE_ENDIAN_H 1
#define HAVE_SIGACTION 1
#define HAVE_SETITIMER 1
#define HAVE_SIGWAIT 1
#define RETSIGTYPE void
#define HAVE_SIGWAIT2 1
#define HAVE_STRCASECMP 1
#define HAVE_STRINGS_H 1
#define HAVE_ALLOCA_H 1
#define HAVE_GETOPT 1
#define HAVE_GETOPT 1
#define HAVE_GETOPT_H 1
#define HAVE_GETOPT_LONG 1
#define HAVE_GETOPT_LONG 1
#define HAVE_DLFCN_H 1
#define HAVE_MODULES 1
#define HAVE_PTHREAD_H 1
#define HAVE_PTHREAD_H 1
#define HAVE_PTHREAD_NANOSLEEP 1
#define HAVE_CLOCK_GETTIME 1
#define HAVE_HIRES_TIMER 1
#define HAVE_MLOCK 1
#define HAVE_SEMAPHORE_H 1
#define HAVE_SCHED_H 1
#define HAVE_SCHED_GETSCHEDULER 1
#define PTHREAD_MUTEXTYPE_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP
#define HAVE_PTHREAD_MUTEXATTR_SETTYPE 1
#define HAVE_PTHREAD_RWLOCK 1
#define HAVE_PREAD_PWRITE 1
#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
#define HAVE_PTHREAD_SCHED_YIELD 1
#define HAVE_SETENV 1
#define HAVE_STRTOK_R 1
#define HAVE_LOCALTIME_R 1
#define HAVE_READDIR_R 1
#define HAVE_STRERROR_R 1
#define HAVE_POLL_H 1
#define HAVE_SYS_POLL_H 1
#define HAVE_POLL 1
#define HAVE_NET_IF_H 1
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_SELECT_H 1
#define HAVE_NETINET_IN_SYSTM_H 1
#define HAVE_NETINET_IP_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_ARPA_INET_H 1
#define HAVE_GETADDRINFO 1
#define HAVE_LINUX_IN6_H 1
#define HAVE_INET_PTON 1
#define HAVE_GETHOSTBYNAME2 1
#define HAVE_INET_SOCKETS 1
#define HAVE_INET_ATON 1
#define HAVE_SOCKLEN_T 1
#define HAVE_ERRNO_H 1
#define HAVE_LIMITS_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_IOCTL_H 1
#define HAVE_UNISTD_H 1
#define HAVE_NET_IF_H 1
#define HAVE_LINUX_NETFILTER_IPV4_H 1
#define HAVE_LINUX_NETFILTER_IPV6_H 1
#define HAVE_NAT_NETFILTER 1
#define CCXX_NAT 1
#define USE_MONOTONIC_TIMER 1
#define HAVE_EXTRAS 1
#define HAVE_ZLIB_H 1
#define HAVE_ZLIB_H 1
#define HAVE_SYS_FILE_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_SYS_WAIT_H 1
#define HAVE_SYSLOG_H 1
#define HAVE_REALPATH 1
#define HAVE_LSTAT 1
#define HAVE_SNPRINTF 1
#define HAVE_MEMMOVE 1
#define HAVE_STRDUP 1
#define HAVE_WAITPID 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_SETEGID 1
#define HAVE_SETPGRP 1
#define HAVE_BOOL_TYPE 1
#define CCXX_EXCEPTIONS 1
#define HAVE_OLD_IOSTREAM 1
#define ETC_CONFDIR "/home/evigier/android-ndk-r8b/platforms/android-14/arch-arm/usr/etc/"

configure: exit 0
