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

It was created by LibVNCServer configure 0.9.9, which was
generated by GNU Autoconf 2.69.  Invocation command line was

  $ ./configure --enable-maintainer-mode

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

hostname = android-dev
uname -m = x86_64
uname -r = 3.13-0.bpo.1-amd64
uname -s = Linux
uname -v = #1 SMP Debian 3.13.7-1~bpo70+1 (2014-03-29)

/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/san/bin
PATH: /home/san/bin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /usr/local/games
PATH: /usr/games


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

configure:2839: checking for a BSD-compatible install
configure:2907: result: /usr/bin/install -c
configure:2918: checking whether build environment is sane
configure:2968: result: yes
configure:3109: checking for a thread-safe mkdir -p
configure:3148: result: /bin/mkdir -p
configure:3161: checking for gawk
configure:3191: result: no
configure:3161: checking for mawk
configure:3177: found /usr/bin/mawk
configure:3188: result: mawk
configure:3199: checking whether make sets $(MAKE)
configure:3221: result: yes
configure:3312: checking whether make supports nested variables
configure:3329: result: yes
configure:3397: checking for gcc
configure:3413: found /usr/bin/gcc
configure:3424: result: gcc
configure:3653: checking for C compiler version
configure:3662: gcc --version >&5
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 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:3673: $? = 0
configure:3662: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-5) 
configure:3673: $? = 0
configure:3662: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:3673: $? = 4
configure:3662: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.
configure:3673: $? = 4
configure:3693: checking whether the C compiler works
configure:3715: gcc    conftest.c  >&5
configure:3719: $? = 0
configure:3767: result: yes
configure:3770: checking for C compiler default output file name
configure:3772: result: a.out
configure:3778: checking for suffix of executables
configure:3785: gcc -o conftest    conftest.c  >&5
configure:3789: $? = 0
configure:3811: result: 
configure:3833: checking whether we are cross compiling
configure:3841: gcc -o conftest    conftest.c  >&5
configure:3845: $? = 0
configure:3852: ./conftest
configure:3856: $? = 0
configure:3871: result: no
configure:3876: checking for suffix of object files
configure:3898: gcc -c   conftest.c >&5
configure:3902: $? = 0
configure:3923: result: o
configure:3927: checking whether we are using the GNU C compiler
configure:3946: gcc -c   conftest.c >&5
configure:3946: $? = 0
configure:3955: result: yes
configure:3964: checking whether gcc accepts -g
configure:3984: gcc -c -g  conftest.c >&5
configure:3984: $? = 0
configure:4025: result: yes
configure:4042: checking for gcc option to accept ISO C89
configure:4105: gcc  -c -g -O2  conftest.c >&5
configure:4105: $? = 0
configure:4118: result: none needed
configure:4149: checking for style of include used by make
configure:4177: result: GNU
configure:4203: checking dependency style of gcc
configure:4314: result: gcc3
configure:4330: checking whether gcc and cc understand -c and -o together
configure:4361: gcc -c conftest.c -o conftest2.o >&5
configure:4365: $? = 0
configure:4371: gcc -c conftest.c -o conftest2.o >&5
configure:4375: $? = 0
configure:4386: cc -c conftest.c >&5
configure:4390: $? = 0
configure:4398: cc -c conftest.c -o conftest2.o >&5
configure:4402: $? = 0
configure:4408: cc -c conftest.c -o conftest2.o >&5
configure:4412: $? = 0
configure:4430: result: yes
configure:4461: checking whether make sets $(MAKE)
configure:4483: result: yes
configure:4570: checking build system type
configure:4584: result: x86_64-unknown-linux-gnu
configure:4604: checking host system type
configure:4617: result: x86_64-unknown-linux-gnu
configure:4637: checking for a sed that does not truncate output
configure:4691: result: /bin/sed
configure:4694: checking for grep that handles long lines and -e
configure:4752: result: /bin/grep
configure:4757: checking for egrep
configure:4819: result: /bin/grep -E
configure:4835: checking for ld used by gcc
configure:4902: result: /usr/bin/ld
configure:4909: checking if the linker (/usr/bin/ld) is GNU ld
configure:4924: result: yes
configure:4929: checking for /usr/bin/ld option to reload object files
configure:4936: result: -r
configure:4954: checking for BSD-compatible nm
configure:5003: result: /usr/bin/nm -B
configure:5007: checking whether ln -s works
configure:5011: result: yes
configure:5018: checking how to recognise dependent libraries
configure:5194: result: pass_all
configure:5282: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5285: $? = 0
configure:5681: checking how to run the C preprocessor
configure:5712: gcc -E  conftest.c
configure:5712: $? = 0
configure:5726: gcc -E  conftest.c
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:5726: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:5751: result: gcc -E
configure:5771: gcc -E  conftest.c
configure:5771: $? = 0
configure:5785: gcc -E  conftest.c
conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:5785: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:5814: checking for ANSI C header files
configure:5834: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5834: $? = 0
configure:5907: gcc -o conftest -g -O2 -Wall   conftest.c  >&5
configure:5907: $? = 0
configure:5907: ./conftest
configure:5907: $? = 0
configure:5918: result: yes
configure:5931: checking for sys/types.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for sys/stat.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for stdlib.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for string.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for memory.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for strings.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for inttypes.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for stdint.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5931: checking for unistd.h
configure:5931: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5931: $? = 0
configure:5931: result: yes
configure:5945: checking dlfcn.h usability
configure:5945: gcc -c -g -O2 -Wall  conftest.c >&5
configure:5945: $? = 0
configure:5945: result: yes
configure:5945: checking dlfcn.h presence
configure:5945: gcc -E  conftest.c
configure:5945: $? = 0
configure:5945: result: yes
configure:5945: checking for dlfcn.h
configure:5945: result: yes
configure:6013: checking for g++
configure:6029: found /usr/bin/g++
configure:6040: result: g++
configure:6067: checking for C++ compiler version
configure:6076: g++ --version >&5
g++ (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 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:6087: $? = 0
configure:6076: g++ -v >&5
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-5) 
configure:6087: $? = 0
configure:6076: g++ -V >&5
g++: error: unrecognized command line option '-V'
g++: fatal error: no input files
compilation terminated.
configure:6087: $? = 4
configure:6076: g++ -qversion >&5
g++: error: unrecognized command line option '-qversion'
g++: fatal error: no input files
compilation terminated.
configure:6087: $? = 4
configure:6091: checking whether we are using the GNU C++ compiler
configure:6110: g++ -c   conftest.cpp >&5
configure:6110: $? = 0
configure:6119: result: yes
configure:6128: checking whether g++ accepts -g
configure:6148: g++ -c -g  conftest.cpp >&5
configure:6148: $? = 0
configure:6189: result: yes
configure:6214: checking dependency style of g++
configure:6325: result: gcc3
configure:6350: checking how to run the C++ preprocessor
configure:6377: g++ -E  conftest.cpp
configure:6377: $? = 0
configure:6391: g++ -E  conftest.cpp
conftest.cpp:22:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:6391: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:6416: result: g++ -E
configure:6436: g++ -E  conftest.cpp
configure:6436: $? = 0
configure:6450: g++ -E  conftest.cpp
conftest.cpp:22:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:6450: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:6534: checking for g77
configure:6564: result: no
configure:6534: checking for xlf
configure:6564: result: no
configure:6534: checking for f77
configure:6564: result: no
configure:6534: checking for frt
configure:6564: result: no
configure:6534: checking for pgf77
configure:6564: result: no
configure:6534: checking for cf77
configure:6564: result: no
configure:6534: checking for fort77
configure:6564: result: no
configure:6534: checking for fl32
configure:6564: result: no
configure:6534: checking for af77
configure:6564: result: no
configure:6534: checking for xlf90
configure:6564: result: no
configure:6534: checking for f90
configure:6564: result: no
configure:6534: checking for pgf90
configure:6564: result: no
configure:6534: checking for pghpf
configure:6564: result: no
configure:6534: checking for epcf90
configure:6564: result: no
configure:6534: checking for gfortran
configure:6564: result: no
configure:6534: checking for g95
configure:6564: result: no
configure:6534: checking for xlf95
configure:6564: result: no
configure:6534: checking for f95
configure:6564: result: no
configure:6534: checking for fort
configure:6564: result: no
configure:6534: checking for ifort
configure:6564: result: no
configure:6534: checking for ifc
configure:6564: result: no
configure:6534: checking for efc
configure:6564: result: no
configure:6534: checking for pgfortran
configure:6564: result: no
configure:6534: checking for pgf95
configure:6564: result: no
configure:6534: checking for lf95
configure:6564: result: no
configure:6534: checking for ftn
configure:6564: result: no
configure:6534: checking for nagfor
configure:6564: result: no
configure:6587: checking for Fortran 77 compiler version
configure:6596:  --version >&5
./configure: line 6598: --version: command not found
configure:6607: $? = 127
configure:6596:  -v >&5
./configure: line 6598: -v: command not found
configure:6607: $? = 127
configure:6596:  -V >&5
./configure: line 6598: -V: command not found
configure:6607: $? = 127
configure:6596:  -qversion >&5
./configure: line 6598: -qversion: command not found
configure:6607: $? = 127
configure:6616: checking whether we are using the GNU Fortran 77 compiler
configure:6629:  -c  conftest.F >&5
./configure: line 2319: -c: command not found
configure:6629: $? = 127
configure: failed program was:
|       program main
| #ifndef __GNUC__
|        choke me
| #endif
| 
|       end
configure:6638: result: no
configure:6644: checking whether  accepts -g
configure:6655:  -c -g conftest.f >&5
./configure: line 2319: -c: command not found
configure:6655: $? = 127
configure: failed program was:
|       program main
| 
|       end
configure:6663: result: no
configure:6697: checking the maximum length of command line arguments
configure:6806: result: 32768
configure:6817: checking command to parse /usr/bin/nm -B output from gcc object
configure:6922: gcc -c -g -O2 -Wall  conftest.c >&5
configure:6925: $? = 0
configure:6929: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ 	]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm
configure:6932: $? = 0
configure:6984: gcc -o conftest -g -O2 -Wall   conftest.c conftstm.o >&5
configure:6987: $? = 0
configure:7025: result: ok
configure:7029: checking for objdir
configure:7044: result: .libs
configure:7136: checking for ar
configure:7152: found /usr/bin/ar
configure:7163: result: ar
configure:7228: checking for ranlib
configure:7244: found /usr/bin/ranlib
configure:7255: result: ranlib
configure:7320: checking for strip
configure:7336: found /usr/bin/strip
configure:7347: result: strip
configure:7633: checking if gcc supports -fno-rtti -fno-exceptions
configure:7651: gcc -c -g -O2 -Wall  -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:7655: $? = 0
configure:7668: result: no
configure:7683: checking for gcc option to produce PIC
configure:7893: result: -fPIC
configure:7901: checking if gcc PIC flag -fPIC works
configure:7919: gcc -c -g -O2 -Wall  -fPIC -DPIC conftest.c >&5
configure:7923: $? = 0
configure:7936: result: yes
configure:7964: checking if gcc static flag -static works
configure:7992: result: yes
configure:8002: checking if gcc supports -c -o file.o
configure:8023: gcc -c -g -O2 -Wall  -o out/conftest2.o conftest.c >&5
configure:8027: $? = 0
configure:8049: result: yes
configure:8075: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
configure:8975: result: yes
configure:8996: checking whether -lc should be explicitly linked in
configure:9001: gcc -c -g -O2 -Wall  conftest.c >&5
configure:9004: $? = 0
configure:9019: gcc -shared conftest.o  -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| grep  -lc  \>/dev/null 2\>\&1
configure:9022: $? = 0
configure:9034: result: no
configure:9042: checking dynamic linker characteristics
configure:9630: result: GNU/Linux ld.so
configure:9639: checking how to hardcode library paths into programs
configure:9664: result: immediate
configure:9678: checking whether stripping libraries is possible
configure:9683: result: yes
configure:10199: checking if libtool supports shared libraries
configure:10201: result: yes
configure:10204: checking whether to build shared libraries
configure:10225: result: yes
configure:10228: checking whether to build static libraries
configure:10232: result: yes
configure:10324: creating libtool
configure:10908: checking for ld used by g++
configure:10975: result: /usr/bin/ld -m elf_x86_64
configure:10982: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld
configure:10997: result: yes
configure:11048: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
configure:11928: result: yes
configure:11950: g++ -c -g -O2  conftest.cpp >&5
configure:11953: $? = 0
configure:12072: checking for g++ option to produce PIC
configure:12346: result: -fPIC
configure:12354: checking if g++ PIC flag -fPIC works
configure:12372: g++ -c -g -O2  -fPIC -DPIC conftest.cpp >&5
configure:12376: $? = 0
configure:12389: result: yes
configure:12417: checking if g++ static flag -static works
configure:12445: result: yes
configure:12455: checking if g++ supports -c -o file.o
configure:12476: g++ -c -g -O2  -o out/conftest2.o conftest.cpp >&5
configure:12480: $? = 0
configure:12502: result: yes
configure:12528: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
configure:12553: result: yes
configure:12620: checking dynamic linker characteristics
configure:13208: result: GNU/Linux ld.so
configure:13217: checking how to hardcode library paths into programs
configure:13242: result: immediate
configure:19284: checking for ar
configure:19303: found /usr/bin/ar
configure:19316: result: /usr/bin/ar
configure:19338: checking for __b64_ntop in -lresolv
configure:19363: gcc -o conftest -g -O2 -Wall   conftest.c -lresolv   >&5
configure:19363: $? = 0
configure:19372: result: yes
configure:19475: checking thenonexistentheader.h usability
configure:19475: gcc -c -g -O2 -Wall  conftest.c >&5
conftest.c:56:34: fatal error: thenonexistentheader.h: No such file or directory
compilation terminated.
configure:19475: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 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 <thenonexistentheader.h>
configure:19475: result: no
configure:19475: checking thenonexistentheader.h presence
configure:19475: gcc -E  conftest.c
conftest.c:23:34: fatal error: thenonexistentheader.h: No such file or directory
compilation terminated.
configure:19475: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| /* end confdefs.h.  */
| #include <thenonexistentheader.h>
configure:19475: result: no
configure:19475: checking for thenonexistentheader.h
configure:19475: result: no
configure:19505: checking for crypt
configure:19505: gcc -o conftest -g -O2 -Wall   conftest.c  >&5
/tmp/ccCsNDXi.o: In function `main':
/data/src/android-master/external/libvncserver/conftest.c:57: undefined reference to `crypt'
collect2: error: ld returned 1 exit status
configure:19505: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| /* end confdefs.h.  */
| /* Define crypt to an innocuous variant, in case <limits.h> declares crypt.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define crypt innocuous_crypt
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char crypt (); 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 crypt
| 
| /* 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 crypt ();
| /* 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_crypt || defined __stub___crypt
| choke me
| #endif
| 
| int
| main ()
| {
| return crypt ();
|   ;
|   return 0;
| }
configure:19505: result: no
configure:19515: checking for crypt in -lcrypt
configure:19540: gcc -o conftest -g -O2 -Wall   conftest.c -lcrypt   >&5
configure:19540: $? = 0
configure:19549: result: yes
configure:19592: checking for RAND_file_name in -lcrypto
configure:19617: gcc -o conftest -g -O2 -Wall   conftest.c -lcrypto   >&5
/usr/bin/ld: cannot find -lcrypto
collect2: error: ld returned 1 exit status
configure:19617: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 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 RAND_file_name ();
| int
| main ()
| {
| return RAND_file_name ();
|   ;
|   return 0;
| }
configure:19626: result: no
configure:19687: checking for SSL_library_init in -lssl
configure:19712: gcc -o conftest -g -O2 -Wall   conftest.c -lssl   >&5
/usr/bin/ld: cannot find -lssl
collect2: error: ld returned 1 exit status
configure:19712: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 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 SSL_library_init ();
| int
| main ()
| {
| return SSL_library_init ();
|   ;
|   return 0;
| }
configure:19721: result: no
configure:19743: checking for X
configure:19851: gcc -E  conftest.c
configure:19851: $? = 0
configure:19882: gcc -o conftest -g -O2 -Wall   conftest.c -lX11  >&5
configure:19882: $? = 0
configure:19932: result: libraries , headers 
configure:20031: gcc -o conftest -g -O2 -Wall   conftest.c   -lX11 >&5
configure:20031: $? = 0
configure:20129: checking for gethostbyname
configure:20129: gcc -o conftest -g -O2 -Wall   conftest.c  >&5
configure:20129: $? = 0
configure:20129: result: yes
configure:20226: checking for connect
configure:20226: gcc -o conftest -g -O2 -Wall   conftest.c  >&5
configure:20226: $? = 0
configure:20226: result: yes
configure:20275: checking for remove
configure:20275: gcc -o conftest -g -O2 -Wall   conftest.c  >&5
configure:20275: $? = 0
configure:20275: result: yes
configure:20324: checking for shmat
configure:20324: gcc -o conftest -g -O2 -Wall   conftest.c  >&5
configure:20324: $? = 0
configure:20324: result: yes
configure:20382: checking for IceConnectionNumber in -lICE
configure:20407: gcc -o conftest -g -O2 -Wall   conftest.c -lICE   >&5
configure:20407: $? = 0
configure:20416: result: yes
configure:20560: checking for XGetImage in -lX11
configure:20585: gcc -o conftest -g -O2 -Wall   conftest.c -lX11   -lX11   >&5
configure:20585: $? = 0
configure:20594: result: yes
configure:21556: checking jpeglib.h usability
configure:21556: gcc -c -g -O2 -Wall  conftest.c >&5
configure:21556: $? = 0
configure:21556: result: yes
configure:21556: checking jpeglib.h presence
configure:21556: gcc -E  conftest.c
configure:21556: $? = 0
configure:21556: result: yes
configure:21556: checking for jpeglib.h
configure:21556: result: yes
configure:21562: checking for jpeg_CreateCompress in libjpeg
configure:21583: gcc -o conftest -g -O2 -Wall   conftest.c -ljpeg >&5
configure:21583: $? = 0
configure:21584: result: yes
configure:21629: checking whether JPEG library is libjpeg-turbo
configure:21660: gcc -o conftest -g -O2 -Wall   conftest.c -ljpeg >&5
conftest.c: In function 'main':
conftest.c:37:28: error: 'JCS_EXT_RGB' undeclared (first use in this function)
conftest.c:37:28: note: each undeclared identifier is reported only once for each function it appears in
configure:21660: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| /* end confdefs.h.  */
| #include <stdio.h>
| 				#include <jpeglib.h>
| int
| main ()
| {
| struct jpeg_compress_struct cinfo;
| 				struct jpeg_error_mgr jerr;
| 				cinfo.err=jpeg_std_error(&jerr);
| 				jpeg_create_compress(&cinfo);
| 				cinfo.input_components = 3;
| 				jpeg_set_defaults(&cinfo);
| 				cinfo.in_color_space = JCS_EXT_RGB;
| 				jpeg_default_colorspace(&cinfo);
| 				return 0;
|   ;
|   return 0;
| }
| 
configure:21664: result: no
configure:21712: WARNING:
==========================================================================
*** The libjpeg library you are building against is not libjpeg-turbo.
Performance will be reduced.  You can obtain libjpeg-turbo from:
https://sourceforge.net/projects/libjpeg-turbo/files/ ***
==========================================================================

configure:21753: checking png.h usability
configure:21753: gcc -c -g -O2 -Wall  conftest.c >&5
configure:21753: $? = 0
configure:21753: result: yes
configure:21753: checking png.h presence
configure:21753: gcc -E  conftest.c
configure:21753: $? = 0
configure:21753: result: yes
configure:21753: checking for png.h
configure:21753: result: yes
configure:21760: checking for png_create_write_struct in -lpng
configure:21785: gcc -o conftest -g -O2 -Wall   conftest.c -lpng  -ljpeg >&5
configure:21785: $? = 0
configure:21794: result: yes
configure:21869: checking zlib.h usability
configure:21869: gcc -c -g -O2 -Wall  conftest.c >&5
configure:21869: $? = 0
configure:21869: result: yes
configure:21869: checking zlib.h presence
configure:21869: gcc -E  conftest.c
configure:21869: $? = 0
configure:21869: result: yes
configure:21869: checking for zlib.h
configure:21869: result: yes
configure:21876: checking for deflate in -lz
configure:21901: gcc -o conftest -g -O2 -Wall   conftest.c -lz  -lpng -ljpeg >&5
configure:21901: $? = 0
configure:21910: result: yes
configure:21963: checking pthread.h usability
configure:21963: gcc -c -g -O2 -Wall  conftest.c >&5
configure:21963: $? = 0
configure:21963: result: yes
configure:21963: checking pthread.h presence
configure:21963: gcc -E  conftest.c
configure:21963: $? = 0
configure:21963: result: yes
configure:21963: checking for pthread.h
configure:21963: result: yes
configure:21970: checking for pthread_mutex_lock in -lpthread
configure:21995: gcc -o conftest -g -O2 -Wall   conftest.c -lpthread  -lz -lpng -ljpeg >&5
configure:21995: $? = 0
configure:22004: result: yes
configure:22015: checking for pthread_mutex_lock in -lpthread
configure:22049: result: yes
configure:22066: checking for __thread
configure:22079: gcc -o conftest -g -O2 -Wall   conftest.c -lpthread -lz -lpng -ljpeg >&5
conftest.c: In function 'main':
conftest.c:33:21: warning: unused variable 'p' [-Wunused-variable]
configure:22079: $? = 0
configure:22083: result: yes
configure:22241: checking for pkg-config
configure:22259: found /usr/bin/pkg-config
configure:22271: result: /usr/bin/pkg-config
configure:22296: checking pkg-config is at least version 0.9.0
configure:22299: result: yes
configure:22309: checking for GTK
configure:22316: $PKG_CONFIG --exists --print-errors "gtk+-2.0"
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
configure:22319: $? = 1
configure:22333: $PKG_CONFIG --exists --print-errors "gtk+-2.0"
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
configure:22336: $? = 1
configure:22350: result: no
No package 'gtk+-2.0' found
configure:22435: checking for libgcrypt-config
configure:22466: result: no
configure:22483: checking for LIBGCRYPT - version >= 1.4.0
configure:22520: result: no
configure:22574: checking for GNUTLS
configure:22581: $PKG_CONFIG --exists --print-errors "gnutls >= 2.4.0"
Package gnutls was not found in the pkg-config search path.
Perhaps you should add the directory containing `gnutls.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gnutls' found
configure:22584: $? = 1
configure:22598: $PKG_CONFIG --exists --print-errors "gnutls >= 2.4.0"
Package gnutls was not found in the pkg-config search path.
Perhaps you should add the directory containing `gnutls.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gnutls' found
configure:22601: $? = 1
configure:22615: result: no
No package 'gnutls' found
configure:22669: WARNING:
==========================================================================
*** No encryption library could be found. ***
A libvncserver/libvncclient built this way will not support SSL encryption.
To enable SSL install the necessary development packages (perhaps it is named
something like libssl-dev or gnutls-dev) and run configure again.
==========================================================================

configure:22691: checking for getaddrinfo
configure:22691: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:22691: $? = 0
configure:22691: result: yes
configure:22774: checking for ANSI C header files
configure:22878: result: yes
configure:22889: checking arpa/inet.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking arpa/inet.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for arpa/inet.h
configure:22889: result: yes
configure:22889: checking fcntl.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking fcntl.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for fcntl.h
configure:22889: result: yes
configure:22889: checking netdb.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking netdb.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for netdb.h
configure:22889: result: yes
configure:22889: checking netinet/in.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking netinet/in.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for netinet/in.h
configure:22889: result: yes
configure:22889: checking for stdlib.h
configure:22889: result: yes
configure:22889: checking for string.h
configure:22889: result: yes
configure:22889: checking sys/socket.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking sys/socket.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for sys/socket.h
configure:22889: result: yes
configure:22889: checking sys/time.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking sys/time.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for sys/time.h
configure:22889: result: yes
configure:22889: checking sys/timeb.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking sys/timeb.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for sys/timeb.h
configure:22889: result: yes
configure:22889: checking syslog.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking syslog.h presence
configure:22889: gcc -E  conftest.c
configure:22889: $? = 0
configure:22889: result: yes
configure:22889: checking for syslog.h
configure:22889: result: yes
configure:22889: checking for unistd.h
configure:22889: result: yes
configure:22889: checking ws2tcpip.h usability
configure:22889: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c:78:22: fatal error: ws2tcpip.h: No such file or directory
compilation terminated.
configure:22889: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_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 <ws2tcpip.h>
configure:22889: result: no
configure:22889: checking ws2tcpip.h presence
configure:22889: gcc -E  conftest.c
conftest.c:45:22: fatal error: ws2tcpip.h: No such file or directory
compilation terminated.
configure:22889: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <ws2tcpip.h>
configure:22889: result: no
configure:22889: checking for ws2tcpip.h
configure:22889: result: no
configure:22918: checking for an ANSI C-conforming const
configure:22984: gcc -c -g -O2 -Wall    conftest.c >&5
configure:22984: $? = 0
configure:22991: result: yes
configure:22999: checking for inline
configure:23015: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23015: $? = 0
configure:23023: result: inline
configure:23041: checking whether byte ordering is bigendian
configure:23056: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c:46:9: error: unknown type name 'not'
conftest.c:46:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'universal'
conftest.c:46:15: error: unknown type name 'universal'
configure:23056: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #ifndef __APPLE_CC__
| 	       not a universal capable compiler
| 	     #endif
| 	     typedef int dummy;
| 
configure:23101: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23101: $? = 0
configure:23119: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:52:4: error: unknown type name 'not'
conftest.c:52:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'endian'
configure:23119: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <sys/types.h>
| 		#include <sys/param.h>
| 
| int
| main ()
| {
| #if BYTE_ORDER != BIG_ENDIAN
| 		 not big endian
| 		#endif
| 
|   ;
|   return 0;
| }
configure:23247: result: no
configure:23265: checking for size_t
configure:23265: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23265: $? = 0
configure:23265: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:81:21: error: expected expression before ')' token
configure:23265: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_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
| int
| main ()
| {
| if (sizeof ((size_t)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:23265: result: yes
configure:23276: checking whether time.h and sys/time.h may both be included
configure:23296: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23296: $? = 0
configure:23303: result: yes
configure:23311: checking for sys/wait.h that is POSIX.1 compatible
configure:23337: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23337: $? = 0
configure:23344: result: yes
configure:23352: checking for socklen_t
configure:23370: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:52:11: warning: unused variable 'len' [-Wunused-variable]
configure:23370: $? = 0
configure:23378: result: yes
configure:23390: checking for stdint-types....
configure:23400: result: "(putting them into rfb/rfbint.h)"
configure:23413: checking for uintptr_t
configure:23413: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23413: $? = 0
configure:23413: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:52:24: error: expected expression before ')' token
configure:23413: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| /* end confdefs.h.  */
| #include <stdint.h>
| 
| int
| main ()
| {
| if (sizeof ((uintptr_t)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:23413: result: yes
configure:23421: checking for uint64_t
configure:23421: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23421: $? = 0
configure:23421: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:52:23: error: expected expression before ')' token
configure:23421: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| /* end confdefs.h.  */
| #include<stdint.h>
| 
| int
| main ()
| {
| if (sizeof ((uint64_t)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:23421: result: yes
configure:23429: result: ... seen our uintptr_t in stdint.h (uint64_t too)
configure:23694: result: creating rfb/rfbint.h : _RFB_RFBINT_H
configure:23721: checking for int_least32_t
configure:23721: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23721: $? = 0
configure:23721: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:52:28: error: expected expression before ')' token
configure:23721: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| /* end confdefs.h.  */
| #include <stdint.h>
| 
| int
| main ()
| {
| if (sizeof ((int_least32_t)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:23721: result: yes
configure:23727: checking for int_fast32_t
configure:23727: gcc -c -g -O2 -Wall    conftest.c >&5
configure:23727: $? = 0
configure:23727: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:52:27: error: expected expression before ')' token
configure:23727: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| /* end confdefs.h.  */
| #include<stdint.h>
| 
| int
| main ()
| {
| if (sizeof ((int_fast32_t)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:23727: result: yes
configure:23740: result: ..adding include stdint.h
configure:23750: result: ... seen good stdint.h inttypes
configure:23886: result: ... seen good uint64_t
configure:24106: result: ... DONE rfb/rfbint.h
configure:24115: checking for in_addr_t
configure:24133: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:52:11: warning: unused variable 'foo' [-Wunused-variable]
configure:24133: $? = 0
configure:24141: result: 
configure:24149: checking for working memcmp
configure:24192: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24192: $? = 0
configure:24192: ./conftest
configure:24192: $? = 0
configure:24202: result: yes
configure:24211: checking whether lstat correctly handles trailing slash
configure:24237: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24237: $? = 0
configure:24237: ./conftest
configure:24237: $? = 0
configure:24254: result: yes
configure:24273: checking whether stat accepts an empty string
configure:24293: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24293: $? = 0
configure:24293: ./conftest
configure:24293: $? = 0
configure:24303: result: no
configure:24321: checking for strftime
configure:24321: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:71:6: warning: conflicting types for built-in function 'strftime' [enabled by default]
configure:24321: $? = 0
configure:24321: result: yes
configure:24376: checking for vprintf
configure:24376: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:72:6: warning: conflicting types for built-in function 'vprintf' [enabled by default]
configure:24376: $? = 0
configure:24376: result: yes
configure:24382: checking for _doprnt
configure:24382: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
/tmp/ccGwZHiA.o: In function `main':
/data/src/android-master/external/libvncserver/conftest.c:84: undefined reference to `_doprnt'
collect2: error: ld returned 1 exit status
configure:24382: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| /* end confdefs.h.  */
| /* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
| #define _doprnt innocuous__doprnt
| 
| /* System header to define __stub macros and hopefully few prototypes,
|     which can conflict with char _doprnt (); 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 _doprnt
| 
| /* 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 _doprnt ();
| /* 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__doprnt || defined __stub____doprnt
| choke me
| #endif
| 
| int
| main ()
| {
| return _doprnt ();
|   ;
|   return 0;
| }
configure:24382: result: no
configure:24393: checking for pid_t
configure:24393: gcc -c -g -O2 -Wall    conftest.c >&5
configure:24393: $? = 0
configure:24393: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c: In function 'main':
conftest.c:86:20: error: expected expression before ')' token
configure:24393: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 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
| int
| main ()
| {
| if (sizeof ((pid_t)))
| 	    return 0;
|   ;
|   return 0;
| }
configure:24393: result: yes
configure:24406: checking vfork.h usability
configure:24406: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c:83:19: fatal error: vfork.h: No such file or directory
compilation terminated.
configure:24406: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 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 <vfork.h>
configure:24406: result: no
configure:24406: checking vfork.h presence
configure:24406: gcc -E  conftest.c
conftest.c:50:19: fatal error: vfork.h: No such file or directory
compilation terminated.
configure:24406: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| /* end confdefs.h.  */
| #include <vfork.h>
configure:24406: result: no
configure:24406: checking for vfork.h
configure:24406: result: no
configure:24419: checking for fork
configure:24419: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:73:6: warning: conflicting types for built-in function 'fork' [enabled by default]
configure:24419: $? = 0
configure:24419: result: yes
configure:24419: checking for vfork
configure:24419: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24419: $? = 0
configure:24419: result: yes
configure:24429: checking for working fork
configure:24451: gcc -o conftest -g -O2 -Wall     conftest.c -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24451: $? = 0
configure:24451: ./conftest
configure:24451: $? = 0
configure:24461: result: yes
configure:24482: checking for working vfork
configure:24592: result: yes
configure:24617: checking for gethostbyname in -lnsl
configure:24642: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl  -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24642: $? = 0
configure:24651: result: yes
configure:24662: checking for socket in -lsocket
configure:24687: gcc -o conftest -g -O2 -Wall     conftest.c -lsocket  -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
/usr/bin/ld: cannot find -lsocket
collect2: error: ld returned 1 exit status
configure:24687: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| #define HAVE_FORK 1
| #define HAVE_VFORK 1
| #define HAVE_WORKING_VFORK 1
| #define HAVE_WORKING_FORK 1
| #define HAVE_LIBNSL 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:24696: result: no
configure:24717: checking for ftime
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for gethostbyname
configure:24717: result: yes
configure:24717: checking for gethostname
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for gettimeofday
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for inet_ntoa
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for memmove
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:83:6: warning: conflicting types for built-in function 'memmove' [enabled by default]
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for memset
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:84:6: warning: conflicting types for built-in function 'memset' [enabled by default]
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for mmap
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for mkfifo
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for select
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for socket
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for strchr
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:89:6: warning: conflicting types for built-in function 'strchr' [enabled by default]
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for strcspn
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:90:6: warning: conflicting types for built-in function 'strcspn' [enabled by default]
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for strdup
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:91:6: warning: conflicting types for built-in function 'strdup' [enabled by default]
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for strerror
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
configure:24717: $? = 0
configure:24717: result: yes
configure:24717: checking for strstr
configure:24717: gcc -o conftest -g -O2 -Wall     conftest.c -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
conftest.c:93:6: warning: conflicting types for built-in function 'strstr' [enabled by default]
configure:24717: $? = 0
configure:24717: result: yes
configure:24743: checking for shmget in -lcygipc
configure:24768: gcc -o conftest -g -O2 -Wall     conftest.c -lcygipc  -lnsl -lpthread -lz -lpng -ljpeg -lresolv    >&5
/usr/bin/ld: cannot find -lcygipc
collect2: error: ld returned 1 exit status
configure:24768: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| #define HAVE_FORK 1
| #define HAVE_VFORK 1
| #define HAVE_WORKING_VFORK 1
| #define HAVE_WORKING_FORK 1
| #define HAVE_LIBNSL 1
| #define HAVE_FTIME 1
| #define HAVE_GETHOSTBYNAME 1
| #define HAVE_GETHOSTNAME 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_INET_NTOA 1
| #define HAVE_MEMMOVE 1
| #define HAVE_MEMSET 1
| #define HAVE_MMAP 1
| #define HAVE_MKFIFO 1
| #define HAVE_SELECT 1
| #define HAVE_SOCKET 1
| #define HAVE_STRCHR 1
| #define HAVE_STRCSPN 1
| #define HAVE_STRDUP 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSTR 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 shmget ();
| int
| main ()
| {
| return shmget ();
|   ;
|   return 0;
| }
configure:24777: result: no
configure:24808: checking ApplicationServices/ApplicationServices.h usability
configure:24808: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c:104:53: fatal error: ApplicationServices/ApplicationServices.h: No such file or directory
compilation terminated.
configure:24808: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| #define HAVE_FORK 1
| #define HAVE_VFORK 1
| #define HAVE_WORKING_VFORK 1
| #define HAVE_WORKING_FORK 1
| #define HAVE_LIBNSL 1
| #define HAVE_FTIME 1
| #define HAVE_GETHOSTBYNAME 1
| #define HAVE_GETHOSTNAME 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_INET_NTOA 1
| #define HAVE_MEMMOVE 1
| #define HAVE_MEMSET 1
| #define HAVE_MMAP 1
| #define HAVE_MKFIFO 1
| #define HAVE_SELECT 1
| #define HAVE_SOCKET 1
| #define HAVE_STRCHR 1
| #define HAVE_STRCSPN 1
| #define HAVE_STRDUP 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSTR 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 <ApplicationServices/ApplicationServices.h>
configure:24808: result: no
configure:24808: checking ApplicationServices/ApplicationServices.h presence
configure:24808: gcc -E  conftest.c
conftest.c:71:53: fatal error: ApplicationServices/ApplicationServices.h: No such file or directory
compilation terminated.
configure:24808: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| #define HAVE_FORK 1
| #define HAVE_VFORK 1
| #define HAVE_WORKING_VFORK 1
| #define HAVE_WORKING_FORK 1
| #define HAVE_LIBNSL 1
| #define HAVE_FTIME 1
| #define HAVE_GETHOSTBYNAME 1
| #define HAVE_GETHOSTNAME 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_INET_NTOA 1
| #define HAVE_MEMMOVE 1
| #define HAVE_MEMSET 1
| #define HAVE_MMAP 1
| #define HAVE_MKFIFO 1
| #define HAVE_SELECT 1
| #define HAVE_SOCKET 1
| #define HAVE_STRCHR 1
| #define HAVE_STRCSPN 1
| #define HAVE_STRDUP 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSTR 1
| /* end confdefs.h.  */
| #include <ApplicationServices/ApplicationServices.h>
configure:24808: result: no
configure:24808: checking for ApplicationServices/ApplicationServices.h
configure:24808: result: no
configure:24824: checking android/api-level.h usability
configure:24824: gcc -c -g -O2 -Wall    conftest.c >&5
conftest.c:104:31: fatal error: android/api-level.h: No such file or directory
compilation terminated.
configure:24824: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| #define HAVE_FORK 1
| #define HAVE_VFORK 1
| #define HAVE_WORKING_VFORK 1
| #define HAVE_WORKING_FORK 1
| #define HAVE_LIBNSL 1
| #define HAVE_FTIME 1
| #define HAVE_GETHOSTBYNAME 1
| #define HAVE_GETHOSTNAME 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_INET_NTOA 1
| #define HAVE_MEMMOVE 1
| #define HAVE_MEMSET 1
| #define HAVE_MMAP 1
| #define HAVE_MKFIFO 1
| #define HAVE_SELECT 1
| #define HAVE_SOCKET 1
| #define HAVE_STRCHR 1
| #define HAVE_STRCSPN 1
| #define HAVE_STRDUP 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSTR 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 <android/api-level.h>
configure:24824: result: no
configure:24824: checking android/api-level.h presence
configure:24824: gcc -E  conftest.c
conftest.c:71:31: fatal error: android/api-level.h: No such file or directory
compilation terminated.
configure:24824: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "LibVNCServer"
| #define PACKAGE_TARNAME "libvncserver"
| #define PACKAGE_VERSION "0.9.9"
| #define PACKAGE_STRING "LibVNCServer 0.9.9"
| #define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
| #define PACKAGE_URL ""
| #define PACKAGE "LibVNCServer"
| #define VERSION "0.9.9"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_DLFCN_H 1
| #define ALLOW24BPP 1
| #define HAVE_LIBCRYPT 1
| #define HAVE_X11 1
| #define HAVE_LIBJPEG 1
| #define HAVE_LIBPNG 1
| #define HAVE_LIBZ 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_TLS 1
| #define WITH_TIGHTVNC_FILETRANSFER 1
| #define WITH_WEBSOCKETS 1
| #define IPv6 1
| #define STDC_HEADERS 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TIMEB_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define TIME_WITH_SYS_TIME 1
| #define HAVE_SYS_WAIT_H 1
| #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
| #define HAVE_STRFTIME 1
| #define HAVE_VPRINTF 1
| #define HAVE_FORK 1
| #define HAVE_VFORK 1
| #define HAVE_WORKING_VFORK 1
| #define HAVE_WORKING_FORK 1
| #define HAVE_LIBNSL 1
| #define HAVE_FTIME 1
| #define HAVE_GETHOSTBYNAME 1
| #define HAVE_GETHOSTNAME 1
| #define HAVE_GETTIMEOFDAY 1
| #define HAVE_INET_NTOA 1
| #define HAVE_MEMMOVE 1
| #define HAVE_MEMSET 1
| #define HAVE_MMAP 1
| #define HAVE_MKFIFO 1
| #define HAVE_SELECT 1
| #define HAVE_SOCKET 1
| #define HAVE_STRCHR 1
| #define HAVE_STRCSPN 1
| #define HAVE_STRDUP 1
| #define HAVE_STRERROR 1
| #define HAVE_STRSTR 1
| /* end confdefs.h.  */
| #include <android/api-level.h>
configure:24824: result: no
configure:24824: checking for android/api-level.h
configure:24824: result: no
configure:25139: creating ./config.status

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

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

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

on android-dev

config.status:1019: creating Makefile
config.status:1019: creating libvncserver.pc
config.status:1019: creating libvncclient.pc
config.status:1019: creating libvncserver/Makefile
config.status:1019: creating examples/Makefile
config.status:1019: creating examples/android/Makefile
config.status:1019: creating vncterm/Makefile
config.status:1019: creating webclients/Makefile
config.status:1019: creating webclients/java-applet/Makefile
config.status:1019: creating webclients/java-applet/ssl/Makefile
config.status:1019: creating libvncclient/Makefile
config.status:1019: creating client_examples/Makefile
config.status:1019: creating test/Makefile
config.status:1019: creating libvncserver-config
config.status:1019: creating LibVNCServer.spec
config.status:1019: creating rfbconfig.h
config.status:1248: executing rfb/rfbconfig.h commands
config.status:1286: creating rfb/rfbconfig.h - prefix LIBVNCSERVER for rfbconfig.h defines
config.status:1248: executing depfiles commands
config.status:1248: executing chmod-libvncserver-config commands
configure:26566: WARNING: unrecognized options: --enable-maintainer-mode

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

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_c_bigendian=no
ac_cv_c_compiler_gnu=yes
ac_cv_c_const=yes
ac_cv_c_inline=inline
ac_cv_cxx_compiler_gnu=yes
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=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_F77_set=
ac_cv_env_F77_value=
ac_cv_env_FFLAGS_set=
ac_cv_env_FFLAGS_value=
ac_cv_env_GNUTLS_CFLAGS_set=
ac_cv_env_GNUTLS_CFLAGS_value=
ac_cv_env_GNUTLS_LIBS_set=
ac_cv_env_GNUTLS_LIBS_value=
ac_cv_env_GTK_CFLAGS_set=
ac_cv_env_GTK_CFLAGS_value=
ac_cv_env_GTK_LIBS_set=
ac_cv_env_GTK_LIBS_value=
ac_cv_env_JPEG_LDFLAGS_set=
ac_cv_env_JPEG_LDFLAGS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_PKG_CONFIG_LIBDIR_set=
ac_cv_env_PKG_CONFIG_LIBDIR_value=
ac_cv_env_PKG_CONFIG_PATH_set=
ac_cv_env_PKG_CONFIG_PATH_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_XMKMF_set=
ac_cv_env_XMKMF_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_f77_compiler_gnu=no
ac_cv_func__doprnt=no
ac_cv_func_connect=yes
ac_cv_func_crypt=no
ac_cv_func_fork=yes
ac_cv_func_fork_works=yes
ac_cv_func_ftime=yes
ac_cv_func_getaddrinfo=yes
ac_cv_func_gethostbyname=yes
ac_cv_func_gethostname=yes
ac_cv_func_gettimeofday=yes
ac_cv_func_inet_ntoa=yes
ac_cv_func_lstat_dereferences_slashed_symlink=yes
ac_cv_func_memcmp_working=yes
ac_cv_func_memmove=yes
ac_cv_func_memset=yes
ac_cv_func_mkfifo=yes
ac_cv_func_mmap=yes
ac_cv_func_remove=yes
ac_cv_func_select=yes
ac_cv_func_shmat=yes
ac_cv_func_socket=yes
ac_cv_func_stat_empty_string_bug=no
ac_cv_func_strchr=yes
ac_cv_func_strcspn=yes
ac_cv_func_strdup=yes
ac_cv_func_strerror=yes
ac_cv_func_strftime=yes
ac_cv_func_strstr=yes
ac_cv_func_vfork=yes
ac_cv_func_vfork_works=yes
ac_cv_func_vprintf=yes
ac_cv_have_x='have_x=yes	ac_x_includes='\'''\''	ac_x_libraries='\'''\'''
ac_cv_header_ApplicationServices_ApplicationServices_h=no
ac_cv_header_android_api_level_h=no
ac_cv_header_arpa_inet_h=yes
ac_cv_header_dlfcn_h=yes
ac_cv_header_fcntl_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_jpeglib_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_netdb_h=yes
ac_cv_header_netinet_in_h=yes
ac_cv_header_png_h=yes
ac_cv_header_pthread_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint=stdint.h
ac_cv_header_stdint_h=yes
ac_cv_header_stdint_o=no-file
ac_cv_header_stdint_test=no
ac_cv_header_stdint_u=no-file
ac_cv_header_stdint_x=stdint.h
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_socket_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_time_h=yes
ac_cv_header_sys_timeb_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_sys_wait_h=yes
ac_cv_header_syslog_h=yes
ac_cv_header_thenonexistentheader_h=no
ac_cv_header_time=yes
ac_cv_header_unistd_h=yes
ac_cv_header_vfork_h=no
ac_cv_header_ws2tcpip_h=no
ac_cv_header_zlib_h=yes
ac_cv_host=x86_64-unknown-linux-gnu
ac_cv_lib_ICE_IceConnectionNumber=yes
ac_cv_lib_X11_XGetImage=yes
ac_cv_lib_crypt_crypt=yes
ac_cv_lib_crypto_RAND_file_name=no
ac_cv_lib_cygipc_shmget=no
ac_cv_lib_nsl_gethostbyname=yes
ac_cv_lib_png_png_create_write_struct=yes
ac_cv_lib_pthread_pthread_mutex_lock=yes
ac_cv_lib_resolv___b64_ntop=yes
ac_cv_lib_socket_socket=no
ac_cv_lib_ssl_SSL_library_init=no
ac_cv_lib_z_deflate=yes
ac_cv_objext=o
ac_cv_path_AR=/usr/bin/ar
ac_cv_path_EGREP='/bin/grep -E'
ac_cv_path_GREP=/bin/grep
ac_cv_path_LIBGCRYPT_CONFIG=no
ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/bin/mkdir
ac_cv_prog_AWK=mawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_CXXCPP='g++ -E'
ac_cv_prog_ac_ct_AR=ar
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_CXX=g++
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_ac_ct_STRIP=strip
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_gcc_c_o=yes
ac_cv_prog_cxx_g=yes
ac_cv_prog_f77_g=no
ac_cv_prog_make_make_set=yes
ac_cv_sizeof_X=::::
ac_cv_sizeof_x=:
ac_cv_type_int_fast32_t=yes
ac_cv_type_int_least32_t=yes
ac_cv_type_pid_t=yes
ac_cv_type_size_t=yes
ac_cv_type_socklen_t=yes
ac_cv_type_uint64_t=yes
ac_cv_type_uintptr_t=yes
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_CXX_dependencies_compiler_type=gcc3
am_cv_make_support_nested_variables=yes
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_objdir=.libs
lt_cv_path_LD=/usr/bin/ld
lt_cv_path_LDCXX='/usr/bin/ld -m elf_x86_64'
lt_cv_path_NM='/usr/bin/nm -B'
lt_cv_path_SED=/bin/sed
lt_cv_prog_compiler_c_o=yes
lt_cv_prog_compiler_c_o_CXX=yes
lt_cv_prog_compiler_rtti_exceptions=no
lt_cv_prog_gnu_ld=yes
lt_cv_prog_gnu_ldcxx=yes
lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ 	]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'''
lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/  {\"\1\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \([^ ]*\) \([^ ]*\)$/  {"\2", (lt_ptr) \&\2},/p'\'''
lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^. .* \(.*\)$/extern int \1;/p'\'''
lt_cv_sys_max_cmd_len=32768
lt_lt_cv_prog_compiler_c_o='"yes"'
lt_lt_cv_prog_compiler_c_o_CXX='"yes"'
lt_lt_cv_sys_global_symbol_pipe='"sed -n -e '\''s/^.*[ 	]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ 	][ 	]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'\''"'
lt_lt_cv_sys_global_symbol_to_c_name_address='"sed -n -e '\''s/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'\''"'
lt_lt_cv_sys_global_symbol_to_cdecl='"sed -n -e '\''s/^. .* \\(.*\\)\$/extern int \\1;/p'\''"'

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

ACLOCAL='${SHELL} /data/src/android-master/external/libvncserver/missing --run aclocal-1.11'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AM_BACKSLASH='\'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
AM_DEFAULT_VERBOSITY='0'
AM_V='$(V)'
ANDROID_FALSE=''
ANDROID_TRUE='#'
AR='/usr/bin/ar'
AS='as'
AUTOCONF='${SHELL} /data/src/android-master/external/libvncserver/missing --run autoconf'
AUTOHEADER='${SHELL} /data/src/android-master/external/libvncserver/missing --run autoheader'
AUTOMAKE='${SHELL} /data/src/android-master/external/libvncserver/missing --run automake-1.11'
AVAHI_CFLAGS=''
AVAHI_LIBS=''
AWK='mawk'
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-g -O2 -Wall  '
CPP='gcc -E'
CPPFLAGS=''
CRYPT_LIBS='-lcrypt'
CXX='g++'
CXXCPP='g++ -E'
CXXDEPMODE='depmode=gcc3'
CXXFLAGS='-g -O2'
CYGIPC_FALSE=''
CYGIPC_TRUE='#'
CYGPATH_W='echo'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
DLLTOOL='dlltool'
ECHO='echo'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/bin/grep -E'
EXEEXT=''
F77=''
FFLAGS=''
GNUTLS_CFLAGS=''
GNUTLS_LIBS=''
GREP='/bin/grep'
GTK_CFLAGS=''
GTK_LIBS=''
HAVE_GNUTLS_FALSE=''
HAVE_GNUTLS_TRUE='#'
HAVE_LIBGTK_FALSE=''
HAVE_LIBGTK_TRUE='#'
HAVE_LIBJPEG_FALSE='#'
HAVE_LIBJPEG_TRUE=''
HAVE_LIBPNG_FALSE='#'
HAVE_LIBPNG_TRUE=''
HAVE_LIBPTHREAD_FALSE='#'
HAVE_LIBPTHREAD_TRUE=''
HAVE_LIBSDL_FALSE=''
HAVE_LIBSDL_TRUE='#'
HAVE_LIBSSL_FALSE=''
HAVE_LIBSSL_TRUE='#'
HAVE_LIBZ_FALSE='#'
HAVE_LIBZ_TRUE=''
HAVE_MP3LAME_FALSE=''
HAVE_MP3LAME_TRUE='#'
HAVE_RPM_FALSE=''
HAVE_RPM_TRUE='#'
HAVE_SYSTEM_LIBVNCSERVER_FALSE=''
HAVE_SYSTEM_LIBVNCSERVER_TRUE='#'
HAVE_X11_FALSE='#'
HAVE_X11_TRUE=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
JPEG_LDFLAGS=''
LDFLAGS=''
LIBGCRYPT_CFLAGS=''
LIBGCRYPT_CONFIG='no'
LIBGCRYPT_LIBS=''
LIBOBJS=''
LIBS='-lnsl -lpthread -lz -lpng -ljpeg -lresolv   '
LIBTOOL='$(SHELL) $(top_builddir)/libtool'
LINUX_FALSE='#'
LINUX_TRUE=''
LN_S='ln -s'
LTLIBOBJS=''
MAKEINFO='${SHELL} /data/src/android-master/external/libvncserver/missing --run makeinfo'
MINGW_FALSE=''
MINGW_TRUE='#'
MKDIR_P='/bin/mkdir -p'
OBJDUMP='objdump'
OBJEXT='o'
OSX_FALSE=''
OSX_OPENGL_FALSE=''
OSX_OPENGL_TRUE='#'
OSX_TRUE='#'
PACKAGE='LibVNCServer'
PACKAGE_BUGREPORT='http://sourceforge.net/projects/libvncserver'
PACKAGE_NAME='LibVNCServer'
PACKAGE_STRING='LibVNCServer 0.9.9'
PACKAGE_TARNAME='libvncserver'
PACKAGE_URL=''
PACKAGE_VERSION='0.9.9'
PATH_SEPARATOR=':'
PKG_CONFIG='/usr/bin/pkg-config'
PKG_CONFIG_LIBDIR=''
PKG_CONFIG_PATH=''
RANLIB='ranlib'
RPMSOURCEDIR='NOT-FOUND'
SDL_CFLAGS=''
SDL_LIBS=''
SET_MAKE=''
SHELL='/bin/bash'
SSL_LIBS=''
STRIP='strip'
SYSTEM_LIBVNCSERVER_CFLAGS=''
SYSTEM_LIBVNCSERVER_LIBS=''
VERSION='0.9.9'
WITH_FFMPEG_FALSE=''
WITH_FFMPEG_TRUE='#'
WITH_TIGHTVNC_FILETRANSFER_FALSE='#'
WITH_TIGHTVNC_FILETRANSFER_TRUE=''
WITH_WEBSOCKETS_FALSE='#'
WITH_WEBSOCKETS_TRUE=''
WITH_X11VNC_FALSE=''
WITH_X11VNC_TRUE='#'
WSOCKLIB=''
XMKMF=''
X_CFLAGS=''
X_EXTRA_LIBS=''
X_LIBS=''
X_PRE_LIBS=' -lSM -lICE'
ac_ct_CC='gcc'
ac_ct_CXX='g++'
ac_ct_F77=''
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__nodep='_no'
am__quote=''
am__tar='$${TAR-tar} chof - "$$tardir"'
am__untar='$${TAR-tar} xf -'
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host='x86_64-unknown-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /data/src/android-master/external/libvncserver/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'
pdfdir='${docdir}'
prefix='/usr/local'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''
with_ffmpeg=''

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

/* confdefs.h */
#define PACKAGE_NAME "LibVNCServer"
#define PACKAGE_TARNAME "libvncserver"
#define PACKAGE_VERSION "0.9.9"
#define PACKAGE_STRING "LibVNCServer 0.9.9"
#define PACKAGE_BUGREPORT "http://sourceforge.net/projects/libvncserver"
#define PACKAGE_URL ""
#define PACKAGE "LibVNCServer"
#define VERSION "0.9.9"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_DLFCN_H 1
#define ALLOW24BPP 1
#define HAVE_LIBCRYPT 1
#define HAVE_X11 1
#define HAVE_LIBJPEG 1
#define HAVE_LIBPNG 1
#define HAVE_LIBZ 1
#define HAVE_LIBPTHREAD 1
#define HAVE_TLS 1
#define WITH_TIGHTVNC_FILETRANSFER 1
#define WITH_WEBSOCKETS 1
#define IPv6 1
#define STDC_HEADERS 1
#define HAVE_ARPA_INET_H 1
#define HAVE_FCNTL_H 1
#define HAVE_NETDB_H 1
#define HAVE_NETINET_IN_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_SYS_SOCKET_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TIMEB_H 1
#define HAVE_SYSLOG_H 1
#define HAVE_UNISTD_H 1
#define TIME_WITH_SYS_TIME 1
#define HAVE_SYS_WAIT_H 1
#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
#define HAVE_STRFTIME 1
#define HAVE_VPRINTF 1
#define HAVE_FORK 1
#define HAVE_VFORK 1
#define HAVE_WORKING_VFORK 1
#define HAVE_WORKING_FORK 1
#define HAVE_LIBNSL 1
#define HAVE_FTIME 1
#define HAVE_GETHOSTBYNAME 1
#define HAVE_GETHOSTNAME 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_INET_NTOA 1
#define HAVE_MEMMOVE 1
#define HAVE_MEMSET 1
#define HAVE_MMAP 1
#define HAVE_MKFIFO 1
#define HAVE_SELECT 1
#define HAVE_SOCKET 1
#define HAVE_STRCHR 1
#define HAVE_STRCSPN 1
#define HAVE_STRDUP 1
#define HAVE_STRERROR 1
#define HAVE_STRSTR 1

configure: exit 0
