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

It was created by GRUB configure 0.97, which was
generated by GNU Autoconf 2.59.  Invocation command line was

  $ ./configure --disable-auto-linux-mem-opt --enable-preset-menu=android.lst --disable-ffs --disable-ufs2 --disable-minix --disable-reiserfs --disable-vstafs --disable-jfs --disable-xfs --disable-iso9660

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

hostname = weppard.corp.google.com
uname -m = x86_64
uname -r = 2.6.18.5-gg26workstation-mixed64-32
uname -s = Linux
uname -v = #1 SMP Mon Feb 11 16:45:49 PST 2008

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

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

PATH: /usr/local/xfce4.4/bin
PATH: /usr/local/xfce4.4/bin
PATH: /usr/local/symlinks
PATH: /usr/local/scripts
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/bin/X11


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

configure:1434: checking for a BSD-compatible install
configure:1489: result: /usr/bin/install -c
configure:1500: checking whether build environment is sane
configure:1543: result: yes
configure:1608: checking for gawk
configure:1624: found /usr/bin/gawk
configure:1634: result: gawk
configure:1644: checking whether make sets $(MAKE)
configure:1664: result: yes
configure:1839: checking build system type
configure:1857: result: x86_64-unknown-linux-gnu
configure:1865: checking host system type
configure:1879: result: x86_64-unknown-linux-gnu
configure:1903: checking whether to enable maintainer-specific portions of Makefiles
configure:1912: result: no
configure:2028: checking for gcc
configure:2044: found /usr/bin/gcc
configure:2054: result: gcc
configure:2112: checking for gcc
configure:2138: result: gcc
configure:2382: checking for C compiler version
configure:2385: gcc --version </dev/null >&5
gcc (GCC) 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
Copyright (C) 2006 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:2388: $? = 0
configure:2390: gcc -v </dev/null >&5
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=pentium4 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
configure:2393: $? = 0
configure:2395: gcc -V </dev/null >&5
gcc: '-V' option must have argument
configure:2398: $? = 1
configure:2421: checking for C compiler default output file name
configure:2424: gcc -m32    conftest.c  >&5
configure:2427: $? = 0
configure:2473: result: a.out
configure:2478: checking whether the C compiler works
configure:2484: ./a.out
configure:2487: $? = 0
configure:2504: result: yes
configure:2511: checking whether we are cross compiling
configure:2513: result: no
configure:2516: checking for suffix of executables
configure:2518: gcc -o conftest -m32    conftest.c  >&5
configure:2521: $? = 0
configure:2546: result: 
configure:2552: checking for suffix of object files
configure:2573: gcc -c -m32   conftest.c >&5
configure:2576: $? = 0
configure:2598: result: o
configure:2602: checking whether we are using the GNU C compiler
configure:2626: gcc -c -m32   conftest.c >&5
configure:2632: $? = 0
configure:2636: test -z 
			 || test ! -s conftest.err
configure:2639: $? = 0
configure:2642: test -s conftest.o
configure:2645: $? = 0
configure:2658: result: yes
configure:2664: checking whether gcc accepts -g
configure:2685: gcc -c -g  conftest.c >&5
configure:2691: $? = 0
configure:2695: test -z 
			 || test ! -s conftest.err
configure:2698: $? = 0
configure:2701: test -s conftest.o
configure:2704: $? = 0
configure:2715: result: yes
configure:2732: checking for gcc option to accept ANSI C
configure:2802: gcc  -c -m32   conftest.c >&5
configure:2808: $? = 0
configure:2812: test -z 
			 || test ! -s conftest.err
configure:2815: $? = 0
configure:2818: test -s conftest.o
configure:2821: $? = 0
configure:2839: result: none needed
configure:2857: gcc -c -m32   conftest.c >&5
conftest.c:2: error: syntax error before 'me'
configure:2863: $? = 1
configure: failed program was:
| #ifndef __cplusplus
|   choke me
| #endif
configure:3007: checking for style of include used by make
configure:3035: result: GNU
configure:3063: checking dependency style of gcc
configure:3153: result: gcc3
configure:3174: checking dependency style of gcc
configure:3264: result: gcc3
configure:3376: checking for ranlib
configure:3392: found /usr/bin/ranlib
configure:3403: result: ranlib
configure:3429: checking whether optimization for size works
configure:3453: gcc -c -Os -g  conftest.c >&5
configure:3459: $? = 0
configure:3463: test -z 
			 || test ! -s conftest.err
configure:3466: $? = 0
configure:3469: test -s conftest.o
configure:3472: $? = 0
configure:3485: result: yes
configure:3494: checking whether gcc has -fno-stack-protector
configure:3518: gcc -c -fno-stack-protector  conftest.c >&5
cc1: error: unrecognized command line option "-fno-stack-protector"
configure:3524: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "0.97"
| #define PACKAGE_STRING "GRUB 0.97"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define PACKAGE "grub"
| #define VERSION "0.97"
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| 
|   ;
|   return 0;
| }
configure:3550: result: no
configure:3566: checking whether -Wundef works
configure:3590: gcc -c -m32 -g -Wundef conftest.c >&5
configure:3596: $? = 0
configure:3600: test -z 
			 || test ! -s conftest.err
configure:3603: $? = 0
configure:3606: test -s conftest.o
configure:3609: $? = 0
configure:3622: result: yes
configure:3627: checking whether -falign-loops works
configure:3651: gcc -c -m32 -g -falign-loops=1 conftest.c >&5
configure:3657: $? = 0
configure:3661: test -z 
			 || test ! -s conftest.err
configure:3664: $? = 0
configure:3667: test -s conftest.o
configure:3670: $? = 0
configure:3683: result: yes
configure:3780: checking for objcopy
configure:3796: found /usr/bin/objcopy
configure:3806: result: objcopy
configure:3822: checking if C symbols get an underscore after compilation
configure:3837: gcc -m32 -g -S conftest.c
configure:3840: $? = 0
configure:3867: result: no
configure:3870: checking whether objcopy works for absolute addresses
configure:3883: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:3: warning: no previous prototype for 'cmain'
configure:3886: $? = 0
configure:3896: gcc -m32 -g -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000 conftest.o -o conftest.exec
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000002000
configure:3899: $? = 0
configure:3907: objcopy -O binary conftest.exec conftest
configure:3910: $? = 0
configure:3896: gcc -m32 -g -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000 conftest.o -o conftest.exec
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000008000
configure:3899: $? = 0
configure:3907: objcopy -O binary conftest.exec conftest
configure:3910: $? = 0
configure:3918: cmp -s conftest.old conftest
configure:3921: $? = 0
configure:3896: gcc -m32 -g -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00 conftest.o -o conftest.exec
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000007c00
configure:3899: $? = 0
configure:3907: objcopy -O binary conftest.exec conftest
configure:3910: $? = 0
configure:3918: cmp -s conftest.old conftest
configure:3921: $? = 0
configure:3932: result: yes
configure:3941: checking whether addr32 must be in the same line as the instruction
configure:3952: gcc -m32 -g -c conftest.s
configure:3955: $? = 0
configure:3985: result: yes
configure:3990: checking for .code16 addr32 assembler support
configure:4007: gcc -m32 -g -c conftest.s
configure:4010: $? = 0
configure:4021: result: yes
configure:4030: checking whether an absolute indirect call/jump must not be prefixed with an asterisk
configure:4043: gcc -m32 -g -c conftest.s
configure:4046: $? = 0
configure:4065: result: no
configure:4069: checking if start is defined by the compiler
configure:4090: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
/tmp/ccnTvoRl.o: In function `main':/home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/conftest.c:17: undefined reference to `start'
collect2: ld returned 1 exit status
configure:4096: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "0.97"
| #define PACKAGE_STRING "GRUB 0.97"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define PACKAGE "grub"
| #define VERSION "0.97"
| #define ADDR32 addr32
| #define DATA32 data32
| /* end confdefs.h.  */
| 
| int
| main ()
| {
| asm ("incl start")
|   ;
|   return 0;
| }
configure:4131: result: no
configure:4135: checking if _start is defined by the compiler
configure:4156: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
configure:4162: $? = 0
configure:4166: test -z 
			 || test ! -s conftest.err
configure:4169: $? = 0
configure:4172: test -s conftest
configure:4175: $? = 0
configure:4197: result: yes
configure:4208: checking if __bss_start is defined by the compiler
configure:4229: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
configure:4235: $? = 0
configure:4239: test -z 
			 || test ! -s conftest.err
configure:4242: $? = 0
configure:4245: test -s conftest
configure:4248: $? = 0
configure:4270: result: yes
configure:4274: checking if _edata is defined by the compiler
configure:4295: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
configure:4301: $? = 0
configure:4305: test -z 
			 || test ! -s conftest.err
configure:4308: $? = 0
configure:4311: test -s conftest
configure:4314: $? = 0
configure:4336: result: yes
configure:4340: checking if edata is defined by the compiler
configure:4361: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
configure:4367: $? = 0
configure:4371: test -z 
			 || test ! -s conftest.err
configure:4374: $? = 0
configure:4377: test -s conftest
configure:4380: $? = 0
configure:4402: result: yes
configure:4414: checking if end is defined by the compiler
configure:4435: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
configure:4441: $? = 0
configure:4445: test -z 
			 || test ! -s conftest.err
configure:4448: $? = 0
configure:4451: test -s conftest
configure:4454: $? = 0
configure:4476: result: yes
configure:4480: checking if _end is defined by the compiler
configure:4501: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
configure:4507: $? = 0
configure:4511: test -z 
			 || test ! -s conftest.err
configure:4514: $? = 0
configure:4517: test -s conftest
configure:4520: $? = 0
configure:4542: result: yes
configure:4562: checking for opendisk in -lutil
configure:4592: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c -lutil   >&5
/tmp/ccO7pDXI.o: In function `main':/home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/conftest.c:30: undefined reference to `opendisk'
collect2: ld returned 1 exit status
configure:4598: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "0.97"
| #define PACKAGE_STRING "GRUB 0.97"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define PACKAGE "grub"
| #define VERSION "0.97"
| #define ADDR32 addr32
| #define DATA32 data32
| #define HAVE_USCORE_START_SYMBOL 1
| #define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1
| #define HAVE_USCORE_EDATA_SYMBOL 1
| #define HAVE_EDATA_SYMBOL 1
| #define HAVE_END_SYMBOL 1
| #define HAVE_USCORE_END_SYMBOL 1
| /* end confdefs.h.  */
| 
| /* Override any gcc2 internal prototype to avoid an error.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| /* We use char because int might match the return type of a gcc2
|    builtin and then its argument prototype would still apply.  */
| char opendisk ();
| int
| main ()
| {
| opendisk ();
|   ;
|   return 0;
| }
configure:4624: result: no
configure:4638: checking for wgetch in -lncurses
configure:4668: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c -lncurses   >&5
configure:4674: $? = 0
configure:4678: test -z 
			 || test ! -s conftest.err
configure:4681: $? = 0
configure:4684: test -s conftest
configure:4687: $? = 0
configure:4700: result: yes
configure:4795: checking how to run the C preprocessor
configure:4830: gcc -E  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c
configure:4836: $? = 0
configure:4868: gcc -E  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c
conftest.c:20:28: error: ac_nonexistent.h: No such file or directory
configure:4874: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "0.97"
| #define PACKAGE_STRING "GRUB 0.97"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define PACKAGE "grub"
| #define VERSION "0.97"
| #define ADDR32 addr32
| #define DATA32 data32
| #define HAVE_USCORE_START_SYMBOL 1
| #define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1
| #define HAVE_USCORE_EDATA_SYMBOL 1
| #define HAVE_EDATA_SYMBOL 1
| #define HAVE_END_SYMBOL 1
| #define HAVE_USCORE_END_SYMBOL 1
| #define HAVE_LIBCURSES 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:4913: result: gcc -E
configure:4937: gcc -E  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c
configure:4943: $? = 0
configure:4975: gcc -E  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c
conftest.c:20:28: error: ac_nonexistent.h: No such file or directory
configure:4981: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "0.97"
| #define PACKAGE_STRING "GRUB 0.97"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define PACKAGE "grub"
| #define VERSION "0.97"
| #define ADDR32 addr32
| #define DATA32 data32
| #define HAVE_USCORE_START_SYMBOL 1
| #define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1
| #define HAVE_USCORE_EDATA_SYMBOL 1
| #define HAVE_EDATA_SYMBOL 1
| #define HAVE_END_SYMBOL 1
| #define HAVE_USCORE_END_SYMBOL 1
| #define HAVE_LIBCURSES 1
| /* end confdefs.h.  */
| #include <ac_nonexistent.h>
configure:5025: checking for egrep
configure:5035: result: grep -E
configure:5040: checking for ANSI C header files
configure:5065: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
configure:5071: $? = 0
configure:5075: test -z 
			 || test ! -s conftest.err
configure:5078: $? = 0
configure:5081: test -s conftest.o
configure:5084: $? = 0
configure:5173: gcc -o conftest -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef  conftest.c  >&5
conftest.c: In function 'main':
conftest.c:37: warning: implicit declaration of function 'exit'
conftest.c:37: warning: incompatible implicit declaration of built-in function 'exit'
configure:5176: $? = 0
configure:5178: ./conftest
configure:5181: $? = 0
configure:5196: result: yes
configure:5220: checking for sys/types.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:22:5: warning: "HAVE_SYS_TYPES_H" is not defined
conftest.c:25:5: warning: "HAVE_SYS_STAT_H" is not defined
conftest.c:36:5: warning: "HAVE_STRING_H" is not defined
conftest.c:42:5: warning: "HAVE_STRINGS_H" is not defined
conftest.c:45:5: warning: "HAVE_INTTYPES_H" is not defined
conftest.c:48:6: warning: "HAVE_STDINT_H" is not defined
conftest.c:52:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for sys/stat.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:26:5: warning: "HAVE_SYS_STAT_H" is not defined
conftest.c:37:5: warning: "HAVE_STRING_H" is not defined
conftest.c:43:5: warning: "HAVE_STRINGS_H" is not defined
conftest.c:46:5: warning: "HAVE_INTTYPES_H" is not defined
conftest.c:49:6: warning: "HAVE_STDINT_H" is not defined
conftest.c:53:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for stdlib.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:38:5: warning: "HAVE_STRING_H" is not defined
conftest.c:44:5: warning: "HAVE_STRINGS_H" is not defined
conftest.c:47:5: warning: "HAVE_INTTYPES_H" is not defined
conftest.c:50:6: warning: "HAVE_STDINT_H" is not defined
conftest.c:54:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for string.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:39:5: warning: "HAVE_STRING_H" is not defined
conftest.c:45:5: warning: "HAVE_STRINGS_H" is not defined
conftest.c:48:5: warning: "HAVE_INTTYPES_H" is not defined
conftest.c:51:6: warning: "HAVE_STDINT_H" is not defined
conftest.c:55:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for memory.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:46:5: warning: "HAVE_STRINGS_H" is not defined
conftest.c:49:5: warning: "HAVE_INTTYPES_H" is not defined
conftest.c:52:6: warning: "HAVE_STDINT_H" is not defined
conftest.c:56:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for strings.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:47:5: warning: "HAVE_STRINGS_H" is not defined
conftest.c:50:5: warning: "HAVE_INTTYPES_H" is not defined
conftest.c:53:6: warning: "HAVE_STDINT_H" is not defined
conftest.c:57:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for inttypes.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:51:5: warning: "HAVE_INTTYPES_H" is not defined
conftest.c:54:6: warning: "HAVE_STDINT_H" is not defined
conftest.c:58:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for stdint.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:59:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5220: checking for unistd.h
configure:5236: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:60:5: warning: "HAVE_UNISTD_H" is not defined
configure:5242: $? = 0
configure:5246: test -z 
			 || test ! -s conftest.err
configure:5249: $? = 0
configure:5252: test -s conftest.o
configure:5255: $? = 0
configure:5266: result: yes
configure:5287: checking for string.h
configure:5292: result: yes
configure:5287: checking for strings.h
configure:5292: result: yes
configure:5296: checking ncurses/curses.h usability
configure:5308: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
conftest.c:66:28: error: ncurses/curses.h: No such file or directory
configure:5314: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "0.97"
| #define PACKAGE_STRING "GRUB 0.97"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define PACKAGE "grub"
| #define VERSION "0.97"
| #define ADDR32 addr32
| #define DATA32 data32
| #define HAVE_USCORE_START_SYMBOL 1
| #define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1
| #define HAVE_USCORE_EDATA_SYMBOL 1
| #define HAVE_EDATA_SYMBOL 1
| #define HAVE_END_SYMBOL 1
| #define HAVE_USCORE_END_SYMBOL 1
| #define HAVE_LIBCURSES 1
| #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_STRING_H 1
| #define HAVE_STRINGS_H 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <ncurses/curses.h>
configure:5337: result: no
configure:5341: checking ncurses/curses.h presence
configure:5351: gcc -E  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c
conftest.c:32:28: error: ncurses/curses.h: No such file or directory
configure:5357: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "GRUB"
| #define PACKAGE_TARNAME "grub"
| #define PACKAGE_VERSION "0.97"
| #define PACKAGE_STRING "GRUB 0.97"
| #define PACKAGE_BUGREPORT "bug-grub@gnu.org"
| #define PACKAGE "grub"
| #define VERSION "0.97"
| #define ADDR32 addr32
| #define DATA32 data32
| #define HAVE_USCORE_START_SYMBOL 1
| #define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1
| #define HAVE_USCORE_EDATA_SYMBOL 1
| #define HAVE_EDATA_SYMBOL 1
| #define HAVE_END_SYMBOL 1
| #define HAVE_USCORE_END_SYMBOL 1
| #define HAVE_LIBCURSES 1
| #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_STRING_H 1
| #define HAVE_STRINGS_H 1
| /* end confdefs.h.  */
| #include <ncurses/curses.h>
configure:5377: result: no
configure:5412: checking for ncurses/curses.h
configure:5419: result: no
configure:5296: checking ncurses.h usability
configure:5308: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
configure:5314: $? = 0
configure:5318: test -z 
			 || test ! -s conftest.err
configure:5321: $? = 0
configure:5324: test -s conftest.o
configure:5327: $? = 0
configure:5337: result: yes
configure:5341: checking ncurses.h presence
configure:5351: gcc -E  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c
configure:5357: $? = 0
configure:5377: result: yes
configure:5412: checking for ncurses.h
configure:5419: result: yes
configure:5296: checking curses.h usability
configure:5308: gcc -c -m32 -g  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c >&5
configure:5314: $? = 0
configure:5318: test -z 
			 || test ! -s conftest.err
configure:5321: $? = 0
configure:5324: test -s conftest.o
configure:5327: $? = 0
configure:5337: result: yes
configure:5341: checking curses.h presence
configure:5351: gcc -E  -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef conftest.c
configure:5357: $? = 0
configure:5377: result: yes
configure:5412: checking for curses.h
configure:5419: result: yes
configure:6072: gcc -m32 -g conftest.c -o conftest
configure:6075: $? = 0
configure:6305: creating ./config.status

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

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

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

on weppard.corp.google.com

config.status:739: creating Makefile
config.status:739: creating stage1/Makefile
config.status:739: creating stage2/Makefile
config.status:739: creating docs/Makefile
config.status:739: creating lib/Makefile
config.status:739: creating util/Makefile
config.status:739: creating grub/Makefile
config.status:739: creating netboot/Makefile
config.status:739: creating util/grub-image
config.status:739: creating util/grub-install
config.status:739: creating util/grub-md5-crypt
config.status:739: creating util/grub-terminfo
config.status:739: creating util/grub-set-default
config.status:843: creating config.h
config.status:1157: executing depfiles commands

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

ac_cv_build=x86_64-unknown-linux-gnu
ac_cv_build_alias=x86_64-unknown-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_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_exeext=
ac_cv_header_curses_h=yes
ac_cv_header_inttypes_h=yes
ac_cv_header_memory_h=yes
ac_cv_header_ncurses_curses_h=no
ac_cv_header_ncurses_h=yes
ac_cv_header_stdc=yes
ac_cv_header_stdint_h=yes
ac_cv_header_stdlib_h=yes
ac_cv_header_string_h=yes
ac_cv_header_strings_h=yes
ac_cv_header_sys_stat_h=yes
ac_cv_header_sys_types_h=yes
ac_cv_header_unistd_h=yes
ac_cv_host=x86_64-unknown-linux-gnu
ac_cv_host_alias=x86_64-unknown-linux-gnu
ac_cv_lib_ncurses_wgetch=yes
ac_cv_lib_util_opendisk=no
ac_cv_objext=o
ac_cv_path_install='/usr/bin/install -c'
ac_cv_prog_AWK=gawk
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_OBJCOPY=objcopy
ac_cv_prog_ac_ct_RANLIB=ranlib
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_stdc=
ac_cv_prog_egrep='grep -E'
ac_cv_prog_make_make_set=yes
am_cv_CC_dependencies_compiler_type=gcc3
grub_cv_asm_absolute_without_asterisk=no
grub_cv_asm_addr32=yes
grub_cv_asm_prefix_requirement=yes
grub_cv_asm_uscore=no
grub_cv_check_edata_symbol=yes
grub_cv_check_end_symbol=yes
grub_cv_check_start_symbol=no
grub_cv_check_uscore_edata_symbol=yes
grub_cv_check_uscore_end_symbol=yes
grub_cv_check_uscore_start_symbol=yes
grub_cv_check_uscore_uscore_bss_start_symbol=yes
grub_cv_prog_objcopy_absolute=yes

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

ACLOCAL='${SHELL} /home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/missing --run aclocal-1.9'
AMDEPBACKSLASH='\'
AMDEP_FALSE='#'
AMDEP_TRUE=''
AMTAR='${SHELL} /home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/missing --run tar'
AUTOCONF='${SHELL} /home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/missing --run autoconf'
AUTOHEADER='${SHELL} /home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/missing --run autoheader'
AUTOMAKE='${SHELL} /home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/missing --run automake-1.9'
AWK='gawk'
BUILD_EXAMPLE_KERNEL_FALSE=''
BUILD_EXAMPLE_KERNEL_TRUE='#'
CC='gcc'
CCAS='gcc'
CCASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)'
CCDEPMODE='depmode=gcc3'
CFLAGS='-m32 -g'
CPP='gcc -E'
CPPFLAGS=' -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -falign-jumps=1 -falign-loops=1 -falign-functions=1 -Wundef'
CYGPATH_W='echo'
DEFS='-DHAVE_CONFIG_H'
DEPDIR='.deps'
DISKLESS_SUPPORT_FALSE=''
DISKLESS_SUPPORT_TRUE='#'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP='grep -E'
EXEEXT=''
FSYS_CFLAGS=' -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DUSE_MD5_PASSWORDS=1'
GRUB_CFLAGS='-O2'
GRUB_LIBS=' -lncurses'
HERCULES_SUPPORT_FALSE='#'
HERCULES_SUPPORT_TRUE=''
INSTALL_DATA='${INSTALL} -m 644'
INSTALL_PROGRAM='${INSTALL}'
INSTALL_SCRIPT='${INSTALL}'
INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s'
LDFLAGS=''
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
MAINT='#'
MAINTAINER_MODE_FALSE=''
MAINTAINER_MODE_TRUE='#'
MAKEINFO='${SHELL} /home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/missing --run makeinfo'
NETBOOT_DRIVERS=''
NETBOOT_SUPPORT_FALSE=''
NETBOOT_SUPPORT_TRUE='#'
NET_CFLAGS=''
NET_EXTRAFLAGS=' -DCONGESTED=1 -DNE_SCAN=0x280,0x300,0x320,0x340 -DWD_DEFAULT_MEM=0xCC000'
OBJCOPY='objcopy'
OBJEXT='o'
PACKAGE='grub'
PACKAGE_BUGREPORT='bug-grub@gnu.org'
PACKAGE_NAME='GRUB'
PACKAGE_STRING='GRUB 0.97'
PACKAGE_TARNAME='grub'
PACKAGE_VERSION='0.97'
PATH_SEPARATOR=':'
PERL=''
RANLIB='ranlib'
SERIAL_SPEED_SIMULATION_FALSE=''
SERIAL_SPEED_SIMULATION_TRUE='#'
SERIAL_SUPPORT_FALSE='#'
SERIAL_SUPPORT_TRUE=''
SET_MAKE=''
SHELL='/bin/sh'
STAGE1_CFLAGS='-O2'
STAGE2_CFLAGS='-Os'
STRIP=''
VERSION='0.97'
ac_ct_CC='gcc'
ac_ct_OBJCOPY='objcopy'
ac_ct_RANLIB='ranlib'
ac_ct_STRIP=''
am__fastdepCC_FALSE='#'
am__fastdepCC_TRUE=''
am__include='include'
am__leading_dot='.'
am__quote=''
am__tar='${AMTAR} chof - "$$tardir"'
am__untar='${AMTAR} xf -'
bindir='${exec_prefix}/bin'
build='x86_64-unknown-linux-gnu'
build_alias=''
build_cpu='x86_64'
build_os='linux-gnu'
build_vendor='unknown'
datadir='${prefix}/share'
exec_prefix='${prefix}'
host='x86_64-unknown-linux-gnu'
host_alias=''
host_cpu='x86_64'
host_os='linux-gnu'
host_vendor='unknown'
includedir='${prefix}/include'
infodir='${prefix}/info'
install_sh='/home/dmitriyz/src-lcl/android-x86/device/tools/grub-0.97/install-sh'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localstatedir='${prefix}/var'
mandir='${prefix}/man'
mkdir_p='mkdir -p --'
oldincludedir='/usr/include'
prefix='/usr/local'
program_transform_name='s,x,x,'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

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

#define ADDR32 addr32
#define DATA32 data32
#define HAVE_CURSES_H 1
#define HAVE_EDATA_SYMBOL 1
#define HAVE_END_SYMBOL 1
#define HAVE_INTTYPES_H 1
#define HAVE_LIBCURSES 1
#define HAVE_MEMORY_H 1
#define HAVE_NCURSES_H 1
#define HAVE_STDINT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRINGS_H 1
#define HAVE_STRINGS_H 1
#define HAVE_STRING_H 1
#define HAVE_STRING_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_UNISTD_H 1
#define HAVE_USCORE_EDATA_SYMBOL 1
#define HAVE_USCORE_END_SYMBOL 1
#define HAVE_USCORE_START_SYMBOL 1
#define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1
#define PACKAGE "grub"
#define PACKAGE_BUGREPORT "bug-grub@gnu.org"
#define PACKAGE_NAME "GRUB"
#define PACKAGE_STRING "GRUB 0.97"
#define PACKAGE_TARNAME "grub"
#define PACKAGE_VERSION "0.97"
#define PRESET_MENU_STRING ""
#define STDC_HEADERS 1
#define VERSION "0.97"

configure: exit 0
