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

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

  $ ./configure --no-create --no-recursion

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

hostname = gcc.mtv.corp.google.com
uname -m = x86_64
uname -r = 3.2.5-gg1336
uname -s = Linux
uname -v = #1 SMP Thu Aug 29 02:37:18 PDT 2013

/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: /usr/lib/jvm/java-6-sun/bin
PATH: /usr/local/google/master/out/host/linux-x86/bin
PATH: /usr/local/google/master/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin
PATH: /usr/local/google/master/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin
PATH: /usr/local/google/master/prebuilts/gcc/linux-x86/mips/mipsel-linux-android-4.8/bin
PATH: /usr/local/google/master/development/emulator/qtools
PATH: /usr/local/google/master/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin
PATH: /usr/local/google/master/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin
PATH: /usr/local/google/master/development/scripts
PATH: /usr/local/google/master/prebuilts/devtools/tools
PATH: /usr/local/google/home/dalvik-prebuild/vogar/bin/
PATH: /home/gcondra/bin
PATH: /usr/lib/lightdm/lightdm
PATH: /usr/lib/google-golang/bin
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /home/gcondra/bin
PATH: /home/gcondra/scripts
PATH: /home/gcondra/dex2jar
PATH: /home/gcondra/depot_tools


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

configure:2150: checking for a BSD-compatible install
configure:2218: result: /usr/bin/install -c
configure:2229: checking whether build environment is sane
configure:2279: result: yes
configure:2420: checking for a thread-safe mkdir -p
configure:2459: result: /bin/mkdir -p
configure:2472: checking for gawk
configure:2488: found /usr/bin/gawk
configure:2499: result: gawk
configure:2510: checking whether make sets $(MAKE)
configure:2532: result: yes
configure:2598: checking how to create a ustar tar archive
configure:2611: tar --version
tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
configure:2614: $? = 0
configure:2654: tardir=conftest.dir && eval tar --format=ustar -chf - "$tardir" >conftest.tar
configure:2657: $? = 0
configure:2661: tar -xf - <conftest.tar
configure:2664: $? = 0
configure:2677: result: gnutar
configure:2697: checking for style of include used by make
configure:2725: result: GNU
configure:2796: checking for gcc
configure:2812: found /usr/bin/gcc
configure:2823: result: gcc
configure:3052: checking for C compiler version
configure:3061: gcc --version >&5
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:3072: $? = 0
configure:3061: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --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.6 --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 --disable-werror --with-arch-32=i686 --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.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
configure:3072: $? = 0
configure:3061: gcc -V >&5
gcc: error: unrecognized option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:3072: $? = 4
configure:3061: gcc -qversion >&5
gcc: error: unrecognized option '-qversion'
gcc: fatal error: no input files
compilation terminated.
configure:3072: $? = 4
configure:3092: checking whether the C compiler works
configure:3114: gcc    conftest.c  >&5
configure:3118: $? = 0
configure:3166: result: yes
configure:3169: checking for C compiler default output file name
configure:3171: result: a.out
configure:3177: checking for suffix of executables
configure:3184: gcc -o conftest    conftest.c  >&5
configure:3188: $? = 0
configure:3210: result: 
configure:3232: checking whether we are cross compiling
configure:3240: gcc -o conftest    conftest.c  >&5
configure:3244: $? = 0
configure:3251: ./conftest
configure:3255: $? = 0
configure:3270: result: no
configure:3275: checking for suffix of object files
configure:3297: gcc -c   conftest.c >&5
configure:3301: $? = 0
configure:3322: result: o
configure:3326: checking whether we are using the GNU C compiler
configure:3345: gcc -c   conftest.c >&5
configure:3345: $? = 0
configure:3354: result: yes
configure:3363: checking whether gcc accepts -g
configure:3383: gcc -c -g  conftest.c >&5
configure:3383: $? = 0
configure:3424: result: yes
configure:3441: checking for gcc option to accept ISO C89
configure:3505: gcc  -c -g -O2  conftest.c >&5
configure:3505: $? = 0
configure:3518: result: none needed
configure:3540: checking dependency style of gcc
configure:3651: result: gcc3
configure:3667: checking if pointers to integers require aligned access
configure:3697: gcc -o conftest -g -O2   conftest.c  >&5
conftest.c: In function 'main':
conftest.c:17:33: error: expected expression before '[' token
configure:3697: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Xdelta3"
| #define PACKAGE_TARNAME "xdelta3"
| #define PACKAGE_VERSION "3.0.6"
| #define PACKAGE_STRING "Xdelta3 3.0.6"
| #define PACKAGE_BUGREPORT "josh.macdonald@gmail.com"
| #define PACKAGE_URL "http://xdelta.org/"
| /* end confdefs.h.  */
| 
| #include <stdio.h>
| #include <stdlib.h>
| 
| int main()
| {
|   char* string = malloc(40);
|   int i;
|   for (i=0; i < 40; i++) string[[i]] = i;
|   {
|      void* s = string;
|      int* p = s+1;
|      int* q = s+2;
| 
|      if (*p == *q) { return 1; }
|   }
|   return 0;
| }
| 
configure:3708: result: no
configure:3764: checking for gcc
configure:3791: result: gcc
configure:4020: checking for C compiler version
configure:4029: gcc --version >&5
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:4040: $? = 0
configure:4029: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --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.6 --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 --disable-werror --with-arch-32=i686 --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.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
configure:4040: $? = 0
configure:4029: gcc -V >&5
gcc: error: unrecognized option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:4040: $? = 4
configure:4029: gcc -qversion >&5
gcc: error: unrecognized option '-qversion'
gcc: fatal error: no input files
compilation terminated.
configure:4040: $? = 4
configure:4044: checking whether we are using the GNU C compiler
configure:4072: result: yes
configure:4081: checking whether gcc accepts -g
configure:4142: result: yes
configure:4159: checking for gcc option to accept ISO C89
configure:4236: result: none needed
configure:4258: checking dependency style of gcc
configure:4369: result: gcc3
configure:4442: checking for g++
configure:4458: found /usr/bin/g++
configure:4469: result: g++
configure:4496: checking for C++ compiler version
configure:4505: g++ --version >&5
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:4516: $? = 0
configure:4505: g++ -v >&5
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --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.6 --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 --disable-werror --with-arch-32=i686 --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.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
configure:4516: $? = 0
configure:4505: g++ -V >&5
g++: error: unrecognized option '-V'
g++: fatal error: no input files
compilation terminated.
configure:4516: $? = 4
configure:4505: g++ -qversion >&5
g++: error: unrecognized option '-qversion'
g++: fatal error: no input files
compilation terminated.
configure:4516: $? = 4
configure:4520: checking whether we are using the GNU C++ compiler
configure:4539: g++ -c   conftest.cpp >&5
configure:4539: $? = 0
configure:4548: result: yes
configure:4557: checking whether g++ accepts -g
configure:4577: g++ -c -g  conftest.cpp >&5
configure:4577: $? = 0
configure:4618: result: yes
configure:4643: checking dependency style of g++
configure:4754: result: gcc3
configure:4774: checking how to run the C preprocessor
configure:4805: gcc -E  conftest.c
configure:4805: $? = 0
configure:4819: gcc -E  conftest.c
conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:4819: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Xdelta3"
| #define PACKAGE_TARNAME "xdelta3"
| #define PACKAGE_VERSION "3.0.6"
| #define PACKAGE_STRING "Xdelta3 3.0.6"
| #define PACKAGE_BUGREPORT "josh.macdonald@gmail.com"
| #define PACKAGE_URL "http://xdelta.org/"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:4844: result: gcc -E
configure:4864: gcc -E  conftest.c
configure:4864: $? = 0
configure:4878: gcc -E  conftest.c
conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:4878: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Xdelta3"
| #define PACKAGE_TARNAME "xdelta3"
| #define PACKAGE_VERSION "3.0.6"
| #define PACKAGE_STRING "Xdelta3 3.0.6"
| #define PACKAGE_BUGREPORT "josh.macdonald@gmail.com"
| #define PACKAGE_URL "http://xdelta.org/"
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:4907: checking for grep that handles long lines and -e
configure:4965: result: /bin/grep
configure:4970: checking for egrep
configure:5032: result: /bin/grep -E
configure:5037: checking for ANSI C header files
configure:5057: gcc -c -g -O2  conftest.c >&5
configure:5057: $? = 0
configure:5130: gcc -o conftest -g -O2   conftest.c  >&5
configure:5130: $? = 0
configure:5130: ./conftest
configure:5130: $? = 0
configure:5141: result: yes
configure:5154: checking for sys/types.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for sys/stat.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for stdlib.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for string.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for memory.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for strings.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for inttypes.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for stdint.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5154: checking for unistd.h
configure:5154: gcc -c -g -O2  conftest.c >&5
configure:5154: $? = 0
configure:5154: result: yes
configure:5168: checking lzma.h usability
configure:5168: gcc -c -g -O2  conftest.c >&5
conftest.c:52:18: fatal error: lzma.h: No such file or directory
compilation terminated.
configure:5168: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Xdelta3"
| #define PACKAGE_TARNAME "xdelta3"
| #define PACKAGE_VERSION "3.0.6"
| #define PACKAGE_STRING "Xdelta3 3.0.6"
| #define PACKAGE_BUGREPORT "josh.macdonald@gmail.com"
| #define PACKAGE_URL "http://xdelta.org/"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #ifdef HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #ifdef HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #ifdef STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # ifdef HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #ifdef HAVE_STRING_H
| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #ifdef HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #ifdef HAVE_INTTYPES_H
| # include <inttypes.h>
| #endif
| #ifdef HAVE_STDINT_H
| # include <stdint.h>
| #endif
| #ifdef HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <lzma.h>
configure:5168: result: no
configure:5168: checking lzma.h presence
configure:5168: gcc -E  conftest.c
conftest.c:19:18: fatal error: lzma.h: No such file or directory
compilation terminated.
configure:5168: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Xdelta3"
| #define PACKAGE_TARNAME "xdelta3"
| #define PACKAGE_VERSION "3.0.6"
| #define PACKAGE_STRING "Xdelta3 3.0.6"
| #define PACKAGE_BUGREPORT "josh.macdonald@gmail.com"
| #define PACKAGE_URL "http://xdelta.org/"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| #include <lzma.h>
configure:5168: result: no
configure:5168: checking for lzma.h
configure:5168: result: no
configure:5178: checking for lzma_easy_buffer_encode in -llzma
configure:5203: gcc -o conftest -g -O2   conftest.c -llzma   >&5
/usr/bin/ld: cannot find -llzma
collect2: ld returned 1 exit status
configure:5203: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Xdelta3"
| #define PACKAGE_TARNAME "xdelta3"
| #define PACKAGE_VERSION "3.0.6"
| #define PACKAGE_STRING "Xdelta3 3.0.6"
| #define PACKAGE_BUGREPORT "josh.macdonald@gmail.com"
| #define PACKAGE_URL "http://xdelta.org/"
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| /* end confdefs.h.  */
| 
| /* 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 lzma_easy_buffer_encode ();
| int
| main ()
| {
| return lzma_easy_buffer_encode ();
|   ;
|   return 0;
| }
configure:5212: result: no
configure:5391: creating ./config.status

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

ac_cv_c_compiler_gnu=yes
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_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_header_inttypes_h=yes
ac_cv_header_lzma_h=no
ac_cv_header_memory_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_lib_lzma_lzma_easy_buffer_encode=no
ac_cv_objext=o
ac_cv_path_EGREP='/bin/grep -E'
ac_cv_path_GREP=/bin/grep
ac_cv_path_install='/usr/bin/install -c'
ac_cv_path_mkdir=/bin/mkdir
ac_cv_prog_AWK=gawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_CXX=g++
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_cxx_g=yes
ac_cv_prog_make_make_set=yes
am_cv_CC_dependencies_compiler_type=gcc3
am_cv_CXX_dependencies_compiler_type=gcc3
am_cv_prog_tar_ustar=gnutar
ax_cv_have_aligned_access_required=no

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

ACLOCAL='${SHELL} /usr/local/google/master/external/xdelta3/missing --run aclocal-1.11'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='$${TAR-tar}'
AUTOCONF='${SHELL} /usr/local/google/master/external/xdelta3/missing --run autoconf'
AUTOHEADER='${SHELL} /usr/local/google/master/external/xdelta3/missing --run autoheader'
AUTOMAKE='${SHELL} /usr/local/google/master/external/xdelta3/missing --run automake-1.11'
AWK='gawk'
CC='gcc'
CCDEPMODE='depmode=gcc3'
CFLAGS='-g -O2'
CPP='gcc -E'
CPPFLAGS=''
CXX='g++'
CXXDEPMODE='depmode=gcc3'
CXXFLAGS='-g -O2'
CYGPATH_W='echo'
DEBUG_SYMBOLS_FALSE=''
DEBUG_SYMBOLS_TRUE='#'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='/bin/grep -E'
EXEEXT=''
GREP='/bin/grep'
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
MAKEINFO='${SHELL} /usr/local/google/master/external/xdelta3/missing --run makeinfo'
MKDIR_P='/bin/mkdir -p'
OBJEXT='o'
PACKAGE='xdelta3'
PACKAGE_BUGREPORT='josh.macdonald@gmail.com'
PACKAGE_NAME='Xdelta3'
PACKAGE_STRING='Xdelta3 3.0.6'
PACKAGE_TARNAME='xdelta3'
PACKAGE_URL='http://xdelta.org/'
PACKAGE_VERSION='3.0.6'
PATH_SEPARATOR=':'
SET_MAKE=''
SHELL='/bin/sh'
STRIP=''
VERSION='3.0.6'
ac_ct_CC='gcc'
ac_ct_CXX='g++'
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 --format=ustar -chf - "$$tardir"'
am__untar='tar -xf -'
bindir='${exec_prefix}/bin'
build_alias=''
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='${prefix}'
host_alias=''
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh='${SHELL} /usr/local/google/master/external/xdelta3/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=''

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

/* confdefs.h */
#define PACKAGE_NAME "Xdelta3"
#define PACKAGE_TARNAME "xdelta3"
#define PACKAGE_VERSION "3.0.6"
#define PACKAGE_STRING "Xdelta3 3.0.6"
#define PACKAGE_BUGREPORT "josh.macdonald@gmail.com"
#define PACKAGE_URL "http://xdelta.org/"
#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

configure: exit 0

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

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

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

on gcc.mtv.corp.google.com

config.status:867: creating Makefile
config.status:867: creating config.h
config.status:1048: config.h is unchanged
config.status:1096: executing depfiles commands
