]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - src/patches/grub-fedora-18.patch
Merge remote-tracking branch 'origin/thirteen' into thirteen
[people/teissler/ipfire-2.x.git] / src / patches / grub-fedora-18.patch
CommitLineData
98603963
MT
1From: Peter Jones <pjones@redhat.com>"
2Date: Wed Apr 18 12:53:49 EDT 2012
3Subject: [PATCH] Changes from grub-0.97 to master
4
5This patch is a bundle of the changes between grub-0.97 and master.
6It can be reginerated from the git repository at:
7
8git://github.com/vathpela/grub-fedora.git
9
10Using the command:
11
12git diff grub-0.97 master
13
14 .gitignore | 10
15 ChangeLog | 48
16 Makefile.am | 7
17 Makefile.in | 605 ---
18 acinclude.m4 | 4
19 aclocal.m4 | 1061 -----
20 config.h.in | 106
21 configure | 7639 -----------------------------------------
22 configure.in | 113
23 docs/.gitignore | 3
24 docs/Makefile.am | 9
25 docs/Makefile.in | 770 ----
26 docs/grub-crypt.8 | 39
27 docs/grub-install.8 | 2
28 docs/grub.8 | 2
29 docs/grub.info | 370 +
30 docs/grub.texi | 79
31 docs/stamp-vti | 4
32 docs/version.texi | 4
33 efi/.gitignore | 7
34 efi/Makefile.am | 76
35 efi/byteswap.h | 37
36 efi/dhcp.h | 133
37 efi/efichainloader.c | 265 +
38 efi/eficon.c | 306 +
39 efi/eficore.c | 241 +
40 efi/efidisk.c | 801 ++++
41 efi/efidp.c | 999 +++++
42 efi/efigraph.c | 1501 ++++++++
43 efi/efimain.c | 129
44 efi/efimisc.c | 665 +++
45 efi/efimm.c | 539 ++
46 efi/efiserial.c | 265 +
47 efi/efitftp.c | 228 +
48 efi/efiuga.c | 982 +++++
49 efi/font_8x16.c | 4638 ++++++++++++++++++++++++
50 efi/graphics.c | 666 +++
51 efi/graphics.h | 81
52 efi/grub/.gitignore | 1
53 efi/grub/efi/api.h | 1716 +++++++++
54 efi/grub/efi/console_control.h | 59
55 efi/grub/efi/efi.h | 85
56 efi/grub/efi/eficall.h | 162
57 efi/grub/efi/misc.h | 60
58 efi/grub/efi/time.h | 31
59 efi/grub/i386/linux.h | 226 +
60 efi/grub/i386/types.h | 32
61 efi/grub/misc.h | 71
62 efi/grub/symbol.h | 34
63 efi/grub/types.h | 158
64 efi/grub/x86_64/linux.h | 234 +
65 efi/grub/x86_64/types.h | 32
66 efi/ia32/callwrap.S | 1
67 efi/ia32/callwrap.c | 131
68 efi/ia32/loader/bin_to_h.c | 29
69 efi/ia32/loader/linux.c | 648 +++
70 efi/ia32/loader/switch.S | 118
71 efi/ia32/loader/switch.h | 19
72 efi/ia32/reloc.c | 79
73 efi/ia32/setjmp.S | 86
74 efi/pxe.c | 460 ++
75 efi/pxe.h | 237 +
76 efi/ugadebug.h | 201 +
77 efi/x86_64/callwrap.S | 274 +
78 efi/x86_64/crt0-efi.S | 63
79 efi/x86_64/elf_efi.lds | 58
80 efi/x86_64/loader/Makefile | 20
81 efi/x86_64/loader/bin_to_h.c | 29
82 efi/x86_64/loader/linux.c | 760 ++++
83 efi/x86_64/loader/switch.S | 92
84 efi/x86_64/loader/switch.h | 25
85 efi/x86_64/reloc.c | 79
86 efi/x86_64/setjmp.S | 56
87 efi/xpm.c | 231 +
88 efi/xpm.h | 36
89 grub.spec | 438 ++
90 grub/.gitignore | 2
91 grub/Makefile.am | 2
92 grub/Makefile.in | 445 --
93 grub/asmstub.c | 194 -
94 grub/efitftp.c | 34
95 grub/main.c | 2
96 lib/.gitignore | 2
97 lib/Makefile.in | 416 --
98 lib/device.c | 360 +
99 makediff | 21
100 netboot/.gitignore | 2
101 netboot/Makefile.in | 1091 -----
102 netboot/etherboot.h | 34
103 netboot/main.c | 6
104 netboot/misc.c | 58
105 netboot/osdep.h | 24
106 stage1/.gitignore | 2
107 stage1/Makefile.am | 15
108 stage1/Makefile.in | 433 --
109 stage1/stage1.S | 4
110 stage2/.gitignore | 5
111 stage2/Makefile.am | 77
112 stage2/Makefile.in | 3250 -----------------
113 stage2/asm.S | 284 +
114 stage2/boot.c | 114
115 stage2/builtins.c | 1368 +++++--
116 stage2/char_io.c | 609 ++-
117 stage2/cmdline.c | 19
118 stage2/common.c | 16
119 stage2/disk_io.c | 213 -
120 stage2/efistubs.c | 7
121 stage2/efistubs.h | 8
122 stage2/fat.h | 2
123 stage2/filesys.h | 28
124 stage2/fsys_ext2fs.c | 394 +-
125 stage2/fsys_fat.c | 41
126 stage2/fsys_iso9660.c | 8
127 stage2/fsys_jfs.c | 12
128 stage2/fsys_minix.c | 10
129 stage2/fsys_reiserfs.c | 44
130 stage2/fsys_uefi.c | 265 +
131 stage2/fsys_vstafs.c | 28
132 stage2/fsys_xfs.c | 22
133 stage2/gpt.h | 69
134 stage2/graphics.c | 573 +++
135 stage2/graphics.h | 42
136 stage2/gunzip.c | 15
137 stage2/iso9660.h | 4
138 stage2/mb_info.h | 4
139 stage2/pc_slice.h | 51
140 stage2/serial.c | 4
141 stage2/sha256crypt.c | 723 +++
142 stage2/sha512crypt.c | 795 ++++
143 stage2/shared.h | 126
144 stage2/smp-imps.h | 1
145 stage2/stage1_5.c | 3
146 stage2/stage2.c | 203 -
147 stage2/start.S | 13
148 stage2/term.h | 35
149 stage2/tparm.c | 14
150 test | 1
151 util/.gitignore | 7
152 util/Makefile.am | 11
153 util/Makefile.in | 478 --
154 util/grub-crypt.in | 80
155 util/grub-install.in | 334 +
156 142 files changed, 26410 insertions(+), 17652 deletions(-)
157
158diff --git a/.gitignore b/.gitignore
159new file mode 100644
160index 0000000..3d7295a
161--- /dev/null
162+++ b/.gitignore
163@@ -0,0 +1,10 @@
164+Makefile.in
165+Makefile
166+configure
167+aclocal.m4
168+autom4te.cache
169+config.h
170+config.h.in
171+config.log
172+config.status
173+stamp-h1
174diff --git a/ChangeLog b/ChangeLog
175index 0f93033..9602fb9 100644
176--- a/ChangeLog
177+++ b/ChangeLog
178@@ -772,6 +772,18 @@
179 DATA_LEN is less than or equal to MULTIBOOT_SEARCH.
180 Reported by Neelkanth Natu <neelnatu@yahoo.com>.
181
182+2003-03-12 Leonid Lisovskiy <lly@pisem.net>
183+
184+ * lib/device.c (get_drive_geometry): grub utility didn't work
185+ due to uninitialized 'sector_size' struct geometry member.
186+ * stage1/stage1.h (GRUB_NO_DRIVE): Constant moved from
187+ stage2/shared.h and its value rolled back to 0xFF for backward
188+ compatibility with original grub.
189+ * stage1/stage1.S (boot_drive): Use GRUB_NO_DRIVE instead of
190+ constant.
191+ * stage2/bios.c (get_diskinfo): Workaround for BIOS'es that
192+ has CD-ROM drive number = last harddisk + 1.
193+
194 2003-03-10 Yoshinori K. Okuji <okuji@enbug.org>
195
196 From Andrew Walrond <andrew@walrond.org>:
197@@ -816,6 +828,42 @@
198 thus corrupts the stack. This is why we specify the exactly
199 necessary size of 0x42 bytes.
200
201+2003-01-28 Leonid Lisovskiy <lly@pisem.net>
202+
203+ ISO9660 support is added.
204+
205+ * stage2/fsys_iso9660.c: New file - a lot of code stolen from
206+ GRUB/98 0.5.
207+ * stage2/iso9660.h: Likewise.
208+ * stage2/start_torito.S: New file - El Torito boot sector.
209+ * stage2/Makefile.am (noinst_HEADERS): iso9660.h added.
210+ (libgrub_a_SOURCES): fsys_iso9660.c added.
211+ (pkgdata_DATA): iso9660_stage1_5 added.
212+ (noinst_PROGRAMS): iso9660_stage1_5.exec added.
213+ * configure.in (--disable-iso9660): New option.
214+ * stage2/builtins.c (setup_func): Add item for ISO9660 into
215+ STAGE1_5_MAP.
216+ * stage2/disk_io.c (rawread): Ability to read devices with
217+ sector size other than 512 added.
218+ (fsys_table): Added entry for ISO9660.
219+ (check_and_print_mount): Don't print error when probing
220+ partition.
221+ (real_open_partition): Cleanup globals after probing.
222+ * stage2/filesys.h [FSYS_ISO9660]: Add entries for ISO9660
223+ functions.
224+ (NUM_FSYS): Added FSYS_ISO9660_NUM.
225+ * stage2/shared.h (STAGE2_ID_ISO9660_STAGE1_5): New macro.
226+ (GRUB_NO_DRIVE): New constant.
227+ (struct geometry): New member 'sector_size'.
228+ * stage2/bios.c (get_diskinfo): Request 1.xx version of
229+ int13 extensions only since higher version request can
230+ destroy El Torito emulation on some BIOS'es.
231+ (get_cdinfo): New function - get El Torito emulation parameters.
232+ * stage2/asm.S (biosdisk_int13_extensions): pass AX, instead
233+ of AH for universality, save EBX,ECX,EDX registers content to
234+ avoid data corruption in caller functions.
235+ (get_diskinfo_int13_extensions): Removed.
236+
237 2003-01-25 Yoshinori K. Okuji <okuji@enbug.org>
238
239 From Steven Dick <ssd.gnu@mmae.ucf.edu>:
240diff --git a/Makefile.am b/Makefile.am
241index 63a9a4f..9bde872 100644
242--- a/Makefile.am
243+++ b/Makefile.am
244@@ -1,4 +1,9 @@
245 # Do not change this order if you don't know what you are doing.
246 AUTOMAKE_OPTIONS = 1.7 gnu
247-SUBDIRS = netboot stage2 stage1 lib grub util docs
248+SUBDIRS = netboot stage2 stage1 lib util docs
249+if PLATFORM_EFI
250+SUBDIRS += efi
251+else
252+SUBDIRS += grub
253+endif
254 EXTRA_DIST = BUGS MAINTENANCE
255diff --git a/Makefile.in b/Makefile.in
256deleted file mode 100644
257index 6652366..0000000
258--- a/Makefile.in
259+++ /dev/null
260@@ -1,605 +0,0 @@
261-# Makefile.in generated by automake 1.9.4 from Makefile.am.
262-# @configure_input@
263-
264-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
265-# 2003, 2004 Free Software Foundation, Inc.
266-# This Makefile.in is free software; the Free Software Foundation
267-# gives unlimited permission to copy and/or distribute it,
268-# with or without modifications, as long as this notice is preserved.
269-
270-# This program is distributed in the hope that it will be useful,
271-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
272-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
273-# PARTICULAR PURPOSE.
274-
275-@SET_MAKE@
276-srcdir = @srcdir@
277-top_srcdir = @top_srcdir@
278-VPATH = @srcdir@
279-pkgdatadir = $(datadir)/@PACKAGE@
280-pkglibdir = $(libdir)/@PACKAGE@
281-pkgincludedir = $(includedir)/@PACKAGE@
282-top_builddir = .
283-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
284-INSTALL = @INSTALL@
285-install_sh_DATA = $(install_sh) -c -m 644
286-install_sh_PROGRAM = $(install_sh) -c
287-install_sh_SCRIPT = $(install_sh) -c
288-INSTALL_HEADER = $(INSTALL_DATA)
289-transform = $(program_transform_name)
290-NORMAL_INSTALL = :
291-PRE_INSTALL = :
292-POST_INSTALL = :
293-NORMAL_UNINSTALL = :
294-PRE_UNINSTALL = :
295-POST_UNINSTALL = :
296-build_triplet = @build@
297-host_triplet = @host@
298-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
299- $(srcdir)/Makefile.in $(srcdir)/config.h.in \
300- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
301- THANKS TODO compile config.guess config.sub depcomp install-sh \
302- missing mkinstalldirs
303-subdir = .
304-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
305-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
306- $(top_srcdir)/configure.ac
307-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
308- $(ACLOCAL_M4)
309-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
310- configure.lineno configure.status.lineno
311-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
312-CONFIG_HEADER = config.h
313-CONFIG_CLEAN_FILES =
314-SOURCES =
315-DIST_SOURCES =
316-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
317- html-recursive info-recursive install-data-recursive \
318- install-exec-recursive install-info-recursive \
319- install-recursive installcheck-recursive installdirs-recursive \
320- pdf-recursive ps-recursive uninstall-info-recursive \
321- uninstall-recursive
322-ETAGS = etags
323-CTAGS = ctags
324-DIST_SUBDIRS = $(SUBDIRS)
325-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
326-distdir = $(PACKAGE)-$(VERSION)
327-top_distdir = $(distdir)
328-am__remove_distdir = \
329- { test ! -d $(distdir) \
330- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
331- && rm -fr $(distdir); }; }
332-DIST_ARCHIVES = $(distdir).tar.gz
333-GZIP_ENV = --best
334-distuninstallcheck_listfiles = find . -type f -print
335-distcleancheck_listfiles = find . -type f -print
336-ACLOCAL = @ACLOCAL@
337-AMDEP_FALSE = @AMDEP_FALSE@
338-AMDEP_TRUE = @AMDEP_TRUE@
339-AMTAR = @AMTAR@
340-AUTOCONF = @AUTOCONF@
341-AUTOHEADER = @AUTOHEADER@
342-AUTOMAKE = @AUTOMAKE@
343-AWK = @AWK@
344-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@
345-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@
346-CC = @CC@
347-CCAS = @CCAS@
348-CCASFLAGS = @CCASFLAGS@
349-CCDEPMODE = @CCDEPMODE@
350-CFLAGS = @CFLAGS@
351-CPP = @CPP@
352-CPPFLAGS = @CPPFLAGS@
353-CYGPATH_W = @CYGPATH_W@
354-DEFS = @DEFS@
355-DEPDIR = @DEPDIR@
356-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@
357-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@
358-ECHO_C = @ECHO_C@
359-ECHO_N = @ECHO_N@
360-ECHO_T = @ECHO_T@
361-EGREP = @EGREP@
362-EXEEXT = @EXEEXT@
363-FSYS_CFLAGS = @FSYS_CFLAGS@
364-GRUB_CFLAGS = @GRUB_CFLAGS@
365-GRUB_LIBS = @GRUB_LIBS@
366-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@
367-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@
368-INSTALL_DATA = @INSTALL_DATA@
369-INSTALL_PROGRAM = @INSTALL_PROGRAM@
370-INSTALL_SCRIPT = @INSTALL_SCRIPT@
371-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
372-LDFLAGS = @LDFLAGS@
373-LIBOBJS = @LIBOBJS@
374-LIBS = @LIBS@
375-LTLIBOBJS = @LTLIBOBJS@
376-MAINT = @MAINT@
377-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
378-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
379-MAKEINFO = @MAKEINFO@
380-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@
381-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@
382-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@
383-NET_CFLAGS = @NET_CFLAGS@
384-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@
385-OBJCOPY = @OBJCOPY@
386-OBJEXT = @OBJEXT@
387-PACKAGE = @PACKAGE@
388-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
389-PACKAGE_NAME = @PACKAGE_NAME@
390-PACKAGE_STRING = @PACKAGE_STRING@
391-PACKAGE_TARNAME = @PACKAGE_TARNAME@
392-PACKAGE_VERSION = @PACKAGE_VERSION@
393-PATH_SEPARATOR = @PATH_SEPARATOR@
394-PERL = @PERL@
395-RANLIB = @RANLIB@
396-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@
397-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@
398-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@
399-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@
400-SET_MAKE = @SET_MAKE@
401-SHELL = @SHELL@
402-STAGE1_CFLAGS = @STAGE1_CFLAGS@
403-STAGE2_CFLAGS = @STAGE2_CFLAGS@
404-STRIP = @STRIP@
405-VERSION = @VERSION@
406-ac_ct_CC = @ac_ct_CC@
407-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@
408-ac_ct_RANLIB = @ac_ct_RANLIB@
409-ac_ct_STRIP = @ac_ct_STRIP@
410-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
411-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
412-am__include = @am__include@
413-am__leading_dot = @am__leading_dot@
414-am__quote = @am__quote@
415-am__tar = @am__tar@
416-am__untar = @am__untar@
417-bindir = @bindir@
418-build = @build@
419-build_alias = @build_alias@
420-build_cpu = @build_cpu@
421-build_os = @build_os@
422-build_vendor = @build_vendor@
423-datadir = @datadir@
424-exec_prefix = @exec_prefix@
425-host = @host@
426-host_alias = @host_alias@
427-host_cpu = @host_cpu@
428-host_os = @host_os@
429-host_vendor = @host_vendor@
430-includedir = @includedir@
431-infodir = @infodir@
432-install_sh = @install_sh@
433-libdir = @libdir@
434-libexecdir = @libexecdir@
435-localstatedir = @localstatedir@
436-mandir = @mandir@
437-mkdir_p = @mkdir_p@
438-oldincludedir = @oldincludedir@
439-prefix = @prefix@
440-program_transform_name = @program_transform_name@
441-sbindir = @sbindir@
442-sharedstatedir = @sharedstatedir@
443-sysconfdir = @sysconfdir@
444-target_alias = @target_alias@
445-
446-# Do not change this order if you don't know what you are doing.
447-AUTOMAKE_OPTIONS = 1.7 gnu
448-SUBDIRS = netboot stage2 stage1 lib grub util docs
449-EXTRA_DIST = BUGS MAINTENANCE
450-all: config.h
451- $(MAKE) $(AM_MAKEFLAGS) all-recursive
452-
453-.SUFFIXES:
454-am--refresh:
455- @:
456-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
457- @for dep in $?; do \
458- case '$(am__configure_deps)' in \
459- *$$dep*) \
460- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
461- cd $(srcdir) && $(AUTOMAKE) --gnu \
462- && exit 0; \
463- exit 1;; \
464- esac; \
465- done; \
466- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
467- cd $(top_srcdir) && \
468- $(AUTOMAKE) --gnu Makefile
469-.PRECIOUS: Makefile
470-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
471- @case '$?' in \
472- *config.status*) \
473- echo ' $(SHELL) ./config.status'; \
474- $(SHELL) ./config.status;; \
475- *) \
476- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
477- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
478- esac;
479-
480-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
481- $(SHELL) ./config.status --recheck
482-
483-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
484- cd $(srcdir) && $(AUTOCONF)
485-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
486- cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
487-
488-config.h: stamp-h1
489- @if test ! -f $@; then \
490- rm -f stamp-h1; \
491- $(MAKE) stamp-h1; \
492- else :; fi
493-
494-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
495- @rm -f stamp-h1
496- cd $(top_builddir) && $(SHELL) ./config.status config.h
497-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
498- cd $(top_srcdir) && $(AUTOHEADER)
499- rm -f stamp-h1
500- touch $@
501-
502-distclean-hdr:
503- -rm -f config.h stamp-h1
504-uninstall-info-am:
505-
506-# This directory's subdirectories are mostly independent; you can cd
507-# into them and run `make' without going through this Makefile.
508-# To change the values of `make' variables: instead of editing Makefiles,
509-# (1) if the variable is set in `config.status', edit `config.status'
510-# (which will cause the Makefiles to be regenerated when you run `make');
511-# (2) otherwise, pass the desired values on the `make' command line.
512-$(RECURSIVE_TARGETS):
513- @set fnord $$MAKEFLAGS; amf=$$2; \
514- dot_seen=no; \
515- target=`echo $@ | sed s/-recursive//`; \
516- list='$(SUBDIRS)'; for subdir in $$list; do \
517- echo "Making $$target in $$subdir"; \
518- if test "$$subdir" = "."; then \
519- dot_seen=yes; \
520- local_target="$$target-am"; \
521- else \
522- local_target="$$target"; \
523- fi; \
524- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
525- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
526- done; \
527- if test "$$dot_seen" = "no"; then \
528- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
529- fi; test -z "$$fail"
530-
531-mostlyclean-recursive clean-recursive distclean-recursive \
532-maintainer-clean-recursive:
533- @set fnord $$MAKEFLAGS; amf=$$2; \
534- dot_seen=no; \
535- case "$@" in \
536- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
537- *) list='$(SUBDIRS)' ;; \
538- esac; \
539- rev=''; for subdir in $$list; do \
540- if test "$$subdir" = "."; then :; else \
541- rev="$$subdir $$rev"; \
542- fi; \
543- done; \
544- rev="$$rev ."; \
545- target=`echo $@ | sed s/-recursive//`; \
546- for subdir in $$rev; do \
547- echo "Making $$target in $$subdir"; \
548- if test "$$subdir" = "."; then \
549- local_target="$$target-am"; \
550- else \
551- local_target="$$target"; \
552- fi; \
553- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
554- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
555- done && test -z "$$fail"
556-tags-recursive:
557- list='$(SUBDIRS)'; for subdir in $$list; do \
558- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
559- done
560-ctags-recursive:
561- list='$(SUBDIRS)'; for subdir in $$list; do \
562- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
563- done
564-
565-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
566- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
567- unique=`for i in $$list; do \
568- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
569- done | \
570- $(AWK) ' { files[$$0] = 1; } \
571- END { for (i in files) print i; }'`; \
572- mkid -fID $$unique
573-tags: TAGS
574-
575-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
576- $(TAGS_FILES) $(LISP)
577- tags=; \
578- here=`pwd`; \
579- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
580- include_option=--etags-include; \
581- empty_fix=.; \
582- else \
583- include_option=--include; \
584- empty_fix=; \
585- fi; \
586- list='$(SUBDIRS)'; for subdir in $$list; do \
587- if test "$$subdir" = .; then :; else \
588- test ! -f $$subdir/TAGS || \
589- tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
590- fi; \
591- done; \
592- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
593- unique=`for i in $$list; do \
594- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
595- done | \
596- $(AWK) ' { files[$$0] = 1; } \
597- END { for (i in files) print i; }'`; \
598- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
599- test -n "$$unique" || unique=$$empty_fix; \
600- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
601- $$tags $$unique; \
602- fi
603-ctags: CTAGS
604-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
605- $(TAGS_FILES) $(LISP)
606- tags=; \
607- here=`pwd`; \
608- list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
609- unique=`for i in $$list; do \
610- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
611- done | \
612- $(AWK) ' { files[$$0] = 1; } \
613- END { for (i in files) print i; }'`; \
614- test -z "$(CTAGS_ARGS)$$tags$$unique" \
615- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
616- $$tags $$unique
617-
618-GTAGS:
619- here=`$(am__cd) $(top_builddir) && pwd` \
620- && cd $(top_srcdir) \
621- && gtags -i $(GTAGS_ARGS) $$here
622-
623-distclean-tags:
624- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
625-
626-distdir: $(DISTFILES)
627- $(am__remove_distdir)
628- mkdir $(distdir)
629- $(mkdir_p) $(distdir)/util
630- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
631- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
632- list='$(DISTFILES)'; for file in $$list; do \
633- case $$file in \
634- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
635- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
636- esac; \
637- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
638- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
639- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
640- dir="/$$dir"; \
641- $(mkdir_p) "$(distdir)$$dir"; \
642- else \
643- dir=''; \
644- fi; \
645- if test -d $$d/$$file; then \
646- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
647- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
648- fi; \
649- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
650- else \
651- test -f $(distdir)/$$file \
652- || cp -p $$d/$$file $(distdir)/$$file \
653- || exit 1; \
654- fi; \
655- done
656- list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
657- if test "$$subdir" = .; then :; else \
658- test -d "$(distdir)/$$subdir" \
659- || $(mkdir_p) "$(distdir)/$$subdir" \
660- || exit 1; \
661- distdir=`$(am__cd) $(distdir) && pwd`; \
662- top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
663- (cd $$subdir && \
664- $(MAKE) $(AM_MAKEFLAGS) \
665- top_distdir="$$top_distdir" \
666- distdir="$$distdir/$$subdir" \
667- distdir) \
668- || exit 1; \
669- fi; \
670- done
671- -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
672- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
673- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
674- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
675- || chmod -R a+r $(distdir)
676-dist-gzip: distdir
677- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
678- $(am__remove_distdir)
679-
680-dist-bzip2: distdir
681- tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
682- $(am__remove_distdir)
683-
684-dist-tarZ: distdir
685- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
686- $(am__remove_distdir)
687-
688-dist-shar: distdir
689- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
690- $(am__remove_distdir)
691-
692-dist-zip: distdir
693- -rm -f $(distdir).zip
694- zip -rq $(distdir).zip $(distdir)
695- $(am__remove_distdir)
696-
697-dist dist-all: distdir
698- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
699- $(am__remove_distdir)
700-
701-# This target untars the dist file and tries a VPATH configuration. Then
702-# it guarantees that the distribution is self-contained by making another
703-# tarfile.
704-distcheck: dist
705- case '$(DIST_ARCHIVES)' in \
706- *.tar.gz*) \
707- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
708- *.tar.bz2*) \
709- bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
710- *.tar.Z*) \
711- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
712- *.shar.gz*) \
713- GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
714- *.zip*) \
715- unzip $(distdir).zip ;;\
716- esac
717- chmod -R a-w $(distdir); chmod a+w $(distdir)
718- mkdir $(distdir)/_build
719- mkdir $(distdir)/_inst
720- chmod a-w $(distdir)
721- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
722- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
723- && cd $(distdir)/_build \
724- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
725- $(DISTCHECK_CONFIGURE_FLAGS) \
726- && $(MAKE) $(AM_MAKEFLAGS) \
727- && $(MAKE) $(AM_MAKEFLAGS) dvi \
728- && $(MAKE) $(AM_MAKEFLAGS) check \
729- && $(MAKE) $(AM_MAKEFLAGS) install \
730- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
731- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
732- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
733- distuninstallcheck \
734- && chmod -R a-w "$$dc_install_base" \
735- && ({ \
736- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
737- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
738- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
739- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
740- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
741- } || { rm -rf "$$dc_destdir"; exit 1; }) \
742- && rm -rf "$$dc_destdir" \
743- && $(MAKE) $(AM_MAKEFLAGS) dist \
744- && rm -rf $(DIST_ARCHIVES) \
745- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
746- $(am__remove_distdir)
747- @(echo "$(distdir) archives ready for distribution: "; \
748- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
749- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
750-distuninstallcheck:
751- @cd $(distuninstallcheck_dir) \
752- && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
753- || { echo "ERROR: files left after uninstall:" ; \
754- if test -n "$(DESTDIR)"; then \
755- echo " (check DESTDIR support)"; \
756- fi ; \
757- $(distuninstallcheck_listfiles) ; \
758- exit 1; } >&2
759-distcleancheck: distclean
760- @if test '$(srcdir)' = . ; then \
761- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
762- exit 1 ; \
763- fi
764- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
765- || { echo "ERROR: files left in build directory after distclean:" ; \
766- $(distcleancheck_listfiles) ; \
767- exit 1; } >&2
768-check-am: all-am
769-check: check-recursive
770-all-am: Makefile config.h
771-installdirs: installdirs-recursive
772-installdirs-am:
773-install: install-recursive
774-install-exec: install-exec-recursive
775-install-data: install-data-recursive
776-uninstall: uninstall-recursive
777-
778-install-am: all-am
779- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
780-
781-installcheck: installcheck-recursive
782-install-strip:
783- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
784- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
785- `test -z '$(STRIP)' || \
786- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
787-mostlyclean-generic:
788-
789-clean-generic:
790-
791-distclean-generic:
792- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
793-
794-maintainer-clean-generic:
795- @echo "This command is intended for maintainers to use"
796- @echo "it deletes files that may require special tools to rebuild."
797-clean: clean-recursive
798-
799-clean-am: clean-generic mostlyclean-am
800-
801-distclean: distclean-recursive
802- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
803- -rm -f Makefile
804-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
805-
806-dvi: dvi-recursive
807-
808-dvi-am:
809-
810-html: html-recursive
811-
812-info: info-recursive
813-
814-info-am:
815-
816-install-data-am:
817-
818-install-exec-am:
819-
820-install-info: install-info-recursive
821-
822-install-man:
823-
824-installcheck-am:
825-
826-maintainer-clean: maintainer-clean-recursive
827- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
828- -rm -rf $(top_srcdir)/autom4te.cache
829- -rm -f Makefile
830-maintainer-clean-am: distclean-am maintainer-clean-generic
831-
832-mostlyclean: mostlyclean-recursive
833-
834-mostlyclean-am: mostlyclean-generic
835-
836-pdf: pdf-recursive
837-
838-pdf-am:
839-
840-ps: ps-recursive
841-
842-ps-am:
843-
844-uninstall-am: uninstall-info-am
845-
846-uninstall-info: uninstall-info-recursive
847-
848-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
849- check-am clean clean-generic clean-recursive ctags \
850- ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
851- dist-tarZ dist-zip distcheck distclean distclean-generic \
852- distclean-hdr distclean-recursive distclean-tags \
853- distcleancheck distdir distuninstallcheck dvi dvi-am html \
854- html-am info info-am install install-am install-data \
855- install-data-am install-exec install-exec-am install-info \
856- install-info-am install-man install-strip installcheck \
857- installcheck-am installdirs installdirs-am maintainer-clean \
858- maintainer-clean-generic maintainer-clean-recursive \
859- mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
860- pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
861- uninstall-info-am
862-
863-# Tell versions [3.59,3.63) of GNU make to not export all variables.
864-# Otherwise a system limit (for SysV at least) may be exceeded.
865-.NOEXPORT:
866diff --git a/acinclude.m4 b/acinclude.m4
867index 368839c..1cf1d67 100644
868--- a/acinclude.m4
869+++ b/acinclude.m4
870@@ -44,6 +44,8 @@ AC_DEFUN([grub_PROG_OBJCOPY_ABSOLUTE],
871 [AC_MSG_CHECKING([whether ${OBJCOPY} works for absolute addresses])
872 AC_CACHE_VAL(grub_cv_prog_objcopy_absolute,
873 [cat > conftest.c <<\EOF
874+void cmain(void);
875+
876 void
877 cmain (void)
878 {
879@@ -57,7 +59,7 @@ else
880 fi
881 grub_cv_prog_objcopy_absolute=yes
882 for link_addr in 2000 8000 7C00; do
883- if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec]); then :
884+ if AC_TRY_COMMAND([${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr -Wl,--build-id=none conftest.o -o conftest.exec]); then :
885 else
886 AC_MSG_ERROR([${CC-cc} cannot link at address $link_addr])
887 fi
888diff --git a/aclocal.m4 b/aclocal.m4
889deleted file mode 100644
890index aa691f6..0000000
891--- a/aclocal.m4
892+++ /dev/null
893@@ -1,1061 +0,0 @@
894-# generated automatically by aclocal 1.9.4 -*- Autoconf -*-
895-
896-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
897-# Free Software Foundation, Inc.
898-# This file is free software; the Free Software Foundation
899-# gives unlimited permission to copy and/or distribute it,
900-# with or without modifications, as long as this notice is preserved.
901-
902-# This program is distributed in the hope that it will be useful,
903-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
904-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
905-# PARTICULAR PURPOSE.
906-
907-# -*- Autoconf -*-
908-# Copyright (C) 2002, 2003 Free Software Foundation, Inc.
909-# Generated from amversion.in; do not edit by hand.
910-
911-# This program is free software; you can redistribute it and/or modify
912-# it under the terms of the GNU General Public License as published by
913-# the Free Software Foundation; either version 2, or (at your option)
914-# any later version.
915-
916-# This program is distributed in the hope that it will be useful,
917-# but WITHOUT ANY WARRANTY; without even the implied warranty of
918-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
919-# GNU General Public License for more details.
920-
921-# You should have received a copy of the GNU General Public License
922-# along with this program; if not, write to the Free Software
923-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
924-
925-# AM_AUTOMAKE_VERSION(VERSION)
926-# ----------------------------
927-# Automake X.Y traces this macro to ensure aclocal.m4 has been
928-# generated from the m4 files accompanying Automake X.Y.
929-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
930-
931-# AM_SET_CURRENT_AUTOMAKE_VERSION
932-# -------------------------------
933-# Call AM_AUTOMAKE_VERSION so it can be traced.
934-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
935-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
936- [AM_AUTOMAKE_VERSION([1.9.4])])
937-
938-# AM_AUX_DIR_EXPAND
939-
940-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
941-
942-# This program is free software; you can redistribute it and/or modify
943-# it under the terms of the GNU General Public License as published by
944-# the Free Software Foundation; either version 2, or (at your option)
945-# any later version.
946-
947-# This program is distributed in the hope that it will be useful,
948-# but WITHOUT ANY WARRANTY; without even the implied warranty of
949-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
950-# GNU General Public License for more details.
951-
952-# You should have received a copy of the GNU General Public License
953-# along with this program; if not, write to the Free Software
954-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
955-# 02111-1307, USA.
956-
957-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
958-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
959-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
960-#
961-# Of course, Automake must honor this variable whenever it calls a
962-# tool from the auxiliary directory. The problem is that $srcdir (and
963-# therefore $ac_aux_dir as well) can be either absolute or relative,
964-# depending on how configure is run. This is pretty annoying, since
965-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
966-# source directory, any form will work fine, but in subdirectories a
967-# relative path needs to be adjusted first.
968-#
969-# $ac_aux_dir/missing
970-# fails when called from a subdirectory if $ac_aux_dir is relative
971-# $top_srcdir/$ac_aux_dir/missing
972-# fails if $ac_aux_dir is absolute,
973-# fails when called from a subdirectory in a VPATH build with
974-# a relative $ac_aux_dir
975-#
976-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
977-# are both prefixed by $srcdir. In an in-source build this is usually
978-# harmless because $srcdir is `.', but things will broke when you
979-# start a VPATH build or use an absolute $srcdir.
980-#
981-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
982-# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
983-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
984-# and then we would define $MISSING as
985-# MISSING="\${SHELL} $am_aux_dir/missing"
986-# This will work as long as MISSING is not called from configure, because
987-# unfortunately $(top_srcdir) has no meaning in configure.
988-# However there are other variables, like CC, which are often used in
989-# configure, and could therefore not use this "fixed" $ac_aux_dir.
990-#
991-# Another solution, used here, is to always expand $ac_aux_dir to an
992-# absolute PATH. The drawback is that using absolute paths prevent a
993-# configured tree to be moved without reconfiguration.
994-
995-AC_DEFUN([AM_AUX_DIR_EXPAND],
996-[dnl Rely on autoconf to set up CDPATH properly.
997-AC_PREREQ([2.50])dnl
998-# expand $ac_aux_dir to an absolute path
999-am_aux_dir=`cd $ac_aux_dir && pwd`
1000-])
1001-
1002-# AM_CONDITIONAL -*- Autoconf -*-
1003-
1004-# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
1005-
1006-# This program is free software; you can redistribute it and/or modify
1007-# it under the terms of the GNU General Public License as published by
1008-# the Free Software Foundation; either version 2, or (at your option)
1009-# any later version.
1010-
1011-# This program is distributed in the hope that it will be useful,
1012-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1013-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1014-# GNU General Public License for more details.
1015-
1016-# You should have received a copy of the GNU General Public License
1017-# along with this program; if not, write to the Free Software
1018-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1019-# 02111-1307, USA.
1020-
1021-# serial 6
1022-
1023-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
1024-# -------------------------------------
1025-# Define a conditional.
1026-AC_DEFUN([AM_CONDITIONAL],
1027-[AC_PREREQ(2.52)dnl
1028- ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
1029- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
1030-AC_SUBST([$1_TRUE])
1031-AC_SUBST([$1_FALSE])
1032-if $2; then
1033- $1_TRUE=
1034- $1_FALSE='#'
1035-else
1036- $1_TRUE='#'
1037- $1_FALSE=
1038-fi
1039-AC_CONFIG_COMMANDS_PRE(
1040-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
1041- AC_MSG_ERROR([[conditional "$1" was never defined.
1042-Usually this means the macro was only invoked conditionally.]])
1043-fi])])
1044-
1045-# serial 7 -*- Autoconf -*-
1046-
1047-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
1048-# Free Software Foundation, Inc.
1049-
1050-# This program is free software; you can redistribute it and/or modify
1051-# it under the terms of the GNU General Public License as published by
1052-# the Free Software Foundation; either version 2, or (at your option)
1053-# any later version.
1054-
1055-# This program is distributed in the hope that it will be useful,
1056-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1057-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1058-# GNU General Public License for more details.
1059-
1060-# You should have received a copy of the GNU General Public License
1061-# along with this program; if not, write to the Free Software
1062-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1063-# 02111-1307, USA.
1064-
1065-
1066-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
1067-# written in clear, in which case automake, when reading aclocal.m4,
1068-# will think it sees a *use*, and therefore will trigger all it's
1069-# C support machinery. Also note that it means that autoscan, seeing
1070-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
1071-
1072-
1073-
1074-# _AM_DEPENDENCIES(NAME)
1075-# ----------------------
1076-# See how the compiler implements dependency checking.
1077-# NAME is "CC", "CXX", "GCJ", or "OBJC".
1078-# We try a few techniques and use that to set a single cache variable.
1079-#
1080-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
1081-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
1082-# dependency, and given that the user is not expected to run this macro,
1083-# just rely on AC_PROG_CC.
1084-AC_DEFUN([_AM_DEPENDENCIES],
1085-[AC_REQUIRE([AM_SET_DEPDIR])dnl
1086-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
1087-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
1088-AC_REQUIRE([AM_DEP_TRACK])dnl
1089-
1090-ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
1091- [$1], CXX, [depcc="$CXX" am_compiler_list=],
1092- [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
1093- [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
1094- [depcc="$$1" am_compiler_list=])
1095-
1096-AC_CACHE_CHECK([dependency style of $depcc],
1097- [am_cv_$1_dependencies_compiler_type],
1098-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
1099- # We make a subdir and do the tests there. Otherwise we can end up
1100- # making bogus files that we don't know about and never remove. For
1101- # instance it was reported that on HP-UX the gcc test will end up
1102- # making a dummy file named `D' -- because `-MD' means `put the output
1103- # in D'.
1104- mkdir conftest.dir
1105- # Copy depcomp to subdir because otherwise we won't find it if we're
1106- # using a relative directory.
1107- cp "$am_depcomp" conftest.dir
1108- cd conftest.dir
1109- # We will build objects and dependencies in a subdirectory because
1110- # it helps to detect inapplicable dependency modes. For instance
1111- # both Tru64's cc and ICC support -MD to output dependencies as a
1112- # side effect of compilation, but ICC will put the dependencies in
1113- # the current directory while Tru64 will put them in the object
1114- # directory.
1115- mkdir sub
1116-
1117- am_cv_$1_dependencies_compiler_type=none
1118- if test "$am_compiler_list" = ""; then
1119- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
1120- fi
1121- for depmode in $am_compiler_list; do
1122- # Setup a source with many dependencies, because some compilers
1123- # like to wrap large dependency lists on column 80 (with \), and
1124- # we should not choose a depcomp mode which is confused by this.
1125- #
1126- # We need to recreate these files for each test, as the compiler may
1127- # overwrite some of them when testing with obscure command lines.
1128- # This happens at least with the AIX C compiler.
1129- : > sub/conftest.c
1130- for i in 1 2 3 4 5 6; do
1131- echo '#include "conftst'$i'.h"' >> sub/conftest.c
1132- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
1133- # Solaris 8's {/usr,}/bin/sh.
1134- touch sub/conftst$i.h
1135- done
1136- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
1137-
1138- case $depmode in
1139- nosideeffect)
1140- # after this tag, mechanisms are not by side-effect, so they'll
1141- # only be used when explicitly requested
1142- if test "x$enable_dependency_tracking" = xyes; then
1143- continue
1144- else
1145- break
1146- fi
1147- ;;
1148- none) break ;;
1149- esac
1150- # We check with `-c' and `-o' for the sake of the "dashmstdout"
1151- # mode. It turns out that the SunPro C++ compiler does not properly
1152- # handle `-M -o', and we need to detect this.
1153- if depmode=$depmode \
1154- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
1155- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
1156- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
1157- >/dev/null 2>conftest.err &&
1158- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
1159- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
1160- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
1161- # icc doesn't choke on unknown options, it will just issue warnings
1162- # or remarks (even with -Werror). So we grep stderr for any message
1163- # that says an option was ignored or not supported.
1164- # When given -MP, icc 7.0 and 7.1 complain thusly:
1165- # icc: Command line warning: ignoring option '-M'; no argument required
1166- # The diagnosis changed in icc 8.0:
1167- # icc: Command line remark: option '-MP' not supported
1168- if (grep 'ignoring option' conftest.err ||
1169- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
1170- am_cv_$1_dependencies_compiler_type=$depmode
1171- break
1172- fi
1173- fi
1174- done
1175-
1176- cd ..
1177- rm -rf conftest.dir
1178-else
1179- am_cv_$1_dependencies_compiler_type=none
1180-fi
1181-])
1182-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
1183-AM_CONDITIONAL([am__fastdep$1], [
1184- test "x$enable_dependency_tracking" != xno \
1185- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
1186-])
1187-
1188-
1189-# AM_SET_DEPDIR
1190-# -------------
1191-# Choose a directory name for dependency files.
1192-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
1193-AC_DEFUN([AM_SET_DEPDIR],
1194-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
1195-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
1196-])
1197-
1198-
1199-# AM_DEP_TRACK
1200-# ------------
1201-AC_DEFUN([AM_DEP_TRACK],
1202-[AC_ARG_ENABLE(dependency-tracking,
1203-[ --disable-dependency-tracking speeds up one-time build
1204- --enable-dependency-tracking do not reject slow dependency extractors])
1205-if test "x$enable_dependency_tracking" != xno; then
1206- am_depcomp="$ac_aux_dir/depcomp"
1207- AMDEPBACKSLASH='\'
1208-fi
1209-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
1210-AC_SUBST([AMDEPBACKSLASH])
1211-])
1212-
1213-# Generate code to set up dependency tracking. -*- Autoconf -*-
1214-
1215-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
1216-# Free Software Foundation, Inc.
1217-
1218-# This program is free software; you can redistribute it and/or modify
1219-# it under the terms of the GNU General Public License as published by
1220-# the Free Software Foundation; either version 2, or (at your option)
1221-# any later version.
1222-
1223-# This program is distributed in the hope that it will be useful,
1224-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1225-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1226-# GNU General Public License for more details.
1227-
1228-# You should have received a copy of the GNU General Public License
1229-# along with this program; if not, write to the Free Software
1230-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1231-# 02111-1307, USA.
1232-
1233-#serial 2
1234-
1235-# _AM_OUTPUT_DEPENDENCY_COMMANDS
1236-# ------------------------------
1237-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
1238-[for mf in $CONFIG_FILES; do
1239- # Strip MF so we end up with the name of the file.
1240- mf=`echo "$mf" | sed -e 's/:.*$//'`
1241- # Check whether this is an Automake generated Makefile or not.
1242- # We used to match only the files named `Makefile.in', but
1243- # some people rename them; so instead we look at the file content.
1244- # Grep'ing the first line is not enough: some people post-process
1245- # each Makefile.in and add a new line on top of each file to say so.
1246- # So let's grep whole file.
1247- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
1248- dirpart=`AS_DIRNAME("$mf")`
1249- else
1250- continue
1251- fi
1252- # Extract the definition of DEPDIR, am__include, and am__quote
1253- # from the Makefile without running `make'.
1254- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
1255- test -z "$DEPDIR" && continue
1256- am__include=`sed -n 's/^am__include = //p' < "$mf"`
1257- test -z "am__include" && continue
1258- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
1259- # When using ansi2knr, U may be empty or an underscore; expand it
1260- U=`sed -n 's/^U = //p' < "$mf"`
1261- # Find all dependency output files, they are included files with
1262- # $(DEPDIR) in their names. We invoke sed twice because it is the
1263- # simplest approach to changing $(DEPDIR) to its actual value in the
1264- # expansion.
1265- for file in `sed -n "
1266- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
1267- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
1268- # Make sure the directory exists.
1269- test -f "$dirpart/$file" && continue
1270- fdir=`AS_DIRNAME(["$file"])`
1271- AS_MKDIR_P([$dirpart/$fdir])
1272- # echo "creating $dirpart/$file"
1273- echo '# dummy' > "$dirpart/$file"
1274- done
1275-done
1276-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
1277-
1278-
1279-# AM_OUTPUT_DEPENDENCY_COMMANDS
1280-# -----------------------------
1281-# This macro should only be invoked once -- use via AC_REQUIRE.
1282-#
1283-# This code is only required when automatic dependency tracking
1284-# is enabled. FIXME. This creates each `.P' file that we will
1285-# need in order to bootstrap the dependency handling code.
1286-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
1287-[AC_CONFIG_COMMANDS([depfiles],
1288- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
1289- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
1290-])
1291-
1292-# Do all the work for Automake. -*- Autoconf -*-
1293-
1294-# This macro actually does too much some checks are only needed if
1295-# your package does certain things. But this isn't really a big deal.
1296-
1297-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
1298-# Free Software Foundation, Inc.
1299-
1300-# This program is free software; you can redistribute it and/or modify
1301-# it under the terms of the GNU General Public License as published by
1302-# the Free Software Foundation; either version 2, or (at your option)
1303-# any later version.
1304-
1305-# This program is distributed in the hope that it will be useful,
1306-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1307-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1308-# GNU General Public License for more details.
1309-
1310-# You should have received a copy of the GNU General Public License
1311-# along with this program; if not, write to the Free Software
1312-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1313-# 02111-1307, USA.
1314-
1315-# serial 11
1316-
1317-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
1318-# AM_INIT_AUTOMAKE([OPTIONS])
1319-# -----------------------------------------------
1320-# The call with PACKAGE and VERSION arguments is the old style
1321-# call (pre autoconf-2.50), which is being phased out. PACKAGE
1322-# and VERSION should now be passed to AC_INIT and removed from
1323-# the call to AM_INIT_AUTOMAKE.
1324-# We support both call styles for the transition. After
1325-# the next Automake release, Autoconf can make the AC_INIT
1326-# arguments mandatory, and then we can depend on a new Autoconf
1327-# release and drop the old call support.
1328-AC_DEFUN([AM_INIT_AUTOMAKE],
1329-[AC_PREREQ([2.58])dnl
1330-dnl Autoconf wants to disallow AM_ names. We explicitly allow
1331-dnl the ones we care about.
1332-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
1333-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
1334-AC_REQUIRE([AC_PROG_INSTALL])dnl
1335-# test to see if srcdir already configured
1336-if test "`cd $srcdir && pwd`" != "`pwd`" &&
1337- test -f $srcdir/config.status; then
1338- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
1339-fi
1340-
1341-# test whether we have cygpath
1342-if test -z "$CYGPATH_W"; then
1343- if (cygpath --version) >/dev/null 2>/dev/null; then
1344- CYGPATH_W='cygpath -w'
1345- else
1346- CYGPATH_W=echo
1347- fi
1348-fi
1349-AC_SUBST([CYGPATH_W])
1350-
1351-# Define the identity of the package.
1352-dnl Distinguish between old-style and new-style calls.
1353-m4_ifval([$2],
1354-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
1355- AC_SUBST([PACKAGE], [$1])dnl
1356- AC_SUBST([VERSION], [$2])],
1357-[_AM_SET_OPTIONS([$1])dnl
1358- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
1359- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
1360-
1361-_AM_IF_OPTION([no-define],,
1362-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
1363- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
1364-
1365-# Some tools Automake needs.
1366-AC_REQUIRE([AM_SANITY_CHECK])dnl
1367-AC_REQUIRE([AC_ARG_PROGRAM])dnl
1368-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
1369-AM_MISSING_PROG(AUTOCONF, autoconf)
1370-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
1371-AM_MISSING_PROG(AUTOHEADER, autoheader)
1372-AM_MISSING_PROG(MAKEINFO, makeinfo)
1373-AM_PROG_INSTALL_SH
1374-AM_PROG_INSTALL_STRIP
1375-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
1376-# We need awk for the "check" target. The system "awk" is bad on
1377-# some platforms.
1378-AC_REQUIRE([AC_PROG_AWK])dnl
1379-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
1380-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
1381-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
1382- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
1383- [_AM_PROG_TAR([v7])])])
1384-_AM_IF_OPTION([no-dependencies],,
1385-[AC_PROVIDE_IFELSE([AC_PROG_CC],
1386- [_AM_DEPENDENCIES(CC)],
1387- [define([AC_PROG_CC],
1388- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
1389-AC_PROVIDE_IFELSE([AC_PROG_CXX],
1390- [_AM_DEPENDENCIES(CXX)],
1391- [define([AC_PROG_CXX],
1392- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
1393-])
1394-])
1395-
1396-
1397-# When config.status generates a header, we must update the stamp-h file.
1398-# This file resides in the same directory as the config header
1399-# that is generated. The stamp files are numbered to have different names.
1400-
1401-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
1402-# loop where config.status creates the headers, so we can generate
1403-# our stamp files there.
1404-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
1405-[# Compute $1's index in $config_headers.
1406-_am_stamp_count=1
1407-for _am_header in $config_headers :; do
1408- case $_am_header in
1409- $1 | $1:* )
1410- break ;;
1411- * )
1412- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
1413- esac
1414-done
1415-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
1416-
1417-# AM_PROG_INSTALL_SH
1418-# ------------------
1419-# Define $install_sh.
1420-
1421-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
1422-
1423-# This program is free software; you can redistribute it and/or modify
1424-# it under the terms of the GNU General Public License as published by
1425-# the Free Software Foundation; either version 2, or (at your option)
1426-# any later version.
1427-
1428-# This program is distributed in the hope that it will be useful,
1429-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1430-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1431-# GNU General Public License for more details.
1432-
1433-# You should have received a copy of the GNU General Public License
1434-# along with this program; if not, write to the Free Software
1435-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1436-# 02111-1307, USA.
1437-
1438-AC_DEFUN([AM_PROG_INSTALL_SH],
1439-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
1440-install_sh=${install_sh-"$am_aux_dir/install-sh"}
1441-AC_SUBST(install_sh)])
1442-
1443-# -*- Autoconf -*-
1444-# Copyright (C) 2003 Free Software Foundation, Inc.
1445-
1446-# This program is free software; you can redistribute it and/or modify
1447-# it under the terms of the GNU General Public License as published by
1448-# the Free Software Foundation; either version 2, or (at your option)
1449-# any later version.
1450-
1451-# This program is distributed in the hope that it will be useful,
1452-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1453-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1454-# GNU General Public License for more details.
1455-
1456-# You should have received a copy of the GNU General Public License
1457-# along with this program; if not, write to the Free Software
1458-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1459-# 02111-1307, USA.
1460-
1461-# serial 1
1462-
1463-# Check whether the underlying file-system supports filenames
1464-# with a leading dot. For instance MS-DOS doesn't.
1465-AC_DEFUN([AM_SET_LEADING_DOT],
1466-[rm -rf .tst 2>/dev/null
1467-mkdir .tst 2>/dev/null
1468-if test -d .tst; then
1469- am__leading_dot=.
1470-else
1471- am__leading_dot=_
1472-fi
1473-rmdir .tst 2>/dev/null
1474-AC_SUBST([am__leading_dot])])
1475-
1476-# Add --enable-maintainer-mode option to configure.
1477-# From Jim Meyering
1478-
1479-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
1480-# Free Software Foundation, Inc.
1481-
1482-# This program is free software; you can redistribute it and/or modify
1483-# it under the terms of the GNU General Public License as published by
1484-# the Free Software Foundation; either version 2, or (at your option)
1485-# any later version.
1486-
1487-# This program is distributed in the hope that it will be useful,
1488-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1489-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1490-# GNU General Public License for more details.
1491-
1492-# You should have received a copy of the GNU General Public License
1493-# along with this program; if not, write to the Free Software
1494-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1495-# 02111-1307, USA.
1496-
1497-# serial 3
1498-
1499-AC_DEFUN([AM_MAINTAINER_MODE],
1500-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
1501- dnl maintainer-mode is disabled by default
1502- AC_ARG_ENABLE(maintainer-mode,
1503-[ --enable-maintainer-mode enable make rules and dependencies not useful
1504- (and sometimes confusing) to the casual installer],
1505- USE_MAINTAINER_MODE=$enableval,
1506- USE_MAINTAINER_MODE=no)
1507- AC_MSG_RESULT([$USE_MAINTAINER_MODE])
1508- AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
1509- MAINT=$MAINTAINER_MODE_TRUE
1510- AC_SUBST(MAINT)dnl
1511-]
1512-)
1513-
1514-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
1515-
1516-# Check to see how 'make' treats includes. -*- Autoconf -*-
1517-
1518-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
1519-
1520-# This program is free software; you can redistribute it and/or modify
1521-# it under the terms of the GNU General Public License as published by
1522-# the Free Software Foundation; either version 2, or (at your option)
1523-# any later version.
1524-
1525-# This program is distributed in the hope that it will be useful,
1526-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1527-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1528-# GNU General Public License for more details.
1529-
1530-# You should have received a copy of the GNU General Public License
1531-# along with this program; if not, write to the Free Software
1532-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1533-# 02111-1307, USA.
1534-
1535-# serial 2
1536-
1537-# AM_MAKE_INCLUDE()
1538-# -----------------
1539-# Check to see how make treats includes.
1540-AC_DEFUN([AM_MAKE_INCLUDE],
1541-[am_make=${MAKE-make}
1542-cat > confinc << 'END'
1543-am__doit:
1544- @echo done
1545-.PHONY: am__doit
1546-END
1547-# If we don't find an include directive, just comment out the code.
1548-AC_MSG_CHECKING([for style of include used by $am_make])
1549-am__include="#"
1550-am__quote=
1551-_am_result=none
1552-# First try GNU make style include.
1553-echo "include confinc" > confmf
1554-# We grep out `Entering directory' and `Leaving directory'
1555-# messages which can occur if `w' ends up in MAKEFLAGS.
1556-# In particular we don't look at `^make:' because GNU make might
1557-# be invoked under some other name (usually "gmake"), in which
1558-# case it prints its new name instead of `make'.
1559-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
1560- am__include=include
1561- am__quote=
1562- _am_result=GNU
1563-fi
1564-# Now try BSD make style include.
1565-if test "$am__include" = "#"; then
1566- echo '.include "confinc"' > confmf
1567- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
1568- am__include=.include
1569- am__quote="\""
1570- _am_result=BSD
1571- fi
1572-fi
1573-AC_SUBST([am__include])
1574-AC_SUBST([am__quote])
1575-AC_MSG_RESULT([$_am_result])
1576-rm -f confinc confmf
1577-])
1578-
1579-# -*- Autoconf -*-
1580-
1581-
1582-# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
1583-
1584-# This program is free software; you can redistribute it and/or modify
1585-# it under the terms of the GNU General Public License as published by
1586-# the Free Software Foundation; either version 2, or (at your option)
1587-# any later version.
1588-
1589-# This program is distributed in the hope that it will be useful,
1590-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1591-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1592-# GNU General Public License for more details.
1593-
1594-# You should have received a copy of the GNU General Public License
1595-# along with this program; if not, write to the Free Software
1596-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1597-# 02111-1307, USA.
1598-
1599-# serial 3
1600-
1601-# AM_MISSING_PROG(NAME, PROGRAM)
1602-# ------------------------------
1603-AC_DEFUN([AM_MISSING_PROG],
1604-[AC_REQUIRE([AM_MISSING_HAS_RUN])
1605-$1=${$1-"${am_missing_run}$2"}
1606-AC_SUBST($1)])
1607-
1608-
1609-# AM_MISSING_HAS_RUN
1610-# ------------------
1611-# Define MISSING if not defined so far and test if it supports --run.
1612-# If it does, set am_missing_run to use it, otherwise, to nothing.
1613-AC_DEFUN([AM_MISSING_HAS_RUN],
1614-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
1615-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
1616-# Use eval to expand $SHELL
1617-if eval "$MISSING --run true"; then
1618- am_missing_run="$MISSING --run "
1619-else
1620- am_missing_run=
1621- AC_MSG_WARN([`missing' script is too old or missing])
1622-fi
1623-])
1624-
1625-# AM_PROG_MKDIR_P
1626-# ---------------
1627-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
1628-
1629-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
1630-
1631-# This program is free software; you can redistribute it and/or modify
1632-# it under the terms of the GNU General Public License as published by
1633-# the Free Software Foundation; either version 2, or (at your option)
1634-# any later version.
1635-
1636-# This program is distributed in the hope that it will be useful,
1637-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1638-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1639-# GNU General Public License for more details.
1640-
1641-# You should have received a copy of the GNU General Public License
1642-# along with this program; if not, write to the Free Software
1643-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1644-# 02111-1307, USA.
1645-
1646-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
1647-# created by `make install' are always world readable, even if the
1648-# installer happens to have an overly restrictive umask (e.g. 077).
1649-# This was a mistake. There are at least two reasons why we must not
1650-# use `-m 0755':
1651-# - it causes special bits like SGID to be ignored,
1652-# - it may be too restrictive (some setups expect 775 directories).
1653-#
1654-# Do not use -m 0755 and let people choose whatever they expect by
1655-# setting umask.
1656-#
1657-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
1658-# Some implementations (such as Solaris 8's) are not thread-safe: if a
1659-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
1660-# concurrently, both version can detect that a/ is missing, but only
1661-# one can create it and the other will error out. Consequently we
1662-# restrict ourselves to GNU make (using the --version option ensures
1663-# this.)
1664-AC_DEFUN([AM_PROG_MKDIR_P],
1665-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
1666- # We used to keeping the `.' as first argument, in order to
1667- # allow $(mkdir_p) to be used without argument. As in
1668- # $(mkdir_p) $(somedir)
1669- # where $(somedir) is conditionally defined. However this is wrong
1670- # for two reasons:
1671- # 1. if the package is installed by a user who cannot write `.'
1672- # make install will fail,
1673- # 2. the above comment should most certainly read
1674- # $(mkdir_p) $(DESTDIR)$(somedir)
1675- # so it does not work when $(somedir) is undefined and
1676- # $(DESTDIR) is not.
1677- # To support the latter case, we have to write
1678- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
1679- # so the `.' trick is pointless.
1680- mkdir_p='mkdir -p --'
1681-else
1682- # On NextStep and OpenStep, the `mkdir' command does not
1683- # recognize any option. It will interpret all options as
1684- # directories to create, and then abort because `.' already
1685- # exists.
1686- for d in ./-p ./--version;
1687- do
1688- test -d $d && rmdir $d
1689- done
1690- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
1691- if test -f "$ac_aux_dir/mkinstalldirs"; then
1692- mkdir_p='$(mkinstalldirs)'
1693- else
1694- mkdir_p='$(install_sh) -d'
1695- fi
1696-fi
1697-AC_SUBST([mkdir_p])])
1698-
1699-# Helper functions for option handling. -*- Autoconf -*-
1700-
1701-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
1702-
1703-# This program is free software; you can redistribute it and/or modify
1704-# it under the terms of the GNU General Public License as published by
1705-# the Free Software Foundation; either version 2, or (at your option)
1706-# any later version.
1707-
1708-# This program is distributed in the hope that it will be useful,
1709-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1710-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1711-# GNU General Public License for more details.
1712-
1713-# You should have received a copy of the GNU General Public License
1714-# along with this program; if not, write to the Free Software
1715-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1716-# 02111-1307, USA.
1717-
1718-# serial 2
1719-
1720-# _AM_MANGLE_OPTION(NAME)
1721-# -----------------------
1722-AC_DEFUN([_AM_MANGLE_OPTION],
1723-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
1724-
1725-# _AM_SET_OPTION(NAME)
1726-# ------------------------------
1727-# Set option NAME. Presently that only means defining a flag for this option.
1728-AC_DEFUN([_AM_SET_OPTION],
1729-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
1730-
1731-# _AM_SET_OPTIONS(OPTIONS)
1732-# ----------------------------------
1733-# OPTIONS is a space-separated list of Automake options.
1734-AC_DEFUN([_AM_SET_OPTIONS],
1735-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
1736-
1737-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
1738-# -------------------------------------------
1739-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
1740-AC_DEFUN([_AM_IF_OPTION],
1741-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
1742-
1743-#
1744-# Check to make sure that the build environment is sane.
1745-#
1746-
1747-# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
1748-
1749-# This program is free software; you can redistribute it and/or modify
1750-# it under the terms of the GNU General Public License as published by
1751-# the Free Software Foundation; either version 2, or (at your option)
1752-# any later version.
1753-
1754-# This program is distributed in the hope that it will be useful,
1755-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1756-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1757-# GNU General Public License for more details.
1758-
1759-# You should have received a copy of the GNU General Public License
1760-# along with this program; if not, write to the Free Software
1761-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1762-# 02111-1307, USA.
1763-
1764-# serial 3
1765-
1766-# AM_SANITY_CHECK
1767-# ---------------
1768-AC_DEFUN([AM_SANITY_CHECK],
1769-[AC_MSG_CHECKING([whether build environment is sane])
1770-# Just in case
1771-sleep 1
1772-echo timestamp > conftest.file
1773-# Do `set' in a subshell so we don't clobber the current shell's
1774-# arguments. Must try -L first in case configure is actually a
1775-# symlink; some systems play weird games with the mod time of symlinks
1776-# (eg FreeBSD returns the mod time of the symlink's containing
1777-# directory).
1778-if (
1779- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
1780- if test "$[*]" = "X"; then
1781- # -L didn't work.
1782- set X `ls -t $srcdir/configure conftest.file`
1783- fi
1784- rm -f conftest.file
1785- if test "$[*]" != "X $srcdir/configure conftest.file" \
1786- && test "$[*]" != "X conftest.file $srcdir/configure"; then
1787-
1788- # If neither matched, then we have a broken ls. This can happen
1789- # if, for instance, CONFIG_SHELL is bash and it inherits a
1790- # broken ls alias from the environment. This has actually
1791- # happened. Such a system could not be considered "sane".
1792- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
1793-alias in your environment])
1794- fi
1795-
1796- test "$[2]" = conftest.file
1797- )
1798-then
1799- # Ok.
1800- :
1801-else
1802- AC_MSG_ERROR([newly created file is older than distributed files!
1803-Check your system clock])
1804-fi
1805-AC_MSG_RESULT(yes)])
1806-
1807-# AM_PROG_INSTALL_STRIP
1808-
1809-# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
1810-
1811-# This program is free software; you can redistribute it and/or modify
1812-# it under the terms of the GNU General Public License as published by
1813-# the Free Software Foundation; either version 2, or (at your option)
1814-# any later version.
1815-
1816-# This program is distributed in the hope that it will be useful,
1817-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1818-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1819-# GNU General Public License for more details.
1820-
1821-# You should have received a copy of the GNU General Public License
1822-# along with this program; if not, write to the Free Software
1823-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1824-# 02111-1307, USA.
1825-
1826-# One issue with vendor `install' (even GNU) is that you can't
1827-# specify the program used to strip binaries. This is especially
1828-# annoying in cross-compiling environments, where the build's strip
1829-# is unlikely to handle the host's binaries.
1830-# Fortunately install-sh will honor a STRIPPROG variable, so we
1831-# always use install-sh in `make install-strip', and initialize
1832-# STRIPPROG with the value of the STRIP variable (set by the user).
1833-AC_DEFUN([AM_PROG_INSTALL_STRIP],
1834-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
1835-# Installed binaries are usually stripped using `strip' when the user
1836-# run `make install-strip'. However `strip' might not be the right
1837-# tool to use in cross-compilation environments, therefore Automake
1838-# will honor the `STRIP' environment variable to overrule this program.
1839-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
1840-if test "$cross_compiling" != no; then
1841- AC_CHECK_TOOL([STRIP], [strip], :)
1842-fi
1843-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
1844-AC_SUBST([INSTALL_STRIP_PROGRAM])])
1845-
1846-# Check how to create a tarball. -*- Autoconf -*-
1847-
1848-# Copyright (C) 2004 Free Software Foundation, Inc.
1849-
1850-# This program is free software; you can redistribute it and/or modify
1851-# it under the terms of the GNU General Public License as published by
1852-# the Free Software Foundation; either version 2, or (at your option)
1853-# any later version.
1854-
1855-# This program is distributed in the hope that it will be useful,
1856-# but WITHOUT ANY WARRANTY; without even the implied warranty of
1857-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1858-# GNU General Public License for more details.
1859-
1860-# You should have received a copy of the GNU General Public License
1861-# along with this program; if not, write to the Free Software
1862-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1863-# 02111-1307, USA.
1864-
1865-# serial 1
1866-
1867-
1868-# _AM_PROG_TAR(FORMAT)
1869-# --------------------
1870-# Check how to create a tarball in format FORMAT.
1871-# FORMAT should be one of `v7', `ustar', or `pax'.
1872-#
1873-# Substitute a variable $(am__tar) that is a command
1874-# writing to stdout a FORMAT-tarball containing the directory
1875-# $tardir.
1876-# tardir=directory && $(am__tar) > result.tar
1877-#
1878-# Substitute a variable $(am__untar) that extract such
1879-# a tarball read from stdin.
1880-# $(am__untar) < result.tar
1881-AC_DEFUN([_AM_PROG_TAR],
1882-[# Always define AMTAR for backward compatibility.
1883-AM_MISSING_PROG([AMTAR], [tar])
1884-m4_if([$1], [v7],
1885- [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
1886- [m4_case([$1], [ustar],, [pax],,
1887- [m4_fatal([Unknown tar format])])
1888-AC_MSG_CHECKING([how to create a $1 tar archive])
1889-# Loop over all known methods to create a tar archive until one works.
1890-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
1891-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
1892-# Do not fold the above two line into one, because Tru64 sh and
1893-# Solaris sh will not grok spaces in the rhs of `-'.
1894-for _am_tool in $_am_tools
1895-do
1896- case $_am_tool in
1897- gnutar)
1898- for _am_tar in tar gnutar gtar;
1899- do
1900- AM_RUN_LOG([$_am_tar --version]) && break
1901- done
1902- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
1903- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
1904- am__untar="$_am_tar -xf -"
1905- ;;
1906- plaintar)
1907- # Must skip GNU tar: if it does not support --format= it doesn't create
1908- # ustar tarball either.
1909- (tar --version) >/dev/null 2>&1 && continue
1910- am__tar='tar chf - "$$tardir"'
1911- am__tar_='tar chf - "$tardir"'
1912- am__untar='tar xf -'
1913- ;;
1914- pax)
1915- am__tar='pax -L -x $1 -w "$$tardir"'
1916- am__tar_='pax -L -x $1 -w "$tardir"'
1917- am__untar='pax -r'
1918- ;;
1919- cpio)
1920- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
1921- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
1922- am__untar='cpio -i -H $1 -d'
1923- ;;
1924- none)
1925- am__tar=false
1926- am__tar_=false
1927- am__untar=false
1928- ;;
1929- esac
1930-
1931- # If the value was cached, stop now. We just wanted to have am__tar
1932- # and am__untar set.
1933- test -n "${am_cv_prog_tar_$1}" && break
1934-
1935- # tar/untar a dummy directory, and stop if the command works
1936- rm -rf conftest.dir
1937- mkdir conftest.dir
1938- echo GrepMe > conftest.dir/file
1939- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
1940- rm -rf conftest.dir
1941- if test -s conftest.tar; then
1942- AM_RUN_LOG([$am__untar <conftest.tar])
1943- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
1944- fi
1945-done
1946-rm -rf conftest.dir
1947-
1948-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
1949-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
1950-AC_SUBST([am__tar])
1951-AC_SUBST([am__untar])
1952-]) # _AM_PROG_TAR
1953-
1954-m4_include([acinclude.m4])
1955diff --git a/config.h.in b/config.h.in
1956deleted file mode 100644
1957index 68d7c8c..0000000
1958--- a/config.h.in
1959+++ /dev/null
1960@@ -1,106 +0,0 @@
1961-/* config.h.in. Generated from configure.ac by autoheader. */
1962-
1963-/* Define if an absolute indirect call/jump must NOT be prefixed with `*' */
1964-#undef ABSOLUTE_WITHOUT_ASTERISK
1965-
1966-/* Define it to \"addr32\" or \"addr32;\" to make GAS happy */
1967-#undef ADDR32
1968-
1969-/* Define if you don't want to pass the mem= option to Linux */
1970-#undef AUTO_LINUX_MEM_OPT
1971-
1972-/* Define it to \"data32\" or \"data32;\" to make GAS happy */
1973-#undef DATA32
1974-
1975-/* Define if C symbols get an underscore after compilation */
1976-#undef HAVE_ASM_USCORE
1977-
1978-/* Define to 1 if you have the <curses.h> header file. */
1979-#undef HAVE_CURSES_H
1980-
1981-/* Define if edata is defined */
1982-#undef HAVE_EDATA_SYMBOL
1983-
1984-/* Define if end is defined */
1985-#undef HAVE_END_SYMBOL
1986-
1987-/* Define to 1 if you have the <inttypes.h> header file. */
1988-#undef HAVE_INTTYPES_H
1989-
1990-/* Define if you have a curses library */
1991-#undef HAVE_LIBCURSES
1992-
1993-/* Define to 1 if you have the <memory.h> header file. */
1994-#undef HAVE_MEMORY_H
1995-
1996-/* Define to 1 if you have the <ncurses/curses.h> header file. */
1997-#undef HAVE_NCURSES_CURSES_H
1998-
1999-/* Define to 1 if you have the <ncurses.h> header file. */
2000-#undef HAVE_NCURSES_H
2001-
2002-/* Define if opendisk() in -lutil can be used */
2003-#undef HAVE_OPENDISK
2004-
2005-/* Define if start is defined */
2006-#undef HAVE_START_SYMBOL
2007-
2008-/* Define to 1 if you have the <stdint.h> header file. */
2009-#undef HAVE_STDINT_H
2010-
2011-/* Define to 1 if you have the <stdlib.h> header file. */
2012-#undef HAVE_STDLIB_H
2013-
2014-/* Define to 1 if you have the <strings.h> header file. */
2015-#undef HAVE_STRINGS_H
2016-
2017-/* Define to 1 if you have the <string.h> header file. */
2018-#undef HAVE_STRING_H
2019-
2020-/* Define to 1 if you have the <sys/stat.h> header file. */
2021-#undef HAVE_SYS_STAT_H
2022-
2023-/* Define to 1 if you have the <sys/types.h> header file. */
2024-#undef HAVE_SYS_TYPES_H
2025-
2026-/* Define to 1 if you have the <unistd.h> header file. */
2027-#undef HAVE_UNISTD_H
2028-
2029-/* Define if _edata is defined */
2030-#undef HAVE_USCORE_EDATA_SYMBOL
2031-
2032-/* Define if end is defined */
2033-#undef HAVE_USCORE_END_SYMBOL
2034-
2035-/* Define if _start is defined */
2036-#undef HAVE_USCORE_START_SYMBOL
2037-
2038-/* Define if __bss_start is defined */
2039-#undef HAVE_USCORE_USCORE_BSS_START_SYMBOL
2040-
2041-/* Name of package */
2042-#undef PACKAGE
2043-
2044-/* Define to the address where bug reports for this package should be sent. */
2045-#undef PACKAGE_BUGREPORT
2046-
2047-/* Define to the full name of this package. */
2048-#undef PACKAGE_NAME
2049-
2050-/* Define to the full name and version of this package. */
2051-#undef PACKAGE_STRING
2052-
2053-/* Define to the one symbol short name of this package. */
2054-#undef PACKAGE_TARNAME
2055-
2056-/* Define to the version of this package. */
2057-#undef PACKAGE_VERSION
2058-
2059-/* Define if there is user specified preset menu string */
2060-#undef PRESET_MENU_STRING
2061-
2062-/* Define to 1 if you have the ANSI C header files. */
2063-#undef STDC_HEADERS
2064-
2065-/* Version number of package */
2066-#undef VERSION
2067diff --git a/configure b/configure
2068deleted file mode 100755
2069index 537ab89..0000000
2070--- a/configure
2071+++ /dev/null
2072@@ -1,7639 +0,0 @@
2073-#! /bin/sh
2074-# Guess values for system-dependent variables and create Makefiles.
2075-# Generated by GNU Autoconf 2.59 for GRUB 0.97.
2076-#
2077-# Report bugs to <bug-grub@gnu.org>.
2078-#
2079-# Copyright (C) 2003 Free Software Foundation, Inc.
2080-# This configure script is free software; the Free Software Foundation
2081-# gives unlimited permission to copy, distribute and modify it.
2082-## --------------------- ##
2083-## M4sh Initialization. ##
2084-## --------------------- ##
2085-
2086-# Be Bourne compatible
2087-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
2088- emulate sh
2089- NULLCMD=:
2090- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
2091- # is contrary to our usage. Disable this feature.
2092- alias -g '${1+"$@"}'='"$@"'
2093-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
2094- set -o posix
2095-fi
2096-DUALCASE=1; export DUALCASE # for MKS sh
2097-
2098-# Support unset when possible.
2099-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
2100- as_unset=unset
2101-else
2102- as_unset=false
2103-fi
2104-
2105-
2106-# Work around bugs in pre-3.0 UWIN ksh.
2107-$as_unset ENV MAIL MAILPATH
2108-PS1='$ '
2109-PS2='> '
2110-PS4='+ '
2111-
2112-# NLS nuisances.
2113-for as_var in \
2114- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
2115- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
2116- LC_TELEPHONE LC_TIME
2117-do
2118- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
2119- eval $as_var=C; export $as_var
2120- else
2121- $as_unset $as_var
2122- fi
2123-done
2124-
2125-# Required to use basename.
2126-if expr a : '\(a\)' >/dev/null 2>&1; then
2127- as_expr=expr
2128-else
2129- as_expr=false
2130-fi
2131-
2132-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
2133- as_basename=basename
2134-else
2135- as_basename=false
2136-fi
2137-
2138-
2139-# Name of the executable.
2140-as_me=`$as_basename "$0" ||
2141-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
2142- X"$0" : 'X\(//\)$' \| \
2143- X"$0" : 'X\(/\)$' \| \
2144- . : '\(.\)' 2>/dev/null ||
2145-echo X/"$0" |
2146- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
2147- /^X\/\(\/\/\)$/{ s//\1/; q; }
2148- /^X\/\(\/\).*/{ s//\1/; q; }
2149- s/.*/./; q'`
2150-
2151-
2152-# PATH needs CR, and LINENO needs CR and PATH.
2153-# Avoid depending upon Character Ranges.
2154-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
2155-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
2156-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
2157-as_cr_digits='0123456789'
2158-as_cr_alnum=$as_cr_Letters$as_cr_digits
2159-
2160-# The user is always right.
2161-if test "${PATH_SEPARATOR+set}" != set; then
2162- echo "#! /bin/sh" >conf$$.sh
2163- echo "exit 0" >>conf$$.sh
2164- chmod +x conf$$.sh
2165- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
2166- PATH_SEPARATOR=';'
2167- else
2168- PATH_SEPARATOR=:
2169- fi
2170- rm -f conf$$.sh
2171-fi
2172-
2173-
2174- as_lineno_1=$LINENO
2175- as_lineno_2=$LINENO
2176- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
2177- test "x$as_lineno_1" != "x$as_lineno_2" &&
2178- test "x$as_lineno_3" = "x$as_lineno_2" || {
2179- # Find who we are. Look in the path if we contain no path at all
2180- # relative or not.
2181- case $0 in
2182- *[\\/]* ) as_myself=$0 ;;
2183- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2184-for as_dir in $PATH
2185-do
2186- IFS=$as_save_IFS
2187- test -z "$as_dir" && as_dir=.
2188- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
2189-done
2190-
2191- ;;
2192- esac
2193- # We did not find ourselves, most probably we were run as `sh COMMAND'
2194- # in which case we are not to be found in the path.
2195- if test "x$as_myself" = x; then
2196- as_myself=$0
2197- fi
2198- if test ! -f "$as_myself"; then
2199- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
2200- { (exit 1); exit 1; }; }
2201- fi
2202- case $CONFIG_SHELL in
2203- '')
2204- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2205-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
2206-do
2207- IFS=$as_save_IFS
2208- test -z "$as_dir" && as_dir=.
2209- for as_base in sh bash ksh sh5; do
2210- case $as_dir in
2211- /*)
2212- if ("$as_dir/$as_base" -c '
2213- as_lineno_1=$LINENO
2214- as_lineno_2=$LINENO
2215- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
2216- test "x$as_lineno_1" != "x$as_lineno_2" &&
2217- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
2218- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
2219- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
2220- CONFIG_SHELL=$as_dir/$as_base
2221- export CONFIG_SHELL
2222- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
2223- fi;;
2224- esac
2225- done
2226-done
2227-;;
2228- esac
2229-
2230- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
2231- # uniformly replaced by the line number. The first 'sed' inserts a
2232- # line-number line before each line; the second 'sed' does the real
2233- # work. The second script uses 'N' to pair each line-number line
2234- # with the numbered line, and appends trailing '-' during
2235- # substitution so that $LINENO is not a special case at line end.
2236- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
2237- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
2238- sed '=' <$as_myself |
2239- sed '
2240- N
2241- s,$,-,
2242- : loop
2243- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
2244- t loop
2245- s,-$,,
2246- s,^['$as_cr_digits']*\n,,
2247- ' >$as_me.lineno &&
2248- chmod +x $as_me.lineno ||
2249- { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
2250- { (exit 1); exit 1; }; }
2251-
2252- # Don't try to exec as it changes $[0], causing all sort of problems
2253- # (the dirname of $[0] is not the place where we might find the
2254- # original and so on. Autoconf is especially sensible to this).
2255- . ./$as_me.lineno
2256- # Exit status is that of the last command.
2257- exit
2258-}
2259-
2260-
2261-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
2262- *c*,-n*) ECHO_N= ECHO_C='
2263-' ECHO_T=' ' ;;
2264- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
2265- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
2266-esac
2267-
2268-if expr a : '\(a\)' >/dev/null 2>&1; then
2269- as_expr=expr
2270-else
2271- as_expr=false
2272-fi
2273-
2274-rm -f conf$$ conf$$.exe conf$$.file
2275-echo >conf$$.file
2276-if ln -s conf$$.file conf$$ 2>/dev/null; then
2277- # We could just check for DJGPP; but this test a) works b) is more generic
2278- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
2279- if test -f conf$$.exe; then
2280- # Don't use ln at all; we don't have any links
2281- as_ln_s='cp -p'
2282- else
2283- as_ln_s='ln -s'
2284- fi
2285-elif ln conf$$.file conf$$ 2>/dev/null; then
2286- as_ln_s=ln
2287-else
2288- as_ln_s='cp -p'
2289-fi
2290-rm -f conf$$ conf$$.exe conf$$.file
2291-
2292-if mkdir -p . 2>/dev/null; then
2293- as_mkdir_p=:
2294-else
2295- test -d ./-p && rmdir ./-p
2296- as_mkdir_p=false
2297-fi
2298-
2299-as_executable_p="test -f"
2300-
2301-# Sed expression to map a string onto a valid CPP name.
2302-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
2303-
2304-# Sed expression to map a string onto a valid variable name.
2305-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
2306-
2307-
2308-# IFS
2309-# We need space, tab and new line, in precisely that order.
2310-as_nl='
2311-'
2312-IFS=" $as_nl"
2313-
2314-# CDPATH.
2315-$as_unset CDPATH
2316-
2317-
2318-# Name of the host.
2319-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
2320-# so uname gets run too.
2321-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
2322-
2323-exec 6>&1
2324-
2325-#
2326-# Initializations.
2327-#
2328-ac_default_prefix=/usr/local
2329-ac_config_libobj_dir=.
2330-cross_compiling=no
2331-subdirs=
2332-MFLAGS=
2333-MAKEFLAGS=
2334-SHELL=${CONFIG_SHELL-/bin/sh}
2335-
2336-# Maximum number of lines to put in a shell here document.
2337-# This variable seems obsolete. It should probably be removed, and
2338-# only ac_max_sed_lines should be used.
2339-: ${ac_max_here_lines=38}
2340-
2341-# Identity of this package.
2342-PACKAGE_NAME='GRUB'
2343-PACKAGE_TARNAME='grub'
2344-PACKAGE_VERSION='0.97'
2345-PACKAGE_STRING='GRUB 0.97'
2346-PACKAGE_BUGREPORT='bug-grub@gnu.org'
2347-
2348-ac_unique_file="stage2/stage2.c"
2349-# Factoring default headers for most tests.
2350-ac_includes_default="\
2351-#include <stdio.h>
2352-#if HAVE_SYS_TYPES_H
2353-# include <sys/types.h>
2354-#endif
2355-#if HAVE_SYS_STAT_H
2356-# include <sys/stat.h>
2357-#endif
2358-#if STDC_HEADERS
2359-# include <stdlib.h>
2360-# include <stddef.h>
2361-#else
2362-# if HAVE_STDLIB_H
2363-# include <stdlib.h>
2364-# endif
2365-#endif
2366-#if HAVE_STRING_H
2367-# if !STDC_HEADERS && HAVE_MEMORY_H
2368-# include <memory.h>
2369-# endif
2370-# include <string.h>
2371-#endif
2372-#if HAVE_STRINGS_H
2373-# include <strings.h>
2374-#endif
2375-#if HAVE_INTTYPES_H
2376-# include <inttypes.h>
2377-#else
2378-# if HAVE_STDINT_H
2379-# include <stdint.h>
2380-# endif
2381-#endif
2382-#if HAVE_UNISTD_H
2383-# include <unistd.h>
2384-#endif"
2385-
2386-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT PERL CC ac_ct_CC CFLAGS LDFLAGS CPPFLAGS EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CCAS RANLIB ac_ct_RANLIB STAGE1_CFLAGS STAGE2_CFLAGS GRUB_CFLAGS OBJCOPY ac_ct_OBJCOPY GRUB_LIBS CPP EGREP NETBOOT_SUPPORT_TRUE NETBOOT_SUPPORT_FALSE DISKLESS_SUPPORT_TRUE DISKLESS_SUPPORT_FALSE HERCULES_SUPPORT_TRUE HERCULES_SUPPORT_FALSE SERIAL_SUPPORT_TRUE SERIAL_SUPPORT_FALSE SERIAL_SPEED_SIMULATION_TRUE SERIAL_SPEED_SIMULATION_FALSE BUILD_EXAMPLE_KERNEL_TRUE BUILD_EXAMPLE_KERNEL_FALSE FSYS_CFLAGS NET_CFLAGS NET_EXTRAFLAGS NETBOOT_DRIVERS CCASFLAGS LIBOBJS LTLIBOBJS'
2387-ac_subst_files=''
2388-
2389-# Initialize some variables set by options.
2390-ac_init_help=
2391-ac_init_version=false
2392-# The variables have the same names as the options, with
2393-# dashes changed to underlines.
2394-cache_file=/dev/null
2395-exec_prefix=NONE
2396-no_create=
2397-no_recursion=
2398-prefix=NONE
2399-program_prefix=NONE
2400-program_suffix=NONE
2401-program_transform_name=s,x,x,
2402-silent=
2403-site=
2404-srcdir=
2405-verbose=
2406-x_includes=NONE
2407-x_libraries=NONE
2408-
2409-# Installation directory options.
2410-# These are left unexpanded so users can "make install exec_prefix=/foo"
2411-# and all the variables that are supposed to be based on exec_prefix
2412-# by default will actually change.
2413-# Use braces instead of parens because sh, perl, etc. also accept them.
2414-bindir='${exec_prefix}/bin'
2415-sbindir='${exec_prefix}/sbin'
2416-libexecdir='${exec_prefix}/libexec'
2417-datadir='${prefix}/share'
2418-sysconfdir='${prefix}/etc'
2419-sharedstatedir='${prefix}/com'
2420-localstatedir='${prefix}/var'
2421-libdir='${exec_prefix}/lib'
2422-includedir='${prefix}/include'
2423-oldincludedir='/usr/include'
2424-infodir='${prefix}/info'
2425-mandir='${prefix}/man'
2426-
2427-ac_prev=
2428-for ac_option
2429-do
2430- # If the previous option needs an argument, assign it.
2431- if test -n "$ac_prev"; then
2432- eval "$ac_prev=\$ac_option"
2433- ac_prev=
2434- continue
2435- fi
2436-
2437- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
2438-
2439- # Accept the important Cygnus configure options, so we can diagnose typos.
2440-
2441- case $ac_option in
2442-
2443- -bindir | --bindir | --bindi | --bind | --bin | --bi)
2444- ac_prev=bindir ;;
2445- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
2446- bindir=$ac_optarg ;;
2447-
2448- -build | --build | --buil | --bui | --bu)
2449- ac_prev=build_alias ;;
2450- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
2451- build_alias=$ac_optarg ;;
2452-
2453- -cache-file | --cache-file | --cache-fil | --cache-fi \
2454- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
2455- ac_prev=cache_file ;;
2456- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
2457- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
2458- cache_file=$ac_optarg ;;
2459-
2460- --config-cache | -C)
2461- cache_file=config.cache ;;
2462-
2463- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
2464- ac_prev=datadir ;;
2465- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
2466- | --da=*)
2467- datadir=$ac_optarg ;;
2468-
2469- -disable-* | --disable-*)
2470- ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
2471- # Reject names that are not valid shell variable names.
2472- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
2473- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
2474- { (exit 1); exit 1; }; }
2475- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
2476- eval "enable_$ac_feature=no" ;;
2477-
2478- -enable-* | --enable-*)
2479- ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
2480- # Reject names that are not valid shell variable names.
2481- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
2482- { echo "$as_me: error: invalid feature name: $ac_feature" >&2
2483- { (exit 1); exit 1; }; }
2484- ac_feature=`echo $ac_feature | sed 's/-/_/g'`
2485- case $ac_option in
2486- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
2487- *) ac_optarg=yes ;;
2488- esac
2489- eval "enable_$ac_feature='$ac_optarg'" ;;
2490-
2491- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
2492- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
2493- | --exec | --exe | --ex)
2494- ac_prev=exec_prefix ;;
2495- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
2496- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
2497- | --exec=* | --exe=* | --ex=*)
2498- exec_prefix=$ac_optarg ;;
2499-
2500- -gas | --gas | --ga | --g)
2501- # Obsolete; use --with-gas.
2502- with_gas=yes ;;
2503-
2504- -help | --help | --hel | --he | -h)
2505- ac_init_help=long ;;
2506- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
2507- ac_init_help=recursive ;;
2508- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
2509- ac_init_help=short ;;
2510-
2511- -host | --host | --hos | --ho)
2512- ac_prev=host_alias ;;
2513- -host=* | --host=* | --hos=* | --ho=*)
2514- host_alias=$ac_optarg ;;
2515-
2516- -includedir | --includedir | --includedi | --included | --include \
2517- | --includ | --inclu | --incl | --inc)
2518- ac_prev=includedir ;;
2519- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
2520- | --includ=* | --inclu=* | --incl=* | --inc=*)
2521- includedir=$ac_optarg ;;
2522-
2523- -infodir | --infodir | --infodi | --infod | --info | --inf)
2524- ac_prev=infodir ;;
2525- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
2526- infodir=$ac_optarg ;;
2527-
2528- -libdir | --libdir | --libdi | --libd)
2529- ac_prev=libdir ;;
2530- -libdir=* | --libdir=* | --libdi=* | --libd=*)
2531- libdir=$ac_optarg ;;
2532-
2533- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
2534- | --libexe | --libex | --libe)
2535- ac_prev=libexecdir ;;
2536- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
2537- | --libexe=* | --libex=* | --libe=*)
2538- libexecdir=$ac_optarg ;;
2539-
2540- -localstatedir | --localstatedir | --localstatedi | --localstated \
2541- | --localstate | --localstat | --localsta | --localst \
2542- | --locals | --local | --loca | --loc | --lo)
2543- ac_prev=localstatedir ;;
2544- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
2545- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
2546- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
2547- localstatedir=$ac_optarg ;;
2548-
2549- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
2550- ac_prev=mandir ;;
2551- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
2552- mandir=$ac_optarg ;;
2553-
2554- -nfp | --nfp | --nf)
2555- # Obsolete; use --without-fp.
2556- with_fp=no ;;
2557-
2558- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
2559- | --no-cr | --no-c | -n)
2560- no_create=yes ;;
2561-
2562- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
2563- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
2564- no_recursion=yes ;;
2565-
2566- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
2567- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
2568- | --oldin | --oldi | --old | --ol | --o)
2569- ac_prev=oldincludedir ;;
2570- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
2571- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
2572- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
2573- oldincludedir=$ac_optarg ;;
2574-
2575- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
2576- ac_prev=prefix ;;
2577- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
2578- prefix=$ac_optarg ;;
2579-
2580- -program-prefix | --program-prefix | --program-prefi | --program-pref \
2581- | --program-pre | --program-pr | --program-p)
2582- ac_prev=program_prefix ;;
2583- -program-prefix=* | --program-prefix=* | --program-prefi=* \
2584- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
2585- program_prefix=$ac_optarg ;;
2586-
2587- -program-suffix | --program-suffix | --program-suffi | --program-suff \
2588- | --program-suf | --program-su | --program-s)
2589- ac_prev=program_suffix ;;
2590- -program-suffix=* | --program-suffix=* | --program-suffi=* \
2591- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
2592- program_suffix=$ac_optarg ;;
2593-
2594- -program-transform-name | --program-transform-name \
2595- | --program-transform-nam | --program-transform-na \
2596- | --program-transform-n | --program-transform- \
2597- | --program-transform | --program-transfor \
2598- | --program-transfo | --program-transf \
2599- | --program-trans | --program-tran \
2600- | --progr-tra | --program-tr | --program-t)
2601- ac_prev=program_transform_name ;;
2602- -program-transform-name=* | --program-transform-name=* \
2603- | --program-transform-nam=* | --program-transform-na=* \
2604- | --program-transform-n=* | --program-transform-=* \
2605- | --program-transform=* | --program-transfor=* \
2606- | --program-transfo=* | --program-transf=* \
2607- | --program-trans=* | --program-tran=* \
2608- | --progr-tra=* | --program-tr=* | --program-t=*)
2609- program_transform_name=$ac_optarg ;;
2610-
2611- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
2612- | -silent | --silent | --silen | --sile | --sil)
2613- silent=yes ;;
2614-
2615- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
2616- ac_prev=sbindir ;;
2617- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
2618- | --sbi=* | --sb=*)
2619- sbindir=$ac_optarg ;;
2620-
2621- -sharedstatedir | --sharedstatedir | --sharedstatedi \
2622- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
2623- | --sharedst | --shareds | --shared | --share | --shar \
2624- | --sha | --sh)
2625- ac_prev=sharedstatedir ;;
2626- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
2627- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
2628- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
2629- | --sha=* | --sh=*)
2630- sharedstatedir=$ac_optarg ;;
2631-
2632- -site | --site | --sit)
2633- ac_prev=site ;;
2634- -site=* | --site=* | --sit=*)
2635- site=$ac_optarg ;;
2636-
2637- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
2638- ac_prev=srcdir ;;
2639- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
2640- srcdir=$ac_optarg ;;
2641-
2642- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
2643- | --syscon | --sysco | --sysc | --sys | --sy)
2644- ac_prev=sysconfdir ;;
2645- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
2646- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
2647- sysconfdir=$ac_optarg ;;
2648-
2649- -target | --target | --targe | --targ | --tar | --ta | --t)
2650- ac_prev=target_alias ;;
2651- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
2652- target_alias=$ac_optarg ;;
2653-
2654- -v | -verbose | --verbose | --verbos | --verbo | --verb)
2655- verbose=yes ;;
2656-
2657- -version | --version | --versio | --versi | --vers | -V)
2658- ac_init_version=: ;;
2659-
2660- -with-* | --with-*)
2661- ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
2662- # Reject names that are not valid shell variable names.
2663- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
2664- { echo "$as_me: error: invalid package name: $ac_package" >&2
2665- { (exit 1); exit 1; }; }
2666- ac_package=`echo $ac_package| sed 's/-/_/g'`
2667- case $ac_option in
2668- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
2669- *) ac_optarg=yes ;;
2670- esac
2671- eval "with_$ac_package='$ac_optarg'" ;;
2672-
2673- -without-* | --without-*)
2674- ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
2675- # Reject names that are not valid shell variable names.
2676- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
2677- { echo "$as_me: error: invalid package name: $ac_package" >&2
2678- { (exit 1); exit 1; }; }
2679- ac_package=`echo $ac_package | sed 's/-/_/g'`
2680- eval "with_$ac_package=no" ;;
2681-
2682- --x)
2683- # Obsolete; use --with-x.
2684- with_x=yes ;;
2685-
2686- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
2687- | --x-incl | --x-inc | --x-in | --x-i)
2688- ac_prev=x_includes ;;
2689- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
2690- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
2691- x_includes=$ac_optarg ;;
2692-
2693- -x-libraries | --x-libraries | --x-librarie | --x-librari \
2694- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
2695- ac_prev=x_libraries ;;
2696- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
2697- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
2698- x_libraries=$ac_optarg ;;
2699-
2700- -*) { echo "$as_me: error: unrecognized option: $ac_option
2701-Try \`$0 --help' for more information." >&2
2702- { (exit 1); exit 1; }; }
2703- ;;
2704-
2705- *=*)
2706- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
2707- # Reject names that are not valid shell variable names.
2708- expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
2709- { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
2710- { (exit 1); exit 1; }; }
2711- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
2712- eval "$ac_envvar='$ac_optarg'"
2713- export $ac_envvar ;;
2714-
2715- *)
2716- # FIXME: should be removed in autoconf 3.0.
2717- echo "$as_me: WARNING: you should use --build, --host, --target" >&2
2718- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
2719- echo "$as_me: WARNING: invalid host type: $ac_option" >&2
2720- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
2721- ;;
2722-
2723- esac
2724-done
2725-
2726-if test -n "$ac_prev"; then
2727- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
2728- { echo "$as_me: error: missing argument to $ac_option" >&2
2729- { (exit 1); exit 1; }; }
2730-fi
2731-
2732-# Be sure to have absolute paths.
2733-for ac_var in exec_prefix prefix
2734-do
2735- eval ac_val=$`echo $ac_var`
2736- case $ac_val in
2737- [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
2738- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
2739- { (exit 1); exit 1; }; };;
2740- esac
2741-done
2742-
2743-# Be sure to have absolute paths.
2744-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
2745- localstatedir libdir includedir oldincludedir infodir mandir
2746-do
2747- eval ac_val=$`echo $ac_var`
2748- case $ac_val in
2749- [\\/$]* | ?:[\\/]* ) ;;
2750- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
2751- { (exit 1); exit 1; }; };;
2752- esac
2753-done
2754-
2755-# There might be people who depend on the old broken behavior: `$host'
2756-# used to hold the argument of --host etc.
2757-# FIXME: To remove some day.
2758-build=$build_alias
2759-host=$host_alias
2760-target=$target_alias
2761-
2762-# FIXME: To remove some day.
2763-if test "x$host_alias" != x; then
2764- if test "x$build_alias" = x; then
2765- cross_compiling=maybe
2766- echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
2767- If a cross compiler is detected then cross compile mode will be used." >&2
2768- elif test "x$build_alias" != "x$host_alias"; then
2769- cross_compiling=yes
2770- fi
2771-fi
2772-
2773-ac_tool_prefix=
2774-test -n "$host_alias" && ac_tool_prefix=$host_alias-
2775-
2776-test "$silent" = yes && exec 6>/dev/null
2777-
2778-
2779-# Find the source files, if location was not specified.
2780-if test -z "$srcdir"; then
2781- ac_srcdir_defaulted=yes
2782- # Try the directory containing this script, then its parent.
2783- ac_confdir=`(dirname "$0") 2>/dev/null ||
2784-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
2785- X"$0" : 'X\(//\)[^/]' \| \
2786- X"$0" : 'X\(//\)$' \| \
2787- X"$0" : 'X\(/\)' \| \
2788- . : '\(.\)' 2>/dev/null ||
2789-echo X"$0" |
2790- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
2791- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
2792- /^X\(\/\/\)$/{ s//\1/; q; }
2793- /^X\(\/\).*/{ s//\1/; q; }
2794- s/.*/./; q'`
2795- srcdir=$ac_confdir
2796- if test ! -r $srcdir/$ac_unique_file; then
2797- srcdir=..
2798- fi
2799-else
2800- ac_srcdir_defaulted=no
2801-fi
2802-if test ! -r $srcdir/$ac_unique_file; then
2803- if test "$ac_srcdir_defaulted" = yes; then
2804- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
2805- { (exit 1); exit 1; }; }
2806- else
2807- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
2808- { (exit 1); exit 1; }; }
2809- fi
2810-fi
2811-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
2812- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
2813- { (exit 1); exit 1; }; }
2814-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
2815-ac_env_build_alias_set=${build_alias+set}
2816-ac_env_build_alias_value=$build_alias
2817-ac_cv_env_build_alias_set=${build_alias+set}
2818-ac_cv_env_build_alias_value=$build_alias
2819-ac_env_host_alias_set=${host_alias+set}
2820-ac_env_host_alias_value=$host_alias
2821-ac_cv_env_host_alias_set=${host_alias+set}
2822-ac_cv_env_host_alias_value=$host_alias
2823-ac_env_target_alias_set=${target_alias+set}
2824-ac_env_target_alias_value=$target_alias
2825-ac_cv_env_target_alias_set=${target_alias+set}
2826-ac_cv_env_target_alias_value=$target_alias
2827-ac_env_CC_set=${CC+set}
2828-ac_env_CC_value=$CC
2829-ac_cv_env_CC_set=${CC+set}
2830-ac_cv_env_CC_value=$CC
2831-ac_env_CFLAGS_set=${CFLAGS+set}
2832-ac_env_CFLAGS_value=$CFLAGS
2833-ac_cv_env_CFLAGS_set=${CFLAGS+set}
2834-ac_cv_env_CFLAGS_value=$CFLAGS
2835-ac_env_LDFLAGS_set=${LDFLAGS+set}
2836-ac_env_LDFLAGS_value=$LDFLAGS
2837-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
2838-ac_cv_env_LDFLAGS_value=$LDFLAGS
2839-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
2840-ac_env_CPPFLAGS_value=$CPPFLAGS
2841-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
2842-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
2843-ac_env_CPP_set=${CPP+set}
2844-ac_env_CPP_value=$CPP
2845-ac_cv_env_CPP_set=${CPP+set}
2846-ac_cv_env_CPP_value=$CPP
2847-
2848-#
2849-# Report the --help message.
2850-#
2851-if test "$ac_init_help" = "long"; then
2852- # Omit some internal or obsolete options to make the list less imposing.
2853- # This message is too long to be a string in the A/UX 3.1 sh.
2854- cat <<_ACEOF
2855-\`configure' configures GRUB 0.97 to adapt to many kinds of systems.
2856-
2857-Usage: $0 [OPTION]... [VAR=VALUE]...
2858-
2859-To assign environment variables (e.g., CC, CFLAGS...), specify them as
2860-VAR=VALUE. See below for descriptions of some of the useful variables.
2861-
2862-Defaults for the options are specified in brackets.
2863-
2864-Configuration:
2865- -h, --help display this help and exit
2866- --help=short display options specific to this package
2867- --help=recursive display the short help of all the included packages
2868- -V, --version display version information and exit
2869- -q, --quiet, --silent do not print \`checking...' messages
2870- --cache-file=FILE cache test results in FILE [disabled]
2871- -C, --config-cache alias for \`--cache-file=config.cache'
2872- -n, --no-create do not create output files
2873- --srcdir=DIR find the sources in DIR [configure dir or \`..']
2874-
2875-_ACEOF
2876-
2877- cat <<_ACEOF
2878-Installation directories:
2879- --prefix=PREFIX install architecture-independent files in PREFIX
2880- [$ac_default_prefix]
2881- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
2882- [PREFIX]
2883-
2884-By default, \`make install' will install all the files in
2885-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
2886-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
2887-for instance \`--prefix=\$HOME'.
2888-
2889-For better control, use the options below.
2890-
2891-Fine tuning of the installation directories:
2892- --bindir=DIR user executables [EPREFIX/bin]
2893- --sbindir=DIR system admin executables [EPREFIX/sbin]
2894- --libexecdir=DIR program executables [EPREFIX/libexec]
2895- --datadir=DIR read-only architecture-independent data [PREFIX/share]
2896- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
2897- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
2898- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
2899- --libdir=DIR object code libraries [EPREFIX/lib]
2900- --includedir=DIR C header files [PREFIX/include]
2901- --oldincludedir=DIR C header files for non-gcc [/usr/include]
2902- --infodir=DIR info documentation [PREFIX/info]
2903- --mandir=DIR man documentation [PREFIX/man]
2904-_ACEOF
2905-
2906- cat <<\_ACEOF
2907-
2908-Program names:
2909- --program-prefix=PREFIX prepend PREFIX to installed program names
2910- --program-suffix=SUFFIX append SUFFIX to installed program names
2911- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
2912-
2913-System types:
2914- --build=BUILD configure for building on BUILD [guessed]
2915- --host=HOST cross-compile to build programs to run on HOST [BUILD]
2916-_ACEOF
2917-fi
2918-
2919-if test -n "$ac_init_help"; then
2920- case $ac_init_help in
2921- short | recursive ) echo "Configuration of GRUB 0.97:";;
2922- esac
2923- cat <<\_ACEOF
2924-
2925-Optional Features:
2926- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
2927- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
2928- --enable-maintainer-mode enable make rules and dependencies not useful
2929- (and sometimes confusing) to the casual installer
2930- --disable-dependency-tracking speeds up one-time build
2931- --enable-dependency-tracking do not reject slow dependency extractors
2932- --disable-ext2fs disable ext2fs support in Stage 2
2933- --disable-fat disable FAT support in Stage 2
2934- --disable-ffs disable FFS support in Stage 2
2935- --disable-ufs2 disable UFS2 support in Stage 2
2936- --disable-minix disable Minix fs support in Stage 2
2937- --disable-reiserfs disable ReiserFS support in Stage 2
2938- --disable-vstafs disable VSTa FS support in Stage 2
2939- --disable-jfs disable IBM JFS support in Stage 2
2940- --disable-xfs disable SGI XFS support in Stage 2
2941- --disable-iso9660 disable ISO9660 support in Stage 2
2942- --disable-gunzip disable decompression in Stage 2
2943- --disable-md5-password disable MD5 password support in Stage 2
2944- --disable-packet-retransmission
2945- turn off packet retransmission
2946- --enable-pci-direct access PCI directly instead of using BIOS
2947- --enable-3c509 enable 3Com509 driver
2948- --enable-3c529 enable 3Com529 driver
2949- --enable-3c595 enable 3Com595 driver
2950- --enable-3c90x enable 3Com90x driver
2951- --enable-cs89x0 enable CS89x0 driver
2952- --enable-davicom enable Davicom driver
2953- --enable-depca enable DEPCA and EtherWORKS driver
2954- --enable-eepro enable Etherexpress Pro/10 driver
2955- --enable-eepro100 enable Etherexpress Pro/100 driver
2956- --enable-epic100 enable SMC 83c170 EPIC/100 driver
2957- --enable-3c507 enable 3Com507 driver
2958- --enable-exos205 enable EXOS205 driver
2959- --enable-ni5210 enable Racal-Interlan NI5210 driver
2960- --enable-lance enable Lance PCI PCNet/32 driver
2961- --enable-ne2100 enable Novell NE2100 driver
2962- --enable-ni6510 enable Racal-Interlan NI6510 driver
2963- --enable-natsemi enable NatSemi DP8381x driver
2964- --enable-ni5010 enable Racal-Interlan NI5010 driver
2965- --enable-3c503 enable 3Com503 driver
2966- --enable-ne enable NE1000/2000 ISA driver
2967- --enable-ns8390 enable NE2000 PCI driver
2968- --enable-wd enable WD8003/8013, SMC8216/8416 driver
2969- --enable-otulip enable old Tulip driver
2970- --enable-rtl8139 enable Realtek 8139 driver
2971- --enable-sis900 enable SIS 900 and SIS 7016 driver
2972- --enable-sk-g16 enable Schneider and Koch G16 driver
2973- --enable-smc9000 enable SMC9000 driver
2974- --enable-tiara enable Tiara driver
2975- --enable-tulip enable Tulip driver
2976- --enable-via-rhine enable Rhine-I/II driver
2977- --enable-w89c840 enable Winbond W89c840, Compex RL100-ATX driver
2978- --enable-3c503-shmem use 3c503 shared memory mode
2979- --enable-3c503-aui use AUI by default on 3c503 cards
2980- --enable-compex-rl2000-fix
2981- specify this if you have a Compex RL2000 PCI
2982- --enable-smc9000-scan=LIST
2983- probe for SMC9000 I/O addresses using LIST
2984- --enable-ne-scan=LIST probe for NE base address using LIST
2985- --enable-wd-default-mem=MEM
2986- set the default memory location for WD/SMC
2987- --enable-cs-scan=LIST probe for CS89x0 base address using LIST
2988- --enable-diskless enable diskless support
2989- --disable-hercules disable hercules terminal support
2990- --disable-serial disable serial terminal support
2991- --enable-serial-speed-simulation
2992- simulate the slowness of a serial device
2993- --enable-preset-menu=FILE
2994- preset a menu file FILE in Stage 2
2995- --enable-example-kernel
2996- build the example Multiboot kernel
2997- --disable-auto-linux-mem-opt
2998- don't pass Linux mem= option automatically
2999-
3000-Optional Packages:
3001- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
3002- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
3003- --with-binutils=DIR search the directory DIR to find binutils
3004- --without-curses do not use curses
3005-
3006-Some influential environment variables:
3007- CC C compiler command
3008- CFLAGS C compiler flags
3009- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
3010- nonstandard directory <lib dir>
3011- CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
3012- headers in a nonstandard directory <include dir>
3013- CPP C preprocessor
3014-
3015-Use these variables to override the choices made by `configure' or to help
3016-it to find libraries and programs with nonstandard names/locations.
3017-
3018-Report bugs to <bug-grub@gnu.org>.
3019-_ACEOF
3020-fi
3021-
3022-if test "$ac_init_help" = "recursive"; then
3023- # If there are subdirs, report their specific --help.
3024- ac_popdir=`pwd`
3025- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
3026- test -d $ac_dir || continue
3027- ac_builddir=.
3028-
3029-if test "$ac_dir" != .; then
3030- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
3031- # A "../" for each directory in $ac_dir_suffix.
3032- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
3033-else
3034- ac_dir_suffix= ac_top_builddir=
3035-fi
3036-
3037-case $srcdir in
3038- .) # No --srcdir option. We are building in place.
3039- ac_srcdir=.
3040- if test -z "$ac_top_builddir"; then
3041- ac_top_srcdir=.
3042- else
3043- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
3044- fi ;;
3045- [\\/]* | ?:[\\/]* ) # Absolute path.
3046- ac_srcdir=$srcdir$ac_dir_suffix;
3047- ac_top_srcdir=$srcdir ;;
3048- *) # Relative path.
3049- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
3050- ac_top_srcdir=$ac_top_builddir$srcdir ;;
3051-esac
3052-
3053-# Do not use `cd foo && pwd` to compute absolute paths, because
3054-# the directories may not exist.
3055-case `pwd` in
3056-.) ac_abs_builddir="$ac_dir";;
3057-*)
3058- case "$ac_dir" in
3059- .) ac_abs_builddir=`pwd`;;
3060- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
3061- *) ac_abs_builddir=`pwd`/"$ac_dir";;
3062- esac;;
3063-esac
3064-case $ac_abs_builddir in
3065-.) ac_abs_top_builddir=${ac_top_builddir}.;;
3066-*)
3067- case ${ac_top_builddir}. in
3068- .) ac_abs_top_builddir=$ac_abs_builddir;;
3069- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
3070- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
3071- esac;;
3072-esac
3073-case $ac_abs_builddir in
3074-.) ac_abs_srcdir=$ac_srcdir;;
3075-*)
3076- case $ac_srcdir in
3077- .) ac_abs_srcdir=$ac_abs_builddir;;
3078- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
3079- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
3080- esac;;
3081-esac
3082-case $ac_abs_builddir in
3083-.) ac_abs_top_srcdir=$ac_top_srcdir;;
3084-*)
3085- case $ac_top_srcdir in
3086- .) ac_abs_top_srcdir=$ac_abs_builddir;;
3087- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
3088- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
3089- esac;;
3090-esac
3091-
3092- cd $ac_dir
3093- # Check for guested configure; otherwise get Cygnus style configure.
3094- if test -f $ac_srcdir/configure.gnu; then
3095- echo
3096- $SHELL $ac_srcdir/configure.gnu --help=recursive
3097- elif test -f $ac_srcdir/configure; then
3098- echo
3099- $SHELL $ac_srcdir/configure --help=recursive
3100- elif test -f $ac_srcdir/configure.ac ||
3101- test -f $ac_srcdir/configure.in; then
3102- echo
3103- $ac_configure --help
3104- else
3105- echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
3106- fi
3107- cd $ac_popdir
3108- done
3109-fi
3110-
3111-test -n "$ac_init_help" && exit 0
3112-if $ac_init_version; then
3113- cat <<\_ACEOF
3114-GRUB configure 0.97
3115-generated by GNU Autoconf 2.59
3116-
3117-Copyright (C) 2003 Free Software Foundation, Inc.
3118-This configure script is free software; the Free Software Foundation
3119-gives unlimited permission to copy, distribute and modify it.
3120-_ACEOF
3121- exit 0
3122-fi
3123-exec 5>config.log
3124-cat >&5 <<_ACEOF
3125-This file contains any messages produced by compilers while
3126-running configure, to aid debugging if configure makes a mistake.
3127-
3128-It was created by GRUB $as_me 0.97, which was
3129-generated by GNU Autoconf 2.59. Invocation command line was
3130-
3131- $ $0 $@
3132-
3133-_ACEOF
3134-{
3135-cat <<_ASUNAME
3136-## --------- ##
3137-## Platform. ##
3138-## --------- ##
3139-
3140-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
3141-uname -m = `(uname -m) 2>/dev/null || echo unknown`
3142-uname -r = `(uname -r) 2>/dev/null || echo unknown`
3143-uname -s = `(uname -s) 2>/dev/null || echo unknown`
3144-uname -v = `(uname -v) 2>/dev/null || echo unknown`
3145-
3146-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
3147-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
3148-
3149-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
3150-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
3151-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
3152-hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
3153-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
3154-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
3155-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
3156-
3157-_ASUNAME
3158-
3159-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3160-for as_dir in $PATH
3161-do
3162- IFS=$as_save_IFS
3163- test -z "$as_dir" && as_dir=.
3164- echo "PATH: $as_dir"
3165-done
3166-
3167-} >&5
3168-
3169-cat >&5 <<_ACEOF
3170-
3171-
3172-## ----------- ##
3173-## Core tests. ##
3174-## ----------- ##
3175-
3176-_ACEOF
3177-
3178-
3179-# Keep a trace of the command line.
3180-# Strip out --no-create and --no-recursion so they do not pile up.
3181-# Strip out --silent because we don't want to record it for future runs.
3182-# Also quote any args containing shell meta-characters.
3183-# Make two passes to allow for proper duplicate-argument suppression.
3184-ac_configure_args=
3185-ac_configure_args0=
3186-ac_configure_args1=
3187-ac_sep=
3188-ac_must_keep_next=false
3189-for ac_pass in 1 2
3190-do
3191- for ac_arg
3192- do
3193- case $ac_arg in
3194- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
3195- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
3196- | -silent | --silent | --silen | --sile | --sil)
3197- continue ;;
3198- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
3199- ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
3200- esac
3201- case $ac_pass in
3202- 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
3203- 2)
3204- ac_configure_args1="$ac_configure_args1 '$ac_arg'"
3205- if test $ac_must_keep_next = true; then
3206- ac_must_keep_next=false # Got value, back to normal.
3207- else
3208- case $ac_arg in
3209- *=* | --config-cache | -C | -disable-* | --disable-* \
3210- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
3211- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
3212- | -with-* | --with-* | -without-* | --without-* | --x)
3213- case "$ac_configure_args0 " in
3214- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
3215- esac
3216- ;;
3217- -* ) ac_must_keep_next=true ;;
3218- esac
3219- fi
3220- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
3221- # Get rid of the leading space.
3222- ac_sep=" "
3223- ;;
3224- esac
3225- done
3226-done
3227-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
3228-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
3229-
3230-# When interrupted or exit'd, cleanup temporary files, and complete
3231-# config.log. We remove comments because anyway the quotes in there
3232-# would cause problems or look ugly.
3233-# WARNING: Be sure not to use single quotes in there, as some shells,
3234-# such as our DU 5.0 friend, will then `close' the trap.
3235-trap 'exit_status=$?
3236- # Save into config.log some information that might help in debugging.
3237- {
3238- echo
3239-
3240- cat <<\_ASBOX
3241-## ---------------- ##
3242-## Cache variables. ##
3243-## ---------------- ##
3244-_ASBOX
3245- echo
3246- # The following way of writing the cache mishandles newlines in values,
3247-{
3248- (set) 2>&1 |
3249- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
3250- *ac_space=\ *)
3251- sed -n \
3252- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
3253- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
3254- ;;
3255- *)
3256- sed -n \
3257- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
3258- ;;
3259- esac;
3260-}
3261- echo
3262-
3263- cat <<\_ASBOX
3264-## ----------------- ##
3265-## Output variables. ##
3266-## ----------------- ##
3267-_ASBOX
3268- echo
3269- for ac_var in $ac_subst_vars
3270- do
3271- eval ac_val=$`echo $ac_var`
3272- echo "$ac_var='"'"'$ac_val'"'"'"
3273- done | sort
3274- echo
3275-
3276- if test -n "$ac_subst_files"; then
3277- cat <<\_ASBOX
3278-## ------------- ##
3279-## Output files. ##
3280-## ------------- ##
3281-_ASBOX
3282- echo
3283- for ac_var in $ac_subst_files
3284- do
3285- eval ac_val=$`echo $ac_var`
3286- echo "$ac_var='"'"'$ac_val'"'"'"
3287- done | sort
3288- echo
3289- fi
3290-
3291- if test -s confdefs.h; then
3292- cat <<\_ASBOX
3293-## ----------- ##
3294-## confdefs.h. ##
3295-## ----------- ##
3296-_ASBOX
3297- echo
3298- sed "/^$/d" confdefs.h | sort
3299- echo
3300- fi
3301- test "$ac_signal" != 0 &&
3302- echo "$as_me: caught signal $ac_signal"
3303- echo "$as_me: exit $exit_status"
3304- } >&5
3305- rm -f core *.core &&
3306- rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
3307- exit $exit_status
3308- ' 0
3309-for ac_signal in 1 2 13 15; do
3310- trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
3311-done
3312-ac_signal=0
3313-
3314-# confdefs.h avoids OS command line length limits that DEFS can exceed.
3315-rm -rf conftest* confdefs.h
3316-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
3317-echo >confdefs.h
3318-
3319-# Predefined preprocessor variables.
3320-
3321-cat >>confdefs.h <<_ACEOF
3322-#define PACKAGE_NAME "$PACKAGE_NAME"
3323-_ACEOF
3324-
3325-
3326-cat >>confdefs.h <<_ACEOF
3327-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
3328-_ACEOF
3329-
3330-
3331-cat >>confdefs.h <<_ACEOF
3332-#define PACKAGE_VERSION "$PACKAGE_VERSION"
3333-_ACEOF
3334-
3335-
3336-cat >>confdefs.h <<_ACEOF
3337-#define PACKAGE_STRING "$PACKAGE_STRING"
3338-_ACEOF
3339-
3340-
3341-cat >>confdefs.h <<_ACEOF
3342-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
3343-_ACEOF
3344-
3345-
3346-# Let the site file select an alternate cache file if it wants to.
3347-# Prefer explicitly selected file to automatically selected ones.
3348-if test -z "$CONFIG_SITE"; then
3349- if test "x$prefix" != xNONE; then
3350- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
3351- else
3352- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
3353- fi
3354-fi
3355-for ac_site_file in $CONFIG_SITE; do
3356- if test -r "$ac_site_file"; then
3357- { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
3358-echo "$as_me: loading site script $ac_site_file" >&6;}
3359- sed 's/^/| /' "$ac_site_file" >&5
3360- . "$ac_site_file"
3361- fi
3362-done
3363-
3364-if test -r "$cache_file"; then
3365- # Some versions of bash will fail to source /dev/null (special
3366- # files actually), so we avoid doing that.
3367- if test -f "$cache_file"; then
3368- { echo "$as_me:$LINENO: loading cache $cache_file" >&5
3369-echo "$as_me: loading cache $cache_file" >&6;}
3370- case $cache_file in
3371- [\\/]* | ?:[\\/]* ) . $cache_file;;
3372- *) . ./$cache_file;;
3373- esac
3374- fi
3375-else
3376- { echo "$as_me:$LINENO: creating cache $cache_file" >&5
3377-echo "$as_me: creating cache $cache_file" >&6;}
3378- >$cache_file
3379-fi
3380-
3381-# Check that the precious variables saved in the cache have kept the same
3382-# value.
3383-ac_cache_corrupted=false
3384-for ac_var in `(set) 2>&1 |
3385- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
3386- eval ac_old_set=\$ac_cv_env_${ac_var}_set
3387- eval ac_new_set=\$ac_env_${ac_var}_set
3388- eval ac_old_val="\$ac_cv_env_${ac_var}_value"
3389- eval ac_new_val="\$ac_env_${ac_var}_value"
3390- case $ac_old_set,$ac_new_set in
3391- set,)
3392- { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
3393-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
3394- ac_cache_corrupted=: ;;
3395- ,set)
3396- { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
3397-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
3398- ac_cache_corrupted=: ;;
3399- ,);;
3400- *)
3401- if test "x$ac_old_val" != "x$ac_new_val"; then
3402- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
3403-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
3404- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
3405-echo "$as_me: former value: $ac_old_val" >&2;}
3406- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
3407-echo "$as_me: current value: $ac_new_val" >&2;}
3408- ac_cache_corrupted=:
3409- fi;;
3410- esac
3411- # Pass precious variables to config.status.
3412- if test "$ac_new_set" = set; then
3413- case $ac_new_val in
3414- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
3415- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
3416- *) ac_arg=$ac_var=$ac_new_val ;;
3417- esac
3418- case " $ac_configure_args " in
3419- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
3420- *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
3421- esac
3422- fi
3423-done
3424-if $ac_cache_corrupted; then
3425- { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
3426-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
3427- { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
3428-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
3429- { (exit 1); exit 1; }; }
3430-fi
3431-
3432-ac_ext=c
3433-ac_cpp='$CPP $CPPFLAGS'
3434-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3435-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3436-ac_compiler_gnu=$ac_cv_c_compiler_gnu
3437-
3438-
3439-
3440-
3441-
3442-
3443-
3444-
3445-
3446-
3447-
3448-
3449-
3450-
3451-
3452-
3453-
3454-
3455-
3456-
3457-
3458-
3459-
3460-
3461-
3462-
3463-
3464-
3465- ac_config_headers="$ac_config_headers config.h"
3466-
3467-am__api_version="1.9"
3468-ac_aux_dir=
3469-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
3470- if test -f $ac_dir/install-sh; then
3471- ac_aux_dir=$ac_dir
3472- ac_install_sh="$ac_aux_dir/install-sh -c"
3473- break
3474- elif test -f $ac_dir/install.sh; then
3475- ac_aux_dir=$ac_dir
3476- ac_install_sh="$ac_aux_dir/install.sh -c"
3477- break
3478- elif test -f $ac_dir/shtool; then
3479- ac_aux_dir=$ac_dir
3480- ac_install_sh="$ac_aux_dir/shtool install -c"
3481- break
3482- fi
3483-done
3484-if test -z "$ac_aux_dir"; then
3485- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
3486-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
3487- { (exit 1); exit 1; }; }
3488-fi
3489-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
3490-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
3491-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
3492-
3493-# Find a good install program. We prefer a C program (faster),
3494-# so one script is as good as another. But avoid the broken or
3495-# incompatible versions:
3496-# SysV /etc/install, /usr/sbin/install
3497-# SunOS /usr/etc/install
3498-# IRIX /sbin/install
3499-# AIX /bin/install
3500-# AmigaOS /C/install, which installs bootblocks on floppy discs
3501-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
3502-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
3503-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
3504-# OS/2's system install, which has a completely different semantic
3505-# ./install, which can be erroneously created by make from ./install.sh.
3506-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
3507-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
3508-if test -z "$INSTALL"; then
3509-if test "${ac_cv_path_install+set}" = set; then
3510- echo $ECHO_N "(cached) $ECHO_C" >&6
3511-else
3512- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3513-for as_dir in $PATH
3514-do
3515- IFS=$as_save_IFS
3516- test -z "$as_dir" && as_dir=.
3517- # Account for people who put trailing slashes in PATH elements.
3518-case $as_dir/ in
3519- ./ | .// | /cC/* | \
3520- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
3521- ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
3522- /usr/ucb/* ) ;;
3523- *)
3524- # OSF1 and SCO ODT 3.0 have their own names for install.
3525- # Don't use installbsd from OSF since it installs stuff as root
3526- # by default.
3527- for ac_prog in ginstall scoinst install; do
3528- for ac_exec_ext in '' $ac_executable_extensions; do
3529- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
3530- if test $ac_prog = install &&
3531- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
3532- # AIX install. It has an incompatible calling convention.
3533- :
3534- elif test $ac_prog = install &&
3535- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
3536- # program-specific install script used by HP pwplus--don't use.
3537- :
3538- else
3539- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
3540- break 3
3541- fi
3542- fi
3543- done
3544- done
3545- ;;
3546-esac
3547-done
3548-
3549-
3550-fi
3551- if test "${ac_cv_path_install+set}" = set; then
3552- INSTALL=$ac_cv_path_install
3553- else
3554- # As a last resort, use the slow shell script. We don't cache a
3555- # path for INSTALL within a source directory, because that will
3556- # break other packages using the cache if that directory is
3557- # removed, or if the path is relative.
3558- INSTALL=$ac_install_sh
3559- fi
3560-fi
3561-echo "$as_me:$LINENO: result: $INSTALL" >&5
3562-echo "${ECHO_T}$INSTALL" >&6
3563-
3564-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
3565-# It thinks the first close brace ends the variable substitution.
3566-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
3567-
3568-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
3569-
3570-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
3571-
3572-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
3573-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
3574-# Just in case
3575-sleep 1
3576-echo timestamp > conftest.file
3577-# Do `set' in a subshell so we don't clobber the current shell's
3578-# arguments. Must try -L first in case configure is actually a
3579-# symlink; some systems play weird games with the mod time of symlinks
3580-# (eg FreeBSD returns the mod time of the symlink's containing
3581-# directory).
3582-if (
3583- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
3584- if test "$*" = "X"; then
3585- # -L didn't work.
3586- set X `ls -t $srcdir/configure conftest.file`
3587- fi
3588- rm -f conftest.file
3589- if test "$*" != "X $srcdir/configure conftest.file" \
3590- && test "$*" != "X conftest.file $srcdir/configure"; then
3591-
3592- # If neither matched, then we have a broken ls. This can happen
3593- # if, for instance, CONFIG_SHELL is bash and it inherits a
3594- # broken ls alias from the environment. This has actually
3595- # happened. Such a system could not be considered "sane".
3596- { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
3597-alias in your environment" >&5
3598-echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
3599-alias in your environment" >&2;}
3600- { (exit 1); exit 1; }; }
3601- fi
3602-
3603- test "$2" = conftest.file
3604- )
3605-then
3606- # Ok.
3607- :
3608-else
3609- { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
3610-Check your system clock" >&5
3611-echo "$as_me: error: newly created file is older than distributed files!
3612-Check your system clock" >&2;}
3613- { (exit 1); exit 1; }; }
3614-fi
3615-echo "$as_me:$LINENO: result: yes" >&5
3616-echo "${ECHO_T}yes" >&6
3617-test "$program_prefix" != NONE &&
3618- program_transform_name="s,^,$program_prefix,;$program_transform_name"
3619-# Use a double $ so make ignores it.
3620-test "$program_suffix" != NONE &&
3621- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
3622-# Double any \ or $. echo might interpret backslashes.
3623-# By default was `s,x,x', remove it if useless.
3624-cat <<\_ACEOF >conftest.sed
3625-s/[\\$]/&&/g;s/;s,x,x,$//
3626-_ACEOF
3627-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
3628-rm conftest.sed
3629-
3630-# expand $ac_aux_dir to an absolute path
3631-am_aux_dir=`cd $ac_aux_dir && pwd`
3632-
3633-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
3634-# Use eval to expand $SHELL
3635-if eval "$MISSING --run true"; then
3636- am_missing_run="$MISSING --run "
3637-else
3638- am_missing_run=
3639- { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
3640-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
3641-fi
3642-
3643-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
3644- # We used to keeping the `.' as first argument, in order to
3645- # allow $(mkdir_p) to be used without argument. As in
3646- # $(mkdir_p) $(somedir)
3647- # where $(somedir) is conditionally defined. However this is wrong
3648- # for two reasons:
3649- # 1. if the package is installed by a user who cannot write `.'
3650- # make install will fail,
3651- # 2. the above comment should most certainly read
3652- # $(mkdir_p) $(DESTDIR)$(somedir)
3653- # so it does not work when $(somedir) is undefined and
3654- # $(DESTDIR) is not.
3655- # To support the latter case, we have to write
3656- # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
3657- # so the `.' trick is pointless.
3658- mkdir_p='mkdir -p --'
3659-else
3660- # On NextStep and OpenStep, the `mkdir' command does not
3661- # recognize any option. It will interpret all options as
3662- # directories to create, and then abort because `.' already
3663- # exists.
3664- for d in ./-p ./--version;
3665- do
3666- test -d $d && rmdir $d
3667- done
3668- # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
3669- if test -f "$ac_aux_dir/mkinstalldirs"; then
3670- mkdir_p='$(mkinstalldirs)'
3671- else
3672- mkdir_p='$(install_sh) -d'
3673- fi
3674-fi
3675-
3676-for ac_prog in gawk mawk nawk awk
3677-do
3678- # Extract the first word of "$ac_prog", so it can be a program name with args.
3679-set dummy $ac_prog; ac_word=$2
3680-echo "$as_me:$LINENO: checking for $ac_word" >&5
3681-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3682-if test "${ac_cv_prog_AWK+set}" = set; then
3683- echo $ECHO_N "(cached) $ECHO_C" >&6
3684-else
3685- if test -n "$AWK"; then
3686- ac_cv_prog_AWK="$AWK" # Let the user override the test.
3687-else
3688-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3689-for as_dir in $PATH
3690-do
3691- IFS=$as_save_IFS
3692- test -z "$as_dir" && as_dir=.
3693- for ac_exec_ext in '' $ac_executable_extensions; do
3694- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3695- ac_cv_prog_AWK="$ac_prog"
3696- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3697- break 2
3698- fi
3699-done
3700-done
3701-
3702-fi
3703-fi
3704-AWK=$ac_cv_prog_AWK
3705-if test -n "$AWK"; then
3706- echo "$as_me:$LINENO: result: $AWK" >&5
3707-echo "${ECHO_T}$AWK" >&6
3708-else
3709- echo "$as_me:$LINENO: result: no" >&5
3710-echo "${ECHO_T}no" >&6
3711-fi
3712-
3713- test -n "$AWK" && break
3714-done
3715-
3716-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
3717-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
3718-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
3719-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
3720- echo $ECHO_N "(cached) $ECHO_C" >&6
3721-else
3722- cat >conftest.make <<\_ACEOF
3723-all:
3724- @echo 'ac_maketemp="$(MAKE)"'
3725-_ACEOF
3726-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
3727-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
3728-if test -n "$ac_maketemp"; then
3729- eval ac_cv_prog_make_${ac_make}_set=yes
3730-else
3731- eval ac_cv_prog_make_${ac_make}_set=no
3732-fi
3733-rm -f conftest.make
3734-fi
3735-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
3736- echo "$as_me:$LINENO: result: yes" >&5
3737-echo "${ECHO_T}yes" >&6
3738- SET_MAKE=
3739-else
3740- echo "$as_me:$LINENO: result: no" >&5
3741-echo "${ECHO_T}no" >&6
3742- SET_MAKE="MAKE=${MAKE-make}"
3743-fi
3744-
3745-rm -rf .tst 2>/dev/null
3746-mkdir .tst 2>/dev/null
3747-if test -d .tst; then
3748- am__leading_dot=.
3749-else
3750- am__leading_dot=_
3751-fi
3752-rmdir .tst 2>/dev/null
3753-
3754-# test to see if srcdir already configured
3755-if test "`cd $srcdir && pwd`" != "`pwd`" &&
3756- test -f $srcdir/config.status; then
3757- { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
3758-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
3759- { (exit 1); exit 1; }; }
3760-fi
3761-
3762-# test whether we have cygpath
3763-if test -z "$CYGPATH_W"; then
3764- if (cygpath --version) >/dev/null 2>/dev/null; then
3765- CYGPATH_W='cygpath -w'
3766- else
3767- CYGPATH_W=echo
3768- fi
3769-fi
3770-
3771-
3772-# Define the identity of the package.
3773- PACKAGE='grub'
3774- VERSION='0.97'
3775-
3776-
3777-cat >>confdefs.h <<_ACEOF
3778-#define PACKAGE "$PACKAGE"
3779-_ACEOF
3780-
3781-
3782-cat >>confdefs.h <<_ACEOF
3783-#define VERSION "$VERSION"
3784-_ACEOF
3785-
3786-# Some tools Automake needs.
3787-
3788-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
3789-
3790-
3791-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
3792-
3793-
3794-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
3795-
3796-
3797-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
3798-
3799-
3800-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
3801-
3802-install_sh=${install_sh-"$am_aux_dir/install-sh"}
3803-
3804-# Installed binaries are usually stripped using `strip' when the user
3805-# run `make install-strip'. However `strip' might not be the right
3806-# tool to use in cross-compilation environments, therefore Automake
3807-# will honor the `STRIP' environment variable to overrule this program.
3808-if test "$cross_compiling" != no; then
3809- if test -n "$ac_tool_prefix"; then
3810- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
3811-set dummy ${ac_tool_prefix}strip; ac_word=$2
3812-echo "$as_me:$LINENO: checking for $ac_word" >&5
3813-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3814-if test "${ac_cv_prog_STRIP+set}" = set; then
3815- echo $ECHO_N "(cached) $ECHO_C" >&6
3816-else
3817- if test -n "$STRIP"; then
3818- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
3819-else
3820-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3821-for as_dir in $PATH
3822-do
3823- IFS=$as_save_IFS
3824- test -z "$as_dir" && as_dir=.
3825- for ac_exec_ext in '' $ac_executable_extensions; do
3826- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3827- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
3828- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3829- break 2
3830- fi
3831-done
3832-done
3833-
3834-fi
3835-fi
3836-STRIP=$ac_cv_prog_STRIP
3837-if test -n "$STRIP"; then
3838- echo "$as_me:$LINENO: result: $STRIP" >&5
3839-echo "${ECHO_T}$STRIP" >&6
3840-else
3841- echo "$as_me:$LINENO: result: no" >&5
3842-echo "${ECHO_T}no" >&6
3843-fi
3844-
3845-fi
3846-if test -z "$ac_cv_prog_STRIP"; then
3847- ac_ct_STRIP=$STRIP
3848- # Extract the first word of "strip", so it can be a program name with args.
3849-set dummy strip; ac_word=$2
3850-echo "$as_me:$LINENO: checking for $ac_word" >&5
3851-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
3852-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
3853- echo $ECHO_N "(cached) $ECHO_C" >&6
3854-else
3855- if test -n "$ac_ct_STRIP"; then
3856- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
3857-else
3858-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3859-for as_dir in $PATH
3860-do
3861- IFS=$as_save_IFS
3862- test -z "$as_dir" && as_dir=.
3863- for ac_exec_ext in '' $ac_executable_extensions; do
3864- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3865- ac_cv_prog_ac_ct_STRIP="strip"
3866- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3867- break 2
3868- fi
3869-done
3870-done
3871-
3872- test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
3873-fi
3874-fi
3875-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
3876-if test -n "$ac_ct_STRIP"; then
3877- echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
3878-echo "${ECHO_T}$ac_ct_STRIP" >&6
3879-else
3880- echo "$as_me:$LINENO: result: no" >&5
3881-echo "${ECHO_T}no" >&6
3882-fi
3883-
3884- STRIP=$ac_ct_STRIP
3885-else
3886- STRIP="$ac_cv_prog_STRIP"
3887-fi
3888-
3889-fi
3890-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
3891-
3892-# We need awk for the "check" target. The system "awk" is bad on
3893-# some platforms.
3894-# Always define AMTAR for backward compatibility.
3895-
3896-AMTAR=${AMTAR-"${am_missing_run}tar"}
3897-
3898-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
3899-
3900-
3901-
3902-
3903-
3904-
3905-# Make sure we can run config.sub.
3906-$ac_config_sub sun4 >/dev/null 2>&1 ||
3907- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
3908-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
3909- { (exit 1); exit 1; }; }
3910-
3911-echo "$as_me:$LINENO: checking build system type" >&5
3912-echo $ECHO_N "checking build system type... $ECHO_C" >&6
3913-if test "${ac_cv_build+set}" = set; then
3914- echo $ECHO_N "(cached) $ECHO_C" >&6
3915-else
3916- ac_cv_build_alias=$build_alias
3917-test -z "$ac_cv_build_alias" &&
3918- ac_cv_build_alias=`$ac_config_guess`
3919-test -z "$ac_cv_build_alias" &&
3920- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
3921-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
3922- { (exit 1); exit 1; }; }
3923-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
3924- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
3925-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
3926- { (exit 1); exit 1; }; }
3927-
3928-fi
3929-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
3930-echo "${ECHO_T}$ac_cv_build" >&6
3931-build=$ac_cv_build
3932-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
3933-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
3934-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
3935-
3936-
3937-echo "$as_me:$LINENO: checking host system type" >&5
3938-echo $ECHO_N "checking host system type... $ECHO_C" >&6
3939-if test "${ac_cv_host+set}" = set; then
3940- echo $ECHO_N "(cached) $ECHO_C" >&6
3941-else
3942- ac_cv_host_alias=$host_alias
3943-test -z "$ac_cv_host_alias" &&
3944- ac_cv_host_alias=$ac_cv_build_alias
3945-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
3946- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
3947-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
3948- { (exit 1); exit 1; }; }
3949-
3950-fi
3951-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
3952-echo "${ECHO_T}$ac_cv_host" >&6
3953-host=$ac_cv_host
3954-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
3955-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
3956-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
3957-
3958-
3959-
3960-case "$host_cpu" in
3961-i[3456]86) host_cpu=i386 ;;
3962-x86_64) host_cpu=x86_64 ;;
3963-*) { { echo "$as_me:$LINENO: error: unsupported CPU type" >&5
3964-echo "$as_me: error: unsupported CPU type" >&2;}
3965- { (exit 1); exit 1; }; } ;;
3966-esac
3967-
3968-
3969-
3970-
3971-#
3972-# Options
3973-#
3974-
3975-echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
3976-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
3977- # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
3978-if test "${enable_maintainer_mode+set}" = set; then
3979- enableval="$enable_maintainer_mode"
3980- USE_MAINTAINER_MODE=$enableval
3981-else
3982- USE_MAINTAINER_MODE=no
3983-fi;
3984- echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
3985-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
3986-
3987-
3988-if test $USE_MAINTAINER_MODE = yes; then
3989- MAINTAINER_MODE_TRUE=
3990- MAINTAINER_MODE_FALSE='#'
3991-else
3992- MAINTAINER_MODE_TRUE='#'
3993- MAINTAINER_MODE_FALSE=
3994-fi
3995-
3996- MAINT=$MAINTAINER_MODE_TRUE
3997-
3998-
3999-if test "x$enable_maintainer_mode" = xyes; then
4000- # Extract the first word of "perl", so it can be a program name with args.
4001-set dummy perl; ac_word=$2
4002-echo "$as_me:$LINENO: checking for $ac_word" >&5
4003-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4004-if test "${ac_cv_path_PERL+set}" = set; then
4005- echo $ECHO_N "(cached) $ECHO_C" >&6
4006-else
4007- case $PERL in
4008- [\\/]* | ?:[\\/]*)
4009- ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
4010- ;;
4011- *)
4012- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4013-for as_dir in $PATH
4014-do
4015- IFS=$as_save_IFS
4016- test -z "$as_dir" && as_dir=.
4017- for ac_exec_ext in '' $ac_executable_extensions; do
4018- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4019- ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
4020- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4021- break 2
4022- fi
4023-done
4024-done
4025-
4026- ;;
4027-esac
4028-fi
4029-PERL=$ac_cv_path_PERL
4030-
4031-if test -n "$PERL"; then
4032- echo "$as_me:$LINENO: result: $PERL" >&5
4033-echo "${ECHO_T}$PERL" >&6
4034-else
4035- echo "$as_me:$LINENO: result: no" >&5
4036-echo "${ECHO_T}no" >&6
4037-fi
4038-
4039- if test -z "$PERL"; then
4040- { { echo "$as_me:$LINENO: error: perl not found" >&5
4041-echo "$as_me: error: perl not found" >&2;}
4042- { (exit 1); exit 1; }; }
4043- fi
4044-fi
4045-
4046-# This should be checked before AC_PROG_CC
4047-if test "x$CFLAGS" = x; then
4048- default_CFLAGS=yes
4049-fi
4050-
4051-if test "x$host_cpu" = xx86_64; then
4052- CFLAGS="-m32 $CFLAGS"
4053-fi
4054-
4055-#
4056-# Programs
4057-#
4058-
4059-if test -n "$ac_tool_prefix"; then
4060- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
4061-set dummy ${ac_tool_prefix}gcc; ac_word=$2
4062-echo "$as_me:$LINENO: checking for $ac_word" >&5
4063-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4064-if test "${ac_cv_prog_CC+set}" = set; then
4065- echo $ECHO_N "(cached) $ECHO_C" >&6
4066-else
4067- if test -n "$CC"; then
4068- ac_cv_prog_CC="$CC" # Let the user override the test.
4069-else
4070-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4071-for as_dir in $PATH
4072-do
4073- IFS=$as_save_IFS
4074- test -z "$as_dir" && as_dir=.
4075- for ac_exec_ext in '' $ac_executable_extensions; do
4076- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4077- ac_cv_prog_CC="${ac_tool_prefix}gcc"
4078- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4079- break 2
4080- fi
4081-done
4082-done
4083-
4084-fi
4085-fi
4086-CC=$ac_cv_prog_CC
4087-if test -n "$CC"; then
4088- echo "$as_me:$LINENO: result: $CC" >&5
4089-echo "${ECHO_T}$CC" >&6
4090-else
4091- echo "$as_me:$LINENO: result: no" >&5
4092-echo "${ECHO_T}no" >&6
4093-fi
4094-
4095-fi
4096-if test -z "$ac_cv_prog_CC"; then
4097- ac_ct_CC=$CC
4098- # Extract the first word of "gcc", so it can be a program name with args.
4099-set dummy gcc; ac_word=$2
4100-echo "$as_me:$LINENO: checking for $ac_word" >&5
4101-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4102-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
4103- echo $ECHO_N "(cached) $ECHO_C" >&6
4104-else
4105- if test -n "$ac_ct_CC"; then
4106- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
4107-else
4108-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4109-for as_dir in $PATH
4110-do
4111- IFS=$as_save_IFS
4112- test -z "$as_dir" && as_dir=.
4113- for ac_exec_ext in '' $ac_executable_extensions; do
4114- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4115- ac_cv_prog_ac_ct_CC="gcc"
4116- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4117- break 2
4118- fi
4119-done
4120-done
4121-
4122-fi
4123-fi
4124-ac_ct_CC=$ac_cv_prog_ac_ct_CC
4125-if test -n "$ac_ct_CC"; then
4126- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
4127-echo "${ECHO_T}$ac_ct_CC" >&6
4128-else
4129- echo "$as_me:$LINENO: result: no" >&5
4130-echo "${ECHO_T}no" >&6
4131-fi
4132-
4133- CC=$ac_ct_CC
4134-else
4135- CC="$ac_cv_prog_CC"
4136-fi
4137-
4138-ac_ext=c
4139-ac_cpp='$CPP $CPPFLAGS'
4140-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4141-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4142-ac_compiler_gnu=$ac_cv_c_compiler_gnu
4143-if test -n "$ac_tool_prefix"; then
4144- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
4145-set dummy ${ac_tool_prefix}gcc; ac_word=$2
4146-echo "$as_me:$LINENO: checking for $ac_word" >&5
4147-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4148-if test "${ac_cv_prog_CC+set}" = set; then
4149- echo $ECHO_N "(cached) $ECHO_C" >&6
4150-else
4151- if test -n "$CC"; then
4152- ac_cv_prog_CC="$CC" # Let the user override the test.
4153-else
4154-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4155-for as_dir in $PATH
4156-do
4157- IFS=$as_save_IFS
4158- test -z "$as_dir" && as_dir=.
4159- for ac_exec_ext in '' $ac_executable_extensions; do
4160- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4161- ac_cv_prog_CC="${ac_tool_prefix}gcc"
4162- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4163- break 2
4164- fi
4165-done
4166-done
4167-
4168-fi
4169-fi
4170-CC=$ac_cv_prog_CC
4171-if test -n "$CC"; then
4172- echo "$as_me:$LINENO: result: $CC" >&5
4173-echo "${ECHO_T}$CC" >&6
4174-else
4175- echo "$as_me:$LINENO: result: no" >&5
4176-echo "${ECHO_T}no" >&6
4177-fi
4178-
4179-fi
4180-if test -z "$ac_cv_prog_CC"; then
4181- ac_ct_CC=$CC
4182- # Extract the first word of "gcc", so it can be a program name with args.
4183-set dummy gcc; ac_word=$2
4184-echo "$as_me:$LINENO: checking for $ac_word" >&5
4185-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4186-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
4187- echo $ECHO_N "(cached) $ECHO_C" >&6
4188-else
4189- if test -n "$ac_ct_CC"; then
4190- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
4191-else
4192-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4193-for as_dir in $PATH
4194-do
4195- IFS=$as_save_IFS
4196- test -z "$as_dir" && as_dir=.
4197- for ac_exec_ext in '' $ac_executable_extensions; do
4198- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4199- ac_cv_prog_ac_ct_CC="gcc"
4200- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4201- break 2
4202- fi
4203-done
4204-done
4205-
4206-fi
4207-fi
4208-ac_ct_CC=$ac_cv_prog_ac_ct_CC
4209-if test -n "$ac_ct_CC"; then
4210- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
4211-echo "${ECHO_T}$ac_ct_CC" >&6
4212-else
4213- echo "$as_me:$LINENO: result: no" >&5
4214-echo "${ECHO_T}no" >&6
4215-fi
4216-
4217- CC=$ac_ct_CC
4218-else
4219- CC="$ac_cv_prog_CC"
4220-fi
4221-
4222-if test -z "$CC"; then
4223- if test -n "$ac_tool_prefix"; then
4224- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
4225-set dummy ${ac_tool_prefix}cc; ac_word=$2
4226-echo "$as_me:$LINENO: checking for $ac_word" >&5
4227-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4228-if test "${ac_cv_prog_CC+set}" = set; then
4229- echo $ECHO_N "(cached) $ECHO_C" >&6
4230-else
4231- if test -n "$CC"; then
4232- ac_cv_prog_CC="$CC" # Let the user override the test.
4233-else
4234-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4235-for as_dir in $PATH
4236-do
4237- IFS=$as_save_IFS
4238- test -z "$as_dir" && as_dir=.
4239- for ac_exec_ext in '' $ac_executable_extensions; do
4240- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4241- ac_cv_prog_CC="${ac_tool_prefix}cc"
4242- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4243- break 2
4244- fi
4245-done
4246-done
4247-
4248-fi
4249-fi
4250-CC=$ac_cv_prog_CC
4251-if test -n "$CC"; then
4252- echo "$as_me:$LINENO: result: $CC" >&5
4253-echo "${ECHO_T}$CC" >&6
4254-else
4255- echo "$as_me:$LINENO: result: no" >&5
4256-echo "${ECHO_T}no" >&6
4257-fi
4258-
4259-fi
4260-if test -z "$ac_cv_prog_CC"; then
4261- ac_ct_CC=$CC
4262- # Extract the first word of "cc", so it can be a program name with args.
4263-set dummy cc; ac_word=$2
4264-echo "$as_me:$LINENO: checking for $ac_word" >&5
4265-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4266-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
4267- echo $ECHO_N "(cached) $ECHO_C" >&6
4268-else
4269- if test -n "$ac_ct_CC"; then
4270- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
4271-else
4272-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4273-for as_dir in $PATH
4274-do
4275- IFS=$as_save_IFS
4276- test -z "$as_dir" && as_dir=.
4277- for ac_exec_ext in '' $ac_executable_extensions; do
4278- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4279- ac_cv_prog_ac_ct_CC="cc"
4280- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4281- break 2
4282- fi
4283-done
4284-done
4285-
4286-fi
4287-fi
4288-ac_ct_CC=$ac_cv_prog_ac_ct_CC
4289-if test -n "$ac_ct_CC"; then
4290- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
4291-echo "${ECHO_T}$ac_ct_CC" >&6
4292-else
4293- echo "$as_me:$LINENO: result: no" >&5
4294-echo "${ECHO_T}no" >&6
4295-fi
4296-
4297- CC=$ac_ct_CC
4298-else
4299- CC="$ac_cv_prog_CC"
4300-fi
4301-
4302-fi
4303-if test -z "$CC"; then
4304- # Extract the first word of "cc", so it can be a program name with args.
4305-set dummy cc; ac_word=$2
4306-echo "$as_me:$LINENO: checking for $ac_word" >&5
4307-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4308-if test "${ac_cv_prog_CC+set}" = set; then
4309- echo $ECHO_N "(cached) $ECHO_C" >&6
4310-else
4311- if test -n "$CC"; then
4312- ac_cv_prog_CC="$CC" # Let the user override the test.
4313-else
4314- ac_prog_rejected=no
4315-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4316-for as_dir in $PATH
4317-do
4318- IFS=$as_save_IFS
4319- test -z "$as_dir" && as_dir=.
4320- for ac_exec_ext in '' $ac_executable_extensions; do
4321- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4322- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
4323- ac_prog_rejected=yes
4324- continue
4325- fi
4326- ac_cv_prog_CC="cc"
4327- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4328- break 2
4329- fi
4330-done
4331-done
4332-
4333-if test $ac_prog_rejected = yes; then
4334- # We found a bogon in the path, so make sure we never use it.
4335- set dummy $ac_cv_prog_CC
4336- shift
4337- if test $# != 0; then
4338- # We chose a different compiler from the bogus one.
4339- # However, it has the same basename, so the bogon will be chosen
4340- # first if we set CC to just the basename; use the full file name.
4341- shift
4342- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
4343- fi
4344-fi
4345-fi
4346-fi
4347-CC=$ac_cv_prog_CC
4348-if test -n "$CC"; then
4349- echo "$as_me:$LINENO: result: $CC" >&5
4350-echo "${ECHO_T}$CC" >&6
4351-else
4352- echo "$as_me:$LINENO: result: no" >&5
4353-echo "${ECHO_T}no" >&6
4354-fi
4355-
4356-fi
4357-if test -z "$CC"; then
4358- if test -n "$ac_tool_prefix"; then
4359- for ac_prog in cl
4360- do
4361- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
4362-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
4363-echo "$as_me:$LINENO: checking for $ac_word" >&5
4364-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4365-if test "${ac_cv_prog_CC+set}" = set; then
4366- echo $ECHO_N "(cached) $ECHO_C" >&6
4367-else
4368- if test -n "$CC"; then
4369- ac_cv_prog_CC="$CC" # Let the user override the test.
4370-else
4371-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4372-for as_dir in $PATH
4373-do
4374- IFS=$as_save_IFS
4375- test -z "$as_dir" && as_dir=.
4376- for ac_exec_ext in '' $ac_executable_extensions; do
4377- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4378- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
4379- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4380- break 2
4381- fi
4382-done
4383-done
4384-
4385-fi
4386-fi
4387-CC=$ac_cv_prog_CC
4388-if test -n "$CC"; then
4389- echo "$as_me:$LINENO: result: $CC" >&5
4390-echo "${ECHO_T}$CC" >&6
4391-else
4392- echo "$as_me:$LINENO: result: no" >&5
4393-echo "${ECHO_T}no" >&6
4394-fi
4395-
4396- test -n "$CC" && break
4397- done
4398-fi
4399-if test -z "$CC"; then
4400- ac_ct_CC=$CC
4401- for ac_prog in cl
4402-do
4403- # Extract the first word of "$ac_prog", so it can be a program name with args.
4404-set dummy $ac_prog; ac_word=$2
4405-echo "$as_me:$LINENO: checking for $ac_word" >&5
4406-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
4407-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
4408- echo $ECHO_N "(cached) $ECHO_C" >&6
4409-else
4410- if test -n "$ac_ct_CC"; then
4411- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
4412-else
4413-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4414-for as_dir in $PATH
4415-do
4416- IFS=$as_save_IFS
4417- test -z "$as_dir" && as_dir=.
4418- for ac_exec_ext in '' $ac_executable_extensions; do
4419- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4420- ac_cv_prog_ac_ct_CC="$ac_prog"
4421- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4422- break 2
4423- fi
4424-done
4425-done
4426-
4427-fi
4428-fi
4429-ac_ct_CC=$ac_cv_prog_ac_ct_CC
4430-if test -n "$ac_ct_CC"; then
4431- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
4432-echo "${ECHO_T}$ac_ct_CC" >&6
4433-else
4434- echo "$as_me:$LINENO: result: no" >&5
4435-echo "${ECHO_T}no" >&6
4436-fi
4437-
4438- test -n "$ac_ct_CC" && break
4439-done
4440-
4441- CC=$ac_ct_CC
4442-fi
4443-
4444-fi
4445-
4446-
4447-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
4448-See \`config.log' for more details." >&5
4449-echo "$as_me: error: no acceptable C compiler found in \$PATH
4450-See \`config.log' for more details." >&2;}
4451- { (exit 1); exit 1; }; }
4452-
4453-# Provide some information about the compiler.
4454-echo "$as_me:$LINENO:" \
4455- "checking for C compiler version" >&5
4456-ac_compiler=`set X $ac_compile; echo $2`
4457-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
4458- (eval $ac_compiler --version </dev/null >&5) 2>&5
4459- ac_status=$?
4460- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4461- (exit $ac_status); }
4462-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
4463- (eval $ac_compiler -v </dev/null >&5) 2>&5
4464- ac_status=$?
4465- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4466- (exit $ac_status); }
4467-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
4468- (eval $ac_compiler -V </dev/null >&5) 2>&5
4469- ac_status=$?
4470- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4471- (exit $ac_status); }
4472-
4473-cat >conftest.$ac_ext <<_ACEOF
4474-/* confdefs.h. */
4475-_ACEOF
4476-cat confdefs.h >>conftest.$ac_ext
4477-cat >>conftest.$ac_ext <<_ACEOF
4478-/* end confdefs.h. */
4479-
4480-int
4481-main ()
4482-{
4483-
4484- ;
4485- return 0;
4486-}
4487-_ACEOF
4488-ac_clean_files_save=$ac_clean_files
4489-ac_clean_files="$ac_clean_files a.out a.exe b.out"
4490-# Try to create an executable without -o first, disregard a.out.
4491-# It will help us diagnose broken compilers, and finding out an intuition
4492-# of exeext.
4493-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
4494-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
4495-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
4496-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
4497- (eval $ac_link_default) 2>&5
4498- ac_status=$?
4499- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4500- (exit $ac_status); }; then
4501- # Find the output, starting from the most likely. This scheme is
4502-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
4503-# resort.
4504-
4505-# Be careful to initialize this variable, since it used to be cached.
4506-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
4507-ac_cv_exeext=
4508-# b.out is created by i960 compilers.
4509-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
4510-do
4511- test -f "$ac_file" || continue
4512- case $ac_file in
4513- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
4514- ;;
4515- conftest.$ac_ext )
4516- # This is the source file.
4517- ;;
4518- [ab].out )
4519- # We found the default executable, but exeext='' is most
4520- # certainly right.
4521- break;;
4522- *.* )
4523- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
4524- # FIXME: I believe we export ac_cv_exeext for Libtool,
4525- # but it would be cool to find out if it's true. Does anybody
4526- # maintain Libtool? --akim.
4527- export ac_cv_exeext
4528- break;;
4529- * )
4530- break;;
4531- esac
4532-done
4533-else
4534- echo "$as_me: failed program was:" >&5
4535-sed 's/^/| /' conftest.$ac_ext >&5
4536-
4537-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
4538-See \`config.log' for more details." >&5
4539-echo "$as_me: error: C compiler cannot create executables
4540-See \`config.log' for more details." >&2;}
4541- { (exit 77); exit 77; }; }
4542-fi
4543-
4544-ac_exeext=$ac_cv_exeext
4545-echo "$as_me:$LINENO: result: $ac_file" >&5
4546-echo "${ECHO_T}$ac_file" >&6
4547-
4548-# Check the compiler produces executables we can run. If not, either
4549-# the compiler is broken, or we cross compile.
4550-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
4551-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
4552-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
4553-# If not cross compiling, check that we can run a simple program.
4554-if test "$cross_compiling" != yes; then
4555- if { ac_try='./$ac_file'
4556- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4557- (eval $ac_try) 2>&5
4558- ac_status=$?
4559- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4560- (exit $ac_status); }; }; then
4561- cross_compiling=no
4562- else
4563- if test "$cross_compiling" = maybe; then
4564- cross_compiling=yes
4565- else
4566- { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
4567-If you meant to cross compile, use \`--host'.
4568-See \`config.log' for more details." >&5
4569-echo "$as_me: error: cannot run C compiled programs.
4570-If you meant to cross compile, use \`--host'.
4571-See \`config.log' for more details." >&2;}
4572- { (exit 1); exit 1; }; }
4573- fi
4574- fi
4575-fi
4576-echo "$as_me:$LINENO: result: yes" >&5
4577-echo "${ECHO_T}yes" >&6
4578-
4579-rm -f a.out a.exe conftest$ac_cv_exeext b.out
4580-ac_clean_files=$ac_clean_files_save
4581-# Check the compiler produces executables we can run. If not, either
4582-# the compiler is broken, or we cross compile.
4583-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
4584-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
4585-echo "$as_me:$LINENO: result: $cross_compiling" >&5
4586-echo "${ECHO_T}$cross_compiling" >&6
4587-
4588-echo "$as_me:$LINENO: checking for suffix of executables" >&5
4589-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
4590-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
4591- (eval $ac_link) 2>&5
4592- ac_status=$?
4593- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4594- (exit $ac_status); }; then
4595- # If both `conftest.exe' and `conftest' are `present' (well, observable)
4596-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
4597-# work properly (i.e., refer to `conftest.exe'), while it won't with
4598-# `rm'.
4599-for ac_file in conftest.exe conftest conftest.*; do
4600- test -f "$ac_file" || continue
4601- case $ac_file in
4602- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
4603- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
4604- export ac_cv_exeext
4605- break;;
4606- * ) break;;
4607- esac
4608-done
4609-else
4610- { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
4611-See \`config.log' for more details." >&5
4612-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
4613-See \`config.log' for more details." >&2;}
4614- { (exit 1); exit 1; }; }
4615-fi
4616-
4617-rm -f conftest$ac_cv_exeext
4618-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
4619-echo "${ECHO_T}$ac_cv_exeext" >&6
4620-
4621-rm -f conftest.$ac_ext
4622-EXEEXT=$ac_cv_exeext
4623-ac_exeext=$EXEEXT
4624-echo "$as_me:$LINENO: checking for suffix of object files" >&5
4625-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
4626-if test "${ac_cv_objext+set}" = set; then
4627- echo $ECHO_N "(cached) $ECHO_C" >&6
4628-else
4629- cat >conftest.$ac_ext <<_ACEOF
4630-/* confdefs.h. */
4631-_ACEOF
4632-cat confdefs.h >>conftest.$ac_ext
4633-cat >>conftest.$ac_ext <<_ACEOF
4634-/* end confdefs.h. */
4635-
4636-int
4637-main ()
4638-{
4639-
4640- ;
4641- return 0;
4642-}
4643-_ACEOF
4644-rm -f conftest.o conftest.obj
4645-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4646- (eval $ac_compile) 2>&5
4647- ac_status=$?
4648- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4649- (exit $ac_status); }; then
4650- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
4651- case $ac_file in
4652- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
4653- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
4654- break;;
4655- esac
4656-done
4657-else
4658- echo "$as_me: failed program was:" >&5
4659-sed 's/^/| /' conftest.$ac_ext >&5
4660-
4661-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
4662-See \`config.log' for more details." >&5
4663-echo "$as_me: error: cannot compute suffix of object files: cannot compile
4664-See \`config.log' for more details." >&2;}
4665- { (exit 1); exit 1; }; }
4666-fi
4667-
4668-rm -f conftest.$ac_cv_objext conftest.$ac_ext
4669-fi
4670-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
4671-echo "${ECHO_T}$ac_cv_objext" >&6
4672-OBJEXT=$ac_cv_objext
4673-ac_objext=$OBJEXT
4674-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
4675-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
4676-if test "${ac_cv_c_compiler_gnu+set}" = set; then
4677- echo $ECHO_N "(cached) $ECHO_C" >&6
4678-else
4679- cat >conftest.$ac_ext <<_ACEOF
4680-/* confdefs.h. */
4681-_ACEOF
4682-cat confdefs.h >>conftest.$ac_ext
4683-cat >>conftest.$ac_ext <<_ACEOF
4684-/* end confdefs.h. */
4685-
4686-int
4687-main ()
4688-{
4689-#ifndef __GNUC__
4690- choke me
4691-#endif
4692-
4693- ;
4694- return 0;
4695-}
4696-_ACEOF
4697-rm -f conftest.$ac_objext
4698-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4699- (eval $ac_compile) 2>conftest.er1
4700- ac_status=$?
4701- grep -v '^ *+' conftest.er1 >conftest.err
4702- rm -f conftest.er1
4703- cat conftest.err >&5
4704- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4705- (exit $ac_status); } &&
4706- { ac_try='test -z "$ac_c_werror_flag"
4707- || test ! -s conftest.err'
4708- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4709- (eval $ac_try) 2>&5
4710- ac_status=$?
4711- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4712- (exit $ac_status); }; } &&
4713- { ac_try='test -s conftest.$ac_objext'
4714- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4715- (eval $ac_try) 2>&5
4716- ac_status=$?
4717- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4718- (exit $ac_status); }; }; then
4719- ac_compiler_gnu=yes
4720-else
4721- echo "$as_me: failed program was:" >&5
4722-sed 's/^/| /' conftest.$ac_ext >&5
4723-
4724-ac_compiler_gnu=no
4725-fi
4726-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
4727-ac_cv_c_compiler_gnu=$ac_compiler_gnu
4728-
4729-fi
4730-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
4731-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
4732-GCC=`test $ac_compiler_gnu = yes && echo yes`
4733-ac_test_CFLAGS=${CFLAGS+set}
4734-ac_save_CFLAGS=$CFLAGS
4735-CFLAGS="-g"
4736-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
4737-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
4738-if test "${ac_cv_prog_cc_g+set}" = set; then
4739- echo $ECHO_N "(cached) $ECHO_C" >&6
4740-else
4741- cat >conftest.$ac_ext <<_ACEOF
4742-/* confdefs.h. */
4743-_ACEOF
4744-cat confdefs.h >>conftest.$ac_ext
4745-cat >>conftest.$ac_ext <<_ACEOF
4746-/* end confdefs.h. */
4747-
4748-int
4749-main ()
4750-{
4751-
4752- ;
4753- return 0;
4754-}
4755-_ACEOF
4756-rm -f conftest.$ac_objext
4757-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4758- (eval $ac_compile) 2>conftest.er1
4759- ac_status=$?
4760- grep -v '^ *+' conftest.er1 >conftest.err
4761- rm -f conftest.er1
4762- cat conftest.err >&5
4763- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4764- (exit $ac_status); } &&
4765- { ac_try='test -z "$ac_c_werror_flag"
4766- || test ! -s conftest.err'
4767- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4768- (eval $ac_try) 2>&5
4769- ac_status=$?
4770- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4771- (exit $ac_status); }; } &&
4772- { ac_try='test -s conftest.$ac_objext'
4773- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4774- (eval $ac_try) 2>&5
4775- ac_status=$?
4776- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4777- (exit $ac_status); }; }; then
4778- ac_cv_prog_cc_g=yes
4779-else
4780- echo "$as_me: failed program was:" >&5
4781-sed 's/^/| /' conftest.$ac_ext >&5
4782-
4783-ac_cv_prog_cc_g=no
4784-fi
4785-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
4786-fi
4787-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
4788-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
4789-if test "$ac_test_CFLAGS" = set; then
4790- CFLAGS=$ac_save_CFLAGS
4791-elif test $ac_cv_prog_cc_g = yes; then
4792- if test "$GCC" = yes; then
4793- CFLAGS="-g -O2"
4794- else
4795- CFLAGS="-g"
4796- fi
4797-else
4798- if test "$GCC" = yes; then
4799- CFLAGS="-O2"
4800- else
4801- CFLAGS=
4802- fi
4803-fi
4804-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
4805-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
4806-if test "${ac_cv_prog_cc_stdc+set}" = set; then
4807- echo $ECHO_N "(cached) $ECHO_C" >&6
4808-else
4809- ac_cv_prog_cc_stdc=no
4810-ac_save_CC=$CC
4811-cat >conftest.$ac_ext <<_ACEOF
4812-/* confdefs.h. */
4813-_ACEOF
4814-cat confdefs.h >>conftest.$ac_ext
4815-cat >>conftest.$ac_ext <<_ACEOF
4816-/* end confdefs.h. */
4817-#include <stdarg.h>
4818-#include <stdio.h>
4819-#include <sys/types.h>
4820-#include <sys/stat.h>
4821-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
4822-struct buf { int x; };
4823-FILE * (*rcsopen) (struct buf *, struct stat *, int);
4824-static char *e (p, i)
4825- char **p;
4826- int i;
4827-{
4828- return p[i];
4829-}
4830-static char *f (char * (*g) (char **, int), char **p, ...)
4831-{
4832- char *s;
4833- va_list v;
4834- va_start (v,p);
4835- s = g (p, va_arg (v,int));
4836- va_end (v);
4837- return s;
4838-}
4839-
4840-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
4841- function prototypes and stuff, but not '\xHH' hex character constants.
4842- These don't provoke an error unfortunately, instead are silently treated
4843- as 'x'. The following induces an error, until -std1 is added to get
4844- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
4845- array size at least. It's necessary to write '\x00'==0 to get something
4846- that's true only with -std1. */
4847-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
4848-
4849-int test (int i, double x);
4850-struct s1 {int (*f) (int a);};
4851-struct s2 {int (*f) (double a);};
4852-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
4853-int argc;
4854-char **argv;
4855-int
4856-main ()
4857-{
4858-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
4859- ;
4860- return 0;
4861-}
4862-_ACEOF
4863-# Don't try gcc -ansi; that turns off useful extensions and
4864-# breaks some systems' header files.
4865-# AIX -qlanglvl=ansi
4866-# Ultrix and OSF/1 -std1
4867-# HP-UX 10.20 and later -Ae
4868-# HP-UX older versions -Aa -D_HPUX_SOURCE
4869-# SVR4 -Xc -D__EXTENSIONS__
4870-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
4871-do
4872- CC="$ac_save_CC $ac_arg"
4873- rm -f conftest.$ac_objext
4874-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4875- (eval $ac_compile) 2>conftest.er1
4876- ac_status=$?
4877- grep -v '^ *+' conftest.er1 >conftest.err
4878- rm -f conftest.er1
4879- cat conftest.err >&5
4880- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4881- (exit $ac_status); } &&
4882- { ac_try='test -z "$ac_c_werror_flag"
4883- || test ! -s conftest.err'
4884- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4885- (eval $ac_try) 2>&5
4886- ac_status=$?
4887- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4888- (exit $ac_status); }; } &&
4889- { ac_try='test -s conftest.$ac_objext'
4890- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4891- (eval $ac_try) 2>&5
4892- ac_status=$?
4893- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4894- (exit $ac_status); }; }; then
4895- ac_cv_prog_cc_stdc=$ac_arg
4896-break
4897-else
4898- echo "$as_me: failed program was:" >&5
4899-sed 's/^/| /' conftest.$ac_ext >&5
4900-
4901-fi
4902-rm -f conftest.err conftest.$ac_objext
4903-done
4904-rm -f conftest.$ac_ext conftest.$ac_objext
4905-CC=$ac_save_CC
4906-
4907-fi
4908-
4909-case "x$ac_cv_prog_cc_stdc" in
4910- x|xno)
4911- echo "$as_me:$LINENO: result: none needed" >&5
4912-echo "${ECHO_T}none needed" >&6 ;;
4913- *)
4914- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
4915-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
4916- CC="$CC $ac_cv_prog_cc_stdc" ;;
4917-esac
4918-
4919-# Some people use a C++ compiler to compile C. Since we use `exit',
4920-# in C++ we need to declare it. In case someone uses the same compiler
4921-# for both compiling C and C++ we need to have the C++ compiler decide
4922-# the declaration of exit, since it's the most demanding environment.
4923-cat >conftest.$ac_ext <<_ACEOF
4924-#ifndef __cplusplus
4925- choke me
4926-#endif
4927-_ACEOF
4928-rm -f conftest.$ac_objext
4929-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4930- (eval $ac_compile) 2>conftest.er1
4931- ac_status=$?
4932- grep -v '^ *+' conftest.er1 >conftest.err
4933- rm -f conftest.er1
4934- cat conftest.err >&5
4935- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4936- (exit $ac_status); } &&
4937- { ac_try='test -z "$ac_c_werror_flag"
4938- || test ! -s conftest.err'
4939- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4940- (eval $ac_try) 2>&5
4941- ac_status=$?
4942- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4943- (exit $ac_status); }; } &&
4944- { ac_try='test -s conftest.$ac_objext'
4945- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4946- (eval $ac_try) 2>&5
4947- ac_status=$?
4948- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4949- (exit $ac_status); }; }; then
4950- for ac_declaration in \
4951- '' \
4952- 'extern "C" void std::exit (int) throw (); using std::exit;' \
4953- 'extern "C" void std::exit (int); using std::exit;' \
4954- 'extern "C" void exit (int) throw ();' \
4955- 'extern "C" void exit (int);' \
4956- 'void exit (int);'
4957-do
4958- cat >conftest.$ac_ext <<_ACEOF
4959-/* confdefs.h. */
4960-_ACEOF
4961-cat confdefs.h >>conftest.$ac_ext
4962-cat >>conftest.$ac_ext <<_ACEOF
4963-/* end confdefs.h. */
4964-$ac_declaration
4965-#include <stdlib.h>
4966-int
4967-main ()
4968-{
4969-exit (42);
4970- ;
4971- return 0;
4972-}
4973-_ACEOF
4974-rm -f conftest.$ac_objext
4975-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
4976- (eval $ac_compile) 2>conftest.er1
4977- ac_status=$?
4978- grep -v '^ *+' conftest.er1 >conftest.err
4979- rm -f conftest.er1
4980- cat conftest.err >&5
4981- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4982- (exit $ac_status); } &&
4983- { ac_try='test -z "$ac_c_werror_flag"
4984- || test ! -s conftest.err'
4985- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4986- (eval $ac_try) 2>&5
4987- ac_status=$?
4988- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4989- (exit $ac_status); }; } &&
4990- { ac_try='test -s conftest.$ac_objext'
4991- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
4992- (eval $ac_try) 2>&5
4993- ac_status=$?
4994- echo "$as_me:$LINENO: \$? = $ac_status" >&5
4995- (exit $ac_status); }; }; then
4996- :
4997-else
4998- echo "$as_me: failed program was:" >&5
4999-sed 's/^/| /' conftest.$ac_ext >&5
5000-
5001-continue
5002-fi
5003-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
5004- cat >conftest.$ac_ext <<_ACEOF
5005-/* confdefs.h. */
5006-_ACEOF
5007-cat confdefs.h >>conftest.$ac_ext
5008-cat >>conftest.$ac_ext <<_ACEOF
5009-/* end confdefs.h. */
5010-$ac_declaration
5011-int
5012-main ()
5013-{
5014-exit (42);
5015- ;
5016- return 0;
5017-}
5018-_ACEOF
5019-rm -f conftest.$ac_objext
5020-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5021- (eval $ac_compile) 2>conftest.er1
5022- ac_status=$?
5023- grep -v '^ *+' conftest.er1 >conftest.err
5024- rm -f conftest.er1
5025- cat conftest.err >&5
5026- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5027- (exit $ac_status); } &&
5028- { ac_try='test -z "$ac_c_werror_flag"
5029- || test ! -s conftest.err'
5030- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5031- (eval $ac_try) 2>&5
5032- ac_status=$?
5033- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5034- (exit $ac_status); }; } &&
5035- { ac_try='test -s conftest.$ac_objext'
5036- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5037- (eval $ac_try) 2>&5
5038- ac_status=$?
5039- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5040- (exit $ac_status); }; }; then
5041- break
5042-else
5043- echo "$as_me: failed program was:" >&5
5044-sed 's/^/| /' conftest.$ac_ext >&5
5045-
5046-fi
5047-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
5048-done
5049-rm -f conftest*
5050-if test -n "$ac_declaration"; then
5051- echo '#ifdef __cplusplus' >>confdefs.h
5052- echo $ac_declaration >>confdefs.h
5053- echo '#endif' >>confdefs.h
5054-fi
5055-
5056-else
5057- echo "$as_me: failed program was:" >&5
5058-sed 's/^/| /' conftest.$ac_ext >&5
5059-
5060-fi
5061-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
5062-ac_ext=c
5063-ac_cpp='$CPP $CPPFLAGS'
5064-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5065-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5066-ac_compiler_gnu=$ac_cv_c_compiler_gnu
5067-DEPDIR="${am__leading_dot}deps"
5068-
5069- ac_config_commands="$ac_config_commands depfiles"
5070-
5071-
5072-am_make=${MAKE-make}
5073-cat > confinc << 'END'
5074-am__doit:
5075- @echo done
5076-.PHONY: am__doit
5077-END
5078-# If we don't find an include directive, just comment out the code.
5079-echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
5080-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
5081-am__include="#"
5082-am__quote=
5083-_am_result=none
5084-# First try GNU make style include.
5085-echo "include confinc" > confmf
5086-# We grep out `Entering directory' and `Leaving directory'
5087-# messages which can occur if `w' ends up in MAKEFLAGS.
5088-# In particular we don't look at `^make:' because GNU make might
5089-# be invoked under some other name (usually "gmake"), in which
5090-# case it prints its new name instead of `make'.
5091-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
5092- am__include=include
5093- am__quote=
5094- _am_result=GNU
5095-fi
5096-# Now try BSD make style include.
5097-if test "$am__include" = "#"; then
5098- echo '.include "confinc"' > confmf
5099- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
5100- am__include=.include
5101- am__quote="\""
5102- _am_result=BSD
5103- fi
5104-fi
5105-
5106-
5107-echo "$as_me:$LINENO: result: $_am_result" >&5
5108-echo "${ECHO_T}$_am_result" >&6
5109-rm -f confinc confmf
5110-
5111-# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
5112-if test "${enable_dependency_tracking+set}" = set; then
5113- enableval="$enable_dependency_tracking"
5114-
5115-fi;
5116-if test "x$enable_dependency_tracking" != xno; then
5117- am_depcomp="$ac_aux_dir/depcomp"
5118- AMDEPBACKSLASH='\'
5119-fi
5120-
5121-
5122-if test "x$enable_dependency_tracking" != xno; then
5123- AMDEP_TRUE=
5124- AMDEP_FALSE='#'
5125-else
5126- AMDEP_TRUE='#'
5127- AMDEP_FALSE=
5128-fi
5129-
5130-
5131-
5132-
5133-depcc="$CC" am_compiler_list=
5134-
5135-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
5136-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
5137-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
5138- echo $ECHO_N "(cached) $ECHO_C" >&6
5139-else
5140- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
5141- # We make a subdir and do the tests there. Otherwise we can end up
5142- # making bogus files that we don't know about and never remove. For
5143- # instance it was reported that on HP-UX the gcc test will end up
5144- # making a dummy file named `D' -- because `-MD' means `put the output
5145- # in D'.
5146- mkdir conftest.dir
5147- # Copy depcomp to subdir because otherwise we won't find it if we're
5148- # using a relative directory.
5149- cp "$am_depcomp" conftest.dir
5150- cd conftest.dir
5151- # We will build objects and dependencies in a subdirectory because
5152- # it helps to detect inapplicable dependency modes. For instance
5153- # both Tru64's cc and ICC support -MD to output dependencies as a
5154- # side effect of compilation, but ICC will put the dependencies in
5155- # the current directory while Tru64 will put them in the object
5156- # directory.
5157- mkdir sub
5158-
5159- am_cv_CC_dependencies_compiler_type=none
5160- if test "$am_compiler_list" = ""; then
5161- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
5162- fi
5163- for depmode in $am_compiler_list; do
5164- # Setup a source with many dependencies, because some compilers
5165- # like to wrap large dependency lists on column 80 (with \), and
5166- # we should not choose a depcomp mode which is confused by this.
5167- #
5168- # We need to recreate these files for each test, as the compiler may
5169- # overwrite some of them when testing with obscure command lines.
5170- # This happens at least with the AIX C compiler.
5171- : > sub/conftest.c
5172- for i in 1 2 3 4 5 6; do
5173- echo '#include "conftst'$i'.h"' >> sub/conftest.c
5174- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
5175- # Solaris 8's {/usr,}/bin/sh.
5176- touch sub/conftst$i.h
5177- done
5178- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
5179-
5180- case $depmode in
5181- nosideeffect)
5182- # after this tag, mechanisms are not by side-effect, so they'll
5183- # only be used when explicitly requested
5184- if test "x$enable_dependency_tracking" = xyes; then
5185- continue
5186- else
5187- break
5188- fi
5189- ;;
5190- none) break ;;
5191- esac
5192- # We check with `-c' and `-o' for the sake of the "dashmstdout"
5193- # mode. It turns out that the SunPro C++ compiler does not properly
5194- # handle `-M -o', and we need to detect this.
5195- if depmode=$depmode \
5196- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
5197- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
5198- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
5199- >/dev/null 2>conftest.err &&
5200- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
5201- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
5202- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
5203- # icc doesn't choke on unknown options, it will just issue warnings
5204- # or remarks (even with -Werror). So we grep stderr for any message
5205- # that says an option was ignored or not supported.
5206- # When given -MP, icc 7.0 and 7.1 complain thusly:
5207- # icc: Command line warning: ignoring option '-M'; no argument required
5208- # The diagnosis changed in icc 8.0:
5209- # icc: Command line remark: option '-MP' not supported
5210- if (grep 'ignoring option' conftest.err ||
5211- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
5212- am_cv_CC_dependencies_compiler_type=$depmode
5213- break
5214- fi
5215- fi
5216- done
5217-
5218- cd ..
5219- rm -rf conftest.dir
5220-else
5221- am_cv_CC_dependencies_compiler_type=none
5222-fi
5223-
5224-fi
5225-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
5226-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
5227-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
5228-
5229-
5230-
5231-if
5232- test "x$enable_dependency_tracking" != xno \
5233- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
5234- am__fastdepCC_TRUE=
5235- am__fastdepCC_FALSE='#'
5236-else
5237- am__fastdepCC_TRUE='#'
5238- am__fastdepCC_FALSE=
5239-fi
5240-
5241-
5242-# We need this for older versions of Autoconf.
5243-
5244-depcc="$CC" am_compiler_list=
5245-
5246-echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
5247-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
5248-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
5249- echo $ECHO_N "(cached) $ECHO_C" >&6
5250-else
5251- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
5252- # We make a subdir and do the tests there. Otherwise we can end up
5253- # making bogus files that we don't know about and never remove. For
5254- # instance it was reported that on HP-UX the gcc test will end up
5255- # making a dummy file named `D' -- because `-MD' means `put the output
5256- # in D'.
5257- mkdir conftest.dir
5258- # Copy depcomp to subdir because otherwise we won't find it if we're
5259- # using a relative directory.
5260- cp "$am_depcomp" conftest.dir
5261- cd conftest.dir
5262- # We will build objects and dependencies in a subdirectory because
5263- # it helps to detect inapplicable dependency modes. For instance
5264- # both Tru64's cc and ICC support -MD to output dependencies as a
5265- # side effect of compilation, but ICC will put the dependencies in
5266- # the current directory while Tru64 will put them in the object
5267- # directory.
5268- mkdir sub
5269-
5270- am_cv_CC_dependencies_compiler_type=none
5271- if test "$am_compiler_list" = ""; then
5272- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
5273- fi
5274- for depmode in $am_compiler_list; do
5275- # Setup a source with many dependencies, because some compilers
5276- # like to wrap large dependency lists on column 80 (with \), and
5277- # we should not choose a depcomp mode which is confused by this.
5278- #
5279- # We need to recreate these files for each test, as the compiler may
5280- # overwrite some of them when testing with obscure command lines.
5281- # This happens at least with the AIX C compiler.
5282- : > sub/conftest.c
5283- for i in 1 2 3 4 5 6; do
5284- echo '#include "conftst'$i'.h"' >> sub/conftest.c
5285- # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
5286- # Solaris 8's {/usr,}/bin/sh.
5287- touch sub/conftst$i.h
5288- done
5289- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
5290-
5291- case $depmode in
5292- nosideeffect)
5293- # after this tag, mechanisms are not by side-effect, so they'll
5294- # only be used when explicitly requested
5295- if test "x$enable_dependency_tracking" = xyes; then
5296- continue
5297- else
5298- break
5299- fi
5300- ;;
5301- none) break ;;
5302- esac
5303- # We check with `-c' and `-o' for the sake of the "dashmstdout"
5304- # mode. It turns out that the SunPro C++ compiler does not properly
5305- # handle `-M -o', and we need to detect this.
5306- if depmode=$depmode \
5307- source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
5308- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
5309- $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
5310- >/dev/null 2>conftest.err &&
5311- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
5312- grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
5313- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
5314- # icc doesn't choke on unknown options, it will just issue warnings
5315- # or remarks (even with -Werror). So we grep stderr for any message
5316- # that says an option was ignored or not supported.
5317- # When given -MP, icc 7.0 and 7.1 complain thusly:
5318- # icc: Command line warning: ignoring option '-M'; no argument required
5319- # The diagnosis changed in icc 8.0:
5320- # icc: Command line remark: option '-MP' not supported
5321- if (grep 'ignoring option' conftest.err ||
5322- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
5323- am_cv_CC_dependencies_compiler_type=$depmode
5324- break
5325- fi
5326- fi
5327- done
5328-
5329- cd ..
5330- rm -rf conftest.dir
5331-else
5332- am_cv_CC_dependencies_compiler_type=none
5333-fi
5334-
5335-fi
5336-echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
5337-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
5338-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
5339-
5340-
5341-
5342-if
5343- test "x$enable_dependency_tracking" != xno \
5344- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
5345- am__fastdepCC_TRUE=
5346- am__fastdepCC_FALSE='#'
5347-else
5348- am__fastdepCC_TRUE='#'
5349- am__fastdepCC_FALSE=
5350-fi
5351-
5352-
5353-
5354-CCAS="$CC"
5355-
5356-
5357-
5358-# Check whether --with-binutils or --without-binutils was given.
5359-if test "${with_binutils+set}" = set; then
5360- withval="$with_binutils"
5361-
5362-fi;
5363-
5364-if test "x$with_binutils" != x; then
5365- # Extract the first word of "ranlib", so it can be a program name with args.
5366-set dummy ranlib; ac_word=$2
5367-echo "$as_me:$LINENO: checking for $ac_word" >&5
5368-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5369-if test "${ac_cv_path_RANLIB+set}" = set; then
5370- echo $ECHO_N "(cached) $ECHO_C" >&6
5371-else
5372- case $RANLIB in
5373- [\\/]* | ?:[\\/]*)
5374- ac_cv_path_RANLIB="$RANLIB" # Let the user override the test with a path.
5375- ;;
5376- *)
5377- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5378-as_dummy=""$with_binutils:$PATH""
5379-for as_dir in $as_dummy
5380-do
5381- IFS=$as_save_IFS
5382- test -z "$as_dir" && as_dir=.
5383- for ac_exec_ext in '' $ac_executable_extensions; do
5384- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5385- ac_cv_path_RANLIB="$as_dir/$ac_word$ac_exec_ext"
5386- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5387- break 2
5388- fi
5389-done
5390-done
5391-
5392- test -z "$ac_cv_path_RANLIB" && ac_cv_path_RANLIB=":"
5393- ;;
5394-esac
5395-fi
5396-RANLIB=$ac_cv_path_RANLIB
5397-
5398-if test -n "$RANLIB"; then
5399- echo "$as_me:$LINENO: result: $RANLIB" >&5
5400-echo "${ECHO_T}$RANLIB" >&6
5401-else
5402- echo "$as_me:$LINENO: result: no" >&5
5403-echo "${ECHO_T}no" >&6
5404-fi
5405-
5406-else
5407- if test -n "$ac_tool_prefix"; then
5408- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
5409-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
5410-echo "$as_me:$LINENO: checking for $ac_word" >&5
5411-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5412-if test "${ac_cv_prog_RANLIB+set}" = set; then
5413- echo $ECHO_N "(cached) $ECHO_C" >&6
5414-else
5415- if test -n "$RANLIB"; then
5416- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
5417-else
5418-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5419-for as_dir in $PATH
5420-do
5421- IFS=$as_save_IFS
5422- test -z "$as_dir" && as_dir=.
5423- for ac_exec_ext in '' $ac_executable_extensions; do
5424- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5425- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
5426- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5427- break 2
5428- fi
5429-done
5430-done
5431-
5432-fi
5433-fi
5434-RANLIB=$ac_cv_prog_RANLIB
5435-if test -n "$RANLIB"; then
5436- echo "$as_me:$LINENO: result: $RANLIB" >&5
5437-echo "${ECHO_T}$RANLIB" >&6
5438-else
5439- echo "$as_me:$LINENO: result: no" >&5
5440-echo "${ECHO_T}no" >&6
5441-fi
5442-
5443-fi
5444-if test -z "$ac_cv_prog_RANLIB"; then
5445- ac_ct_RANLIB=$RANLIB
5446- # Extract the first word of "ranlib", so it can be a program name with args.
5447-set dummy ranlib; ac_word=$2
5448-echo "$as_me:$LINENO: checking for $ac_word" >&5
5449-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5450-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
5451- echo $ECHO_N "(cached) $ECHO_C" >&6
5452-else
5453- if test -n "$ac_ct_RANLIB"; then
5454- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
5455-else
5456-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5457-for as_dir in $PATH
5458-do
5459- IFS=$as_save_IFS
5460- test -z "$as_dir" && as_dir=.
5461- for ac_exec_ext in '' $ac_executable_extensions; do
5462- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5463- ac_cv_prog_ac_ct_RANLIB="ranlib"
5464- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5465- break 2
5466- fi
5467-done
5468-done
5469-
5470- test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
5471-fi
5472-fi
5473-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
5474-if test -n "$ac_ct_RANLIB"; then
5475- echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
5476-echo "${ECHO_T}$ac_ct_RANLIB" >&6
5477-else
5478- echo "$as_me:$LINENO: result: no" >&5
5479-echo "${ECHO_T}no" >&6
5480-fi
5481-
5482- RANLIB=$ac_ct_RANLIB
5483-else
5484- RANLIB="$ac_cv_prog_RANLIB"
5485-fi
5486-
5487-fi
5488-
5489-# optimization flags
5490-if test "x$ac_cv_c_compiler_gnu" = xyes; then
5491- if test "x$default_CFLAGS" = xyes; then
5492- # Autoconf may set CFLAGS to -O2 and/or -g. So eliminate them.
5493- CFLAGS="`echo $CFLAGS | sed -e 's/-g//g' -e 's/-O[0-9]//g'` -g"
5494- # If the user specify the directory for binutils, add the option `-B'.
5495- if test "x$with_binutils" != x; then
5496- CFLAGS="-B$with_binutils/ $CFLAGS"
5497- fi
5498- STAGE1_CFLAGS="-O2"
5499- GRUB_CFLAGS="-O2"
5500-
5501-echo "$as_me:$LINENO: checking whether optimization for size works" >&5
5502-echo $ECHO_N "checking whether optimization for size works... $ECHO_C" >&6
5503-if test "${size_flag+set}" = set; then
5504- echo $ECHO_N "(cached) $ECHO_C" >&6
5505-else
5506-
5507- saved_CFLAGS=$CFLAGS
5508- CFLAGS="-Os -g"
5509- cat >conftest.$ac_ext <<_ACEOF
5510-/* confdefs.h. */
5511-_ACEOF
5512-cat confdefs.h >>conftest.$ac_ext
5513-cat >>conftest.$ac_ext <<_ACEOF
5514-/* end confdefs.h. */
5515-
5516-int
5517-main ()
5518-{
5519-
5520- ;
5521- return 0;
5522-}
5523-_ACEOF
5524-rm -f conftest.$ac_objext
5525-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5526- (eval $ac_compile) 2>conftest.er1
5527- ac_status=$?
5528- grep -v '^ *+' conftest.er1 >conftest.err
5529- rm -f conftest.er1
5530- cat conftest.err >&5
5531- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5532- (exit $ac_status); } &&
5533- { ac_try='test -z "$ac_c_werror_flag"
5534- || test ! -s conftest.err'
5535- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5536- (eval $ac_try) 2>&5
5537- ac_status=$?
5538- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5539- (exit $ac_status); }; } &&
5540- { ac_try='test -s conftest.$ac_objext'
5541- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5542- (eval $ac_try) 2>&5
5543- ac_status=$?
5544- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5545- (exit $ac_status); }; }; then
5546- size_flag=yes
5547-else
5548- echo "$as_me: failed program was:" >&5
5549-sed 's/^/| /' conftest.$ac_ext >&5
5550-
5551-size_flag=no
5552-fi
5553-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
5554- CFLAGS=$saved_CFLAGS
5555-
5556-fi
5557-echo "$as_me:$LINENO: result: $size_flag" >&5
5558-echo "${ECHO_T}$size_flag" >&6
5559- if test "x$size_flag" = xyes; then
5560- STAGE2_CFLAGS="-Os"
5561- else
5562- STAGE2_CFLAGS="-O2 -fno-strength-reduce -fno-unroll-loops"
5563- fi
5564- # OpenBSD has a GCC extension for protecting applications from
5565- # stack smashing attacks, but GRUB doesn't want this feature.
5566- echo "$as_me:$LINENO: checking whether gcc has -fno-stack-protector" >&5
5567-echo $ECHO_N "checking whether gcc has -fno-stack-protector... $ECHO_C" >&6
5568-if test "${no_stack_protector_flag+set}" = set; then
5569- echo $ECHO_N "(cached) $ECHO_C" >&6
5570-else
5571-
5572- saved_CFLAGS=$CFLAGS
5573- CFLAGS="-fno-stack-protector"
5574- cat >conftest.$ac_ext <<_ACEOF
5575-/* confdefs.h. */
5576-_ACEOF
5577-cat confdefs.h >>conftest.$ac_ext
5578-cat >>conftest.$ac_ext <<_ACEOF
5579-/* end confdefs.h. */
5580-
5581-int
5582-main ()
5583-{
5584-
5585- ;
5586- return 0;
5587-}
5588-_ACEOF
5589-rm -f conftest.$ac_objext
5590-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5591- (eval $ac_compile) 2>conftest.er1
5592- ac_status=$?
5593- grep -v '^ *+' conftest.er1 >conftest.err
5594- rm -f conftest.er1
5595- cat conftest.err >&5
5596- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5597- (exit $ac_status); } &&
5598- { ac_try='test -z "$ac_c_werror_flag"
5599- || test ! -s conftest.err'
5600- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5601- (eval $ac_try) 2>&5
5602- ac_status=$?
5603- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5604- (exit $ac_status); }; } &&
5605- { ac_try='test -s conftest.$ac_objext'
5606- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5607- (eval $ac_try) 2>&5
5608- ac_status=$?
5609- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5610- (exit $ac_status); }; }; then
5611- no_stack_protector_flag=yes
5612-else
5613- echo "$as_me: failed program was:" >&5
5614-sed 's/^/| /' conftest.$ac_ext >&5
5615-
5616-no_stack_protector_flag=no
5617-fi
5618-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
5619- CFLAGS=$saved_CFLAGS
5620-
5621-fi
5622-echo "$as_me:$LINENO: result: $no_stack_protector_flag" >&5
5623-echo "${ECHO_T}$no_stack_protector_flag" >&6
5624- if test "x$no_stack_protector_flag" = xyes; then
5625- STAGE2_CFLAGS="$STAGE2_CFLAGS -fno-stack-protector"
5626- fi
5627- fi
5628-fi
5629-
5630-
5631-
5632-
5633-
5634-# Enforce coding standards.
5635-CPPFLAGS="$CPPFLAGS -Wall -Wmissing-prototypes -Wunused -Wshadow"
5636-CPPFLAGS="$CPPFLAGS -Wpointer-arith"
5637-
5638-echo "$as_me:$LINENO: checking whether -Wundef works" >&5
5639-echo $ECHO_N "checking whether -Wundef works... $ECHO_C" >&6
5640-if test "${undef_flag+set}" = set; then
5641- echo $ECHO_N "(cached) $ECHO_C" >&6
5642-else
5643-
5644- saved_CPPFLAGS="$CPPFLAGS"
5645- CPPFLAGS="-Wundef"
5646- cat >conftest.$ac_ext <<_ACEOF
5647-/* confdefs.h. */
5648-_ACEOF
5649-cat confdefs.h >>conftest.$ac_ext
5650-cat >>conftest.$ac_ext <<_ACEOF
5651-/* end confdefs.h. */
5652-
5653-int
5654-main ()
5655-{
5656-
5657- ;
5658- return 0;
5659-}
5660-_ACEOF
5661-rm -f conftest.$ac_objext
5662-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5663- (eval $ac_compile) 2>conftest.er1
5664- ac_status=$?
5665- grep -v '^ *+' conftest.er1 >conftest.err
5666- rm -f conftest.er1
5667- cat conftest.err >&5
5668- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5669- (exit $ac_status); } &&
5670- { ac_try='test -z "$ac_c_werror_flag"
5671- || test ! -s conftest.err'
5672- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5673- (eval $ac_try) 2>&5
5674- ac_status=$?
5675- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5676- (exit $ac_status); }; } &&
5677- { ac_try='test -s conftest.$ac_objext'
5678- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5679- (eval $ac_try) 2>&5
5680- ac_status=$?
5681- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5682- (exit $ac_status); }; }; then
5683- undef_flag=yes
5684-else
5685- echo "$as_me: failed program was:" >&5
5686-sed 's/^/| /' conftest.$ac_ext >&5
5687-
5688-undef_flag=no
5689-fi
5690-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
5691- CPPFLAGS="$saved_CPPFLAGS"
5692-
5693-fi
5694-echo "$as_me:$LINENO: result: $undef_flag" >&5
5695-echo "${ECHO_T}$undef_flag" >&6
5696-
5697-# The options `-falign-*' are supported by gcc 3.0 or later.
5698-# Probably it is sufficient to only check for -falign-loops.
5699-echo "$as_me:$LINENO: checking whether -falign-loops works" >&5
5700-echo $ECHO_N "checking whether -falign-loops works... $ECHO_C" >&6
5701-if test "${falign_loop_flag+set}" = set; then
5702- echo $ECHO_N "(cached) $ECHO_C" >&6
5703-else
5704-
5705- saved_CPPFLAGS="$CPPFLAGS"
5706- CPPFLAGS="-falign-loops=1"
5707- cat >conftest.$ac_ext <<_ACEOF
5708-/* confdefs.h. */
5709-_ACEOF
5710-cat confdefs.h >>conftest.$ac_ext
5711-cat >>conftest.$ac_ext <<_ACEOF
5712-/* end confdefs.h. */
5713-
5714-int
5715-main ()
5716-{
5717-
5718- ;
5719- return 0;
5720-}
5721-_ACEOF
5722-rm -f conftest.$ac_objext
5723-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5724- (eval $ac_compile) 2>conftest.er1
5725- ac_status=$?
5726- grep -v '^ *+' conftest.er1 >conftest.err
5727- rm -f conftest.er1
5728- cat conftest.err >&5
5729- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5730- (exit $ac_status); } &&
5731- { ac_try='test -z "$ac_c_werror_flag"
5732- || test ! -s conftest.err'
5733- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5734- (eval $ac_try) 2>&5
5735- ac_status=$?
5736- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5737- (exit $ac_status); }; } &&
5738- { ac_try='test -s conftest.$ac_objext'
5739- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5740- (eval $ac_try) 2>&5
5741- ac_status=$?
5742- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5743- (exit $ac_status); }; }; then
5744- falign_loop_flag=yes
5745-else
5746- echo "$as_me: failed program was:" >&5
5747-sed 's/^/| /' conftest.$ac_ext >&5
5748-
5749-falign_loop_flag=no
5750-fi
5751-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
5752- CPPFLAGS="$saved_CPPFLAGS"
5753-
5754-fi
5755-echo "$as_me:$LINENO: result: $falign_loop_flag" >&5
5756-echo "${ECHO_T}$falign_loop_flag" >&6
5757-
5758-# Force no alignment to save space.
5759-if test "x$falign_loop_flag" = xyes; then
5760- CPPFLAGS="$CPPFLAGS -falign-jumps=1 -falign-loops=1 -falign-functions=1"
5761-else
5762- CPPFLAGS="$CPPFLAGS -malign-jumps=1 -malign-loops=1 -malign-functions=1"
5763-fi
5764-
5765-if test "x$undef_flag" = xyes; then
5766- CPPFLAGS="$CPPFLAGS -Wundef"
5767-fi
5768-
5769-if test "x$with_binutils" != x; then
5770- # Extract the first word of "objcopy", so it can be a program name with args.
5771-set dummy objcopy; ac_word=$2
5772-echo "$as_me:$LINENO: checking for $ac_word" >&5
5773-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5774-if test "${ac_cv_path_OBJCOPY+set}" = set; then
5775- echo $ECHO_N "(cached) $ECHO_C" >&6
5776-else
5777- case $OBJCOPY in
5778- [\\/]* | ?:[\\/]*)
5779- ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path.
5780- ;;
5781- *)
5782- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5783-as_dummy=""$with_binutils:$PATH""
5784-for as_dir in $as_dummy
5785-do
5786- IFS=$as_save_IFS
5787- test -z "$as_dir" && as_dir=.
5788- for ac_exec_ext in '' $ac_executable_extensions; do
5789- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5790- ac_cv_path_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
5791- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5792- break 2
5793- fi
5794-done
5795-done
5796-
5797- ;;
5798-esac
5799-fi
5800-OBJCOPY=$ac_cv_path_OBJCOPY
5801-
5802-if test -n "$OBJCOPY"; then
5803- echo "$as_me:$LINENO: result: $OBJCOPY" >&5
5804-echo "${ECHO_T}$OBJCOPY" >&6
5805-else
5806- echo "$as_me:$LINENO: result: no" >&5
5807-echo "${ECHO_T}no" >&6
5808-fi
5809-
5810-else
5811- if test -n "$ac_tool_prefix"; then
5812- # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args.
5813-set dummy ${ac_tool_prefix}objcopy; ac_word=$2
5814-echo "$as_me:$LINENO: checking for $ac_word" >&5
5815-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5816-if test "${ac_cv_prog_OBJCOPY+set}" = set; then
5817- echo $ECHO_N "(cached) $ECHO_C" >&6
5818-else
5819- if test -n "$OBJCOPY"; then
5820- ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
5821-else
5822-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5823-for as_dir in $PATH
5824-do
5825- IFS=$as_save_IFS
5826- test -z "$as_dir" && as_dir=.
5827- for ac_exec_ext in '' $ac_executable_extensions; do
5828- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5829- ac_cv_prog_OBJCOPY="${ac_tool_prefix}objcopy"
5830- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5831- break 2
5832- fi
5833-done
5834-done
5835-
5836-fi
5837-fi
5838-OBJCOPY=$ac_cv_prog_OBJCOPY
5839-if test -n "$OBJCOPY"; then
5840- echo "$as_me:$LINENO: result: $OBJCOPY" >&5
5841-echo "${ECHO_T}$OBJCOPY" >&6
5842-else
5843- echo "$as_me:$LINENO: result: no" >&5
5844-echo "${ECHO_T}no" >&6
5845-fi
5846-
5847-fi
5848-if test -z "$ac_cv_prog_OBJCOPY"; then
5849- ac_ct_OBJCOPY=$OBJCOPY
5850- # Extract the first word of "objcopy", so it can be a program name with args.
5851-set dummy objcopy; ac_word=$2
5852-echo "$as_me:$LINENO: checking for $ac_word" >&5
5853-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
5854-if test "${ac_cv_prog_ac_ct_OBJCOPY+set}" = set; then
5855- echo $ECHO_N "(cached) $ECHO_C" >&6
5856-else
5857- if test -n "$ac_ct_OBJCOPY"; then
5858- ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test.
5859-else
5860-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5861-for as_dir in $PATH
5862-do
5863- IFS=$as_save_IFS
5864- test -z "$as_dir" && as_dir=.
5865- for ac_exec_ext in '' $ac_executable_extensions; do
5866- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5867- ac_cv_prog_ac_ct_OBJCOPY="objcopy"
5868- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
5869- break 2
5870- fi
5871-done
5872-done
5873-
5874-fi
5875-fi
5876-ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY
5877-if test -n "$ac_ct_OBJCOPY"; then
5878- echo "$as_me:$LINENO: result: $ac_ct_OBJCOPY" >&5
5879-echo "${ECHO_T}$ac_ct_OBJCOPY" >&6
5880-else
5881- echo "$as_me:$LINENO: result: no" >&5
5882-echo "${ECHO_T}no" >&6
5883-fi
5884-
5885- OBJCOPY=$ac_ct_OBJCOPY
5886-else
5887- OBJCOPY="$ac_cv_prog_OBJCOPY"
5888-fi
5889-
5890-fi
5891-
5892-# Defined in acinclude.m4.
5893-
5894-echo "$as_me:$LINENO: checking if C symbols get an underscore after compilation" >&5
5895-echo $ECHO_N "checking if C symbols get an underscore after compilation... $ECHO_C" >&6
5896-if test "${grub_cv_asm_uscore+set}" = set; then
5897- echo $ECHO_N "(cached) $ECHO_C" >&6
5898-else
5899- cat > conftest.c <<\EOF
5900-int
5901-func (int *list)
5902-{
5903- *list = 0;
5904- return *list;
5905-}
5906-EOF
5907-
5908-if { ac_try='${CC-cc} ${CFLAGS} -S conftest.c'
5909- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5910- (eval $ac_try) 2>&5
5911- ac_status=$?
5912- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5913- (exit $ac_status); }; } && test -s conftest.s; then
5914- true
5915-else
5916- { { echo "$as_me:$LINENO: error: ${CC-cc} failed to produce assembly code" >&5
5917-echo "$as_me: error: ${CC-cc} failed to produce assembly code" >&2;}
5918- { (exit 1); exit 1; }; }
5919-fi
5920-
5921-if grep _func conftest.s >/dev/null 2>&1; then
5922- grub_cv_asm_uscore=yes
5923-else
5924- grub_cv_asm_uscore=no
5925-fi
5926-
5927-rm -f conftest*
5928-fi
5929-
5930-
5931-if test "x$grub_cv_asm_uscore" = xyes; then
5932-
5933-cat >>confdefs.h <<_ACEOF
5934-#define HAVE_ASM_USCORE $grub_cv_asm_uscore
5935-_ACEOF
5936-
5937-fi
5938-
5939-echo "$as_me:$LINENO: result: $grub_cv_asm_uscore" >&5
5940-echo "${ECHO_T}$grub_cv_asm_uscore" >&6
5941-
5942-echo "$as_me:$LINENO: checking whether ${OBJCOPY} works for absolute addresses" >&5
5943-echo $ECHO_N "checking whether ${OBJCOPY} works for absolute addresses... $ECHO_C" >&6
5944-if test "${grub_cv_prog_objcopy_absolute+set}" = set; then
5945- echo $ECHO_N "(cached) $ECHO_C" >&6
5946-else
5947- cat > conftest.c <<\EOF
5948-void
5949-cmain (void)
5950-{
5951- *((int *) 0x1000) = 2;
5952-}
5953-EOF
5954-
5955-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5956- (eval $ac_compile) 2>&5
5957- ac_status=$?
5958- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5959- (exit $ac_status); } && test -s conftest.o; then :
5960-else
5961- { { echo "$as_me:$LINENO: error: ${CC-cc} cannot compile C source code" >&5
5962-echo "$as_me: error: ${CC-cc} cannot compile C source code" >&2;}
5963- { (exit 1); exit 1; }; }
5964-fi
5965-grub_cv_prog_objcopy_absolute=yes
5966-for link_addr in 2000 8000 7C00; do
5967- if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec'
5968- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5969- (eval $ac_try) 2>&5
5970- ac_status=$?
5971- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5972- (exit $ac_status); }; }; then :
5973- else
5974- { { echo "$as_me:$LINENO: error: ${CC-cc} cannot link at address $link_addr" >&5
5975-echo "$as_me: error: ${CC-cc} cannot link at address $link_addr" >&2;}
5976- { (exit 1); exit 1; }; }
5977- fi
5978- if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest'
5979- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5980- (eval $ac_try) 2>&5
5981- ac_status=$?
5982- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5983- (exit $ac_status); }; }; then :
5984- else
5985- { { echo "$as_me:$LINENO: error: ${OBJCOPY-objcopy} cannot create binary files" >&5
5986-echo "$as_me: error: ${OBJCOPY-objcopy} cannot create binary files" >&2;}
5987- { (exit 1); exit 1; }; }
5988- fi
5989- if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest'
5990- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
5991- (eval $ac_try) 2>&5
5992- ac_status=$?
5993- echo "$as_me:$LINENO: \$? = $ac_status" >&5
5994- (exit $ac_status); }; }; then
5995- mv -f conftest conftest.old
5996- else
5997- grub_cv_prog_objcopy_absolute=no
5998- break
5999- fi
6000-done
6001-rm -f conftest*
6002-fi
6003-
6004-echo "$as_me:$LINENO: result: $grub_cv_prog_objcopy_absolute" >&5
6005-echo "${ECHO_T}$grub_cv_prog_objcopy_absolute" >&6
6006-if test "x$grub_cv_prog_objcopy_absolute" != xyes; then
6007- { { echo "$as_me:$LINENO: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&5
6008-echo "$as_me: error: GRUB requires a working absolute objcopy; upgrade your binutils" >&2;}
6009- { (exit 1); exit 1; }; }
6010-fi
6011-
6012-
6013-echo "$as_me:$LINENO: checking whether addr32 must be in the same line as the instruction" >&5
6014-echo $ECHO_N "checking whether addr32 must be in the same line as the instruction... $ECHO_C" >&6
6015-if test "${grub_cv_asm_prefix_requirement+set}" = set; then
6016- echo $ECHO_N "(cached) $ECHO_C" >&6
6017-else
6018- cat > conftest.s <<\EOF
6019- .code16
6020-l1: addr32 movb %al, l1
6021-EOF
6022-
6023-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'
6024- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6025- (eval $ac_try) 2>&5
6026- ac_status=$?
6027- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6028- (exit $ac_status); }; } && test -s conftest.o; then
6029- grub_cv_asm_prefix_requirement=yes
6030-else
6031- grub_cv_asm_prefix_requirement=no
6032-fi
6033-
6034-rm -f conftest*
6035-fi
6036-
6037-
6038-if test "x$grub_cv_asm_prefix_requirement" = xyes; then
6039- grub_tmp_addr32="addr32"
6040- grub_tmp_data32="data32"
6041-else
6042- grub_tmp_addr32="addr32;"
6043- grub_tmp_data32="data32;"
6044-fi
6045-
6046-
6047-cat >>confdefs.h <<_ACEOF
6048-#define ADDR32 $grub_tmp_addr32
6049-_ACEOF
6050-
6051-
6052-cat >>confdefs.h <<_ACEOF
6053-#define DATA32 $grub_tmp_data32
6054-_ACEOF
6055-
6056-
6057-echo "$as_me:$LINENO: result: $grub_cv_asm_prefix_requirement" >&5
6058-echo "${ECHO_T}$grub_cv_asm_prefix_requirement" >&6
6059-
6060-
6061-
6062-echo "$as_me:$LINENO: checking for .code16 addr32 assembler support" >&5
6063-echo $ECHO_N "checking for .code16 addr32 assembler support... $ECHO_C" >&6
6064-if test "${grub_cv_asm_addr32+set}" = set; then
6065- echo $ECHO_N "(cached) $ECHO_C" >&6
6066-else
6067- cat > conftest.s.in <<\EOF
6068- .code16
6069-l1: @ADDR32@ movb %al, l1
6070-EOF
6071-
6072-if test "x$grub_cv_asm_prefix_requirement" = xyes; then
6073- sed -e s/@ADDR32@/addr32/ < conftest.s.in > conftest.s
6074-else
6075- sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s
6076-fi
6077-
6078-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'
6079- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6080- (eval $ac_try) 2>&5
6081- ac_status=$?
6082- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6083- (exit $ac_status); }; } && test -s conftest.o; then
6084- grub_cv_asm_addr32=yes
6085-else
6086- grub_cv_asm_addr32=no
6087-fi
6088-
6089-rm -f conftest*
6090-fi
6091-
6092-
6093-echo "$as_me:$LINENO: result: $grub_cv_asm_addr32" >&5
6094-echo "${ECHO_T}$grub_cv_asm_addr32" >&6
6095-if test "x$grub_cv_asm_addr32" != xyes; then
6096- { { echo "$as_me:$LINENO: error: GRUB requires GAS .code16 addr32 support; upgrade your binutils" >&5
6097-echo "$as_me: error: GRUB requires GAS .code16 addr32 support; upgrade your binutils" >&2;}
6098- { (exit 1); exit 1; }; }
6099-fi
6100-
6101-
6102-echo "$as_me:$LINENO: checking whether an absolute indirect call/jump must not be prefixed with an asterisk" >&5
6103-echo $ECHO_N "checking whether an absolute indirect call/jump must not be prefixed with an asterisk... $ECHO_C" >&6
6104-if test "${grub_cv_asm_absolute_without_asterisk+set}" = set; then
6105- echo $ECHO_N "(cached) $ECHO_C" >&6
6106-else
6107- cat > conftest.s <<\EOF
6108- lcall *(offset)
6109-offset:
6110- .long 0
6111- .word 0
6112-EOF
6113-
6114-if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'
6115- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6116- (eval $ac_try) 2>&5
6117- ac_status=$?
6118- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6119- (exit $ac_status); }; } && test -s conftest.o; then
6120- grub_cv_asm_absolute_without_asterisk=no
6121-else
6122- grub_cv_asm_absolute_without_asterisk=yes
6123-fi
6124-
6125-rm -f conftest*
6126-fi
6127-
6128-
6129-if test "x$grub_cv_asm_absolute_without_asterisk" = xyes; then
6130-
6131-cat >>confdefs.h <<\_ACEOF
6132-#define ABSOLUTE_WITHOUT_ASTERISK 1
6133-_ACEOF
6134-
6135-fi
6136-
6137-echo "$as_me:$LINENO: result: $grub_cv_asm_absolute_without_asterisk" >&5
6138-echo "${ECHO_T}$grub_cv_asm_absolute_without_asterisk" >&6
6139-
6140-
6141-echo "$as_me:$LINENO: checking if start is defined by the compiler" >&5
6142-echo $ECHO_N "checking if start is defined by the compiler... $ECHO_C" >&6
6143-if test "${grub_cv_check_start_symbol+set}" = set; then
6144- echo $ECHO_N "(cached) $ECHO_C" >&6
6145-else
6146- cat >conftest.$ac_ext <<_ACEOF
6147-/* confdefs.h. */
6148-_ACEOF
6149-cat confdefs.h >>conftest.$ac_ext
6150-cat >>conftest.$ac_ext <<_ACEOF
6151-/* end confdefs.h. */
6152-
6153-int
6154-main ()
6155-{
6156-asm ("incl start")
6157- ;
6158- return 0;
6159-}
6160-_ACEOF
6161-rm -f conftest.$ac_objext conftest$ac_exeext
6162-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6163- (eval $ac_link) 2>conftest.er1
6164- ac_status=$?
6165- grep -v '^ *+' conftest.er1 >conftest.err
6166- rm -f conftest.er1
6167- cat conftest.err >&5
6168- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6169- (exit $ac_status); } &&
6170- { ac_try='test -z "$ac_c_werror_flag"
6171- || test ! -s conftest.err'
6172- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6173- (eval $ac_try) 2>&5
6174- ac_status=$?
6175- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6176- (exit $ac_status); }; } &&
6177- { ac_try='test -s conftest$ac_exeext'
6178- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6179- (eval $ac_try) 2>&5
6180- ac_status=$?
6181- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6182- (exit $ac_status); }; }; then
6183- grub_cv_check_start_symbol=yes
6184-else
6185- echo "$as_me: failed program was:" >&5
6186-sed 's/^/| /' conftest.$ac_ext >&5
6187-
6188-grub_cv_check_start_symbol=no
6189-fi
6190-rm -f conftest.err conftest.$ac_objext \
6191- conftest$ac_exeext conftest.$ac_ext
6192-fi
6193-
6194-
6195-if test "x$grub_cv_check_start_symbol" = xyes; then
6196-
6197-cat >>confdefs.h <<\_ACEOF
6198-#define HAVE_START_SYMBOL 1
6199-_ACEOF
6200-
6201-fi
6202-
6203-echo "$as_me:$LINENO: result: $grub_cv_check_start_symbol" >&5
6204-echo "${ECHO_T}$grub_cv_check_start_symbol" >&6
6205-
6206-
6207-echo "$as_me:$LINENO: checking if _start is defined by the compiler" >&5
6208-echo $ECHO_N "checking if _start is defined by the compiler... $ECHO_C" >&6
6209-if test "${grub_cv_check_uscore_start_symbol+set}" = set; then
6210- echo $ECHO_N "(cached) $ECHO_C" >&6
6211-else
6212- cat >conftest.$ac_ext <<_ACEOF
6213-/* confdefs.h. */
6214-_ACEOF
6215-cat confdefs.h >>conftest.$ac_ext
6216-cat >>conftest.$ac_ext <<_ACEOF
6217-/* end confdefs.h. */
6218-
6219-int
6220-main ()
6221-{
6222-asm ("incl _start")
6223- ;
6224- return 0;
6225-}
6226-_ACEOF
6227-rm -f conftest.$ac_objext conftest$ac_exeext
6228-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6229- (eval $ac_link) 2>conftest.er1
6230- ac_status=$?
6231- grep -v '^ *+' conftest.er1 >conftest.err
6232- rm -f conftest.er1
6233- cat conftest.err >&5
6234- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6235- (exit $ac_status); } &&
6236- { ac_try='test -z "$ac_c_werror_flag"
6237- || test ! -s conftest.err'
6238- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6239- (eval $ac_try) 2>&5
6240- ac_status=$?
6241- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6242- (exit $ac_status); }; } &&
6243- { ac_try='test -s conftest$ac_exeext'
6244- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6245- (eval $ac_try) 2>&5
6246- ac_status=$?
6247- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6248- (exit $ac_status); }; }; then
6249- grub_cv_check_uscore_start_symbol=yes
6250-else
6251- echo "$as_me: failed program was:" >&5
6252-sed 's/^/| /' conftest.$ac_ext >&5
6253-
6254-grub_cv_check_uscore_start_symbol=no
6255-fi
6256-rm -f conftest.err conftest.$ac_objext \
6257- conftest$ac_exeext conftest.$ac_ext
6258-fi
6259-
6260-
6261-if test "x$grub_cv_check_uscore_start_symbol" = xyes; then
6262-
6263-cat >>confdefs.h <<\_ACEOF
6264-#define HAVE_USCORE_START_SYMBOL 1
6265-_ACEOF
6266-
6267-fi
6268-
6269-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_start_symbol" >&5
6270-echo "${ECHO_T}$grub_cv_check_uscore_start_symbol" >&6
6271-
6272-if test "x$grub_cv_check_start_symbol" != "xyes" \
6273- -a "x$grub_cv_check_uscore_start_symbol" != "xyes"; then
6274- { { echo "$as_me:$LINENO: error: Neither start nor _start is defined" >&5
6275-echo "$as_me: error: Neither start nor _start is defined" >&2;}
6276- { (exit 1); exit 1; }; }
6277-fi
6278-
6279-
6280-echo "$as_me:$LINENO: checking if __bss_start is defined by the compiler" >&5
6281-echo $ECHO_N "checking if __bss_start is defined by the compiler... $ECHO_C" >&6
6282-if test "${grub_cv_check_uscore_uscore_bss_start_symbol+set}" = set; then
6283- echo $ECHO_N "(cached) $ECHO_C" >&6
6284-else
6285- cat >conftest.$ac_ext <<_ACEOF
6286-/* confdefs.h. */
6287-_ACEOF
6288-cat confdefs.h >>conftest.$ac_ext
6289-cat >>conftest.$ac_ext <<_ACEOF
6290-/* end confdefs.h. */
6291-
6292-int
6293-main ()
6294-{
6295-asm ("incl __bss_start")
6296- ;
6297- return 0;
6298-}
6299-_ACEOF
6300-rm -f conftest.$ac_objext conftest$ac_exeext
6301-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6302- (eval $ac_link) 2>conftest.er1
6303- ac_status=$?
6304- grep -v '^ *+' conftest.er1 >conftest.err
6305- rm -f conftest.er1
6306- cat conftest.err >&5
6307- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6308- (exit $ac_status); } &&
6309- { ac_try='test -z "$ac_c_werror_flag"
6310- || test ! -s conftest.err'
6311- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6312- (eval $ac_try) 2>&5
6313- ac_status=$?
6314- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6315- (exit $ac_status); }; } &&
6316- { ac_try='test -s conftest$ac_exeext'
6317- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6318- (eval $ac_try) 2>&5
6319- ac_status=$?
6320- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6321- (exit $ac_status); }; }; then
6322- grub_cv_check_uscore_uscore_bss_start_symbol=yes
6323-else
6324- echo "$as_me: failed program was:" >&5
6325-sed 's/^/| /' conftest.$ac_ext >&5
6326-
6327-grub_cv_check_uscore_uscore_bss_start_symbol=no
6328-fi
6329-rm -f conftest.err conftest.$ac_objext \
6330- conftest$ac_exeext conftest.$ac_ext
6331-fi
6332-
6333-
6334-if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" = xyes; then
6335-
6336-cat >>confdefs.h <<\_ACEOF
6337-#define HAVE_USCORE_USCORE_BSS_START_SYMBOL 1
6338-_ACEOF
6339-
6340-fi
6341-
6342-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_uscore_bss_start_symbol" >&5
6343-echo "${ECHO_T}$grub_cv_check_uscore_uscore_bss_start_symbol" >&6
6344-
6345-
6346-echo "$as_me:$LINENO: checking if _edata is defined by the compiler" >&5
6347-echo $ECHO_N "checking if _edata is defined by the compiler... $ECHO_C" >&6
6348-if test "${grub_cv_check_uscore_edata_symbol+set}" = set; then
6349- echo $ECHO_N "(cached) $ECHO_C" >&6
6350-else
6351- cat >conftest.$ac_ext <<_ACEOF
6352-/* confdefs.h. */
6353-_ACEOF
6354-cat confdefs.h >>conftest.$ac_ext
6355-cat >>conftest.$ac_ext <<_ACEOF
6356-/* end confdefs.h. */
6357-
6358-int
6359-main ()
6360-{
6361-asm ("incl _edata")
6362- ;
6363- return 0;
6364-}
6365-_ACEOF
6366-rm -f conftest.$ac_objext conftest$ac_exeext
6367-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6368- (eval $ac_link) 2>conftest.er1
6369- ac_status=$?
6370- grep -v '^ *+' conftest.er1 >conftest.err
6371- rm -f conftest.er1
6372- cat conftest.err >&5
6373- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6374- (exit $ac_status); } &&
6375- { ac_try='test -z "$ac_c_werror_flag"
6376- || test ! -s conftest.err'
6377- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6378- (eval $ac_try) 2>&5
6379- ac_status=$?
6380- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6381- (exit $ac_status); }; } &&
6382- { ac_try='test -s conftest$ac_exeext'
6383- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6384- (eval $ac_try) 2>&5
6385- ac_status=$?
6386- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6387- (exit $ac_status); }; }; then
6388- grub_cv_check_uscore_edata_symbol=yes
6389-else
6390- echo "$as_me: failed program was:" >&5
6391-sed 's/^/| /' conftest.$ac_ext >&5
6392-
6393-grub_cv_check_uscore_edata_symbol=no
6394-fi
6395-rm -f conftest.err conftest.$ac_objext \
6396- conftest$ac_exeext conftest.$ac_ext
6397-fi
6398-
6399-
6400-if test "x$grub_cv_check_uscore_edata_symbol" = xyes; then
6401-
6402-cat >>confdefs.h <<\_ACEOF
6403-#define HAVE_USCORE_EDATA_SYMBOL 1
6404-_ACEOF
6405-
6406-fi
6407-
6408-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_edata_symbol" >&5
6409-echo "${ECHO_T}$grub_cv_check_uscore_edata_symbol" >&6
6410-
6411-
6412-echo "$as_me:$LINENO: checking if edata is defined by the compiler" >&5
6413-echo $ECHO_N "checking if edata is defined by the compiler... $ECHO_C" >&6
6414-if test "${grub_cv_check_edata_symbol+set}" = set; then
6415- echo $ECHO_N "(cached) $ECHO_C" >&6
6416-else
6417- cat >conftest.$ac_ext <<_ACEOF
6418-/* confdefs.h. */
6419-_ACEOF
6420-cat confdefs.h >>conftest.$ac_ext
6421-cat >>conftest.$ac_ext <<_ACEOF
6422-/* end confdefs.h. */
6423-
6424-int
6425-main ()
6426-{
6427-asm ("incl edata")
6428- ;
6429- return 0;
6430-}
6431-_ACEOF
6432-rm -f conftest.$ac_objext conftest$ac_exeext
6433-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6434- (eval $ac_link) 2>conftest.er1
6435- ac_status=$?
6436- grep -v '^ *+' conftest.er1 >conftest.err
6437- rm -f conftest.er1
6438- cat conftest.err >&5
6439- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6440- (exit $ac_status); } &&
6441- { ac_try='test -z "$ac_c_werror_flag"
6442- || test ! -s conftest.err'
6443- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6444- (eval $ac_try) 2>&5
6445- ac_status=$?
6446- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6447- (exit $ac_status); }; } &&
6448- { ac_try='test -s conftest$ac_exeext'
6449- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6450- (eval $ac_try) 2>&5
6451- ac_status=$?
6452- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6453- (exit $ac_status); }; }; then
6454- grub_cv_check_edata_symbol=yes
6455-else
6456- echo "$as_me: failed program was:" >&5
6457-sed 's/^/| /' conftest.$ac_ext >&5
6458-
6459-grub_cv_check_edata_symbol=no
6460-fi
6461-rm -f conftest.err conftest.$ac_objext \
6462- conftest$ac_exeext conftest.$ac_ext
6463-fi
6464-
6465-
6466-if test "x$grub_cv_check_edata_symbol" = xyes; then
6467-
6468-cat >>confdefs.h <<\_ACEOF
6469-#define HAVE_EDATA_SYMBOL 1
6470-_ACEOF
6471-
6472-fi
6473-
6474-echo "$as_me:$LINENO: result: $grub_cv_check_edata_symbol" >&5
6475-echo "${ECHO_T}$grub_cv_check_edata_symbol" >&6
6476-
6477-if test "x$grub_cv_check_uscore_uscore_bss_start_symbol" != "xyes" \
6478- -a "x$grub_cv_check_uscore_edata_symbol" != "xyes" \
6479- -a "x$grub_cv_check_edata_symbol" != "xyes"; then
6480- { { echo "$as_me:$LINENO: error: None of __bss_start, _edata, edata defined" >&5
6481-echo "$as_me: error: None of __bss_start, _edata, edata defined" >&2;}
6482- { (exit 1); exit 1; }; }
6483-fi
6484-
6485-
6486-echo "$as_me:$LINENO: checking if end is defined by the compiler" >&5
6487-echo $ECHO_N "checking if end is defined by the compiler... $ECHO_C" >&6
6488-if test "${grub_cv_check_end_symbol+set}" = set; then
6489- echo $ECHO_N "(cached) $ECHO_C" >&6
6490-else
6491- cat >conftest.$ac_ext <<_ACEOF
6492-/* confdefs.h. */
6493-_ACEOF
6494-cat confdefs.h >>conftest.$ac_ext
6495-cat >>conftest.$ac_ext <<_ACEOF
6496-/* end confdefs.h. */
6497-
6498-int
6499-main ()
6500-{
6501-asm ("incl end")
6502- ;
6503- return 0;
6504-}
6505-_ACEOF
6506-rm -f conftest.$ac_objext conftest$ac_exeext
6507-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6508- (eval $ac_link) 2>conftest.er1
6509- ac_status=$?
6510- grep -v '^ *+' conftest.er1 >conftest.err
6511- rm -f conftest.er1
6512- cat conftest.err >&5
6513- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6514- (exit $ac_status); } &&
6515- { ac_try='test -z "$ac_c_werror_flag"
6516- || test ! -s conftest.err'
6517- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6518- (eval $ac_try) 2>&5
6519- ac_status=$?
6520- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6521- (exit $ac_status); }; } &&
6522- { ac_try='test -s conftest$ac_exeext'
6523- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6524- (eval $ac_try) 2>&5
6525- ac_status=$?
6526- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6527- (exit $ac_status); }; }; then
6528- grub_cv_check_end_symbol=yes
6529-else
6530- echo "$as_me: failed program was:" >&5
6531-sed 's/^/| /' conftest.$ac_ext >&5
6532-
6533-grub_cv_check_end_symbol=no
6534-fi
6535-rm -f conftest.err conftest.$ac_objext \
6536- conftest$ac_exeext conftest.$ac_ext
6537-fi
6538-
6539-
6540-if test "x$grub_cv_check_end_symbol" = xyes; then
6541-
6542-cat >>confdefs.h <<\_ACEOF
6543-#define HAVE_END_SYMBOL 1
6544-_ACEOF
6545-
6546-fi
6547-
6548-echo "$as_me:$LINENO: result: $grub_cv_check_end_symbol" >&5
6549-echo "${ECHO_T}$grub_cv_check_end_symbol" >&6
6550-
6551-
6552-echo "$as_me:$LINENO: checking if _end is defined by the compiler" >&5
6553-echo $ECHO_N "checking if _end is defined by the compiler... $ECHO_C" >&6
6554-if test "${grub_cv_check_uscore_end_symbol+set}" = set; then
6555- echo $ECHO_N "(cached) $ECHO_C" >&6
6556-else
6557- cat >conftest.$ac_ext <<_ACEOF
6558-/* confdefs.h. */
6559-_ACEOF
6560-cat confdefs.h >>conftest.$ac_ext
6561-cat >>conftest.$ac_ext <<_ACEOF
6562-/* end confdefs.h. */
6563-
6564-int
6565-main ()
6566-{
6567-asm ("incl _end")
6568- ;
6569- return 0;
6570-}
6571-_ACEOF
6572-rm -f conftest.$ac_objext conftest$ac_exeext
6573-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6574- (eval $ac_link) 2>conftest.er1
6575- ac_status=$?
6576- grep -v '^ *+' conftest.er1 >conftest.err
6577- rm -f conftest.er1
6578- cat conftest.err >&5
6579- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6580- (exit $ac_status); } &&
6581- { ac_try='test -z "$ac_c_werror_flag"
6582- || test ! -s conftest.err'
6583- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6584- (eval $ac_try) 2>&5
6585- ac_status=$?
6586- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6587- (exit $ac_status); }; } &&
6588- { ac_try='test -s conftest$ac_exeext'
6589- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6590- (eval $ac_try) 2>&5
6591- ac_status=$?
6592- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6593- (exit $ac_status); }; }; then
6594- grub_cv_check_uscore_end_symbol=yes
6595-else
6596- echo "$as_me: failed program was:" >&5
6597-sed 's/^/| /' conftest.$ac_ext >&5
6598-
6599-grub_cv_check_uscore_end_symbol=no
6600-fi
6601-rm -f conftest.err conftest.$ac_objext \
6602- conftest$ac_exeext conftest.$ac_ext
6603-fi
6604-
6605-
6606-if test "x$grub_cv_check_uscore_end_symbol" = xyes; then
6607-
6608-cat >>confdefs.h <<\_ACEOF
6609-#define HAVE_USCORE_END_SYMBOL 1
6610-_ACEOF
6611-
6612-fi
6613-
6614-echo "$as_me:$LINENO: result: $grub_cv_check_uscore_end_symbol" >&5
6615-echo "${ECHO_T}$grub_cv_check_uscore_end_symbol" >&6
6616-
6617-if test "x$grub_cv_check_end_symbol" != "xyes" \
6618- -a "x$grub_cv_check_uscore_end_symbol" != "xyes"; then
6619- { { echo "$as_me:$LINENO: error: Neither end nor _end is defined" >&5
6620-echo "$as_me: error: Neither end nor _end is defined" >&2;}
6621- { (exit 1); exit 1; }; }
6622-fi
6623-
6624-# Check for curses libraries.
6625-
6626-# Check whether --with-curses or --without-curses was given.
6627-if test "${with_curses+set}" = set; then
6628- withval="$with_curses"
6629-
6630-fi;
6631-
6632-# Get the filename or the whole disk and open it.
6633-# Known to work on NetBSD.
6634-echo "$as_me:$LINENO: checking for opendisk in -lutil" >&5
6635-echo $ECHO_N "checking for opendisk in -lutil... $ECHO_C" >&6
6636-if test "${ac_cv_lib_util_opendisk+set}" = set; then
6637- echo $ECHO_N "(cached) $ECHO_C" >&6
6638-else
6639- ac_check_lib_save_LIBS=$LIBS
6640-LIBS="-lutil $LIBS"
6641-cat >conftest.$ac_ext <<_ACEOF
6642-/* confdefs.h. */
6643-_ACEOF
6644-cat confdefs.h >>conftest.$ac_ext
6645-cat >>conftest.$ac_ext <<_ACEOF
6646-/* end confdefs.h. */
6647-
6648-/* Override any gcc2 internal prototype to avoid an error. */
6649-#ifdef __cplusplus
6650-extern "C"
6651-#endif
6652-/* We use char because int might match the return type of a gcc2
6653- builtin and then its argument prototype would still apply. */
6654-char opendisk ();
6655-int
6656-main ()
6657-{
6658-opendisk ();
6659- ;
6660- return 0;
6661-}
6662-_ACEOF
6663-rm -f conftest.$ac_objext conftest$ac_exeext
6664-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6665- (eval $ac_link) 2>conftest.er1
6666- ac_status=$?
6667- grep -v '^ *+' conftest.er1 >conftest.err
6668- rm -f conftest.er1
6669- cat conftest.err >&5
6670- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6671- (exit $ac_status); } &&
6672- { ac_try='test -z "$ac_c_werror_flag"
6673- || test ! -s conftest.err'
6674- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6675- (eval $ac_try) 2>&5
6676- ac_status=$?
6677- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6678- (exit $ac_status); }; } &&
6679- { ac_try='test -s conftest$ac_exeext'
6680- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6681- (eval $ac_try) 2>&5
6682- ac_status=$?
6683- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6684- (exit $ac_status); }; }; then
6685- ac_cv_lib_util_opendisk=yes
6686-else
6687- echo "$as_me: failed program was:" >&5
6688-sed 's/^/| /' conftest.$ac_ext >&5
6689-
6690-ac_cv_lib_util_opendisk=no
6691-fi
6692-rm -f conftest.err conftest.$ac_objext \
6693- conftest$ac_exeext conftest.$ac_ext
6694-LIBS=$ac_check_lib_save_LIBS
6695-fi
6696-echo "$as_me:$LINENO: result: $ac_cv_lib_util_opendisk" >&5
6697-echo "${ECHO_T}$ac_cv_lib_util_opendisk" >&6
6698-if test $ac_cv_lib_util_opendisk = yes; then
6699- GRUB_LIBS="$GRUB_LIBS -lutil"
6700-
6701-cat >>confdefs.h <<\_ACEOF
6702-#define HAVE_OPENDISK 1
6703-_ACEOF
6704-
6705-fi
6706-
6707-
6708-# Unless the user specify --without-curses, check for curses.
6709-if test "x$with_curses" != "xno"; then
6710- echo "$as_me:$LINENO: checking for wgetch in -lncurses" >&5
6711-echo $ECHO_N "checking for wgetch in -lncurses... $ECHO_C" >&6
6712-if test "${ac_cv_lib_ncurses_wgetch+set}" = set; then
6713- echo $ECHO_N "(cached) $ECHO_C" >&6
6714-else
6715- ac_check_lib_save_LIBS=$LIBS
6716-LIBS="-lncurses $LIBS"
6717-cat >conftest.$ac_ext <<_ACEOF
6718-/* confdefs.h. */
6719-_ACEOF
6720-cat confdefs.h >>conftest.$ac_ext
6721-cat >>conftest.$ac_ext <<_ACEOF
6722-/* end confdefs.h. */
6723-
6724-/* Override any gcc2 internal prototype to avoid an error. */
6725-#ifdef __cplusplus
6726-extern "C"
6727-#endif
6728-/* We use char because int might match the return type of a gcc2
6729- builtin and then its argument prototype would still apply. */
6730-char wgetch ();
6731-int
6732-main ()
6733-{
6734-wgetch ();
6735- ;
6736- return 0;
6737-}
6738-_ACEOF
6739-rm -f conftest.$ac_objext conftest$ac_exeext
6740-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6741- (eval $ac_link) 2>conftest.er1
6742- ac_status=$?
6743- grep -v '^ *+' conftest.er1 >conftest.err
6744- rm -f conftest.er1
6745- cat conftest.err >&5
6746- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6747- (exit $ac_status); } &&
6748- { ac_try='test -z "$ac_c_werror_flag"
6749- || test ! -s conftest.err'
6750- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6751- (eval $ac_try) 2>&5
6752- ac_status=$?
6753- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6754- (exit $ac_status); }; } &&
6755- { ac_try='test -s conftest$ac_exeext'
6756- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6757- (eval $ac_try) 2>&5
6758- ac_status=$?
6759- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6760- (exit $ac_status); }; }; then
6761- ac_cv_lib_ncurses_wgetch=yes
6762-else
6763- echo "$as_me: failed program was:" >&5
6764-sed 's/^/| /' conftest.$ac_ext >&5
6765-
6766-ac_cv_lib_ncurses_wgetch=no
6767-fi
6768-rm -f conftest.err conftest.$ac_objext \
6769- conftest$ac_exeext conftest.$ac_ext
6770-LIBS=$ac_check_lib_save_LIBS
6771-fi
6772-echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_wgetch" >&5
6773-echo "${ECHO_T}$ac_cv_lib_ncurses_wgetch" >&6
6774-if test $ac_cv_lib_ncurses_wgetch = yes; then
6775- GRUB_LIBS="$GRUB_LIBS -lncurses"
6776-
6777-cat >>confdefs.h <<\_ACEOF
6778-#define HAVE_LIBCURSES 1
6779-_ACEOF
6780-
6781-else
6782- echo "$as_me:$LINENO: checking for wgetch in -lcurses" >&5
6783-echo $ECHO_N "checking for wgetch in -lcurses... $ECHO_C" >&6
6784-if test "${ac_cv_lib_curses_wgetch+set}" = set; then
6785- echo $ECHO_N "(cached) $ECHO_C" >&6
6786-else
6787- ac_check_lib_save_LIBS=$LIBS
6788-LIBS="-lcurses $LIBS"
6789-cat >conftest.$ac_ext <<_ACEOF
6790-/* confdefs.h. */
6791-_ACEOF
6792-cat confdefs.h >>conftest.$ac_ext
6793-cat >>conftest.$ac_ext <<_ACEOF
6794-/* end confdefs.h. */
6795-
6796-/* Override any gcc2 internal prototype to avoid an error. */
6797-#ifdef __cplusplus
6798-extern "C"
6799-#endif
6800-/* We use char because int might match the return type of a gcc2
6801- builtin and then its argument prototype would still apply. */
6802-char wgetch ();
6803-int
6804-main ()
6805-{
6806-wgetch ();
6807- ;
6808- return 0;
6809-}
6810-_ACEOF
6811-rm -f conftest.$ac_objext conftest$ac_exeext
6812-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
6813- (eval $ac_link) 2>conftest.er1
6814- ac_status=$?
6815- grep -v '^ *+' conftest.er1 >conftest.err
6816- rm -f conftest.er1
6817- cat conftest.err >&5
6818- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6819- (exit $ac_status); } &&
6820- { ac_try='test -z "$ac_c_werror_flag"
6821- || test ! -s conftest.err'
6822- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6823- (eval $ac_try) 2>&5
6824- ac_status=$?
6825- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6826- (exit $ac_status); }; } &&
6827- { ac_try='test -s conftest$ac_exeext'
6828- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
6829- (eval $ac_try) 2>&5
6830- ac_status=$?
6831- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6832- (exit $ac_status); }; }; then
6833- ac_cv_lib_curses_wgetch=yes
6834-else
6835- echo "$as_me: failed program was:" >&5
6836-sed 's/^/| /' conftest.$ac_ext >&5
6837-
6838-ac_cv_lib_curses_wgetch=no
6839-fi
6840-rm -f conftest.err conftest.$ac_objext \
6841- conftest$ac_exeext conftest.$ac_ext
6842-LIBS=$ac_check_lib_save_LIBS
6843-fi
6844-echo "$as_me:$LINENO: result: $ac_cv_lib_curses_wgetch" >&5
6845-echo "${ECHO_T}$ac_cv_lib_curses_wgetch" >&6
6846-if test $ac_cv_lib_curses_wgetch = yes; then
6847- GRUB_LIBS="$GRUB_LIBS -lcurses"
6848-
6849-cat >>confdefs.h <<\_ACEOF
6850-#define HAVE_LIBCURSES 1
6851-_ACEOF
6852-
6853-fi
6854-
6855-fi
6856-
6857-fi
6858-
6859-
6860-
6861-# Check for headers.
6862-ac_ext=c
6863-ac_cpp='$CPP $CPPFLAGS'
6864-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6865-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6866-ac_compiler_gnu=$ac_cv_c_compiler_gnu
6867-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
6868-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
6869-# On Suns, sometimes $CPP names a directory.
6870-if test -n "$CPP" && test -d "$CPP"; then
6871- CPP=
6872-fi
6873-if test -z "$CPP"; then
6874- if test "${ac_cv_prog_CPP+set}" = set; then
6875- echo $ECHO_N "(cached) $ECHO_C" >&6
6876-else
6877- # Double quotes because CPP needs to be expanded
6878- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
6879- do
6880- ac_preproc_ok=false
6881-for ac_c_preproc_warn_flag in '' yes
6882-do
6883- # Use a header file that comes with gcc, so configuring glibc
6884- # with a fresh cross-compiler works.
6885- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
6886- # <limits.h> exists even on freestanding compilers.
6887- # On the NeXT, cc -E runs the code through the compiler's parser,
6888- # not just through cpp. "Syntax error" is here to catch this case.
6889- cat >conftest.$ac_ext <<_ACEOF
6890-/* confdefs.h. */
6891-_ACEOF
6892-cat confdefs.h >>conftest.$ac_ext
6893-cat >>conftest.$ac_ext <<_ACEOF
6894-/* end confdefs.h. */
6895-#ifdef __STDC__
6896-# include <limits.h>
6897-#else
6898-# include <assert.h>
6899-#endif
6900- Syntax error
6901-_ACEOF
6902-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
6903- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
6904- ac_status=$?
6905- grep -v '^ *+' conftest.er1 >conftest.err
6906- rm -f conftest.er1
6907- cat conftest.err >&5
6908- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6909- (exit $ac_status); } >/dev/null; then
6910- if test -s conftest.err; then
6911- ac_cpp_err=$ac_c_preproc_warn_flag
6912- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
6913- else
6914- ac_cpp_err=
6915- fi
6916-else
6917- ac_cpp_err=yes
6918-fi
6919-if test -z "$ac_cpp_err"; then
6920- :
6921-else
6922- echo "$as_me: failed program was:" >&5
6923-sed 's/^/| /' conftest.$ac_ext >&5
6924-
6925- # Broken: fails on valid input.
6926-continue
6927-fi
6928-rm -f conftest.err conftest.$ac_ext
6929-
6930- # OK, works on sane cases. Now check whether non-existent headers
6931- # can be detected and how.
6932- cat >conftest.$ac_ext <<_ACEOF
6933-/* confdefs.h. */
6934-_ACEOF
6935-cat confdefs.h >>conftest.$ac_ext
6936-cat >>conftest.$ac_ext <<_ACEOF
6937-/* end confdefs.h. */
6938-#include <ac_nonexistent.h>
6939-_ACEOF
6940-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
6941- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
6942- ac_status=$?
6943- grep -v '^ *+' conftest.er1 >conftest.err
6944- rm -f conftest.er1
6945- cat conftest.err >&5
6946- echo "$as_me:$LINENO: \$? = $ac_status" >&5
6947- (exit $ac_status); } >/dev/null; then
6948- if test -s conftest.err; then
6949- ac_cpp_err=$ac_c_preproc_warn_flag
6950- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
6951- else
6952- ac_cpp_err=
6953- fi
6954-else
6955- ac_cpp_err=yes
6956-fi
6957-if test -z "$ac_cpp_err"; then
6958- # Broken: success on invalid input.
6959-continue
6960-else
6961- echo "$as_me: failed program was:" >&5
6962-sed 's/^/| /' conftest.$ac_ext >&5
6963-
6964- # Passes both tests.
6965-ac_preproc_ok=:
6966-break
6967-fi
6968-rm -f conftest.err conftest.$ac_ext
6969-
6970-done
6971-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
6972-rm -f conftest.err conftest.$ac_ext
6973-if $ac_preproc_ok; then
6974- break
6975-fi
6976-
6977- done
6978- ac_cv_prog_CPP=$CPP
6979-
6980-fi
6981- CPP=$ac_cv_prog_CPP
6982-else
6983- ac_cv_prog_CPP=$CPP
6984-fi
6985-echo "$as_me:$LINENO: result: $CPP" >&5
6986-echo "${ECHO_T}$CPP" >&6
6987-ac_preproc_ok=false
6988-for ac_c_preproc_warn_flag in '' yes
6989-do
6990- # Use a header file that comes with gcc, so configuring glibc
6991- # with a fresh cross-compiler works.
6992- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
6993- # <limits.h> exists even on freestanding compilers.
6994- # On the NeXT, cc -E runs the code through the compiler's parser,
6995- # not just through cpp. "Syntax error" is here to catch this case.
6996- cat >conftest.$ac_ext <<_ACEOF
6997-/* confdefs.h. */
6998-_ACEOF
6999-cat confdefs.h >>conftest.$ac_ext
7000-cat >>conftest.$ac_ext <<_ACEOF
7001-/* end confdefs.h. */
7002-#ifdef __STDC__
7003-# include <limits.h>
7004-#else
7005-# include <assert.h>
7006-#endif
7007- Syntax error
7008-_ACEOF
7009-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
7010- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
7011- ac_status=$?
7012- grep -v '^ *+' conftest.er1 >conftest.err
7013- rm -f conftest.er1
7014- cat conftest.err >&5
7015- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7016- (exit $ac_status); } >/dev/null; then
7017- if test -s conftest.err; then
7018- ac_cpp_err=$ac_c_preproc_warn_flag
7019- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
7020- else
7021- ac_cpp_err=
7022- fi
7023-else
7024- ac_cpp_err=yes
7025-fi
7026-if test -z "$ac_cpp_err"; then
7027- :
7028-else
7029- echo "$as_me: failed program was:" >&5
7030-sed 's/^/| /' conftest.$ac_ext >&5
7031-
7032- # Broken: fails on valid input.
7033-continue
7034-fi
7035-rm -f conftest.err conftest.$ac_ext
7036-
7037- # OK, works on sane cases. Now check whether non-existent headers
7038- # can be detected and how.
7039- cat >conftest.$ac_ext <<_ACEOF
7040-/* confdefs.h. */
7041-_ACEOF
7042-cat confdefs.h >>conftest.$ac_ext
7043-cat >>conftest.$ac_ext <<_ACEOF
7044-/* end confdefs.h. */
7045-#include <ac_nonexistent.h>
7046-_ACEOF
7047-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
7048- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
7049- ac_status=$?
7050- grep -v '^ *+' conftest.er1 >conftest.err
7051- rm -f conftest.er1
7052- cat conftest.err >&5
7053- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7054- (exit $ac_status); } >/dev/null; then
7055- if test -s conftest.err; then
7056- ac_cpp_err=$ac_c_preproc_warn_flag
7057- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
7058- else
7059- ac_cpp_err=
7060- fi
7061-else
7062- ac_cpp_err=yes
7063-fi
7064-if test -z "$ac_cpp_err"; then
7065- # Broken: success on invalid input.
7066-continue
7067-else
7068- echo "$as_me: failed program was:" >&5
7069-sed 's/^/| /' conftest.$ac_ext >&5
7070-
7071- # Passes both tests.
7072-ac_preproc_ok=:
7073-break
7074-fi
7075-rm -f conftest.err conftest.$ac_ext
7076-
7077-done
7078-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
7079-rm -f conftest.err conftest.$ac_ext
7080-if $ac_preproc_ok; then
7081- :
7082-else
7083- { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
7084-See \`config.log' for more details." >&5
7085-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
7086-See \`config.log' for more details." >&2;}
7087- { (exit 1); exit 1; }; }
7088-fi
7089-
7090-ac_ext=c
7091-ac_cpp='$CPP $CPPFLAGS'
7092-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7093-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7094-ac_compiler_gnu=$ac_cv_c_compiler_gnu
7095-
7096-
7097-echo "$as_me:$LINENO: checking for egrep" >&5
7098-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
7099-if test "${ac_cv_prog_egrep+set}" = set; then
7100- echo $ECHO_N "(cached) $ECHO_C" >&6
7101-else
7102- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
7103- then ac_cv_prog_egrep='grep -E'
7104- else ac_cv_prog_egrep='egrep'
7105- fi
7106-fi
7107-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
7108-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
7109- EGREP=$ac_cv_prog_egrep
7110-
7111-
7112-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
7113-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
7114-if test "${ac_cv_header_stdc+set}" = set; then
7115- echo $ECHO_N "(cached) $ECHO_C" >&6
7116-else
7117- cat >conftest.$ac_ext <<_ACEOF
7118-/* confdefs.h. */
7119-_ACEOF
7120-cat confdefs.h >>conftest.$ac_ext
7121-cat >>conftest.$ac_ext <<_ACEOF
7122-/* end confdefs.h. */
7123-#include <stdlib.h>
7124-#include <stdarg.h>
7125-#include <string.h>
7126-#include <float.h>
7127-
7128-int
7129-main ()
7130-{
7131-
7132- ;
7133- return 0;
7134-}
7135-_ACEOF
7136-rm -f conftest.$ac_objext
7137-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7138- (eval $ac_compile) 2>conftest.er1
7139- ac_status=$?
7140- grep -v '^ *+' conftest.er1 >conftest.err
7141- rm -f conftest.er1
7142- cat conftest.err >&5
7143- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7144- (exit $ac_status); } &&
7145- { ac_try='test -z "$ac_c_werror_flag"
7146- || test ! -s conftest.err'
7147- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7148- (eval $ac_try) 2>&5
7149- ac_status=$?
7150- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7151- (exit $ac_status); }; } &&
7152- { ac_try='test -s conftest.$ac_objext'
7153- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7154- (eval $ac_try) 2>&5
7155- ac_status=$?
7156- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7157- (exit $ac_status); }; }; then
7158- ac_cv_header_stdc=yes
7159-else
7160- echo "$as_me: failed program was:" >&5
7161-sed 's/^/| /' conftest.$ac_ext >&5
7162-
7163-ac_cv_header_stdc=no
7164-fi
7165-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
7166-
7167-if test $ac_cv_header_stdc = yes; then
7168- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
7169- cat >conftest.$ac_ext <<_ACEOF
7170-/* confdefs.h. */
7171-_ACEOF
7172-cat confdefs.h >>conftest.$ac_ext
7173-cat >>conftest.$ac_ext <<_ACEOF
7174-/* end confdefs.h. */
7175-#include <string.h>
7176-
7177-_ACEOF
7178-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7179- $EGREP "memchr" >/dev/null 2>&1; then
7180- :
7181-else
7182- ac_cv_header_stdc=no
7183-fi
7184-rm -f conftest*
7185-
7186-fi
7187-
7188-if test $ac_cv_header_stdc = yes; then
7189- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
7190- cat >conftest.$ac_ext <<_ACEOF
7191-/* confdefs.h. */
7192-_ACEOF
7193-cat confdefs.h >>conftest.$ac_ext
7194-cat >>conftest.$ac_ext <<_ACEOF
7195-/* end confdefs.h. */
7196-#include <stdlib.h>
7197-
7198-_ACEOF
7199-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7200- $EGREP "free" >/dev/null 2>&1; then
7201- :
7202-else
7203- ac_cv_header_stdc=no
7204-fi
7205-rm -f conftest*
7206-
7207-fi
7208-
7209-if test $ac_cv_header_stdc = yes; then
7210- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
7211- if test "$cross_compiling" = yes; then
7212- :
7213-else
7214- cat >conftest.$ac_ext <<_ACEOF
7215-/* confdefs.h. */
7216-_ACEOF
7217-cat confdefs.h >>conftest.$ac_ext
7218-cat >>conftest.$ac_ext <<_ACEOF
7219-/* end confdefs.h. */
7220-#include <ctype.h>
7221-#if ((' ' & 0x0FF) == 0x020)
7222-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
7223-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
7224-#else
7225-# define ISLOWER(c) \
7226- (('a' <= (c) && (c) <= 'i') \
7227- || ('j' <= (c) && (c) <= 'r') \
7228- || ('s' <= (c) && (c) <= 'z'))
7229-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
7230-#endif
7231-
7232-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
7233-int
7234-main ()
7235-{
7236- int i;
7237- for (i = 0; i < 256; i++)
7238- if (XOR (islower (i), ISLOWER (i))
7239- || toupper (i) != TOUPPER (i))
7240- exit(2);
7241- exit (0);
7242-}
7243-_ACEOF
7244-rm -f conftest$ac_exeext
7245-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
7246- (eval $ac_link) 2>&5
7247- ac_status=$?
7248- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7249- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
7250- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7251- (eval $ac_try) 2>&5
7252- ac_status=$?
7253- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7254- (exit $ac_status); }; }; then
7255- :
7256-else
7257- echo "$as_me: program exited with status $ac_status" >&5
7258-echo "$as_me: failed program was:" >&5
7259-sed 's/^/| /' conftest.$ac_ext >&5
7260-
7261-( exit $ac_status )
7262-ac_cv_header_stdc=no
7263-fi
7264-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
7265-fi
7266-fi
7267-fi
7268-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
7269-echo "${ECHO_T}$ac_cv_header_stdc" >&6
7270-if test $ac_cv_header_stdc = yes; then
7271-
7272-cat >>confdefs.h <<\_ACEOF
7273-#define STDC_HEADERS 1
7274-_ACEOF
7275-
7276-fi
7277-
7278-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
7279-
7280-
7281-
7282-
7283-
7284-
7285-
7286-
7287-
7288-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
7289- inttypes.h stdint.h unistd.h
7290-do
7291-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
7292-echo "$as_me:$LINENO: checking for $ac_header" >&5
7293-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
7294-if eval "test \"\${$as_ac_Header+set}\" = set"; then
7295- echo $ECHO_N "(cached) $ECHO_C" >&6
7296-else
7297- cat >conftest.$ac_ext <<_ACEOF
7298-/* confdefs.h. */
7299-_ACEOF
7300-cat confdefs.h >>conftest.$ac_ext
7301-cat >>conftest.$ac_ext <<_ACEOF
7302-/* end confdefs.h. */
7303-$ac_includes_default
7304-
7305-#include <$ac_header>
7306-_ACEOF
7307-rm -f conftest.$ac_objext
7308-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7309- (eval $ac_compile) 2>conftest.er1
7310- ac_status=$?
7311- grep -v '^ *+' conftest.er1 >conftest.err
7312- rm -f conftest.er1
7313- cat conftest.err >&5
7314- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7315- (exit $ac_status); } &&
7316- { ac_try='test -z "$ac_c_werror_flag"
7317- || test ! -s conftest.err'
7318- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7319- (eval $ac_try) 2>&5
7320- ac_status=$?
7321- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7322- (exit $ac_status); }; } &&
7323- { ac_try='test -s conftest.$ac_objext'
7324- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7325- (eval $ac_try) 2>&5
7326- ac_status=$?
7327- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7328- (exit $ac_status); }; }; then
7329- eval "$as_ac_Header=yes"
7330-else
7331- echo "$as_me: failed program was:" >&5
7332-sed 's/^/| /' conftest.$ac_ext >&5
7333-
7334-eval "$as_ac_Header=no"
7335-fi
7336-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
7337-fi
7338-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
7339-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
7340-if test `eval echo '${'$as_ac_Header'}'` = yes; then
7341- cat >>confdefs.h <<_ACEOF
7342-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
7343-_ACEOF
7344-
7345-fi
7346-
7347-done
7348-
7349-
7350-
7351-
7352-
7353-
7354-
7355-for ac_header in string.h strings.h ncurses/curses.h ncurses.h curses.h
7356-do
7357-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
7358-if eval "test \"\${$as_ac_Header+set}\" = set"; then
7359- echo "$as_me:$LINENO: checking for $ac_header" >&5
7360-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
7361-if eval "test \"\${$as_ac_Header+set}\" = set"; then
7362- echo $ECHO_N "(cached) $ECHO_C" >&6
7363-fi
7364-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
7365-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
7366-else
7367- # Is the header compilable?
7368-echo "$as_me:$LINENO: checking $ac_header usability" >&5
7369-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
7370-cat >conftest.$ac_ext <<_ACEOF
7371-/* confdefs.h. */
7372-_ACEOF
7373-cat confdefs.h >>conftest.$ac_ext
7374-cat >>conftest.$ac_ext <<_ACEOF
7375-/* end confdefs.h. */
7376-$ac_includes_default
7377-#include <$ac_header>
7378-_ACEOF
7379-rm -f conftest.$ac_objext
7380-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7381- (eval $ac_compile) 2>conftest.er1
7382- ac_status=$?
7383- grep -v '^ *+' conftest.er1 >conftest.err
7384- rm -f conftest.er1
7385- cat conftest.err >&5
7386- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7387- (exit $ac_status); } &&
7388- { ac_try='test -z "$ac_c_werror_flag"
7389- || test ! -s conftest.err'
7390- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7391- (eval $ac_try) 2>&5
7392- ac_status=$?
7393- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7394- (exit $ac_status); }; } &&
7395- { ac_try='test -s conftest.$ac_objext'
7396- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
7397- (eval $ac_try) 2>&5
7398- ac_status=$?
7399- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7400- (exit $ac_status); }; }; then
7401- ac_header_compiler=yes
7402-else
7403- echo "$as_me: failed program was:" >&5
7404-sed 's/^/| /' conftest.$ac_ext >&5
7405-
7406-ac_header_compiler=no
7407-fi
7408-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
7409-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
7410-echo "${ECHO_T}$ac_header_compiler" >&6
7411-
7412-# Is the header present?
7413-echo "$as_me:$LINENO: checking $ac_header presence" >&5
7414-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
7415-cat >conftest.$ac_ext <<_ACEOF
7416-/* confdefs.h. */
7417-_ACEOF
7418-cat confdefs.h >>conftest.$ac_ext
7419-cat >>conftest.$ac_ext <<_ACEOF
7420-/* end confdefs.h. */
7421-#include <$ac_header>
7422-_ACEOF
7423-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
7424- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
7425- ac_status=$?
7426- grep -v '^ *+' conftest.er1 >conftest.err
7427- rm -f conftest.er1
7428- cat conftest.err >&5
7429- echo "$as_me:$LINENO: \$? = $ac_status" >&5
7430- (exit $ac_status); } >/dev/null; then
7431- if test -s conftest.err; then
7432- ac_cpp_err=$ac_c_preproc_warn_flag
7433- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
7434- else
7435- ac_cpp_err=
7436- fi
7437-else
7438- ac_cpp_err=yes
7439-fi
7440-if test -z "$ac_cpp_err"; then
7441- ac_header_preproc=yes
7442-else
7443- echo "$as_me: failed program was:" >&5
7444-sed 's/^/| /' conftest.$ac_ext >&5
7445-
7446- ac_header_preproc=no
7447-fi
7448-rm -f conftest.err conftest.$ac_ext
7449-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
7450-echo "${ECHO_T}$ac_header_preproc" >&6
7451-
7452-# So? What about this header?
7453-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
7454- yes:no: )
7455- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
7456-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
7457- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
7458-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
7459- ac_header_preproc=yes
7460- ;;
7461- no:yes:* )
7462- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
7463-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
7464- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
7465-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
7466- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
7467-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
7468- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
7469-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
7470- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
7471-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
7472- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
7473-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
7474- (
7475- cat <<\_ASBOX
7476-## ------------------------------- ##
7477-## Report this to bug-grub@gnu.org ##
7478-## ------------------------------- ##
7479-_ASBOX
7480- ) |
7481- sed "s/^/$as_me: WARNING: /" >&2
7482- ;;
7483-esac
7484-echo "$as_me:$LINENO: checking for $ac_header" >&5
7485-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
7486-if eval "test \"\${$as_ac_Header+set}\" = set"; then
7487- echo $ECHO_N "(cached) $ECHO_C" >&6
7488-else
7489- eval "$as_ac_Header=\$ac_header_preproc"
7490-fi
7491-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
7492-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
7493-
7494-fi
7495-if test `eval echo '${'$as_ac_Header'}'` = yes; then
7496- cat >>confdefs.h <<_ACEOF
7497-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
7498-_ACEOF
7499-
7500-fi
7501-
7502-done
7503-
7504-
7505-# Check for user options.
7506-
7507-# filesystems support.
7508-# Check whether --enable-ext2fs or --disable-ext2fs was given.
7509-if test "${enable_ext2fs+set}" = set; then
7510- enableval="$enable_ext2fs"
7511-
7512-fi;
7513-
7514-if test x"$enable_ext2fs" != xno; then
7515- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_EXT2FS=1"
7516-fi
7517-
7518-# Check whether --enable-fat or --disable-fat was given.
7519-if test "${enable_fat+set}" = set; then
7520- enableval="$enable_fat"
7521-
7522-fi;
7523-
7524-if test x"$enable_fat" != xno; then
7525- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FAT=1"
7526-fi
7527-
7528-# Check whether --enable-ffs or --disable-ffs was given.
7529-if test "${enable_ffs+set}" = set; then
7530- enableval="$enable_ffs"
7531-
7532-fi;
7533-
7534-if test x"$enable_ffs" != xno; then
7535- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_FFS=1"
7536-fi
7537-
7538-# Check whether --enable-ufs2 or --disable-ufs2 was given.
7539-if test "${enable_ufs2+set}" = set; then
7540- enableval="$enable_ufs2"
7541-
7542-fi;
7543-
7544-if test x"$enable_ufs2" != xno; then
7545- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_UFS2=1"
7546-fi
7547-
7548-# Check whether --enable-minix or --disable-minix was given.
7549-if test "${enable_minix+set}" = set; then
7550- enableval="$enable_minix"
7551-
7552-fi;
7553-
7554-if test x"$enable_minix" != xno; then
7555- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_MINIX=1"
7556-fi
7557-
7558-# Check whether --enable-reiserfs or --disable-reiserfs was given.
7559-if test "${enable_reiserfs+set}" = set; then
7560- enableval="$enable_reiserfs"
7561-
7562-fi;
7563-
7564-if test x"$enable_reiserfs" != xno; then
7565- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_REISERFS=1"
7566-fi
7567-
7568-# Check whether --enable-vstafs or --disable-vstafs was given.
7569-if test "${enable_vstafs+set}" = set; then
7570- enableval="$enable_vstafs"
7571-
7572-fi;
7573-
7574-if test x"$enable_vstafs" != xno; then
7575- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_VSTAFS=1"
7576-fi
7577-
7578-# Check whether --enable-jfs or --disable-jfs was given.
7579-if test "${enable_jfs+set}" = set; then
7580- enableval="$enable_jfs"
7581-
7582-fi;
7583-
7584-if test x"$enable_jfs" != xno; then
7585- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_JFS=1"
7586-fi
7587-
7588-# Check whether --enable-xfs or --disable-xfs was given.
7589-if test "${enable_xfs+set}" = set; then
7590- enableval="$enable_xfs"
7591-
7592-fi;
7593-
7594-if test x"$enable_xfs" != xno; then
7595- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_XFS=1"
7596-fi
7597-
7598-# Check whether --enable-iso9660 or --disable-iso9660 was given.
7599-if test "${enable_iso9660+set}" = set; then
7600- enableval="$enable_iso9660"
7601-
7602-fi;
7603-
7604-if test x"$enable_iso9660" != xno; then
7605- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_ISO9660=1"
7606-fi
7607-
7608-
7609-# Check whether --enable-gunzip or --disable-gunzip was given.
7610-if test "${enable_gunzip+set}" = set; then
7611- enableval="$enable_gunzip"
7612-
7613-fi;
7614-
7615-if test x"$enable_gunzip" = xno; then
7616- FSYS_CFLAGS="$FSYS_CFLAGS -DNO_DECOMPRESSION=1"
7617-fi
7618-
7619-# Check whether --enable-md5-password or --disable-md5-password was given.
7620-if test "${enable_md5_password+set}" = set; then
7621- enableval="$enable_md5_password"
7622-
7623-fi;
7624-if test "x$enable_md5_password" != xno; then
7625- FSYS_CFLAGS="$FSYS_CFLAGS -DUSE_MD5_PASSWORDS=1"
7626-fi
7627-
7628-# Check whether --enable-packet-retransmission or --disable-packet-retransmission was given.
7629-if test "${enable_packet_retransmission+set}" = set; then
7630- enableval="$enable_packet_retransmission"
7631-
7632-fi;
7633-if test "x$enable_packet_retransmission" != xno; then
7634- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONGESTED=1"
7635-fi
7636-
7637-# Check whether --enable-pci-direct or --disable-pci-direct was given.
7638-if test "${enable_pci_direct+set}" = set; then
7639- enableval="$enable_pci_direct"
7640-
7641-fi;
7642-if test "x$enable_pci_direct" = xyes; then
7643- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCONFIG_PCI_DIRECT=1"
7644-fi
7645-
7646-# Check whether --enable-3c509 or --disable-3c509 was given.
7647-if test "${enable_3c509+set}" = set; then
7648- enableval="$enable_3c509"
7649-
7650-fi;
7651-if test "x$enable_3c509" = xyes; then
7652- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C509"
7653- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c509.o"
7654-fi
7655-
7656-# Check whether --enable-3c529 or --disable-3c529 was given.
7657-if test "${enable_3c529+set}" = set; then
7658- enableval="$enable_3c529"
7659-
7660-fi;
7661-if test "x$enable_3c529" = xyes; then
7662- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C529=1"
7663- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c529.o"
7664-fi
7665-
7666-# Check whether --enable-3c595 or --disable-3c595 was given.
7667-if test "${enable_3c595+set}" = set; then
7668- enableval="$enable_3c595"
7669-
7670-fi;
7671-if test "x$enable_3c595" = xyes; then
7672- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C595=1"
7673- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c595.o"
7674-fi
7675-
7676-# Check whether --enable-3c90x or --disable-3c90x was given.
7677-if test "${enable_3c90x+set}" = set; then
7678- enableval="$enable_3c90x"
7679-
7680-fi;
7681-if test "x$enable_3c90x" = xyes; then
7682- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C90X=1"
7683- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c90x.o"
7684-fi
7685-
7686-# Check whether --enable-cs89x0 or --disable-cs89x0 was given.
7687-if test "${enable_cs89x0+set}" = set; then
7688- enableval="$enable_cs89x0"
7689-
7690-fi;
7691-if test "x$enable_cs89x0" = xyes; then
7692- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_CS89X0=1"
7693- NETBOOT_DRIVERS="$NETBOOT_DRIVERS cs89x0.o"
7694-fi
7695-
7696-# Check whether --enable-davicom or --disable-davicom was given.
7697-if test "${enable_davicom+set}" = set; then
7698- enableval="$enable_davicom"
7699-
7700-fi;
7701-if test "x$enable_davicom" = xyes; then
7702- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DAVICOM=1"
7703- NETBOOT_DRIVERS="$NETBOOT_DRIVERS davicom.o"
7704-fi
7705-
7706-# Check whether --enable-depca or --disable-depca was given.
7707-if test "${enable_depca+set}" = set; then
7708- enableval="$enable_depca"
7709-
7710-fi;
7711-if test "x$enable_depca" = xyes; then
7712- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_DEPCA=1"
7713- NETBOOT_DRIVERS="$NETBOOT_DRIVERS depca.o"
7714-fi
7715-
7716-# Check whether --enable-eepro or --disable-eepro was given.
7717-if test "${enable_eepro+set}" = set; then
7718- enableval="$enable_eepro"
7719-
7720-fi;
7721-if test "x$enable_eepro" = xyes; then
7722- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO=1"
7723- NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro.o"
7724-fi
7725-
7726-# Check whether --enable-eepro100 or --disable-eepro100 was given.
7727-if test "${enable_eepro100+set}" = set; then
7728- enableval="$enable_eepro100"
7729-
7730-fi;
7731-if test "x$enable_eepro100" = xyes; then
7732- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EEPRO100=1"
7733- NETBOOT_DRIVERS="$NETBOOT_DRIVERS eepro100.o"
7734-fi
7735-
7736-# Check whether --enable-epic100 or --disable-epic100 was given.
7737-if test "${enable_epic100+set}" = set; then
7738- enableval="$enable_epic100"
7739-
7740-fi;
7741-if test "x$enable_epic100" = xyes; then
7742- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EPIC100=1"
7743- NETBOOT_DRIVERS="$NETBOOT_DRIVERS epic100.o"
7744-fi
7745-
7746-# Check whether --enable-3c507 or --disable-3c507 was given.
7747-if test "${enable_3c507+set}" = set; then
7748- enableval="$enable_3c507"
7749-
7750-fi;
7751-if test "x$enable_3c507" = xyes; then
7752- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C507=1"
7753- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c507.o"
7754-fi
7755-
7756-# Check whether --enable-exos205 or --disable-exos205 was given.
7757-if test "${enable_exos205+set}" = set; then
7758- enableval="$enable_exos205"
7759-
7760-fi;
7761-if test "x$enable_exos205" = xyes; then
7762- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_EXOS205=1"
7763- NETBOOT_DRIVERS="$NETBOOT_DRIVERS exos205.o"
7764-fi
7765-
7766-# Check whether --enable-ni5210 or --disable-ni5210 was given.
7767-if test "${enable_ni5210+set}" = set; then
7768- enableval="$enable_ni5210"
7769-
7770-fi;
7771-if test "x$enable_ni5210" = xyes; then
7772- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5210=1"
7773- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5210.o"
7774-fi
7775-
7776-# Check whether --enable-lance or --disable-lance was given.
7777-if test "${enable_lance+set}" = set; then
7778- enableval="$enable_lance"
7779-
7780-fi;
7781-if test "x$enable_lance" = xyes; then
7782- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_LANCE=1"
7783- NETBOOT_DRIVERS="$NETBOOT_DRIVERS lance.o"
7784-fi
7785-
7786-# Check whether --enable-ne2100 or --disable-ne2100 was given.
7787-if test "${enable_ne2100+set}" = set; then
7788- enableval="$enable_ne2100"
7789-
7790-fi;
7791-if test "x$enable_ne2100" = xyes; then
7792- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE2100=1"
7793- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne2100.o"
7794-fi
7795-
7796-# Check whether --enable-ni6510 or --disable-ni6510 was given.
7797-if test "${enable_ni6510+set}" = set; then
7798- enableval="$enable_ni6510"
7799-
7800-fi;
7801-if test "x$enable_ni6510" = xyes; then
7802- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI6510=1"
7803- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni6510.o"
7804-fi
7805-
7806-# Check whether --enable-natsemi or --disable-natsemi was given.
7807-if test "${enable_natsemi+set}" = set; then
7808- enableval="$enable_natsemi"
7809-
7810-fi;
7811-if test "x$enable_natsemi" = xyes; then
7812- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NATSEMI=1"
7813- NETBOOT_DRIVERS="$NETBOOT_DRIVERS natsemi.o"
7814-fi
7815-
7816-# Check whether --enable-ni5010 or --disable-ni5010 was given.
7817-if test "${enable_ni5010+set}" = set; then
7818- enableval="$enable_ni5010"
7819-
7820-fi;
7821-if test "x$enable_ni5010" = xyes; then
7822- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NI5010=1"
7823- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ni5010.o"
7824-fi
7825-
7826-# Check whether --enable-3c503 or --disable-3c503 was given.
7827-if test "${enable_3c503+set}" = set; then
7828- enableval="$enable_3c503"
7829-
7830-fi;
7831-if test "x$enable_3c503" = xyes; then
7832- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_3C503=1"
7833- NETBOOT_DRIVERS="$NETBOOT_DRIVERS 3c503.o"
7834-fi
7835-
7836-# Check whether --enable-ne or --disable-ne was given.
7837-if test "${enable_ne+set}" = set; then
7838- enableval="$enable_ne"
7839-
7840-fi;
7841-if test "x$enable_ne" = xyes; then
7842- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NE=1"
7843- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ne.o"
7844-fi
7845-
7846-# Check whether --enable-ns8390 or --disable-ns8390 was given.
7847-if test "${enable_ns8390+set}" = set; then
7848- enableval="$enable_ns8390"
7849-
7850-fi;
7851-if test "x$enable_ns8390" = xyes; then
7852- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_NS8390=1"
7853- NETBOOT_DRIVERS="$NETBOOT_DRIVERS ns8390.o"
7854-fi
7855-
7856-# Check whether --enable-wd or --disable-wd was given.
7857-if test "${enable_wd+set}" = set; then
7858- enableval="$enable_wd"
7859-
7860-fi;
7861-if test "x$enable_wd" = xyes; then
7862- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_WD=1"
7863- NETBOOT_DRIVERS="$NETBOOT_DRIVERS wd.o"
7864-fi
7865-
7866-# Check whether --enable-otulip or --disable-otulip was given.
7867-if test "${enable_otulip+set}" = set; then
7868- enableval="$enable_otulip"
7869-
7870-fi;
7871-if test "x$enable_otulip" = xyes; then
7872- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_OTULIP=1"
7873- NETBOOT_DRIVERS="$NETBOOT_DRIVERS otulip.o"
7874-fi
7875-
7876-# Check whether --enable-rtl8139 or --disable-rtl8139 was given.
7877-if test "${enable_rtl8139+set}" = set; then
7878- enableval="$enable_rtl8139"
7879-
7880-fi;
7881-if test "x$enable_rtl8139" = xyes; then
7882- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_RTL8139=1"
7883- NETBOOT_DRIVERS="$NETBOOT_DRIVERS rtl8139.o"
7884-fi
7885-
7886-# Check whether --enable-sis900 or --disable-sis900 was given.
7887-if test "${enable_sis900+set}" = set; then
7888- enableval="$enable_sis900"
7889-
7890-fi;
7891-if test "x$enable_sis900" = xyes; then
7892- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SIS900=1"
7893- NETBOOT_DRIVERS="$NETBOOT_DRIVERS sis900.o"
7894-fi
7895-
7896-# Check whether --enable-sk-g16 or --disable-sk-g16 was given.
7897-if test "${enable_sk_g16+set}" = set; then
7898- enableval="$enable_sk_g16"
7899-
7900-fi;
7901-if test "x$enable_sk_g16" = xyes; then
7902- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SK_G16=1"
7903- NETBOOT_DRIVERS="$NETBOOT_DRIVERS sk_g16.o"
7904-fi
7905-
7906-# Check whether --enable-smc9000 or --disable-smc9000 was given.
7907-if test "${enable_smc9000+set}" = set; then
7908- enableval="$enable_smc9000"
7909-
7910-fi;
7911-if test "x$enable_smc9000" = xyes; then
7912- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_SMC9000=1"
7913- NETBOOT_DRIVERS="$NETBOOT_DRIVERS smc9000.o"
7914-fi
7915-
7916-# Check whether --enable-tiara or --disable-tiara was given.
7917-if test "${enable_tiara+set}" = set; then
7918- enableval="$enable_tiara"
7919-
7920-fi;
7921-if test "x$enable_tiara" = xyes; then
7922- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TIARA=1"
7923- NETBOOT_DRIVERS="$NETBOOT_DRIVERS tiara.o"
7924-fi
7925-
7926-# Check whether --enable-tulip or --disable-tulip was given.
7927-if test "${enable_tulip+set}" = set; then
7928- enableval="$enable_tulip"
7929-
7930-fi;
7931-if test "x$enable_tulip" = xyes; then
7932- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_TULIP=1"
7933- NETBOOT_DRIVERS="$NETBOOT_DRIVERS tulip.o"
7934-fi
7935-
7936-# Check whether --enable-via-rhine or --disable-via-rhine was given.
7937-if test "${enable_via_rhine+set}" = set; then
7938- enableval="$enable_via_rhine"
7939-
7940-fi;
7941-if test "x$enable_via_rhine" = xyes; then
7942- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_VIA_RHINE=1"
7943- NETBOOT_DRIVERS="$NETBOOT_DRIVERS via_rhine.o"
7944-fi
7945-
7946-# Check whether --enable-w89c840 or --disable-w89c840 was given.
7947-if test "${enable_w89c840+set}" = set; then
7948- enableval="$enable_w89c840"
7949-
7950-fi;
7951-if test "x$enable_w89c840" = xyes; then
7952- NET_CFLAGS="$NET_CFLAGS -DINCLUDE_W89C840=1"
7953- NETBOOT_DRIVERS="$NETBOOT_DRIVERS w89c840.o"
7954-fi
7955-
7956-
7957-
7958-if test "x$NET_CFLAGS" != x; then
7959- NETBOOT_SUPPORT_TRUE=
7960- NETBOOT_SUPPORT_FALSE='#'
7961-else
7962- NETBOOT_SUPPORT_TRUE='#'
7963- NETBOOT_SUPPORT_FALSE=
7964-fi
7965-
7966-if test "x$NET_CFLAGS" != x; then
7967- FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_TFTP=1"
7968-fi
7969-
7970-# Check whether --enable-3c503-shmem or --disable-3c503-shmem was given.
7971-if test "${enable_3c503_shmem+set}" = set; then
7972- enableval="$enable_3c503_shmem"
7973-
7974-fi;
7975-if test "x$enable_3c503_shmem" = xyes; then
7976- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_SHMEM=1"
7977-fi
7978-
7979-# Check whether --enable-3c503-aui or --disable-3c503-aui was given.
7980-if test "${enable_3c503_aui+set}" = set; then
7981- enableval="$enable_3c503_aui"
7982-
7983-fi;
7984-if test "x$enable_3c503_aui" = xyes; then
7985- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DT503_AUI=1"
7986-fi
7987-
7988-# Check whether --enable-compex-rl2000-fix or --disable-compex-rl2000-fix was given.
7989-if test "${enable_compex_rl2000_fix+set}" = set; then
7990- enableval="$enable_compex_rl2000_fix"
7991-
7992-fi;
7993-if test "x$enable_compex_rl2000_fix" = xyes; then
7994- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCOMPEX_RL2000_FIX=1"
7995-fi
7996-
7997-# Check whether --enable-smc9000-scan or --disable-smc9000-scan was given.
7998-if test "${enable_smc9000_scan+set}" = set; then
7999- enableval="$enable_smc9000_scan"
8000- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DSMC9000_SCAN=$enable_smc9000_scan"
8001-fi;
8002-
8003-# Check whether --enable-ne-scan or --disable-ne-scan was given.
8004-if test "${enable_ne_scan+set}" = set; then
8005- enableval="$enable_ne_scan"
8006- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=$enable_ne_scan"
8007-else
8008- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DNE_SCAN=0x280,0x300,0x320,0x340"
8009-fi;
8010-
8011-# Check whether --enable-wd-default-mem or --disable-wd-default-mem was given.
8012-if test "${enable_wd_default_mem+set}" = set; then
8013- enableval="$enable_wd_default_mem"
8014- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=$enable_wd_default_mem"
8015-else
8016- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DWD_DEFAULT_MEM=0xCC000"
8017-fi;
8018-
8019-# Check whether --enable-cs-scan or --disable-cs-scan was given.
8020-if test "${enable_cs_scan+set}" = set; then
8021- enableval="$enable_cs_scan"
8022- NET_EXTRAFLAGS="$NET_EXTRAFLAGS -DCS_SCAN=$enable_cs_scan"
8023-fi;
8024-
8025-# Check whether --enable-diskless or --disable-diskless was given.
8026-if test "${enable_diskless+set}" = set; then
8027- enableval="$enable_diskless"
8028-
8029-fi;
8030-
8031-
8032-if test "x$enable_diskless" = xyes; then
8033- DISKLESS_SUPPORT_TRUE=
8034- DISKLESS_SUPPORT_FALSE='#'
8035-else
8036- DISKLESS_SUPPORT_TRUE='#'
8037- DISKLESS_SUPPORT_FALSE=
8038-fi
8039-
8040-
8041-# Check whether --enable-hercules or --disable-hercules was given.
8042-if test "${enable_hercules+set}" = set; then
8043- enableval="$enable_hercules"
8044-
8045-fi;
8046-
8047-
8048-if test "x$enable_hercules" != xno; then
8049- HERCULES_SUPPORT_TRUE=
8050- HERCULES_SUPPORT_FALSE='#'
8051-else
8052- HERCULES_SUPPORT_TRUE='#'
8053- HERCULES_SUPPORT_FALSE=
8054-fi
8055-
8056-
8057-# Check whether --enable-serial or --disable-serial was given.
8058-if test "${enable_serial+set}" = set; then
8059- enableval="$enable_serial"
8060-
8061-fi;
8062-
8063-
8064-if test "x$enable_serial" != xno; then
8065- SERIAL_SUPPORT_TRUE=
8066- SERIAL_SUPPORT_FALSE='#'
8067-else
8068- SERIAL_SUPPORT_TRUE='#'
8069- SERIAL_SUPPORT_FALSE=
8070-fi
8071-
8072-
8073-# Check whether --enable-serial-speed-simulation or --disable-serial-speed-simulation was given.
8074-if test "${enable_serial_speed_simulation+set}" = set; then
8075- enableval="$enable_serial_speed_simulation"
8076-
8077-fi;
8078-
8079-
8080-if test "x$enable_serial_speed_simulation" = xyes; then
8081- SERIAL_SPEED_SIMULATION_TRUE=
8082- SERIAL_SPEED_SIMULATION_FALSE='#'
8083-else
8084- SERIAL_SPEED_SIMULATION_TRUE='#'
8085- SERIAL_SPEED_SIMULATION_FALSE=
8086-fi
8087-
8088-
8089-# Sanity check.
8090-if test "x$enable_diskless" = xyes; then
8091- if test "x$NET_CFLAGS" = x; then
8092- { { echo "$as_me:$LINENO: error: You must enable at least one network driver" >&5
8093-echo "$as_me: error: You must enable at least one network driver" >&2;}
8094- { (exit 1); exit 1; }; }
8095- fi
8096-fi
8097-
8098-# Check whether --enable-preset-menu or --disable-preset-menu was given.
8099-if test "${enable_preset_menu+set}" = set; then
8100- enableval="$enable_preset_menu"
8101-
8102-fi;
8103-if test "x$enable_preset_menu" = x; then
8104- :
8105-else
8106- if test -r $enable_preset_menu; then
8107-
8108-# Because early versions of GNU sed 3.x are too buggy, use a C program
8109-# instead of shell commands. *sigh*
8110-cat >conftest.c <<\EOF
8111-#include <stdio.h>
8112-
8113-int
8114-main (void)
8115-{
8116- int c;
8117-
8118- while ((c = getchar ()) != EOF)
8119- {
8120- switch (c)
8121- {
8122- case '\n':
8123- fputs ("\\n", stdout);
8124- break;
8125- case '\r':
8126- fputs ("\\r", stdout);
8127- break;
8128- case '\\':
8129- fputs ("\\\\", stdout);
8130- break;
8131- case '"':
8132- fputs ("\\\"", stdout);
8133- break;
8134- default:
8135- putchar (c);
8136- }
8137- }
8138-
8139- return 0;
8140-}
8141-EOF
8142-
8143-if { ac_try='${CC-cc} ${CFLAGS} conftest.c -o conftest'
8144- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
8145- (eval $ac_try) 2>&5
8146- ac_status=$?
8147- echo "$as_me:$LINENO: \$? = $ac_status" >&5
8148- (exit $ac_status); }; } && test -s conftest; then
8149- grub_tmp_value=`./conftest < "$enable_preset_menu"`
8150-else
8151- { { echo "$as_me:$LINENO: error: ${CC-cc} failed to produce an executable file" >&5
8152-echo "$as_me: error: ${CC-cc} failed to produce an executable file" >&2;}
8153- { (exit 1); exit 1; }; }
8154-fi
8155-
8156-
8157-cat >>confdefs.h <<_ACEOF
8158-#define PRESET_MENU_STRING "$grub_tmp_value"
8159-_ACEOF
8160-
8161-rm -f conftest*
8162-
8163- else
8164- { { echo "$as_me:$LINENO: error: Cannot read the preset menu file $enable_preset_menu" >&5
8165-echo "$as_me: error: Cannot read the preset menu file $enable_preset_menu" >&2;}
8166- { (exit 1); exit 1; }; }
8167- fi
8168-fi
8169-
8170-# Check whether --enable-example-kernel or --disable-example-kernel was given.
8171-if test "${enable_example_kernel+set}" = set; then
8172- enableval="$enable_example_kernel"
8173-
8174-fi;
8175-
8176-
8177-if test "x$enable_example_kernel" = xyes; then
8178- BUILD_EXAMPLE_KERNEL_TRUE=
8179- BUILD_EXAMPLE_KERNEL_FALSE='#'
8180-else
8181- BUILD_EXAMPLE_KERNEL_TRUE='#'
8182- BUILD_EXAMPLE_KERNEL_FALSE=
8183-fi
8184-
8185-
8186-# Check whether --enable-auto-linux-mem-opt or --disable-auto-linux-mem-opt was given.
8187-if test "${enable_auto_linux_mem_opt+set}" = set; then
8188- enableval="$enable_auto_linux_mem_opt"
8189-
8190-fi;
8191-if test "x$enable_auto_linux_mem_opt" = xno; then
8192- :
8193-else
8194-
8195-cat >>confdefs.h <<\_ACEOF
8196-#define AUTO_LINUX_MEM_OPT 1
8197-_ACEOF
8198-
8199-fi
8200-
8201-
8202-
8203-
8204-
8205-
8206-CCASFLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)'
8207-
8208-
8209-
8210- ac_config_files="$ac_config_files Makefile stage1/Makefile stage2/Makefile docs/Makefile lib/Makefile util/Makefile grub/Makefile netboot/Makefile util/grub-image util/grub-install util/grub-md5-crypt util/grub-terminfo util/grub-set-default"
8211-
8212-cat >confcache <<\_ACEOF
8213-# This file is a shell script that caches the results of configure
8214-# tests run on this system so they can be shared between configure
8215-# scripts and configure runs, see configure's option --config-cache.
8216-# It is not useful on other systems. If it contains results you don't
8217-# want to keep, you may remove or edit it.
8218-#
8219-# config.status only pays attention to the cache file if you give it
8220-# the --recheck option to rerun configure.
8221-#
8222-# `ac_cv_env_foo' variables (set or unset) will be overridden when
8223-# loading this file, other *unset* `ac_cv_foo' will be assigned the
8224-# following values.
8225-
8226-_ACEOF
8227-
8228-# The following way of writing the cache mishandles newlines in values,
8229-# but we know of no workaround that is simple, portable, and efficient.
8230-# So, don't put newlines in cache variables' values.
8231-# Ultrix sh set writes to stderr and can't be redirected directly,
8232-# and sets the high bit in the cache file unless we assign to the vars.
8233-{
8234- (set) 2>&1 |
8235- case `(ac_space=' '; set | grep ac_space) 2>&1` in
8236- *ac_space=\ *)
8237- # `set' does not quote correctly, so add quotes (double-quote
8238- # substitution turns \\\\ into \\, and sed turns \\ into \).
8239- sed -n \
8240- "s/'/'\\\\''/g;
8241- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
8242- ;;
8243- *)
8244- # `set' quotes correctly as required by POSIX, so do not add quotes.
8245- sed -n \
8246- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
8247- ;;
8248- esac;
8249-} |
8250- sed '
8251- t clear
8252- : clear
8253- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
8254- t end
8255- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
8256- : end' >>confcache
8257-if diff $cache_file confcache >/dev/null 2>&1; then :; else
8258- if test -w $cache_file; then
8259- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
8260- cat confcache >$cache_file
8261- else
8262- echo "not updating unwritable cache $cache_file"
8263- fi
8264-fi
8265-rm -f confcache
8266-
8267-test "x$prefix" = xNONE && prefix=$ac_default_prefix
8268-# Let make expand exec_prefix.
8269-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
8270-
8271-# VPATH may cause trouble with some makes, so we remove $(srcdir),
8272-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
8273-# trailing colons and then remove the whole line if VPATH becomes empty
8274-# (actually we leave an empty line to preserve line numbers).
8275-if test "x$srcdir" = x.; then
8276- ac_vpsub='/^[ ]*VPATH[ ]*=/{
8277-s/:*\$(srcdir):*/:/;
8278-s/:*\${srcdir}:*/:/;
8279-s/:*@srcdir@:*/:/;
8280-s/^\([^=]*=[ ]*\):*/\1/;
8281-s/:*$//;
8282-s/^[^=]*=[ ]*$//;
8283-}'
8284-fi
8285-
8286-DEFS=-DHAVE_CONFIG_H
8287-
8288-ac_libobjs=
8289-ac_ltlibobjs=
8290-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
8291- # 1. Remove the extension, and $U if already installed.
8292- ac_i=`echo "$ac_i" |
8293- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
8294- # 2. Add them.
8295- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
8296- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
8297-done
8298-LIBOBJS=$ac_libobjs
8299-
8300-LTLIBOBJS=$ac_ltlibobjs
8301-
8302-
8303-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
8304- { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
8305-Usually this means the macro was only invoked conditionally." >&5
8306-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
8307-Usually this means the macro was only invoked conditionally." >&2;}
8308- { (exit 1); exit 1; }; }
8309-fi
8310-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
8311- { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
8312-Usually this means the macro was only invoked conditionally." >&5
8313-echo "$as_me: error: conditional \"AMDEP\" was never defined.
8314-Usually this means the macro was only invoked conditionally." >&2;}
8315- { (exit 1); exit 1; }; }
8316-fi
8317-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
8318- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
8319-Usually this means the macro was only invoked conditionally." >&5
8320-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
8321-Usually this means the macro was only invoked conditionally." >&2;}
8322- { (exit 1); exit 1; }; }
8323-fi
8324-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
8325- { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
8326-Usually this means the macro was only invoked conditionally." >&5
8327-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
8328-Usually this means the macro was only invoked conditionally." >&2;}
8329- { (exit 1); exit 1; }; }
8330-fi
8331-if test -z "${NETBOOT_SUPPORT_TRUE}" && test -z "${NETBOOT_SUPPORT_FALSE}"; then
8332- { { echo "$as_me:$LINENO: error: conditional \"NETBOOT_SUPPORT\" was never defined.
8333-Usually this means the macro was only invoked conditionally." >&5
8334-echo "$as_me: error: conditional \"NETBOOT_SUPPORT\" was never defined.
8335-Usually this means the macro was only invoked conditionally." >&2;}
8336- { (exit 1); exit 1; }; }
8337-fi
8338-if test -z "${DISKLESS_SUPPORT_TRUE}" && test -z "${DISKLESS_SUPPORT_FALSE}"; then
8339- { { echo "$as_me:$LINENO: error: conditional \"DISKLESS_SUPPORT\" was never defined.
8340-Usually this means the macro was only invoked conditionally." >&5
8341-echo "$as_me: error: conditional \"DISKLESS_SUPPORT\" was never defined.
8342-Usually this means the macro was only invoked conditionally." >&2;}
8343- { (exit 1); exit 1; }; }
8344-fi
8345-if test -z "${HERCULES_SUPPORT_TRUE}" && test -z "${HERCULES_SUPPORT_FALSE}"; then
8346- { { echo "$as_me:$LINENO: error: conditional \"HERCULES_SUPPORT\" was never defined.
8347-Usually this means the macro was only invoked conditionally." >&5
8348-echo "$as_me: error: conditional \"HERCULES_SUPPORT\" was never defined.
8349-Usually this means the macro was only invoked conditionally." >&2;}
8350- { (exit 1); exit 1; }; }
8351-fi
8352-if test -z "${SERIAL_SUPPORT_TRUE}" && test -z "${SERIAL_SUPPORT_FALSE}"; then
8353- { { echo "$as_me:$LINENO: error: conditional \"SERIAL_SUPPORT\" was never defined.
8354-Usually this means the macro was only invoked conditionally." >&5
8355-echo "$as_me: error: conditional \"SERIAL_SUPPORT\" was never defined.
8356-Usually this means the macro was only invoked conditionally." >&2;}
8357- { (exit 1); exit 1; }; }
8358-fi
8359-if test -z "${SERIAL_SPEED_SIMULATION_TRUE}" && test -z "${SERIAL_SPEED_SIMULATION_FALSE}"; then
8360- { { echo "$as_me:$LINENO: error: conditional \"SERIAL_SPEED_SIMULATION\" was never defined.
8361-Usually this means the macro was only invoked conditionally." >&5
8362-echo "$as_me: error: conditional \"SERIAL_SPEED_SIMULATION\" was never defined.
8363-Usually this means the macro was only invoked conditionally." >&2;}
8364- { (exit 1); exit 1; }; }
8365-fi
8366-if test -z "${BUILD_EXAMPLE_KERNEL_TRUE}" && test -z "${BUILD_EXAMPLE_KERNEL_FALSE}"; then
8367- { { echo "$as_me:$LINENO: error: conditional \"BUILD_EXAMPLE_KERNEL\" was never defined.
8368-Usually this means the macro was only invoked conditionally." >&5
8369-echo "$as_me: error: conditional \"BUILD_EXAMPLE_KERNEL\" was never defined.
8370-Usually this means the macro was only invoked conditionally." >&2;}
8371- { (exit 1); exit 1; }; }
8372-fi
8373-
8374-: ${CONFIG_STATUS=./config.status}
8375-ac_clean_files_save=$ac_clean_files
8376-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
8377-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
8378-echo "$as_me: creating $CONFIG_STATUS" >&6;}
8379-cat >$CONFIG_STATUS <<_ACEOF
8380-#! $SHELL
8381-# Generated by $as_me.
8382-# Run this file to recreate the current configuration.
8383-# Compiler output produced by configure, useful for debugging
8384-# configure, is in config.log if it exists.
8385-
8386-debug=false
8387-ac_cs_recheck=false
8388-ac_cs_silent=false
8389-SHELL=\${CONFIG_SHELL-$SHELL}
8390-_ACEOF
8391-
8392-cat >>$CONFIG_STATUS <<\_ACEOF
8393-## --------------------- ##
8394-## M4sh Initialization. ##
8395-## --------------------- ##
8396-
8397-# Be Bourne compatible
8398-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
8399- emulate sh
8400- NULLCMD=:
8401- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
8402- # is contrary to our usage. Disable this feature.
8403- alias -g '${1+"$@"}'='"$@"'
8404-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
8405- set -o posix
8406-fi
8407-DUALCASE=1; export DUALCASE # for MKS sh
8408-
8409-# Support unset when possible.
8410-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
8411- as_unset=unset
8412-else
8413- as_unset=false
8414-fi
8415-
8416-
8417-# Work around bugs in pre-3.0 UWIN ksh.
8418-$as_unset ENV MAIL MAILPATH
8419-PS1='$ '
8420-PS2='> '
8421-PS4='+ '
8422-
8423-# NLS nuisances.
8424-for as_var in \
8425- LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
8426- LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
8427- LC_TELEPHONE LC_TIME
8428-do
8429- if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
8430- eval $as_var=C; export $as_var
8431- else
8432- $as_unset $as_var
8433- fi
8434-done
8435-
8436-# Required to use basename.
8437-if expr a : '\(a\)' >/dev/null 2>&1; then
8438- as_expr=expr
8439-else
8440- as_expr=false
8441-fi
8442-
8443-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
8444- as_basename=basename
8445-else
8446- as_basename=false
8447-fi
8448-
8449-
8450-# Name of the executable.
8451-as_me=`$as_basename "$0" ||
8452-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
8453- X"$0" : 'X\(//\)$' \| \
8454- X"$0" : 'X\(/\)$' \| \
8455- . : '\(.\)' 2>/dev/null ||
8456-echo X/"$0" |
8457- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
8458- /^X\/\(\/\/\)$/{ s//\1/; q; }
8459- /^X\/\(\/\).*/{ s//\1/; q; }
8460- s/.*/./; q'`
8461-
8462-
8463-# PATH needs CR, and LINENO needs CR and PATH.
8464-# Avoid depending upon Character Ranges.
8465-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
8466-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
8467-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
8468-as_cr_digits='0123456789'
8469-as_cr_alnum=$as_cr_Letters$as_cr_digits
8470-
8471-# The user is always right.
8472-if test "${PATH_SEPARATOR+set}" != set; then
8473- echo "#! /bin/sh" >conf$$.sh
8474- echo "exit 0" >>conf$$.sh
8475- chmod +x conf$$.sh
8476- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
8477- PATH_SEPARATOR=';'
8478- else
8479- PATH_SEPARATOR=:
8480- fi
8481- rm -f conf$$.sh
8482-fi
8483-
8484-
8485- as_lineno_1=$LINENO
8486- as_lineno_2=$LINENO
8487- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
8488- test "x$as_lineno_1" != "x$as_lineno_2" &&
8489- test "x$as_lineno_3" = "x$as_lineno_2" || {
8490- # Find who we are. Look in the path if we contain no path at all
8491- # relative or not.
8492- case $0 in
8493- *[\\/]* ) as_myself=$0 ;;
8494- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8495-for as_dir in $PATH
8496-do
8497- IFS=$as_save_IFS
8498- test -z "$as_dir" && as_dir=.
8499- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
8500-done
8501-
8502- ;;
8503- esac
8504- # We did not find ourselves, most probably we were run as `sh COMMAND'
8505- # in which case we are not to be found in the path.
8506- if test "x$as_myself" = x; then
8507- as_myself=$0
8508- fi
8509- if test ! -f "$as_myself"; then
8510- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
8511-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
8512- { (exit 1); exit 1; }; }
8513- fi
8514- case $CONFIG_SHELL in
8515- '')
8516- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
8517-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
8518-do
8519- IFS=$as_save_IFS
8520- test -z "$as_dir" && as_dir=.
8521- for as_base in sh bash ksh sh5; do
8522- case $as_dir in
8523- /*)
8524- if ("$as_dir/$as_base" -c '
8525- as_lineno_1=$LINENO
8526- as_lineno_2=$LINENO
8527- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
8528- test "x$as_lineno_1" != "x$as_lineno_2" &&
8529- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
8530- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
8531- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
8532- CONFIG_SHELL=$as_dir/$as_base
8533- export CONFIG_SHELL
8534- exec "$CONFIG_SHELL" "$0" ${1+"$@"}
8535- fi;;
8536- esac
8537- done
8538-done
8539-;;
8540- esac
8541-
8542- # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
8543- # uniformly replaced by the line number. The first 'sed' inserts a
8544- # line-number line before each line; the second 'sed' does the real
8545- # work. The second script uses 'N' to pair each line-number line
8546- # with the numbered line, and appends trailing '-' during
8547- # substitution so that $LINENO is not a special case at line end.
8548- # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
8549- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
8550- sed '=' <$as_myself |
8551- sed '
8552- N
8553- s,$,-,
8554- : loop
8555- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
8556- t loop
8557- s,-$,,
8558- s,^['$as_cr_digits']*\n,,
8559- ' >$as_me.lineno &&
8560- chmod +x $as_me.lineno ||
8561- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
8562-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
8563- { (exit 1); exit 1; }; }
8564-
8565- # Don't try to exec as it changes $[0], causing all sort of problems
8566- # (the dirname of $[0] is not the place where we might find the
8567- # original and so on. Autoconf is especially sensible to this).
8568- . ./$as_me.lineno
8569- # Exit status is that of the last command.
8570- exit
8571-}
8572-
8573-
8574-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
8575- *c*,-n*) ECHO_N= ECHO_C='
8576-' ECHO_T=' ' ;;
8577- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
8578- *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
8579-esac
8580-
8581-if expr a : '\(a\)' >/dev/null 2>&1; then
8582- as_expr=expr
8583-else
8584- as_expr=false
8585-fi
8586-
8587-rm -f conf$$ conf$$.exe conf$$.file
8588-echo >conf$$.file
8589-if ln -s conf$$.file conf$$ 2>/dev/null; then
8590- # We could just check for DJGPP; but this test a) works b) is more generic
8591- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
8592- if test -f conf$$.exe; then
8593- # Don't use ln at all; we don't have any links
8594- as_ln_s='cp -p'
8595- else
8596- as_ln_s='ln -s'
8597- fi
8598-elif ln conf$$.file conf$$ 2>/dev/null; then
8599- as_ln_s=ln
8600-else
8601- as_ln_s='cp -p'
8602-fi
8603-rm -f conf$$ conf$$.exe conf$$.file
8604-
8605-if mkdir -p . 2>/dev/null; then
8606- as_mkdir_p=:
8607-else
8608- test -d ./-p && rmdir ./-p
8609- as_mkdir_p=false
8610-fi
8611-
8612-as_executable_p="test -f"
8613-
8614-# Sed expression to map a string onto a valid CPP name.
8615-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
8616-
8617-# Sed expression to map a string onto a valid variable name.
8618-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
8619-
8620-
8621-# IFS
8622-# We need space, tab and new line, in precisely that order.
8623-as_nl='
8624-'
8625-IFS=" $as_nl"
8626-
8627-# CDPATH.
8628-$as_unset CDPATH
8629-
8630-exec 6>&1
8631-
8632-# Open the log real soon, to keep \$[0] and so on meaningful, and to
8633-# report actual input values of CONFIG_FILES etc. instead of their
8634-# values after options handling. Logging --version etc. is OK.
8635-exec 5>>config.log
8636-{
8637- echo
8638- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
8639-## Running $as_me. ##
8640-_ASBOX
8641-} >&5
8642-cat >&5 <<_CSEOF
8643-
8644-This file was extended by GRUB $as_me 0.97, which was
8645-generated by GNU Autoconf 2.59. Invocation command line was
8646-
8647- CONFIG_FILES = $CONFIG_FILES
8648- CONFIG_HEADERS = $CONFIG_HEADERS
8649- CONFIG_LINKS = $CONFIG_LINKS
8650- CONFIG_COMMANDS = $CONFIG_COMMANDS
8651- $ $0 $@
8652-
8653-_CSEOF
8654-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
8655-echo >&5
8656-_ACEOF
8657-
8658-# Files that config.status was made for.
8659-if test -n "$ac_config_files"; then
8660- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
8661-fi
8662-
8663-if test -n "$ac_config_headers"; then
8664- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
8665-fi
8666-
8667-if test -n "$ac_config_links"; then
8668- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
8669-fi
8670-
8671-if test -n "$ac_config_commands"; then
8672- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
8673-fi
8674-
8675-cat >>$CONFIG_STATUS <<\_ACEOF
8676-
8677-ac_cs_usage="\
8678-\`$as_me' instantiates files from templates according to the
8679-current configuration.
8680-
8681-Usage: $0 [OPTIONS] [FILE]...
8682-
8683- -h, --help print this help, then exit
8684- -V, --version print version number, then exit
8685- -q, --quiet do not print progress messages
8686- -d, --debug don't remove temporary files
8687- --recheck update $as_me by reconfiguring in the same conditions
8688- --file=FILE[:TEMPLATE]
8689- instantiate the configuration file FILE
8690- --header=FILE[:TEMPLATE]
8691- instantiate the configuration header FILE
8692-
8693-Configuration files:
8694-$config_files
8695-
8696-Configuration headers:
8697-$config_headers
8698-
8699-Configuration commands:
8700-$config_commands
8701-
8702-Report bugs to <bug-autoconf@gnu.org>."
8703-_ACEOF
8704-
8705-cat >>$CONFIG_STATUS <<_ACEOF
8706-ac_cs_version="\\
8707-GRUB config.status 0.97
8708-configured by $0, generated by GNU Autoconf 2.59,
8709- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
8710-
8711-Copyright (C) 2003 Free Software Foundation, Inc.
8712-This config.status script is free software; the Free Software Foundation
8713-gives unlimited permission to copy, distribute and modify it."
8714-srcdir=$srcdir
8715-INSTALL="$INSTALL"
8716-_ACEOF
8717-
8718-cat >>$CONFIG_STATUS <<\_ACEOF
8719-# If no file are specified by the user, then we need to provide default
8720-# value. By we need to know if files were specified by the user.
8721-ac_need_defaults=:
8722-while test $# != 0
8723-do
8724- case $1 in
8725- --*=*)
8726- ac_option=`expr "x$1" : 'x\([^=]*\)='`
8727- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
8728- ac_shift=:
8729- ;;
8730- -*)
8731- ac_option=$1
8732- ac_optarg=$2
8733- ac_shift=shift
8734- ;;
8735- *) # This is not an option, so the user has probably given explicit
8736- # arguments.
8737- ac_option=$1
8738- ac_need_defaults=false;;
8739- esac
8740-
8741- case $ac_option in
8742- # Handling of the options.
8743-_ACEOF
8744-cat >>$CONFIG_STATUS <<\_ACEOF
8745- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
8746- ac_cs_recheck=: ;;
8747- --version | --vers* | -V )
8748- echo "$ac_cs_version"; exit 0 ;;
8749- --he | --h)
8750- # Conflict between --help and --header
8751- { { echo "$as_me:$LINENO: error: ambiguous option: $1
8752-Try \`$0 --help' for more information." >&5
8753-echo "$as_me: error: ambiguous option: $1
8754-Try \`$0 --help' for more information." >&2;}
8755- { (exit 1); exit 1; }; };;
8756- --help | --hel | -h )
8757- echo "$ac_cs_usage"; exit 0 ;;
8758- --debug | --d* | -d )
8759- debug=: ;;
8760- --file | --fil | --fi | --f )
8761- $ac_shift
8762- CONFIG_FILES="$CONFIG_FILES $ac_optarg"
8763- ac_need_defaults=false;;
8764- --header | --heade | --head | --hea )
8765- $ac_shift
8766- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
8767- ac_need_defaults=false;;
8768- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
8769- | -silent | --silent | --silen | --sile | --sil | --si | --s)
8770- ac_cs_silent=: ;;
8771-
8772- # This is an error.
8773- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
8774-Try \`$0 --help' for more information." >&5
8775-echo "$as_me: error: unrecognized option: $1
8776-Try \`$0 --help' for more information." >&2;}
8777- { (exit 1); exit 1; }; } ;;
8778-
8779- *) ac_config_targets="$ac_config_targets $1" ;;
8780-
8781- esac
8782- shift
8783-done
8784-
8785-ac_configure_extra_args=
8786-
8787-if $ac_cs_silent; then
8788- exec 6>/dev/null
8789- ac_configure_extra_args="$ac_configure_extra_args --silent"
8790-fi
8791-
8792-_ACEOF
8793-cat >>$CONFIG_STATUS <<_ACEOF
8794-if \$ac_cs_recheck; then
8795- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
8796- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
8797-fi
8798-
8799-_ACEOF
8800-
8801-cat >>$CONFIG_STATUS <<_ACEOF
8802-#
8803-# INIT-COMMANDS section.
8804-#
8805-
8806-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
8807-
8808-_ACEOF
8809-
8810-
8811-
8812-cat >>$CONFIG_STATUS <<\_ACEOF
8813-for ac_config_target in $ac_config_targets
8814-do
8815- case "$ac_config_target" in
8816- # Handling of arguments.
8817- "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
8818- "stage1/Makefile" ) CONFIG_FILES="$CONFIG_FILES stage1/Makefile" ;;
8819- "stage2/Makefile" ) CONFIG_FILES="$CONFIG_FILES stage2/Makefile" ;;
8820- "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
8821- "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
8822- "util/Makefile" ) CONFIG_FILES="$CONFIG_FILES util/Makefile" ;;
8823- "grub/Makefile" ) CONFIG_FILES="$CONFIG_FILES grub/Makefile" ;;
8824- "netboot/Makefile" ) CONFIG_FILES="$CONFIG_FILES netboot/Makefile" ;;
8825- "util/grub-image" ) CONFIG_FILES="$CONFIG_FILES util/grub-image" ;;
8826- "util/grub-install" ) CONFIG_FILES="$CONFIG_FILES util/grub-install" ;;
8827- "util/grub-md5-crypt" ) CONFIG_FILES="$CONFIG_FILES util/grub-md5-crypt" ;;
8828- "util/grub-terminfo" ) CONFIG_FILES="$CONFIG_FILES util/grub-terminfo" ;;
8829- "util/grub-set-default" ) CONFIG_FILES="$CONFIG_FILES util/grub-set-default" ;;
8830- "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
8831- "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
8832- *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
8833-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
8834- { (exit 1); exit 1; }; };;
8835- esac
8836-done
8837-
8838-# If the user did not use the arguments to specify the items to instantiate,
8839-# then the envvar interface is used. Set only those that are not.
8840-# We use the long form for the default assignment because of an extremely
8841-# bizarre bug on SunOS 4.1.3.
8842-if $ac_need_defaults; then
8843- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
8844- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
8845- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
8846-fi
8847-
8848-# Have a temporary directory for convenience. Make it in the build tree
8849-# simply because there is no reason to put it here, and in addition,
8850-# creating and moving files from /tmp can sometimes cause problems.
8851-# Create a temporary directory, and hook for its removal unless debugging.
8852-$debug ||
8853-{
8854- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
8855- trap '{ (exit 1); exit 1; }' 1 2 13 15
8856-}
8857-
8858-# Create a (secure) tmp directory for tmp files.
8859-
8860-{
8861- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
8862- test -n "$tmp" && test -d "$tmp"
8863-} ||
8864-{
8865- tmp=./confstat$$-$RANDOM
8866- (umask 077 && mkdir $tmp)
8867-} ||
8868-{
8869- echo "$me: cannot create a temporary directory in ." >&2
8870- { (exit 1); exit 1; }
8871-}
8872-
8873-_ACEOF
8874-
8875-cat >>$CONFIG_STATUS <<_ACEOF
8876-
8877-#
8878-# CONFIG_FILES section.
8879-#
8880-
8881-# No need to generate the scripts if there are no CONFIG_FILES.
8882-# This happens for instance when ./config.status config.h
8883-if test -n "\$CONFIG_FILES"; then
8884- # Protect against being on the right side of a sed subst in config.status.
8885- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
8886- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
8887-s,@SHELL@,$SHELL,;t t
8888-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
8889-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
8890-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
8891-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
8892-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
8893-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
8894-s,@exec_prefix@,$exec_prefix,;t t
8895-s,@prefix@,$prefix,;t t
8896-s,@program_transform_name@,$program_transform_name,;t t
8897-s,@bindir@,$bindir,;t t
8898-s,@sbindir@,$sbindir,;t t
8899-s,@libexecdir@,$libexecdir,;t t
8900-s,@datadir@,$datadir,;t t
8901-s,@sysconfdir@,$sysconfdir,;t t
8902-s,@sharedstatedir@,$sharedstatedir,;t t
8903-s,@localstatedir@,$localstatedir,;t t
8904-s,@libdir@,$libdir,;t t
8905-s,@includedir@,$includedir,;t t
8906-s,@oldincludedir@,$oldincludedir,;t t
8907-s,@infodir@,$infodir,;t t
8908-s,@mandir@,$mandir,;t t
8909-s,@build_alias@,$build_alias,;t t
8910-s,@host_alias@,$host_alias,;t t
8911-s,@target_alias@,$target_alias,;t t
8912-s,@DEFS@,$DEFS,;t t
8913-s,@ECHO_C@,$ECHO_C,;t t
8914-s,@ECHO_N@,$ECHO_N,;t t
8915-s,@ECHO_T@,$ECHO_T,;t t
8916-s,@LIBS@,$LIBS,;t t
8917-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
8918-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
8919-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
8920-s,@CYGPATH_W@,$CYGPATH_W,;t t
8921-s,@PACKAGE@,$PACKAGE,;t t
8922-s,@VERSION@,$VERSION,;t t
8923-s,@ACLOCAL@,$ACLOCAL,;t t
8924-s,@AUTOCONF@,$AUTOCONF,;t t
8925-s,@AUTOMAKE@,$AUTOMAKE,;t t
8926-s,@AUTOHEADER@,$AUTOHEADER,;t t
8927-s,@MAKEINFO@,$MAKEINFO,;t t
8928-s,@install_sh@,$install_sh,;t t
8929-s,@STRIP@,$STRIP,;t t
8930-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
8931-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
8932-s,@mkdir_p@,$mkdir_p,;t t
8933-s,@AWK@,$AWK,;t t
8934-s,@SET_MAKE@,$SET_MAKE,;t t
8935-s,@am__leading_dot@,$am__leading_dot,;t t
8936-s,@AMTAR@,$AMTAR,;t t
8937-s,@am__tar@,$am__tar,;t t
8938-s,@am__untar@,$am__untar,;t t
8939-s,@build@,$build,;t t
8940-s,@build_cpu@,$build_cpu,;t t
8941-s,@build_vendor@,$build_vendor,;t t
8942-s,@build_os@,$build_os,;t t
8943-s,@host@,$host,;t t
8944-s,@host_cpu@,$host_cpu,;t t
8945-s,@host_vendor@,$host_vendor,;t t
8946-s,@host_os@,$host_os,;t t
8947-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
8948-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
8949-s,@MAINT@,$MAINT,;t t
8950-s,@PERL@,$PERL,;t t
8951-s,@CC@,$CC,;t t
8952-s,@ac_ct_CC@,$ac_ct_CC,;t t
8953-s,@CFLAGS@,$CFLAGS,;t t
8954-s,@LDFLAGS@,$LDFLAGS,;t t
8955-s,@CPPFLAGS@,$CPPFLAGS,;t t
8956-s,@EXEEXT@,$EXEEXT,;t t
8957-s,@OBJEXT@,$OBJEXT,;t t
8958-s,@DEPDIR@,$DEPDIR,;t t
8959-s,@am__include@,$am__include,;t t
8960-s,@am__quote@,$am__quote,;t t
8961-s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
8962-s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
8963-s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
8964-s,@CCDEPMODE@,$CCDEPMODE,;t t
8965-s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
8966-s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
8967-s,@CCAS@,$CCAS,;t t
8968-s,@RANLIB@,$RANLIB,;t t
8969-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
8970-s,@STAGE1_CFLAGS@,$STAGE1_CFLAGS,;t t
8971-s,@STAGE2_CFLAGS@,$STAGE2_CFLAGS,;t t
8972-s,@GRUB_CFLAGS@,$GRUB_CFLAGS,;t t
8973-s,@OBJCOPY@,$OBJCOPY,;t t
8974-s,@ac_ct_OBJCOPY@,$ac_ct_OBJCOPY,;t t
8975-s,@GRUB_LIBS@,$GRUB_LIBS,;t t
8976-s,@CPP@,$CPP,;t t
8977-s,@EGREP@,$EGREP,;t t
8978-s,@NETBOOT_SUPPORT_TRUE@,$NETBOOT_SUPPORT_TRUE,;t t
8979-s,@NETBOOT_SUPPORT_FALSE@,$NETBOOT_SUPPORT_FALSE,;t t
8980-s,@DISKLESS_SUPPORT_TRUE@,$DISKLESS_SUPPORT_TRUE,;t t
8981-s,@DISKLESS_SUPPORT_FALSE@,$DISKLESS_SUPPORT_FALSE,;t t
8982-s,@HERCULES_SUPPORT_TRUE@,$HERCULES_SUPPORT_TRUE,;t t
8983-s,@HERCULES_SUPPORT_FALSE@,$HERCULES_SUPPORT_FALSE,;t t
8984-s,@SERIAL_SUPPORT_TRUE@,$SERIAL_SUPPORT_TRUE,;t t
8985-s,@SERIAL_SUPPORT_FALSE@,$SERIAL_SUPPORT_FALSE,;t t
8986-s,@SERIAL_SPEED_SIMULATION_TRUE@,$SERIAL_SPEED_SIMULATION_TRUE,;t t
8987-s,@SERIAL_SPEED_SIMULATION_FALSE@,$SERIAL_SPEED_SIMULATION_FALSE,;t t
8988-s,@BUILD_EXAMPLE_KERNEL_TRUE@,$BUILD_EXAMPLE_KERNEL_TRUE,;t t
8989-s,@BUILD_EXAMPLE_KERNEL_FALSE@,$BUILD_EXAMPLE_KERNEL_FALSE,;t t
8990-s,@FSYS_CFLAGS@,$FSYS_CFLAGS,;t t
8991-s,@NET_CFLAGS@,$NET_CFLAGS,;t t
8992-s,@NET_EXTRAFLAGS@,$NET_EXTRAFLAGS,;t t
8993-s,@NETBOOT_DRIVERS@,$NETBOOT_DRIVERS,;t t
8994-s,@CCASFLAGS@,$CCASFLAGS,;t t
8995-s,@LIBOBJS@,$LIBOBJS,;t t
8996-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
8997-CEOF
8998-
8999-_ACEOF
9000-
9001- cat >>$CONFIG_STATUS <<\_ACEOF
9002- # Split the substitutions into bite-sized pieces for seds with
9003- # small command number limits, like on Digital OSF/1 and HP-UX.
9004- ac_max_sed_lines=48
9005- ac_sed_frag=1 # Number of current file.
9006- ac_beg=1 # First line for current file.
9007- ac_end=$ac_max_sed_lines # Line after last line for current file.
9008- ac_more_lines=:
9009- ac_sed_cmds=
9010- while $ac_more_lines; do
9011- if test $ac_beg -gt 1; then
9012- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
9013- else
9014- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
9015- fi
9016- if test ! -s $tmp/subs.frag; then
9017- ac_more_lines=false
9018- else
9019- # The purpose of the label and of the branching condition is to
9020- # speed up the sed processing (if there are no `@' at all, there
9021- # is no need to browse any of the substitutions).
9022- # These are the two extra sed commands mentioned above.
9023- (echo ':t
9024- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
9025- if test -z "$ac_sed_cmds"; then
9026- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
9027- else
9028- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
9029- fi
9030- ac_sed_frag=`expr $ac_sed_frag + 1`
9031- ac_beg=$ac_end
9032- ac_end=`expr $ac_end + $ac_max_sed_lines`
9033- fi
9034- done
9035- if test -z "$ac_sed_cmds"; then
9036- ac_sed_cmds=cat
9037- fi
9038-fi # test -n "$CONFIG_FILES"
9039-
9040-_ACEOF
9041-cat >>$CONFIG_STATUS <<\_ACEOF
9042-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
9043- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
9044- case $ac_file in
9045- - | *:- | *:-:* ) # input from stdin
9046- cat >$tmp/stdin
9047- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
9048- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
9049- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
9050- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
9051- * ) ac_file_in=$ac_file.in ;;
9052- esac
9053-
9054- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
9055- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
9056-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9057- X"$ac_file" : 'X\(//\)[^/]' \| \
9058- X"$ac_file" : 'X\(//\)$' \| \
9059- X"$ac_file" : 'X\(/\)' \| \
9060- . : '\(.\)' 2>/dev/null ||
9061-echo X"$ac_file" |
9062- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9063- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9064- /^X\(\/\/\)$/{ s//\1/; q; }
9065- /^X\(\/\).*/{ s//\1/; q; }
9066- s/.*/./; q'`
9067- { if $as_mkdir_p; then
9068- mkdir -p "$ac_dir"
9069- else
9070- as_dir="$ac_dir"
9071- as_dirs=
9072- while test ! -d "$as_dir"; do
9073- as_dirs="$as_dir $as_dirs"
9074- as_dir=`(dirname "$as_dir") 2>/dev/null ||
9075-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9076- X"$as_dir" : 'X\(//\)[^/]' \| \
9077- X"$as_dir" : 'X\(//\)$' \| \
9078- X"$as_dir" : 'X\(/\)' \| \
9079- . : '\(.\)' 2>/dev/null ||
9080-echo X"$as_dir" |
9081- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9082- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9083- /^X\(\/\/\)$/{ s//\1/; q; }
9084- /^X\(\/\).*/{ s//\1/; q; }
9085- s/.*/./; q'`
9086- done
9087- test ! -n "$as_dirs" || mkdir $as_dirs
9088- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
9089-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
9090- { (exit 1); exit 1; }; }; }
9091-
9092- ac_builddir=.
9093-
9094-if test "$ac_dir" != .; then
9095- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
9096- # A "../" for each directory in $ac_dir_suffix.
9097- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
9098-else
9099- ac_dir_suffix= ac_top_builddir=
9100-fi
9101-
9102-case $srcdir in
9103- .) # No --srcdir option. We are building in place.
9104- ac_srcdir=.
9105- if test -z "$ac_top_builddir"; then
9106- ac_top_srcdir=.
9107- else
9108- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
9109- fi ;;
9110- [\\/]* | ?:[\\/]* ) # Absolute path.
9111- ac_srcdir=$srcdir$ac_dir_suffix;
9112- ac_top_srcdir=$srcdir ;;
9113- *) # Relative path.
9114- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
9115- ac_top_srcdir=$ac_top_builddir$srcdir ;;
9116-esac
9117-
9118-# Do not use `cd foo && pwd` to compute absolute paths, because
9119-# the directories may not exist.
9120-case `pwd` in
9121-.) ac_abs_builddir="$ac_dir";;
9122-*)
9123- case "$ac_dir" in
9124- .) ac_abs_builddir=`pwd`;;
9125- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
9126- *) ac_abs_builddir=`pwd`/"$ac_dir";;
9127- esac;;
9128-esac
9129-case $ac_abs_builddir in
9130-.) ac_abs_top_builddir=${ac_top_builddir}.;;
9131-*)
9132- case ${ac_top_builddir}. in
9133- .) ac_abs_top_builddir=$ac_abs_builddir;;
9134- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
9135- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
9136- esac;;
9137-esac
9138-case $ac_abs_builddir in
9139-.) ac_abs_srcdir=$ac_srcdir;;
9140-*)
9141- case $ac_srcdir in
9142- .) ac_abs_srcdir=$ac_abs_builddir;;
9143- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
9144- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
9145- esac;;
9146-esac
9147-case $ac_abs_builddir in
9148-.) ac_abs_top_srcdir=$ac_top_srcdir;;
9149-*)
9150- case $ac_top_srcdir in
9151- .) ac_abs_top_srcdir=$ac_abs_builddir;;
9152- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
9153- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
9154- esac;;
9155-esac
9156-
9157-
9158- case $INSTALL in
9159- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
9160- *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
9161- esac
9162-
9163- if test x"$ac_file" != x-; then
9164- { echo "$as_me:$LINENO: creating $ac_file" >&5
9165-echo "$as_me: creating $ac_file" >&6;}
9166- rm -f "$ac_file"
9167- fi
9168- # Let's still pretend it is `configure' which instantiates (i.e., don't
9169- # use $as_me), people would be surprised to read:
9170- # /* config.h. Generated by config.status. */
9171- if test x"$ac_file" = x-; then
9172- configure_input=
9173- else
9174- configure_input="$ac_file. "
9175- fi
9176- configure_input=$configure_input"Generated from `echo $ac_file_in |
9177- sed 's,.*/,,'` by configure."
9178-
9179- # First look for the input files in the build tree, otherwise in the
9180- # src tree.
9181- ac_file_inputs=`IFS=:
9182- for f in $ac_file_in; do
9183- case $f in
9184- -) echo $tmp/stdin ;;
9185- [\\/$]*)
9186- # Absolute (can't be DOS-style, as IFS=:)
9187- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
9188-echo "$as_me: error: cannot find input file: $f" >&2;}
9189- { (exit 1); exit 1; }; }
9190- echo "$f";;
9191- *) # Relative
9192- if test -f "$f"; then
9193- # Build tree
9194- echo "$f"
9195- elif test -f "$srcdir/$f"; then
9196- # Source tree
9197- echo "$srcdir/$f"
9198- else
9199- # /dev/null tree
9200- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
9201-echo "$as_me: error: cannot find input file: $f" >&2;}
9202- { (exit 1); exit 1; }; }
9203- fi;;
9204- esac
9205- done` || { (exit 1); exit 1; }
9206-_ACEOF
9207-cat >>$CONFIG_STATUS <<_ACEOF
9208- sed "$ac_vpsub
9209-$extrasub
9210-_ACEOF
9211-cat >>$CONFIG_STATUS <<\_ACEOF
9212-:t
9213-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
9214-s,@configure_input@,$configure_input,;t t
9215-s,@srcdir@,$ac_srcdir,;t t
9216-s,@abs_srcdir@,$ac_abs_srcdir,;t t
9217-s,@top_srcdir@,$ac_top_srcdir,;t t
9218-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
9219-s,@builddir@,$ac_builddir,;t t
9220-s,@abs_builddir@,$ac_abs_builddir,;t t
9221-s,@top_builddir@,$ac_top_builddir,;t t
9222-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
9223-s,@INSTALL@,$ac_INSTALL,;t t
9224-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
9225- rm -f $tmp/stdin
9226- if test x"$ac_file" != x-; then
9227- mv $tmp/out $ac_file
9228- else
9229- cat $tmp/out
9230- rm -f $tmp/out
9231- fi
9232-
9233-done
9234-_ACEOF
9235-cat >>$CONFIG_STATUS <<\_ACEOF
9236-
9237-#
9238-# CONFIG_HEADER section.
9239-#
9240-
9241-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
9242-# NAME is the cpp macro being defined and VALUE is the value it is being given.
9243-#
9244-# ac_d sets the value in "#define NAME VALUE" lines.
9245-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
9246-ac_dB='[ ].*$,\1#\2'
9247-ac_dC=' '
9248-ac_dD=',;t'
9249-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
9250-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
9251-ac_uB='$,\1#\2define\3'
9252-ac_uC=' '
9253-ac_uD=',;t'
9254-
9255-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
9256- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
9257- case $ac_file in
9258- - | *:- | *:-:* ) # input from stdin
9259- cat >$tmp/stdin
9260- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
9261- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
9262- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
9263- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
9264- * ) ac_file_in=$ac_file.in ;;
9265- esac
9266-
9267- test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
9268-echo "$as_me: creating $ac_file" >&6;}
9269-
9270- # First look for the input files in the build tree, otherwise in the
9271- # src tree.
9272- ac_file_inputs=`IFS=:
9273- for f in $ac_file_in; do
9274- case $f in
9275- -) echo $tmp/stdin ;;
9276- [\\/$]*)
9277- # Absolute (can't be DOS-style, as IFS=:)
9278- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
9279-echo "$as_me: error: cannot find input file: $f" >&2;}
9280- { (exit 1); exit 1; }; }
9281- # Do quote $f, to prevent DOS paths from being IFS'd.
9282- echo "$f";;
9283- *) # Relative
9284- if test -f "$f"; then
9285- # Build tree
9286- echo "$f"
9287- elif test -f "$srcdir/$f"; then
9288- # Source tree
9289- echo "$srcdir/$f"
9290- else
9291- # /dev/null tree
9292- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
9293-echo "$as_me: error: cannot find input file: $f" >&2;}
9294- { (exit 1); exit 1; }; }
9295- fi;;
9296- esac
9297- done` || { (exit 1); exit 1; }
9298- # Remove the trailing spaces.
9299- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
9300-
9301-_ACEOF
9302-
9303-# Transform confdefs.h into two sed scripts, `conftest.defines' and
9304-# `conftest.undefs', that substitutes the proper values into
9305-# config.h.in to produce config.h. The first handles `#define'
9306-# templates, and the second `#undef' templates.
9307-# And first: Protect against being on the right side of a sed subst in
9308-# config.status. Protect against being in an unquoted here document
9309-# in config.status.
9310-rm -f conftest.defines conftest.undefs
9311-# Using a here document instead of a string reduces the quoting nightmare.
9312-# Putting comments in sed scripts is not portable.
9313-#
9314-# `end' is used to avoid that the second main sed command (meant for
9315-# 0-ary CPP macros) applies to n-ary macro definitions.
9316-# See the Autoconf documentation for `clear'.
9317-cat >confdef2sed.sed <<\_ACEOF
9318-s/[\\&,]/\\&/g
9319-s,[\\$`],\\&,g
9320-t clear
9321-: clear
9322-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
9323-t end
9324-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
9325-: end
9326-_ACEOF
9327-# If some macros were called several times there might be several times
9328-# the same #defines, which is useless. Nevertheless, we may not want to
9329-# sort them, since we want the *last* AC-DEFINE to be honored.
9330-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
9331-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
9332-rm -f confdef2sed.sed
9333-
9334-# This sed command replaces #undef with comments. This is necessary, for
9335-# example, in the case of _POSIX_SOURCE, which is predefined and required
9336-# on some systems where configure will not decide to define it.
9337-cat >>conftest.undefs <<\_ACEOF
9338-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
9339-_ACEOF
9340-
9341-# Break up conftest.defines because some shells have a limit on the size
9342-# of here documents, and old seds have small limits too (100 cmds).
9343-echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
9344-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
9345-echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
9346-echo ' :' >>$CONFIG_STATUS
9347-rm -f conftest.tail
9348-while grep . conftest.defines >/dev/null
9349-do
9350- # Write a limited-size here document to $tmp/defines.sed.
9351- echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
9352- # Speed up: don't consider the non `#define' lines.
9353- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
9354- # Work around the forget-to-reset-the-flag bug.
9355- echo 't clr' >>$CONFIG_STATUS
9356- echo ': clr' >>$CONFIG_STATUS
9357- sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
9358- echo 'CEOF
9359- sed -f $tmp/defines.sed $tmp/in >$tmp/out
9360- rm -f $tmp/in
9361- mv $tmp/out $tmp/in
9362-' >>$CONFIG_STATUS
9363- sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
9364- rm -f conftest.defines
9365- mv conftest.tail conftest.defines
9366-done
9367-rm -f conftest.defines
9368-echo ' fi # grep' >>$CONFIG_STATUS
9369-echo >>$CONFIG_STATUS
9370-
9371-# Break up conftest.undefs because some shells have a limit on the size
9372-# of here documents, and old seds have small limits too (100 cmds).
9373-echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
9374-rm -f conftest.tail
9375-while grep . conftest.undefs >/dev/null
9376-do
9377- # Write a limited-size here document to $tmp/undefs.sed.
9378- echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
9379- # Speed up: don't consider the non `#undef'
9380- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
9381- # Work around the forget-to-reset-the-flag bug.
9382- echo 't clr' >>$CONFIG_STATUS
9383- echo ': clr' >>$CONFIG_STATUS
9384- sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
9385- echo 'CEOF
9386- sed -f $tmp/undefs.sed $tmp/in >$tmp/out
9387- rm -f $tmp/in
9388- mv $tmp/out $tmp/in
9389-' >>$CONFIG_STATUS
9390- sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
9391- rm -f conftest.undefs
9392- mv conftest.tail conftest.undefs
9393-done
9394-rm -f conftest.undefs
9395-
9396-cat >>$CONFIG_STATUS <<\_ACEOF
9397- # Let's still pretend it is `configure' which instantiates (i.e., don't
9398- # use $as_me), people would be surprised to read:
9399- # /* config.h. Generated by config.status. */
9400- if test x"$ac_file" = x-; then
9401- echo "/* Generated by configure. */" >$tmp/config.h
9402- else
9403- echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
9404- fi
9405- cat $tmp/in >>$tmp/config.h
9406- rm -f $tmp/in
9407- if test x"$ac_file" != x-; then
9408- if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
9409- { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
9410-echo "$as_me: $ac_file is unchanged" >&6;}
9411- else
9412- ac_dir=`(dirname "$ac_file") 2>/dev/null ||
9413-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9414- X"$ac_file" : 'X\(//\)[^/]' \| \
9415- X"$ac_file" : 'X\(//\)$' \| \
9416- X"$ac_file" : 'X\(/\)' \| \
9417- . : '\(.\)' 2>/dev/null ||
9418-echo X"$ac_file" |
9419- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9420- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9421- /^X\(\/\/\)$/{ s//\1/; q; }
9422- /^X\(\/\).*/{ s//\1/; q; }
9423- s/.*/./; q'`
9424- { if $as_mkdir_p; then
9425- mkdir -p "$ac_dir"
9426- else
9427- as_dir="$ac_dir"
9428- as_dirs=
9429- while test ! -d "$as_dir"; do
9430- as_dirs="$as_dir $as_dirs"
9431- as_dir=`(dirname "$as_dir") 2>/dev/null ||
9432-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9433- X"$as_dir" : 'X\(//\)[^/]' \| \
9434- X"$as_dir" : 'X\(//\)$' \| \
9435- X"$as_dir" : 'X\(/\)' \| \
9436- . : '\(.\)' 2>/dev/null ||
9437-echo X"$as_dir" |
9438- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9439- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9440- /^X\(\/\/\)$/{ s//\1/; q; }
9441- /^X\(\/\).*/{ s//\1/; q; }
9442- s/.*/./; q'`
9443- done
9444- test ! -n "$as_dirs" || mkdir $as_dirs
9445- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
9446-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
9447- { (exit 1); exit 1; }; }; }
9448-
9449- rm -f $ac_file
9450- mv $tmp/config.h $ac_file
9451- fi
9452- else
9453- cat $tmp/config.h
9454- rm -f $tmp/config.h
9455- fi
9456-# Compute $ac_file's index in $config_headers.
9457-_am_stamp_count=1
9458-for _am_header in $config_headers :; do
9459- case $_am_header in
9460- $ac_file | $ac_file:* )
9461- break ;;
9462- * )
9463- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
9464- esac
9465-done
9466-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
9467-$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9468- X$ac_file : 'X\(//\)[^/]' \| \
9469- X$ac_file : 'X\(//\)$' \| \
9470- X$ac_file : 'X\(/\)' \| \
9471- . : '\(.\)' 2>/dev/null ||
9472-echo X$ac_file |
9473- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9474- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9475- /^X\(\/\/\)$/{ s//\1/; q; }
9476- /^X\(\/\).*/{ s//\1/; q; }
9477- s/.*/./; q'`/stamp-h$_am_stamp_count
9478-done
9479-_ACEOF
9480-cat >>$CONFIG_STATUS <<\_ACEOF
9481-
9482-#
9483-# CONFIG_COMMANDS section.
9484-#
9485-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
9486- ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
9487- ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
9488- ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
9489-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9490- X"$ac_dest" : 'X\(//\)[^/]' \| \
9491- X"$ac_dest" : 'X\(//\)$' \| \
9492- X"$ac_dest" : 'X\(/\)' \| \
9493- . : '\(.\)' 2>/dev/null ||
9494-echo X"$ac_dest" |
9495- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9496- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9497- /^X\(\/\/\)$/{ s//\1/; q; }
9498- /^X\(\/\).*/{ s//\1/; q; }
9499- s/.*/./; q'`
9500- { if $as_mkdir_p; then
9501- mkdir -p "$ac_dir"
9502- else
9503- as_dir="$ac_dir"
9504- as_dirs=
9505- while test ! -d "$as_dir"; do
9506- as_dirs="$as_dir $as_dirs"
9507- as_dir=`(dirname "$as_dir") 2>/dev/null ||
9508-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9509- X"$as_dir" : 'X\(//\)[^/]' \| \
9510- X"$as_dir" : 'X\(//\)$' \| \
9511- X"$as_dir" : 'X\(/\)' \| \
9512- . : '\(.\)' 2>/dev/null ||
9513-echo X"$as_dir" |
9514- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9515- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9516- /^X\(\/\/\)$/{ s//\1/; q; }
9517- /^X\(\/\).*/{ s//\1/; q; }
9518- s/.*/./; q'`
9519- done
9520- test ! -n "$as_dirs" || mkdir $as_dirs
9521- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
9522-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
9523- { (exit 1); exit 1; }; }; }
9524-
9525- ac_builddir=.
9526-
9527-if test "$ac_dir" != .; then
9528- ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
9529- # A "../" for each directory in $ac_dir_suffix.
9530- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
9531-else
9532- ac_dir_suffix= ac_top_builddir=
9533-fi
9534-
9535-case $srcdir in
9536- .) # No --srcdir option. We are building in place.
9537- ac_srcdir=.
9538- if test -z "$ac_top_builddir"; then
9539- ac_top_srcdir=.
9540- else
9541- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
9542- fi ;;
9543- [\\/]* | ?:[\\/]* ) # Absolute path.
9544- ac_srcdir=$srcdir$ac_dir_suffix;
9545- ac_top_srcdir=$srcdir ;;
9546- *) # Relative path.
9547- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
9548- ac_top_srcdir=$ac_top_builddir$srcdir ;;
9549-esac
9550-
9551-# Do not use `cd foo && pwd` to compute absolute paths, because
9552-# the directories may not exist.
9553-case `pwd` in
9554-.) ac_abs_builddir="$ac_dir";;
9555-*)
9556- case "$ac_dir" in
9557- .) ac_abs_builddir=`pwd`;;
9558- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
9559- *) ac_abs_builddir=`pwd`/"$ac_dir";;
9560- esac;;
9561-esac
9562-case $ac_abs_builddir in
9563-.) ac_abs_top_builddir=${ac_top_builddir}.;;
9564-*)
9565- case ${ac_top_builddir}. in
9566- .) ac_abs_top_builddir=$ac_abs_builddir;;
9567- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
9568- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
9569- esac;;
9570-esac
9571-case $ac_abs_builddir in
9572-.) ac_abs_srcdir=$ac_srcdir;;
9573-*)
9574- case $ac_srcdir in
9575- .) ac_abs_srcdir=$ac_abs_builddir;;
9576- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
9577- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
9578- esac;;
9579-esac
9580-case $ac_abs_builddir in
9581-.) ac_abs_top_srcdir=$ac_top_srcdir;;
9582-*)
9583- case $ac_top_srcdir in
9584- .) ac_abs_top_srcdir=$ac_abs_builddir;;
9585- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
9586- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
9587- esac;;
9588-esac
9589-
9590-
9591- { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
9592-echo "$as_me: executing $ac_dest commands" >&6;}
9593- case $ac_dest in
9594- depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
9595- # Strip MF so we end up with the name of the file.
9596- mf=`echo "$mf" | sed -e 's/:.*$//'`
9597- # Check whether this is an Automake generated Makefile or not.
9598- # We used to match only the files named `Makefile.in', but
9599- # some people rename them; so instead we look at the file content.
9600- # Grep'ing the first line is not enough: some people post-process
9601- # each Makefile.in and add a new line on top of each file to say so.
9602- # So let's grep whole file.
9603- if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
9604- dirpart=`(dirname "$mf") 2>/dev/null ||
9605-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9606- X"$mf" : 'X\(//\)[^/]' \| \
9607- X"$mf" : 'X\(//\)$' \| \
9608- X"$mf" : 'X\(/\)' \| \
9609- . : '\(.\)' 2>/dev/null ||
9610-echo X"$mf" |
9611- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9612- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9613- /^X\(\/\/\)$/{ s//\1/; q; }
9614- /^X\(\/\).*/{ s//\1/; q; }
9615- s/.*/./; q'`
9616- else
9617- continue
9618- fi
9619- # Extract the definition of DEPDIR, am__include, and am__quote
9620- # from the Makefile without running `make'.
9621- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
9622- test -z "$DEPDIR" && continue
9623- am__include=`sed -n 's/^am__include = //p' < "$mf"`
9624- test -z "am__include" && continue
9625- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
9626- # When using ansi2knr, U may be empty or an underscore; expand it
9627- U=`sed -n 's/^U = //p' < "$mf"`
9628- # Find all dependency output files, they are included files with
9629- # $(DEPDIR) in their names. We invoke sed twice because it is the
9630- # simplest approach to changing $(DEPDIR) to its actual value in the
9631- # expansion.
9632- for file in `sed -n "
9633- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
9634- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
9635- # Make sure the directory exists.
9636- test -f "$dirpart/$file" && continue
9637- fdir=`(dirname "$file") 2>/dev/null ||
9638-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9639- X"$file" : 'X\(//\)[^/]' \| \
9640- X"$file" : 'X\(//\)$' \| \
9641- X"$file" : 'X\(/\)' \| \
9642- . : '\(.\)' 2>/dev/null ||
9643-echo X"$file" |
9644- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9645- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9646- /^X\(\/\/\)$/{ s//\1/; q; }
9647- /^X\(\/\).*/{ s//\1/; q; }
9648- s/.*/./; q'`
9649- { if $as_mkdir_p; then
9650- mkdir -p $dirpart/$fdir
9651- else
9652- as_dir=$dirpart/$fdir
9653- as_dirs=
9654- while test ! -d "$as_dir"; do
9655- as_dirs="$as_dir $as_dirs"
9656- as_dir=`(dirname "$as_dir") 2>/dev/null ||
9657-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
9658- X"$as_dir" : 'X\(//\)[^/]' \| \
9659- X"$as_dir" : 'X\(//\)$' \| \
9660- X"$as_dir" : 'X\(/\)' \| \
9661- . : '\(.\)' 2>/dev/null ||
9662-echo X"$as_dir" |
9663- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
9664- /^X\(\/\/\)[^/].*/{ s//\1/; q; }
9665- /^X\(\/\/\)$/{ s//\1/; q; }
9666- /^X\(\/\).*/{ s//\1/; q; }
9667- s/.*/./; q'`
9668- done
9669- test ! -n "$as_dirs" || mkdir $as_dirs
9670- fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
9671-echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
9672- { (exit 1); exit 1; }; }; }
9673-
9674- # echo "creating $dirpart/$file"
9675- echo '# dummy' > "$dirpart/$file"
9676- done
9677-done
9678- ;;
9679- esac
9680-done
9681-_ACEOF
9682-
9683-cat >>$CONFIG_STATUS <<\_ACEOF
9684-
9685-{ (exit 0); exit 0; }
9686-_ACEOF
9687-chmod +x $CONFIG_STATUS
9688-ac_clean_files=$ac_clean_files_save
9689-
9690-
9691-# configure is writing to config.log, and then calls config.status.
9692-# config.status does its own redirection, appending to config.log.
9693-# Unfortunately, on DOS this fails, as config.log is still kept open
9694-# by configure, so config.status won't be able to write to it; its
9695-# output is simply discarded. So we exec the FD to /dev/null,
9696-# effectively closing config.log, so it can be properly (re)opened and
9697-# appended to by config.status. When coming back to configure, we
9698-# need to make the FD available again.
9699-if test "$no_create" != yes; then
9700- ac_cs_success=:
9701- ac_config_status_args=
9702- test "$silent" = yes &&
9703- ac_config_status_args="$ac_config_status_args --quiet"
9704- exec 5>/dev/null
9705- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
9706- exec 5>>config.log
9707- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
9708- # would make configure fail if this is the last instruction.
9709- $ac_cs_success || { (exit 1); exit 1; }
9710-fi
9711-
9712diff --git a/configure.ac b/configure.in
9713similarity index 86%
9714rename from configure.ac
9715rename to configure.in
9716index bb9e1d9..e5970af 100644
9717--- a/configure.ac
9718+++ b/configure.in
9719@@ -29,6 +29,65 @@ esac
9720 AC_SUBST(host_cpu)
9721 AC_SUBST(host_vendor)
9722
9723+# Specify the platform (such as firmware).
9724+AC_ARG_WITH([platform],
9725+ AS_HELP_STRING([--with-platform=PLATFORM],
9726+ [select the host platform [[guessed]]]))
9727+
9728+# Guess the platform if not specified.
9729+if test "x$with_platform" = x; then
9730+ case "$host_cpu"-"$host_vendor" in
9731+ i386-*) platform=pc ;;
9732+ x86_64-*) platform=pc ;;
9733+ *) AC_MSG_ERROR([unsupported machine type $host_cpu-$host_vendor]) ;;
9734+ esac
9735+else
9736+ platform="$with_platform"
9737+fi
9738+
9739+# Sanity check.
9740+case "$host_cpu"-"$platform" in
9741+ i386-pc) ;;
9742+ i386-efi) ;;
9743+ x86_64-pc) ;;
9744+ x86_64-efi) ;;
9745+ *) AC_MSG_ERROR([unsupported machine type "$host_cpu"-"$platform"]) ;;
9746+esac
9747+
9748+if test "x$platform" = xefi; then
9749+ case "$host_cpu" in
9750+ i386) EFI_ARCH=ia32 ;;
9751+ x86_64) EFI_ARCH=x86_64 ;;
9752+ *) AC_MSG_ERROR([unsupported machine type "$host_cpu"]) ;;
9753+ esac
9754+ AC_SUBST(EFI_ARCH)
9755+fi
9756+
9757+gnuefi_path=${libdir}/gnuefi
9758+gnuefi_crt0=${gnuefi_path}/crt0-efi-${EFI_ARCH}.o
9759+if ! test -f $gnuefi_crt0 ; then
9760+ gnuefi_crt0=crt0-efi.o
9761+fi
9762+GNUEFI_CRT0=${gnuefi_crt0}
9763+AC_SUBST(GNUEFI_CRT0)
9764+gnuefi_lds=${gnuefi_path}/elf_${EFI_ARCH}_efi.lds
9765+if ! test -f $gnuefi_lds ; then
9766+ gnuefi_lds=${EFI_ARCH}/elf_efi.lds
9767+fi
9768+GNUEFI_LDS=${gnuefi_lds}
9769+AC_SUBST(GNUEFI_LDS)
9770+LIBGNUEFI=${libdir}/libgnuefi.a
9771+AC_SUBST(LIBGNUEFI)
9772+LIBEFI=${libdir}/libefi.a
9773+AC_SUBST(LIBEFI)
9774+
9775+AC_SUBST(platform)
9776+AM_CONDITIONAL(PLATFORM_EFI, test "x$platform" = xefi)
9777+
9778+if test "x$platform" = xefi; then
9779+ AC_DEFINE(PLATFORM_EFI, 1, [Define if you run on EFI platform.])
9780+fi
9781+
9782 #
9783 # Options
9784 #
9785@@ -46,7 +105,7 @@ if test "x$CFLAGS" = x; then
9786 default_CFLAGS=yes
9787 fi
9788
9789-if test "x$host_cpu" = xx86_64; then
9790+if test "x$platform" = xpc -a "x$host_cpu" = xx86_64; then
9791 CFLAGS="-m32 $CFLAGS"
9792 fi
9793
9794@@ -63,6 +122,8 @@ dnl Because recent automake complains about AS, set it here.
9795 CCAS="$CC"
9796 AC_SUBST(CCAS)
9797
9798+_AM_DEPENDENCIES(CCAS)
9799+
9800 AC_ARG_WITH(binutils,
9801 [ --with-binutils=DIR search the directory DIR to find binutils])
9802
9803@@ -114,6 +175,20 @@ if test "x$ac_cv_prog_gcc" = xyes; then
9804 fi
9805 fi
9806 fi
9807+STAGE2_CFLAGS="$STAGE2_CFLAGS -isystem `$CC -print-file-name=include`"
9808+
9809+LIBGCC=$(gcc $CFLAGS -static-libgcc -print-libgcc-file-name)
9810+AC_SUBST(LIBGCC)
9811+
9812+LOADER_LDFLAGS="-Wl,--build-id=none ${LIBGCC}"
9813+AC_SUBST(LOADER_LDFLAGS)
9814+
9815+if test "x$platform" = xefi; then
9816+ STAGE2_CFLAGS="$STAGE2_CFLAGS -fpic -fshort-wchar -fno-strict-aliasing -fno-merge-constants -fno-reorder-functions"
9817+ if test "x$EFI_ARCH" = xx86_64; then
9818+ STAGE2_CFLAGS="$STAGE2_CFLAGS -DEFI_FUNCTION_WRAPPER"
9819+ fi
9820+fi
9821
9822 AC_SUBST(STAGE1_CFLAGS)
9823 AC_SUBST(STAGE2_CFLAGS)
9824@@ -159,9 +234,12 @@ fi
9825
9826 # Defined in acinclude.m4.
9827 grub_ASM_USCORE
9828-grub_PROG_OBJCOPY_ABSOLUTE
9829-if test "x$grub_cv_prog_objcopy_absolute" != xyes; then
9830- AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils])
9831+
9832+if test "x$platform" != xefi; then
9833+ grub_PROG_OBJCOPY_ABSOLUTE
9834+ if test "x$grub_cv_prog_objcopy_absolute" != xyes; then
9835+ AC_MSG_ERROR([GRUB requires a working absolute objcopy; upgrade your binutils])
9836+ fi
9837 fi
9838
9839 grub_ASM_PREFIX_REQUIREMENT
9840@@ -207,9 +285,9 @@ AC_CHECK_LIB(util, opendisk, [GRUB_LIBS="$GRUB_LIBS -lutil"
9841
9842 # Unless the user specify --without-curses, check for curses.
9843 if test "x$with_curses" != "xno"; then
9844- AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lncurses"
9845+ AC_CHECK_LIB(ncurses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lncurses -ltinfo -Wl,-Bdynamic"
9846 AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])],
9847- [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -lcurses"
9848+ [AC_CHECK_LIB(curses, wgetch, [GRUB_LIBS="$GRUB_LIBS -Wl,-Bstatic -lcurses -Wl,-Bdynamic"
9849 AC_DEFINE(HAVE_LIBCURSES, 1, [Define if you have a curses library])])])
9850 fi
9851
9852@@ -595,9 +673,18 @@ AC_ARG_ENABLE(diskless,
9853 [ --enable-diskless enable diskless support])
9854 AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes)
9855
9856+dnl Graphical splashscreen support
9857+AC_ARG_ENABLE(graphics,
9858+ [ --disable-graphics disable graphics terminal support])
9859+AM_CONDITIONAL(GRAPHICS_SUPPORT, test "x$enable_graphics" != xno)
9860+
9861 dnl Hercules terminal
9862-AC_ARG_ENABLE(hercules,
9863- [ --disable-hercules disable hercules terminal support])
9864+if test "x$platform" = xefi; then
9865+ enable_hercules=no
9866+else
9867+ AC_ARG_ENABLE(hercules,
9868+ [ --disable-hercules disable hercules terminal support])
9869+fi
9870 AM_CONDITIONAL(HERCULES_SUPPORT, test "x$enable_hercules" != xno)
9871
9872 dnl Serial terminal
9873@@ -662,9 +749,13 @@ AC_SUBST(CCASFLAGS)
9874
9875
9876 dnl Output.
9877+if test "x$platform" = xefi; then
9878+ AC_CONFIG_FILES([efi/Makefile])
9879+ AC_CONFIG_LINKS([efi/grub/cpu:efi/grub/$host_cpu])
9880+fi
9881 AC_CONFIG_FILES([Makefile stage1/Makefile stage2/Makefile \
9882 docs/Makefile lib/Makefile util/Makefile \
9883- grub/Makefile netboot/Makefile util/grub-image \
9884- util/grub-install util/grub-md5-crypt \
9885- util/grub-terminfo util/grub-set-default])
9886+ grub/Makefile netboot/Makefile util/grub-crypt \
9887+ util/grub-image util/grub-install util/grub-md5-crypt \
9888+ util/grub-terminfo])
9889 AC_OUTPUT
9890diff --git a/docs/.gitignore b/docs/.gitignore
9891new file mode 100644
9892index 0000000..e440faf
9893--- /dev/null
9894+++ b/docs/.gitignore
9895@@ -0,0 +1,3 @@
9896+Makefile.in
9897+Makefile
9898+.deps
9899diff --git a/docs/Makefile.am b/docs/Makefile.am
9900index db99e2d..fe6b22b 100644
9901--- a/docs/Makefile.am
9902+++ b/docs/Makefile.am
9903@@ -2,7 +2,8 @@ info_TEXINFOS = grub.texi multiboot.texi
9904 grub_TEXINFOS = internals.texi
9905 EXAMPLES = boot.S kernel.c multiboot.h
9906 multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi
9907-man_MANS = grub.8 mbchk.1 grub-install.8 grub-md5-crypt.8 grub-terminfo.8
9908+man_MANS = grub.8 mbchk.1 grub-crypt.8 grub-install.8 grub-md5-crypt.8 \
9909+ grub-terminfo.8
9910 HELP2MAN = help2man
9911 SRC2TEXI = src2texi
9912 noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI)
9913@@ -51,6 +52,12 @@ $(srcdir)/mbchk.1: ../util/mbchk $(srcdir)/$(HELP2MAN)
9914 --name="check the format of a Multiboot kernel" \
9915 --section=1 --output=$@ $<
9916
9917+$(srcdir)/grub-crypt.8: ../util/grub-crypt $(srcdir)/$(HELP2MAN)
9918+ chmod 755 $<
9919+ $(PERL) $(srcdir)/$(HELP2MAN) \
9920+ --name="Encrypt a password" \
9921+ --section=8 --output=$@ $<
9922+
9923 $(srcdir)/grub-md5-crypt.8: ../util/grub-md5-crypt $(srcdir)/$(HELP2MAN)
9924 chmod 755 $<
9925 $(PERL) $(srcdir)/$(HELP2MAN) \
9926diff --git a/docs/Makefile.in b/docs/Makefile.in
9927deleted file mode 100644
9928index 3e2de4b..0000000
9929--- a/docs/Makefile.in
9930+++ /dev/null
9931@@ -1,770 +0,0 @@
9932-# Makefile.in generated by automake 1.9.4 from Makefile.am.
9933-# @configure_input@
9934-
9935-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
9936-# 2003, 2004 Free Software Foundation, Inc.
9937-# This Makefile.in is free software; the Free Software Foundation
9938-# gives unlimited permission to copy and/or distribute it,
9939-# with or without modifications, as long as this notice is preserved.
9940-
9941-# This program is distributed in the hope that it will be useful,
9942-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
9943-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
9944-# PARTICULAR PURPOSE.
9945-
9946-@SET_MAKE@
9947-
9948-
9949-SOURCES = $(kernel_SOURCES)
9950-
9951-srcdir = @srcdir@
9952-top_srcdir = @top_srcdir@
9953-VPATH = @srcdir@
9954-pkgdatadir = $(datadir)/@PACKAGE@
9955-pkglibdir = $(libdir)/@PACKAGE@
9956-pkgincludedir = $(includedir)/@PACKAGE@
9957-top_builddir = ..
9958-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
9959-INSTALL = @INSTALL@
9960-install_sh_DATA = $(install_sh) -c -m 644
9961-install_sh_PROGRAM = $(install_sh) -c
9962-install_sh_SCRIPT = $(install_sh) -c
9963-INSTALL_HEADER = $(INSTALL_DATA)
9964-transform = $(program_transform_name)
9965-NORMAL_INSTALL = :
9966-PRE_INSTALL = :
9967-POST_INSTALL = :
9968-NORMAL_UNINSTALL = :
9969-PRE_UNINSTALL = :
9970-POST_UNINSTALL = :
9971-build_triplet = @build@
9972-host_triplet = @host@
9973-EXTRA_PROGRAMS = kernel$(EXEEXT)
9974-@BUILD_EXAMPLE_KERNEL_TRUE@noinst_PROGRAMS = kernel$(EXEEXT)
9975-subdir = docs
9976-DIST_COMMON = $(grub_TEXINFOS) $(multiboot_TEXINFOS) \
9977- $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
9978- $(srcdir)/stamp-vti $(srcdir)/version.texi mdate-sh \
9979- texinfo.tex
9980-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
9981-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
9982- $(top_srcdir)/configure.ac
9983-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
9984- $(ACLOCAL_M4)
9985-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
9986-CONFIG_HEADER = $(top_builddir)/config.h
9987-CONFIG_CLEAN_FILES =
9988-PROGRAMS = $(noinst_PROGRAMS)
9989-am__kernel_SOURCES_DIST = boot.S kernel.c multiboot.h
9990-am__objects_1 = boot.$(OBJEXT) kernel-kernel.$(OBJEXT)
9991-@BUILD_EXAMPLE_KERNEL_TRUE@am_kernel_OBJECTS = $(am__objects_1)
9992-kernel_OBJECTS = $(am_kernel_OBJECTS)
9993-kernel_LDADD = $(LDADD)
9994-SCRIPTS = $(noinst_SCRIPTS)
9995-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
9996-depcomp = $(SHELL) $(top_srcdir)/depcomp
9997-am__depfiles_maybe = depfiles
9998-CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS)
9999-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
10000- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
10001-CCLD = $(CC)
10002-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
10003-SOURCES = $(kernel_SOURCES)
10004-DIST_SOURCES = $(am__kernel_SOURCES_DIST)
10005-INFO_DEPS = $(srcdir)/grub.info $(srcdir)/multiboot.info
10006-am__TEXINFO_TEX_DIR = $(srcdir)
10007-DVIS = grub.dvi multiboot.dvi
10008-PDFS = grub.pdf multiboot.pdf
10009-PSS = grub.ps multiboot.ps
10010-HTMLS = grub.html multiboot.html
10011-TEXINFOS = grub.texi multiboot.texi
10012-TEXI2DVI = texi2dvi
10013-TEXI2PDF = $(TEXI2DVI) --pdf --batch
10014-MAKEINFOHTML = $(MAKEINFO) --html
10015-AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
10016-DVIPS = dvips
10017-am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \
10018- "$(DESTDIR)$(man8dir)"
10019-man1dir = $(mandir)/man1
10020-man8dir = $(mandir)/man8
10021-NROFF = nroff
10022-MANS = $(man_MANS)
10023-ETAGS = etags
10024-CTAGS = ctags
10025-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
10026-ACLOCAL = @ACLOCAL@
10027-AMDEP_FALSE = @AMDEP_FALSE@
10028-AMDEP_TRUE = @AMDEP_TRUE@
10029-AMTAR = @AMTAR@
10030-AUTOCONF = @AUTOCONF@
10031-AUTOHEADER = @AUTOHEADER@
10032-AUTOMAKE = @AUTOMAKE@
10033-AWK = @AWK@
10034-BUILD_EXAMPLE_KERNEL_FALSE = @BUILD_EXAMPLE_KERNEL_FALSE@
10035-BUILD_EXAMPLE_KERNEL_TRUE = @BUILD_EXAMPLE_KERNEL_TRUE@
10036-CC = @CC@
10037-CCAS = @CCAS@
10038-CCASFLAGS = @CCASFLAGS@
10039-CCDEPMODE = @CCDEPMODE@
10040-CFLAGS = @CFLAGS@
10041-CPP = @CPP@
10042-CPPFLAGS = @CPPFLAGS@
10043-CYGPATH_W = @CYGPATH_W@
10044-DEFS = @DEFS@
10045-DEPDIR = @DEPDIR@
10046-DISKLESS_SUPPORT_FALSE = @DISKLESS_SUPPORT_FALSE@
10047-DISKLESS_SUPPORT_TRUE = @DISKLESS_SUPPORT_TRUE@
10048-ECHO_C = @ECHO_C@
10049-ECHO_N = @ECHO_N@
10050-ECHO_T = @ECHO_T@
10051-EGREP = @EGREP@
10052-EXEEXT = @EXEEXT@
10053-FSYS_CFLAGS = @FSYS_CFLAGS@
10054-GRUB_CFLAGS = @GRUB_CFLAGS@
10055-GRUB_LIBS = @GRUB_LIBS@
10056-HERCULES_SUPPORT_FALSE = @HERCULES_SUPPORT_FALSE@
10057-HERCULES_SUPPORT_TRUE = @HERCULES_SUPPORT_TRUE@
10058-INSTALL_DATA = @INSTALL_DATA@
10059-INSTALL_PROGRAM = @INSTALL_PROGRAM@
10060-INSTALL_SCRIPT = @INSTALL_SCRIPT@
10061-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
10062-LDFLAGS = @LDFLAGS@
10063-LIBOBJS = @LIBOBJS@
10064-LIBS = @LIBS@
10065-LTLIBOBJS = @LTLIBOBJS@
10066-MAINT = @MAINT@
10067-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
10068-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
10069-MAKEINFO = @MAKEINFO@
10070-NETBOOT_DRIVERS = @NETBOOT_DRIVERS@
10071-NETBOOT_SUPPORT_FALSE = @NETBOOT_SUPPORT_FALSE@
10072-NETBOOT_SUPPORT_TRUE = @NETBOOT_SUPPORT_TRUE@
10073-NET_CFLAGS = @NET_CFLAGS@
10074-NET_EXTRAFLAGS = @NET_EXTRAFLAGS@
10075-OBJCOPY = @OBJCOPY@
10076-OBJEXT = @OBJEXT@
10077-PACKAGE = @PACKAGE@
10078-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
10079-PACKAGE_NAME = @PACKAGE_NAME@
10080-PACKAGE_STRING = @PACKAGE_STRING@
10081-PACKAGE_TARNAME = @PACKAGE_TARNAME@
10082-PACKAGE_VERSION = @PACKAGE_VERSION@
10083-PATH_SEPARATOR = @PATH_SEPARATOR@
10084-PERL = @PERL@
10085-RANLIB = @RANLIB@
10086-SERIAL_SPEED_SIMULATION_FALSE = @SERIAL_SPEED_SIMULATION_FALSE@
10087-SERIAL_SPEED_SIMULATION_TRUE = @SERIAL_SPEED_SIMULATION_TRUE@
10088-SERIAL_SUPPORT_FALSE = @SERIAL_SUPPORT_FALSE@
10089-SERIAL_SUPPORT_TRUE = @SERIAL_SUPPORT_TRUE@
10090-SET_MAKE = @SET_MAKE@
10091-SHELL = @SHELL@
10092-STAGE1_CFLAGS = @STAGE1_CFLAGS@
10093-STAGE2_CFLAGS = @STAGE2_CFLAGS@
10094-STRIP = @STRIP@
10095-VERSION = @VERSION@
10096-ac_ct_CC = @ac_ct_CC@
10097-ac_ct_OBJCOPY = @ac_ct_OBJCOPY@
10098-ac_ct_RANLIB = @ac_ct_RANLIB@
10099-ac_ct_STRIP = @ac_ct_STRIP@
10100-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
10101-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
10102-am__include = @am__include@
10103-am__leading_dot = @am__leading_dot@
10104-am__quote = @am__quote@
10105-am__tar = @am__tar@
10106-am__untar = @am__untar@
10107-bindir = @bindir@
10108-build = @build@
10109-build_alias = @build_alias@
10110-build_cpu = @build_cpu@
10111-build_os = @build_os@
10112-build_vendor = @build_vendor@
10113-datadir = @datadir@
10114-exec_prefix = @exec_prefix@
10115-host = @host@
10116-host_alias = @host_alias@
10117-host_cpu = @host_cpu@
10118-host_os = @host_os@
10119-host_vendor = @host_vendor@
10120-includedir = @includedir@
10121-infodir = @infodir@
10122-install_sh = @install_sh@
10123-libdir = @libdir@
10124-libexecdir = @libexecdir@
10125-localstatedir = @localstatedir@
10126-mandir = @mandir@
10127-mkdir_p = @mkdir_p@
10128-oldincludedir = @oldincludedir@
10129-prefix = @prefix@
10130-program_transform_name = @program_transform_name@
10131-sbindir = @sbindir@
10132-sharedstatedir = @sharedstatedir@
10133-sysconfdir = @sysconfdir@
10134-target_alias = @target_alias@
10135-info_TEXINFOS = grub.texi multiboot.texi
10136-grub_TEXINFOS = internals.texi
10137-EXAMPLES = boot.S kernel.c multiboot.h
10138-multiboot_TEXINFOS = boot.S.texi kernel.c.texi multiboot.h.texi
10139-man_MANS = grub.8 mbchk.1 grub-install.8 grub-md5-crypt.8 grub-terminfo.8
10140-HELP2MAN = help2man
10141-SRC2TEXI = src2texi
10142-noinst_SCRIPTS = $(HELP2MAN) $(SRC2TEXI)
10143-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_SOURCES = $(EXAMPLES)
10144-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_CFLAGS = -fno-builtin -nostdinc -O -g -Wall \
10145-@BUILD_EXAMPLE_KERNEL_TRUE@ -imacros $(top_builddir)/config.h
10146-
10147-@BUILD_EXAMPLE_KERNEL_TRUE@kernel_LDFLAGS = -nostdlib -Wl,-N -Wl,-Ttext -Wl,100000
10148-EXTRA_DIST = menu.lst $(man_MANS) $(noinst_SCRIPTS) \
10149- $(EXAMPLES) $(multiboot_TEXINFOS)
10150-
10151-CLEANFILES = $(noinst_PROGRAMS)
10152-all: all-am
10153-
10154-.SUFFIXES:
10155-.SUFFIXES: .S .c .dvi .html .info .o .obj .pdf .ps .texi
10156-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
10157- @for dep in $?; do \
10158- case '$(am__configure_deps)' in \
10159- *$$dep*) \
10160- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
10161- && exit 0; \
10162- exit 1;; \
10163- esac; \
10164- done; \
10165- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
10166- cd $(top_srcdir) && \
10167- $(AUTOMAKE) --gnu docs/Makefile
10168-.PRECIOUS: Makefile
10169-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
10170- @case '$?' in \
10171- *config.status*) \
10172- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
10173- *) \
10174- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
10175- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
10176- esac;
10177-
10178-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
10179- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
10180-
10181-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
10182- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
10183-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
10184- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
10185-
10186-clean-noinstPROGRAMS:
10187- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
10188-kernel$(EXEEXT): $(kernel_OBJECTS) $(kernel_DEPENDENCIES)
10189- @rm -f kernel$(EXEEXT)
10190- $(LINK) $(kernel_LDFLAGS) $(kernel_OBJECTS) $(kernel_LDADD) $(LIBS)
10191-
10192-mostlyclean-compile:
10193- -rm -f *.$(OBJEXT)
10194-
10195-distclean-compile:
10196- -rm -f *.tab.c
10197-
10198-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kernel-kernel.Po@am__quote@
10199-
10200-.S.o:
10201- $(CCASCOMPILE) -c $<
10202-
10203-.S.obj:
10204- $(CCASCOMPILE) -c `$(CYGPATH_W) '$<'`
10205-
10206-.c.o:
10207-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
10208-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
10209-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
10210-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
10211-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
10212-
10213-.c.obj:
10214-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
10215-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
10216-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
10217-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
10218-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
10219-
10220-kernel-kernel.o: kernel.c
10221-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -MT kernel-kernel.o -MD -MP -MF "$(DEPDIR)/kernel-kernel.Tpo" -c -o kernel-kernel.o `test -f 'kernel.c' || echo '$(srcdir)/'`kernel.c; \
10222-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/kernel-kernel.Tpo" "$(DEPDIR)/kernel-kernel.Po"; else rm -f "$(DEPDIR)/kernel-kernel.Tpo"; exit 1; fi
10223-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='kernel.c' object='kernel-kernel.o' libtool=no @AMDEPBACKSLASH@
10224-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
10225-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -c -o kernel-kernel.o `test -f 'kernel.c' || echo '$(srcdir)/'`kernel.c
10226-
10227-kernel-kernel.obj: kernel.c
10228-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -MT kernel-kernel.obj -MD -MP -MF "$(DEPDIR)/kernel-kernel.Tpo" -c -o kernel-kernel.obj `if test -f 'kernel.c'; then $(CYGPATH_W) 'kernel.c'; else $(CYGPATH_W) '$(srcdir)/kernel.c'; fi`; \
10229-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/kernel-kernel.Tpo" "$(DEPDIR)/kernel-kernel.Po"; else rm -f "$(DEPDIR)/kernel-kernel.Tpo"; exit 1; fi
10230-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='kernel.c' object='kernel-kernel.obj' libtool=no @AMDEPBACKSLASH@
10231-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
10232-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(kernel_CFLAGS) $(CFLAGS) -c -o kernel-kernel.obj `if test -f 'kernel.c'; then $(CYGPATH_W) 'kernel.c'; else $(CYGPATH_W) '$(srcdir)/kernel.c'; fi`
10233-
10234-.texi.info:
10235- restore=: && backupdir="$(am__leading_dot)am$$$$" && \
10236- am__cwd=`pwd` && cd $(srcdir) && \
10237- rm -rf $$backupdir && mkdir $$backupdir && \
10238- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
10239- if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
10240- done; \
10241- cd "$$am__cwd"; \
10242- if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
10243- -o $@ $<; \
10244- then \
10245- rc=0; \
10246- cd $(srcdir); \
10247- else \
10248- rc=$$?; \
10249- cd $(srcdir) && \
10250- $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
10251- fi; \
10252- rm -rf $$backupdir; exit $$rc
10253-
10254-.texi.dvi:
10255- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
10256- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
10257- $(TEXI2DVI) $<
10258-
10259-.texi.pdf:
10260- TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
10261- MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
10262- $(TEXI2PDF) $<
10263-
10264-.texi.html:
10265- rm -rf $(@:.html=.htp)
10266- if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
10267- -o $(@:.html=.htp) $<; \
10268- then \
10269- rm -rf $@; \
10270- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
10271- mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
10272- else \
10273- if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
10274- rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
10275- exit 1; \
10276- fi
10277-$(srcdir)/grub.info: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
10278-grub.dvi: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
10279-grub.pdf: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
10280-grub.html: grub.texi $(srcdir)/version.texi $(grub_TEXINFOS)
10281-$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti
10282-$(srcdir)/stamp-vti: grub.texi $(top_srcdir)/configure
10283- @(dir=.; test -f ./grub.texi || dir=$(srcdir); \
10284- set `$(SHELL) $(srcdir)/mdate-sh $$dir/grub.texi`; \
10285- echo "@set UPDATED $$1 $$2 $$3"; \
10286- echo "@set UPDATED-MONTH $$2 $$3"; \
10287- echo "@set EDITION $(VERSION)"; \
10288- echo "@set VERSION $(VERSION)") > vti.tmp
10289- @cmp -s vti.tmp $(srcdir)/version.texi \
10290- || (echo "Updating $(srcdir)/version.texi"; \
10291- cp vti.tmp $(srcdir)/version.texi)
10292- -@rm -f vti.tmp
10293- @cp $(srcdir)/version.texi $@
10294-
10295-mostlyclean-vti:
10296- -rm -f vti.tmp
10297-
10298-maintainer-clean-vti:
10299-@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
10300-$(srcdir)/multiboot.info: multiboot.texi $(multiboot_TEXINFOS)
10301-multiboot.dvi: multiboot.texi $(multiboot_TEXINFOS)
10302-multiboot.pdf: multiboot.texi $(multiboot_TEXINFOS)
10303-multiboot.html: multiboot.texi $(multiboot_TEXINFOS)
10304-.dvi.ps:
10305- $(DVIPS) -o $@ $<
10306-
10307-uninstall-info-am:
10308- $(PRE_UNINSTALL)
10309- @if (install-info --version && \
10310- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
10311- list='$(INFO_DEPS)'; \
10312- for file in $$list; do \
10313- relfile=`echo "$$file" | sed 's|^.*/||'`; \
10314- echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
10315- install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
10316- done; \
10317- else :; fi
10318- @$(NORMAL_UNINSTALL)
10319- @list='$(INFO_DEPS)'; \
10320- for file in $$list; do \
10321- relfile=`echo "$$file" | sed 's|^.*/||'`; \
10322- relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
10323- (if cd "$(DESTDIR)$(infodir)"; then \
10324- echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
10325- rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
10326- else :; fi); \
10327- done
10328-
10329-dist-info: $(INFO_DEPS)
10330- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
10331- list='$(INFO_DEPS)'; \
10332- for base in $$list; do \
10333- case $$base in \
10334- $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
10335- esac; \
10336- if test -f $$base; then d=.; else d=$(srcdir); fi; \
10337- for file in $$d/$$base*; do \
10338- relfile=`expr "$$file" : "$$d/\(.*\)"`; \
10339- test -f $(distdir)/$$relfile || \
10340- cp -p $$file $(distdir)/$$relfile; \
10341- done; \
10342- done
10343-
10344-mostlyclean-aminfo:
10345- -rm -rf grub.aux grub.cp grub.cps grub.fn grub.ky grub.log grub.pg grub.tmp \
10346- grub.toc grub.tp grub.vr grub.dvi grub.pdf grub.ps grub.html \
10347- multiboot.aux multiboot.cp multiboot.cps multiboot.fn \
10348- multiboot.ky multiboot.log multiboot.pg multiboot.tmp \
10349- multiboot.toc multiboot.tp multiboot.vr multiboot.dvi \
10350- multiboot.pdf multiboot.ps multiboot.html
10351-
10352-maintainer-clean-aminfo:
10353- @list='$(INFO_DEPS)'; for i in $$list; do \
10354- i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
10355- echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
10356- rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
10357- done
10358-install-man1: $(man1_MANS) $(man_MANS)
10359- @$(NORMAL_INSTALL)
10360- test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
10361- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
10362- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
10363- for i in $$l2; do \
10364- case "$$i" in \
10365- *.1*) list="$$list $$i" ;; \
10366- esac; \
10367- done; \
10368- for i in $$list; do \
10369- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
10370- else file=$$i; fi; \
10371- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
10372- case "$$ext" in \
10373- 1*) ;; \
10374- *) ext='1' ;; \
10375- esac; \
10376- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
10377- inst=`echo $$inst | sed -e 's/^.*\///'`; \
10378- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
10379- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
10380- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
10381- done
10382-uninstall-man1:
10383- @$(NORMAL_UNINSTALL)
10384- @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
10385- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
10386- for i in $$l2; do \
10387- case "$$i" in \
10388- *.1*) list="$$list $$i" ;; \
10389- esac; \
10390- done; \
10391- for i in $$list; do \
10392- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
10393- case "$$ext" in \
10394- 1*) ;; \
10395- *) ext='1' ;; \
10396- esac; \
10397- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
10398- inst=`echo $$inst | sed -e 's/^.*\///'`; \
10399- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
10400- echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
10401- rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
10402- done
10403-install-man8: $(man8_MANS) $(man_MANS)
10404- @$(NORMAL_INSTALL)
10405- test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)"
10406- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
10407- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
10408- for i in $$l2; do \
10409- case "$$i" in \
10410- *.8*) list="$$list $$i" ;; \
10411- esac; \
10412- done; \
10413- for i in $$list; do \
10414- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
10415- else file=$$i; fi; \
10416- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
10417- case "$$ext" in \
10418- 8*) ;; \
10419- *) ext='8' ;; \
10420- esac; \
10421- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
10422- inst=`echo $$inst | sed -e 's/^.*\///'`; \
10423- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
10424- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
10425- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \
10426- done
10427-uninstall-man8:
10428- @$(NORMAL_UNINSTALL)
10429- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
10430- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
10431- for i in $$l2; do \
10432- case "$$i" in \
10433- *.8*) list="$$list $$i" ;; \
10434- esac; \
10435- done; \
10436- for i in $$list; do \
10437- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
10438- case "$$ext" in \
10439- 8*) ;; \
10440- *) ext='8' ;; \
10441- esac; \
10442- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
10443- inst=`echo $$inst | sed -e 's/^.*\///'`; \
10444- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
10445- echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \
10446- rm -f "$(DESTDIR)$(man8dir)/$$inst"; \
10447- done
10448-
10449-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
10450- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
10451- unique=`for i in $$list; do \
10452- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
10453- done | \
10454- $(AWK) ' { files[$$0] = 1; } \
10455- END { for (i in files) print i; }'`; \
10456- mkid -fID $$unique
10457-tags: TAGS
10458-
10459-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
10460- $(TAGS_FILES) $(LISP)
10461- tags=; \
10462- here=`pwd`; \
10463- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
10464- unique=`for i in $$list; do \
10465- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
10466- done | \
10467- $(AWK) ' { files[$$0] = 1; } \
10468- END { for (i in files) print i; }'`; \
10469- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
10470- test -n "$$unique" || unique=$$empty_fix; \
10471- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
10472- $$tags $$unique; \
10473- fi
10474-ctags: CTAGS
10475-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
10476- $(TAGS_FILES) $(LISP)
10477- tags=; \
10478- here=`pwd`; \
10479- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
10480- unique=`for i in $$list; do \
10481- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
10482- done | \
10483- $(AWK) ' { files[$$0] = 1; } \
10484- END { for (i in files) print i; }'`; \
10485- test -z "$(CTAGS_ARGS)$$tags$$unique" \
10486- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
10487- $$tags $$unique
10488-
10489-GTAGS:
10490- here=`$(am__cd) $(top_builddir) && pwd` \
10491- && cd $(top_srcdir) \
10492- && gtags -i $(GTAGS_ARGS) $$here
10493-
10494-distclean-tags:
10495- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
10496-
10497-distdir: $(DISTFILES)
10498- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
10499- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
10500- list='$(DISTFILES)'; for file in $$list; do \
10501- case $$file in \
10502- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
10503- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
10504- esac; \
10505- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
10506- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
10507- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
10508- dir="/$$dir"; \
10509- $(mkdir_p) "$(distdir)$$dir"; \
10510- else \
10511- dir=''; \
10512- fi; \
10513- if test -d $$d/$$file; then \
10514- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
10515- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
10516- fi; \
10517- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
10518- else \
10519- test -f $(distdir)/$$file \
10520- || cp -p $$d/$$file $(distdir)/$$file \
10521- || exit 1; \
10522- fi; \
10523- done
10524- $(MAKE) $(AM_MAKEFLAGS) \
10525- top_distdir="$(top_distdir)" distdir="$(distdir)" \
10526- dist-info
10527-check-am: all-am
10528-check: check-am
10529-all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(SCRIPTS) $(MANS)
10530-installdirs:
10531- for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man8dir)"; do \
10532- test -z "$$dir" || $(mkdir_p) "$$dir"; \
10533- done
10534-install: install-am
10535-install-exec: install-exec-am
10536-install-data: install-data-am
10537-uninstall: uninstall-am
10538-
10539-install-am: all-am
10540- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
10541-
10542-installcheck: installcheck-am
10543-install-strip:
10544- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
10545- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
10546- `test -z '$(STRIP)' || \
10547- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
10548-mostlyclean-generic:
10549-
10550-clean-generic:
10551- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
10552-
10553-distclean-generic:
10554- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
10555-
10556-maintainer-clean-generic:
10557- @echo "This command is intended for maintainers to use"
10558- @echo "it deletes files that may require special tools to rebuild."
10559-clean: clean-am
10560-
10561-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
10562-
10563-distclean: distclean-am
10564- -rm -rf ./$(DEPDIR)
10565- -rm -f Makefile
10566-distclean-am: clean-am distclean-compile distclean-generic \
10567- distclean-tags
10568-
10569-dvi: dvi-am
10570-
10571-dvi-am: $(DVIS)
10572-
10573-html: html-am
10574-
10575-html-am: $(HTMLS)
10576-
10577-info: info-am
10578-
10579-info-am: $(INFO_DEPS)
10580-
10581-install-data-am: install-info-am install-man
10582-
10583-install-exec-am:
10584-
10585-install-info: install-info-am
10586-
10587-install-info-am: $(INFO_DEPS)
10588- @$(NORMAL_INSTALL)
10589- test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)"
10590- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
10591- list='$(INFO_DEPS)'; \
10592- for file in $$list; do \
10593- case $$file in \
10594- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
10595- esac; \
10596- if test -f $$file; then d=.; else d=$(srcdir); fi; \
10597- file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
10598- for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
10599- $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
10600- if test -f $$ifile; then \
10601- relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
10602- echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
10603- $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
10604- else : ; fi; \
10605- done; \
10606- done
10607- @$(POST_INSTALL)
10608- @if (install-info --version && \
10609- install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
10610- list='$(INFO_DEPS)'; \
10611- for file in $$list; do \
10612- relfile=`echo "$$file" | sed 's|^.*/||'`; \
10613- echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
10614- install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
10615- done; \
10616- else : ; fi
10617-install-man: install-man1 install-man8
10618-
10619-installcheck-am:
10620-
10621-maintainer-clean: maintainer-clean-am
10622- -rm -rf ./$(DEPDIR)
10623- -rm -f Makefile
10624-maintainer-clean-am: distclean-am maintainer-clean-aminfo \
10625- maintainer-clean-generic maintainer-clean-vti
10626-
10627-mostlyclean: mostlyclean-am
10628-
10629-mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
10630- mostlyclean-generic mostlyclean-vti
10631-
10632-pdf: pdf-am
10633-
10634-pdf-am: $(PDFS)
10635-
10636-ps: ps-am
10637-
10638-ps-am: $(PSS)
10639-
10640-uninstall-am: uninstall-info-am uninstall-man
10641-
10642-uninstall-man: uninstall-man1 uninstall-man8
10643-
10644-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
10645- clean-noinstPROGRAMS ctags dist-info distclean \
10646- distclean-compile distclean-generic distclean-tags distdir dvi \
10647- dvi-am html html-am info info-am install install-am \
10648- install-data install-data-am install-exec install-exec-am \
10649- install-info install-info-am install-man install-man1 \
10650- install-man8 install-strip installcheck installcheck-am \
10651- installdirs maintainer-clean maintainer-clean-aminfo \
10652- maintainer-clean-generic maintainer-clean-vti mostlyclean \
10653- mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \
10654- mostlyclean-vti pdf pdf-am ps ps-am tags uninstall \
10655- uninstall-am uninstall-info-am uninstall-man uninstall-man1 \
10656- uninstall-man8
10657-
10658-
10659-@BUILD_EXAMPLE_KERNEL_TRUE@boot.o: multiboot.h
10660-
10661-# Cancel the rule %.texi -> %. This rule may confuse make to determine
10662-# the dependecies.
10663-.texi:
10664-
10665-%.c.texi: %.c $(srcdir)/$(SRC2TEXI)
10666- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@
10667-
10668-%.h.texi: %.h $(srcdir)/$(SRC2TEXI)
10669- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@
10670-
10671-%.S.texi: %.S $(srcdir)/$(SRC2TEXI)
10672- $(SHELL) $(srcdir)/$(SRC2TEXI) $(srcdir) $< $@
10673-
10674-@MAINTAINER_MODE_TRUE@$(srcdir)/grub.8: ../grub/grub $(srcdir)/$(HELP2MAN)
10675-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="the grub shell" \
10676-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $<
10677-
10678-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-install.8: ../util/grub-install $(srcdir)/$(HELP2MAN)
10679-@MAINTAINER_MODE_TRUE@ chmod 755 $<
10680-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) --name="install GRUB on your drive" \
10681-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $<
10682-
10683-@MAINTAINER_MODE_TRUE@$(srcdir)/mbchk.1: ../util/mbchk $(srcdir)/$(HELP2MAN)
10684-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \
10685-@MAINTAINER_MODE_TRUE@ --name="check the format of a Multiboot kernel" \
10686-@MAINTAINER_MODE_TRUE@ --section=1 --output=$@ $<
10687-
10688-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-md5-crypt.8: ../util/grub-md5-crypt $(srcdir)/$(HELP2MAN)
10689-@MAINTAINER_MODE_TRUE@ chmod 755 $<
10690-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \
10691-@MAINTAINER_MODE_TRUE@ --name="Encrypt a password in MD5 format" \
10692-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $<
10693-
10694-@MAINTAINER_MODE_TRUE@$(srcdir)/grub-terminfo.8: ../util/grub-terminfo $(srcdir)/$(HELP2MAN)
10695-@MAINTAINER_MODE_TRUE@ chmod 755 $<
10696-@MAINTAINER_MODE_TRUE@ $(PERL) $(srcdir)/$(HELP2MAN) \
10697-@MAINTAINER_MODE_TRUE@ --name="Generate a terminfo command from a terminfo name" \
10698-@MAINTAINER_MODE_TRUE@ --section=8 --output=$@ $<
10699-# Tell versions [3.59,3.63) of GNU make to not export all variables.
10700-# Otherwise a system limit (for SysV at least) may be exceeded.
10701-.NOEXPORT:
10702diff --git a/docs/grub-crypt.8 b/docs/grub-crypt.8
10703new file mode 100644
10704index 0000000..eb132d7
10705--- /dev/null
10706+++ b/docs/grub-crypt.8
10707@@ -0,0 +1,39 @@
10708+.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23.
10709+.TH GRUB-CRYPT "1" "January 2010" "grub-crypt (GNU GRUB 0.97)" FSF
10710+.SH NAME
10711+grub-crypt \- manual page for grub-crypt (GNU GRUB 0.97)
10712+.SH SYNOPSIS
10713+.B grub-crypt
10714+[\fIOPTION\fR]...
10715+.SH DESCRIPTION
10716+Encrypt a password.
10717+.TP
10718+\fB\-h\fR, \fB\-\-help\fR
10719+Print this message and exit
10720+.TP
10721+\fB\-v\fR, \fB\-\-version\fR
10722+Print the version information and exit
10723+.TP
10724+\fB\-\-md5\fR
10725+Use MD5 to encrypt the password
10726+.TP
10727+\fB\-\-sha\-256\fR
10728+Use SHA-256 to encrypt the password
10729+.TP
10730+\fB\-\-sha\-512\fR
10731+Use SHA-512 to encrypt the password (default)
10732+.SH "REPORTING BUGS"
10733+Report bugs to <bug-grub@gnu.org>.
10734+EOF
10735+.SH "SEE ALSO"
10736+The full documentation for
10737+.B grub-crypt
10738+is maintained as a Texinfo manual. If the
10739+.B info
10740+and
10741+.B grub-crypt
10742+programs are properly installed at your site, the command
10743+.IP
10744+.B info grub-crypt
10745+.PP
10746+should give you access to the complete manual.
10747diff --git a/docs/grub-install.8 b/docs/grub-install.8
10748index ac588a3..accff22 100644
10749--- a/docs/grub-install.8
10750+++ b/docs/grub-install.8
10751@@ -30,6 +30,8 @@ BIOS
10752 .TP
10753 \fB\-\-recheck\fR
10754 probe a device map even if it already exists
10755+
10756+This option is unreliable and its use is strongly discouraged.
10757 .PP
10758 INSTALL_DEVICE can be a GRUB device name or a system device filename.
10759 .PP
10760diff --git a/docs/grub.8 b/docs/grub.8
10761index 92149f7..7a087d6 100644
10762--- a/docs/grub.8
10763+++ b/docs/grub.8
10764@@ -15,7 +15,7 @@ turn on batch mode for non-interactive use
10765 specify stage2 boot_drive [default=0x0]
10766 .TP
10767 \fB\-\-config\-file\fR=\fIFILE\fR
10768-specify stage2 config_file [default=/boot/grub/menu.lst]
10769+specify stage2 config_file [default=/boot/grub/grub.conf]
10770 .TP
10771 \fB\-\-device\-map\fR=\fIFILE\fR
10772 use the device map file FILE
10773diff --git a/docs/grub.info b/docs/grub.info
10774index f48783c..7692f31 100644
10775--- a/docs/grub.info
10776+++ b/docs/grub.info
10777@@ -1,5 +1,4 @@
10778-This is ../../docs/grub.info, produced by makeinfo version 4.8 from
10779-../../docs/grub.texi.
10780+This is grub.info, produced by makeinfo version 4.9 from grub.texi.
10781
10782 INFO-DIR-SECTION Kernel
10783 START-INFO-DIR-ENTRY
10784@@ -1147,7 +1146,7 @@ your OS. There's a solution to that - GRUB provides a menu interface
10785 (*note Menu interface::) from which you can select an item (using arrow
10786 keys) that will do everything to boot an OS.
10787
10788- To enable the menu, you need a configuration file, `menu.lst' under
10789+ To enable the menu, you need a configuration file, `grub.conf' under
10790 the boot directory. We'll analyze an example file.
10791
10792 The file first contains some general settings, the menu interface
10793@@ -1693,12 +1692,12 @@ There are two ways to specify files, by "absolute file name" and by
10794
10795 An absolute file name resembles a Unix absolute file name, using `/'
10796 for the directory separator (not `\' as in DOS). One example is
10797-`(hd0,0)/boot/grub/menu.lst'. This means the file `/boot/grub/menu.lst'
10798-in the first partition of the first hard disk. If you omit the device
10799-name in an absolute file name, GRUB uses GRUB's "root device"
10800-implicitly. So if you set the root device to, say, `(hd1,0)' by the
10801-command `root' (*note root::), then `/boot/kernel' is the same as
10802-`(hd1,0)/boot/kernel'.
10803+`(hd0,0)/boot/grub/grub.conf'. This means the file
10804+`/boot/grub/grub.conf' in the first partition of the first hard disk.
10805+If you omit the device name in an absolute file name, GRUB uses GRUB's
10806+"root device" implicitly. So if you set the root device to, say,
10807+`(hd1,0)' by the command `root' (*note root::), then `/boot/kernel' is
10808+the same as `(hd1,0)/boot/kernel'.
10809
10810 \1f
10811 File: grub.info, Node: Block list syntax, Prev: File name syntax, Up: Filesystem
10812@@ -2023,6 +2022,7 @@ Commands usable anywhere in the menu and in the command-line.
10813 * rarp:: Initialize a network device via RARP
10814 * serial:: Set up a serial device
10815 * setkey:: Configure the key map
10816+* splashimage:: Use a splash image
10817 * terminal:: Choose a terminal
10818 * terminfo:: Define escape sequences for a terminal
10819 * tftpserver:: Specify a TFTP server
10820@@ -2258,7 +2258,7 @@ File: grub.info, Node: serial, Next: setkey, Prev: rarp, Up: General command
10821 support. See also *Note Serial terminal::.
10822
10823 \1f
10824-File: grub.info, Node: setkey, Next: terminal, Prev: serial, Up: General commands
10825+File: grub.info, Node: setkey, Next: splashimage, Prev: serial, Up: General commands
10826
10827 13.2.13 setkey
10828 --------------
10829@@ -2384,9 +2384,20 @@ File: grub.info, Node: setkey, Next: terminal, Prev: serial, Up: General com
10830 ` '
10831
10832 \1f
10833-File: grub.info, Node: terminal, Next: terminfo, Prev: setkey, Up: General commands
10834+File: grub.info, Node: splashimage, Next: terminal, Prev: setkey, Up: General commands
10835
10836-13.2.14 terminal
10837+13.2.14 splashimage
10838+-------------------
10839+
10840+ -- Command: splashimage file
10841+ Select an image to use as the background image. This should be
10842+ specified using normal GRUB device naming syntax. The format of
10843+ the file is a gzipped xpm which is 640x480 with a 14 color palette.
10844+
10845+\1f
10846+File: grub.info, Node: terminal, Next: terminfo, Prev: splashimage, Up: General commands
10847+
10848+13.2.15 terminal
10849 ----------------
10850
10851 -- Command: terminal [`--dumb'] [`--no-echo'] [`--no-edit']
10852@@ -2421,7 +2432,7 @@ File: grub.info, Node: terminal, Next: terminfo, Prev: setkey, Up: General c
10853 \1f
10854 File: grub.info, Node: terminfo, Next: tftpserver, Prev: terminal, Up: General commands
10855
10856-13.2.15 terminfo
10857+13.2.16 terminfo
10858 ----------------
10859
10860 -- Command: terminfo `--name=name' `--cursor-address=seq'
10861@@ -2439,7 +2450,7 @@ File: grub.info, Node: terminfo, Next: tftpserver, Prev: terminal, Up: Gener
10862 \1f
10863 File: grub.info, Node: tftpserver, Next: unhide, Prev: terminfo, Up: General commands
10864
10865-13.2.16 tftpserver
10866+13.2.17 tftpserver
10867 ------------------
10868
10869 -- Command: tftpserver ipaddr
10870@@ -2454,7 +2465,7 @@ File: grub.info, Node: tftpserver, Next: unhide, Prev: terminfo, Up: General
10871 \1f
10872 File: grub.info, Node: unhide, Prev: tftpserver, Up: General commands
10873
10874-13.2.17 unhide
10875+13.2.18 unhide
10876 --------------
10877
10878 -- Command: unhide partition
10879@@ -3405,9 +3416,9 @@ calls with UNIX system calls and libc functions.
10880 grub shell just ignores this option.
10881
10882 `--config-file=FILE'
10883- Read the configuration file FILE instead of `/boot/grub/menu.lst'.
10884- The format is the same as the normal GRUB syntax. See *Note
10885- Filesystem::, for more information.
10886+ Read the configuration file FILE instead of
10887+ `/boot/grub/grub.conf'. The format is the same as the normal GRUB
10888+ syntax. See *Note Filesystem::, for more information.
10889
10890 `--boot-drive=DRIVE'
10891 Set the stage2 BOOT_DRIVE to DRIVE. This argument should be an
10892@@ -3551,8 +3562,9 @@ name.
10893
10894 `--recheck'
10895 Recheck the device map, even if `/boot/grub/device.map' already
10896- exists. You should use this option whenever you add/remove a disk
10897- into/from your computer.
10898+ exists.
10899+
10900+ This option is unreliable and its use is strongly discouraged.
10901
10902 \1f
10903 File: grub.info, Node: Invoking grub-md5-crypt, Next: Invoking grub-terminfo, Prev: Invoking grub-install, Up: Top
10904@@ -4279,6 +4291,7 @@ Index
10905 * serial: serial. (line 9)
10906 * setkey: setkey. (line 7)
10907 * setup: setup. (line 8)
10908+* splashimage: splashimage. (line 7)
10909 * terminal: terminal. (line 9)
10910 * terminfo: terminfo. (line 9)
10911 * testload: testload. (line 7)
10912@@ -4293,163 +4306,164 @@ Index
10913
10914 \1f
10915 Tag Table:
10916-Node: Top\7f1487
10917-Node: Introduction\7f3266
10918-Node: Overview\7f3643
10919-Node: Overview-Footnotes\7f5865
10920-Ref: Overview-Footnote-1\7f5926
10921-Node: History\7f6087
10922-Node: Features\7f7208
10923-Node: Features-Footnotes\7f12976
10924-Ref: Features-Footnote-1\7f13037
10925-Node: Role of a boot loader\7f13182
10926-Node: Role of a boot loader-Footnotes\7f14520
10927-Ref: Role of a boot loader-Footnote-1\7f14607
10928-Node: Naming convention\7f14686
10929-Node: Installation\7f17621
10930-Node: Creating a GRUB boot floppy\7f19363
10931-Node: Installing GRUB natively\7f20181
10932-Node: Installing GRUB natively-Footnotes\7f22461
10933-Ref: Installing GRUB natively-Footnote-1\7f22554
10934-Node: Installing GRUB using grub-install\7f22739
10935-Node: Making a GRUB bootable CD-ROM\7f25685
10936-Node: Making a GRUB bootable CD-ROM-Footnotes\7f27730
10937-Ref: Making a GRUB bootable CD-ROM-Footnote-1\7f27833
10938-Node: Booting\7f27908
10939-Node: General boot methods\7f28363
10940-Node: Loading an operating system directly\7f29104
10941-Node: Chain-loading\7f30408
10942-Node: Chain-loading-Footnotes\7f31718
10943-Ref: Chain-loading-Footnote-1\7f31789
10944-Node: OS-specific notes\7f31861
10945-Node: GNU/Hurd\7f32237
10946-Node: GNU/Linux\7f32856
10947-Node: FreeBSD\7f34104
10948-Node: NetBSD\7f34617
10949-Node: OpenBSD\7f35275
10950-Node: DOS/Windows\7f35475
10951-Node: SCO UnixWare\7f37301
10952-Node: QNX\7f37719
10953-Node: Making your system robust\7f37969
10954-Node: Booting once-only\7f39294
10955-Node: Booting fallback systems\7f41219
10956-Node: Configuration\7f44066
10957-Node: Network\7f48495
10958-Node: General usage of network support\7f48989
10959-Node: General usage of network support-Footnotes\7f50850
10960-Ref: General usage of network support-Footnote-1\7f50959
10961-Node: Diskless\7f51027
10962-Node: Serial terminal\7f53211
10963-Node: Preset Menu\7f55444
10964-Node: Security\7f57812
10965-Node: Images\7f60620
10966-Node: Filesystem\7f63131
10967-Node: Device syntax\7f63814
10968-Node: File name syntax\7f65308
10969-Node: Block list syntax\7f66051
10970-Node: Interface\7f66784
10971-Node: Command-line interface\7f67661
10972-Node: Command-line interface-Footnotes\7f69602
10973-Ref: Command-line interface-Footnote-1\7f69691
10974-Node: Menu interface\7f69786
10975-Node: Menu entry editor\7f70796
10976-Node: Hidden menu interface\7f71875
10977-Node: Commands\7f72452
10978-Node: Menu-specific commands\7f73029
10979-Node: default\7f74200
10980-Node: fallback\7f74678
10981-Node: hiddenmenu\7f75229
10982-Node: timeout\7f75717
10983-Node: title\7f75995
10984-Node: General commands\7f76266
10985-Node: bootp\7f77579
10986-Node: color\7f78058
10987-Node: device\7f79532
10988-Node: dhcp\7f80104
10989-Node: hide\7f80689
10990-Node: ifconfig\7f81066
10991-Node: pager\7f81642
10992-Node: partnew\7f81976
10993-Node: parttype\7f82412
10994-Node: password\7f82779
10995-Node: rarp\7f83598
10996-Node: serial\7f83899
10997-Node: setkey\7f85172
10998-Node: terminal\7f87341
10999-Node: terminfo\7f88878
11000-Node: tftpserver\7f89565
11001-Node: unhide\7f90111
11002-Node: Command-line and menu entry commands\7f90486
11003-Node: blocklist\7f93017
11004-Node: boot\7f93259
11005-Node: cat\7f93580
11006-Node: chainloader\7f93884
11007-Node: cmp\7f94500
11008-Node: configfile\7f95051
11009-Node: debug\7f95265
11010-Node: displayapm\7f95649
11011-Node: displaymem\7f95860
11012-Node: embed\7f96562
11013-Node: embed-Footnotes\7f97096
11014-Ref: embed-Footnote-1\7f97151
11015-Node: find\7f97208
11016-Node: fstest\7f97588
11017-Node: geometry\7f98273
11018-Node: halt\7f98885
11019-Node: help\7f99212
11020-Node: impsprobe\7f99833
11021-Node: initrd\7f100232
11022-Node: install\7f100571
11023-Node: install-Footnotes\7f103415
11024-Ref: install-Footnote-1\7f103474
11025-Node: ioprobe\7f103571
11026-Node: kernel\7f103896
11027-Node: lock\7f105016
11028-Node: makeactive\7f105591
11029-Node: map\7f105903
11030-Node: md5crypt\7f106470
11031-Node: module\7f106817
11032-Node: modulenounzip\7f107394
11033-Node: pause\7f107687
11034-Node: quit\7f108101
11035-Node: reboot\7f108377
11036-Node: read\7f108558
11037-Node: root\7f108800
11038-Node: rootnoverify\7f109677
11039-Node: savedefault\7f110232
11040-Node: setup\7f111208
11041-Node: testload\7f112274
11042-Node: testvbe\7f112884
11043-Node: uppermem\7f113255
11044-Node: vbeprobe\7f113837
11045-Node: Troubleshooting\7f114220
11046-Node: Stage1 errors\7f114758
11047-Node: Stage1.5 errors\7f116135
11048-Node: Stage2 errors\7f116573
11049-Node: Invoking the grub shell\7f124033
11050-Node: Basic usage\7f124786
11051-Node: Installation under UNIX\7f127073
11052-Node: Device map\7f128748
11053-Node: Invoking grub-install\7f129896
11054-Node: Invoking grub-md5-crypt\7f131484
11055-Node: Invoking grub-terminfo\7f132133
11056-Node: Invoking grub-set-default\7f132899
11057-Node: Invoking mbchk\7f134700
11058-Node: Obtaining and Building GRUB\7f135214
11059-Node: Reporting bugs\7f136631
11060-Node: Future\7f139435
11061-Node: Internals\7f139926
11062-Node: Memory map\7f141149
11063-Node: Embedded data\7f142627
11064-Node: Filesystem interface\7f144644
11065-Node: Command interface\7f148077
11066-Node: Bootstrap tricks\7f149392
11067-Node: I/O ports detection\7f151541
11068-Node: Memory detection\7f151813
11069-Node: Low-level disk I/O\7f152105
11070-Node: MBR\7f152374
11071-Node: Partition table\7f152571
11072-Node: Submitting patches\7f152844
11073-Node: Index\7f154332
11074+Node: Top\7f1465
11075+Node: Introduction\7f3244
11076+Node: Overview\7f3621
11077+Node: Overview-Footnotes\7f5843
11078+Ref: Overview-Footnote-1\7f5904
11079+Node: History\7f6065
11080+Node: Features\7f7186
11081+Node: Features-Footnotes\7f12954
11082+Ref: Features-Footnote-1\7f13015
11083+Node: Role of a boot loader\7f13160
11084+Node: Role of a boot loader-Footnotes\7f14498
11085+Ref: Role of a boot loader-Footnote-1\7f14585
11086+Node: Naming convention\7f14664
11087+Node: Installation\7f17599
11088+Node: Creating a GRUB boot floppy\7f19341
11089+Node: Installing GRUB natively\7f20159
11090+Node: Installing GRUB natively-Footnotes\7f22439
11091+Ref: Installing GRUB natively-Footnote-1\7f22532
11092+Node: Installing GRUB using grub-install\7f22717
11093+Node: Making a GRUB bootable CD-ROM\7f25663
11094+Node: Making a GRUB bootable CD-ROM-Footnotes\7f27708
11095+Ref: Making a GRUB bootable CD-ROM-Footnote-1\7f27811
11096+Node: Booting\7f27886
11097+Node: General boot methods\7f28341
11098+Node: Loading an operating system directly\7f29082
11099+Node: Chain-loading\7f30386
11100+Node: Chain-loading-Footnotes\7f31696
11101+Ref: Chain-loading-Footnote-1\7f31767
11102+Node: OS-specific notes\7f31839
11103+Node: GNU/Hurd\7f32215
11104+Node: GNU/Linux\7f32834
11105+Node: FreeBSD\7f34082
11106+Node: NetBSD\7f34595
11107+Node: OpenBSD\7f35253
11108+Node: DOS/Windows\7f35453
11109+Node: SCO UnixWare\7f37279
11110+Node: QNX\7f37697
11111+Node: Making your system robust\7f37947
11112+Node: Booting once-only\7f39272
11113+Node: Booting fallback systems\7f41197
11114+Node: Configuration\7f44044
11115+Node: Network\7f48474
11116+Node: General usage of network support\7f48968
11117+Node: General usage of network support-Footnotes\7f50829
11118+Ref: General usage of network support-Footnote-1\7f50938
11119+Node: Diskless\7f51006
11120+Node: Serial terminal\7f53190
11121+Node: Preset Menu\7f55423
11122+Node: Security\7f57791
11123+Node: Images\7f60599
11124+Node: Filesystem\7f63110
11125+Node: Device syntax\7f63793
11126+Node: File name syntax\7f65287
11127+Node: Block list syntax\7f66032
11128+Node: Interface\7f66765
11129+Node: Command-line interface\7f67642
11130+Node: Command-line interface-Footnotes\7f69583
11131+Ref: Command-line interface-Footnote-1\7f69672
11132+Node: Menu interface\7f69767
11133+Node: Menu entry editor\7f70777
11134+Node: Hidden menu interface\7f71856
11135+Node: Commands\7f72433
11136+Node: Menu-specific commands\7f73010
11137+Node: default\7f74181
11138+Node: fallback\7f74659
11139+Node: hiddenmenu\7f75210
11140+Node: timeout\7f75698
11141+Node: title\7f75976
11142+Node: General commands\7f76247
11143+Node: bootp\7f77611
11144+Node: color\7f78090
11145+Node: device\7f79564
11146+Node: dhcp\7f80136
11147+Node: hide\7f80721
11148+Node: ifconfig\7f81098
11149+Node: pager\7f81674
11150+Node: partnew\7f82008
11151+Node: parttype\7f82444
11152+Node: password\7f82811
11153+Node: rarp\7f83630
11154+Node: serial\7f83931
11155+Node: setkey\7f85204
11156+Node: splashimage\7f87376
11157+Node: terminal\7f87754
11158+Node: terminfo\7f89296
11159+Node: tftpserver\7f89983
11160+Node: unhide\7f90529
11161+Node: Command-line and menu entry commands\7f90904
11162+Node: blocklist\7f93435
11163+Node: boot\7f93677
11164+Node: cat\7f93998
11165+Node: chainloader\7f94302
11166+Node: cmp\7f94918
11167+Node: configfile\7f95469
11168+Node: debug\7f95683
11169+Node: displayapm\7f96067
11170+Node: displaymem\7f96278
11171+Node: embed\7f96980
11172+Node: embed-Footnotes\7f97514
11173+Ref: embed-Footnote-1\7f97569
11174+Node: find\7f97626
11175+Node: fstest\7f98006
11176+Node: geometry\7f98691
11177+Node: halt\7f99303
11178+Node: help\7f99630
11179+Node: impsprobe\7f100251
11180+Node: initrd\7f100650
11181+Node: install\7f100989
11182+Node: install-Footnotes\7f103833
11183+Ref: install-Footnote-1\7f103892
11184+Node: ioprobe\7f103989
11185+Node: kernel\7f104314
11186+Node: lock\7f105434
11187+Node: makeactive\7f106009
11188+Node: map\7f106321
11189+Node: md5crypt\7f106888
11190+Node: module\7f107235
11191+Node: modulenounzip\7f107812
11192+Node: pause\7f108105
11193+Node: quit\7f108519
11194+Node: reboot\7f108795
11195+Node: read\7f108976
11196+Node: root\7f109218
11197+Node: rootnoverify\7f110095
11198+Node: savedefault\7f110650
11199+Node: setup\7f111626
11200+Node: testload\7f112692
11201+Node: testvbe\7f113302
11202+Node: uppermem\7f113673
11203+Node: vbeprobe\7f114255
11204+Node: Troubleshooting\7f114638
11205+Node: Stage1 errors\7f115176
11206+Node: Stage1.5 errors\7f116553
11207+Node: Stage2 errors\7f116991
11208+Node: Invoking the grub shell\7f124451
11209+Node: Basic usage\7f125204
11210+Node: Installation under UNIX\7f127492
11211+Node: Device map\7f129167
11212+Node: Invoking grub-install\7f130315
11213+Node: Invoking grub-md5-crypt\7f131884
11214+Node: Invoking grub-terminfo\7f132533
11215+Node: Invoking grub-set-default\7f133299
11216+Node: Invoking mbchk\7f135100
11217+Node: Obtaining and Building GRUB\7f135614
11218+Node: Reporting bugs\7f137031
11219+Node: Future\7f139835
11220+Node: Internals\7f140326
11221+Node: Memory map\7f141549
11222+Node: Embedded data\7f143027
11223+Node: Filesystem interface\7f145044
11224+Node: Command interface\7f148477
11225+Node: Bootstrap tricks\7f149792
11226+Node: I/O ports detection\7f151941
11227+Node: Memory detection\7f152213
11228+Node: Low-level disk I/O\7f152505
11229+Node: MBR\7f152774
11230+Node: Partition table\7f152971
11231+Node: Submitting patches\7f153244
11232+Node: Index\7f154732
11233 \1f
11234 End Tag Table
11235diff --git a/docs/grub.texi b/docs/grub.texi
11236index 51d330a..5fd324d 100644
11237--- a/docs/grub.texi
11238+++ b/docs/grub.texi
11239@@ -21,6 +21,7 @@
11240 @dircategory Kernel
11241 @direntry
11242 * GRUB: (grub). The GRand Unified Bootloader
11243+* grub-crypt: (grub)Invoking grub-crypt. Encrypt a password
11244 * grub-install: (grub)Invoking grub-install. Install GRUB on your drive
11245 * grub-md5-crypt: (grub)Invoking grub-md5-crypt. Encrypt a password
11246 in MD5 format
11247@@ -115,8 +116,9 @@ This edition documents version @value{VERSION}.
11248 * Commands:: The list of available builtin commands
11249 * Troubleshooting:: Error messages produced by GRUB
11250 * Invoking the grub shell:: How to use the grub shell
11251+* Invoking grub-crypt:: How to generate an encrypted password
11252 * Invoking grub-install:: How to use the GRUB installer
11253-* Invoking grub-md5-crypt:: How to generate a cryptic password
11254+* Invoking grub-md5-crypt:: How to generate an MD5-encrypted password
11255 * Invoking grub-terminfo:: How to generate a terminfo command
11256 * Invoking grub-set-default:: How to set a default boot entry
11257 * Invoking mbchk:: How to use the Multiboot checker
11258@@ -1265,7 +1267,7 @@ OS. There's a solution to that - GRUB provides a menu interface
11259 keys) that will do everything to boot an OS.
11260
11261 To enable the menu, you need a configuration file,
11262-@file{menu.lst} under the boot directory. We'll analyze an example
11263+@file{grub.conf} under the boot directory. We'll analyze an example
11264 file.
11265
11266 The file first contains some general settings, the menu interface
11267@@ -1685,27 +1687,17 @@ run the command @command{password} in your configuration file
11268 (@pxref{password}), like this:
11269
11270 @example
11271-password --md5 PASSWORD
11272+password --encrypted PASSWORD
11273 @end example
11274
11275 If this is specified, GRUB disallows any interactive control, until you
11276 press the key @key{p} and enter a correct password. The option
11277-@option{--md5} tells GRUB that @samp{PASSWORD} is in MD5 format. If it
11278+@option{--encrypted} tells GRUB that @samp{PASSWORD} is encrypted format. If it
11279 is omitted, GRUB assumes the @samp{PASSWORD} is in clear text.
11280
11281-You can encrypt your password with the command @command{md5crypt}
11282-(@pxref{md5crypt}). For example, run the grub shell (@pxref{Invoking the
11283-grub shell}), and enter your password:
11284-
11285-@example
11286-@group
11287-grub> md5crypt
11288-Password: **********
11289-Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb.
11290-@end group
11291-@end example
11292-
11293-Then, cut and paste the encrypted password to your configuration file.
11294+You can encrypt your password with the program @command{grub-crypt}
11295+(@pxref{Invoking grub-crypt}). Then, cut and paste the encrypted password to
11296+your configuration file.
11297
11298 Also, you can specify an optional argument to @command{password}. See
11299 this example:
11300@@ -1882,8 +1874,8 @@ There are two ways to specify files, by @dfn{absolute file name} and by
11301
11302 An absolute file name resembles a Unix absolute file name, using
11303 @samp{/} for the directory separator (not @samp{\} as in DOS). One
11304-example is @samp{(hd0,0)/boot/grub/menu.lst}. This means the file
11305-@file{/boot/grub/menu.lst} in the first partition of the first hard
11306+example is @samp{(hd0,0)/boot/grub/grub.conf}. This means the file
11307+@file{/boot/grub/grub.conf} in the first partition of the first hard
11308 disk. If you omit the device name in an absolute file name, GRUB uses
11309 GRUB's @dfn{root device} implicitly. So if you set the root device to,
11310 say, @samp{(hd1,0)} by the command @command{root} (@pxref{root}), then
11311@@ -2199,6 +2191,7 @@ Commands usable anywhere in the menu and in the command-line.
11312 * rarp:: Initialize a network device via RARP
11313 * serial:: Set up a serial device
11314 * setkey:: Configure the key map
11315+* splashimage:: Use a splash image
11316 * terminal:: Choose a terminal
11317 * terminfo:: Define escape sequences for a terminal
11318 * tftpserver:: Specify a TFTP server
11319@@ -2398,7 +2391,7 @@ is the new partition type and must be a number in the range 0-0xff.
11320 @node password
11321 @subsection password
11322
11323-@deffn Command password [@option{--md5}] passwd [new-config-file]
11324+@deffn Command password [@option{--md5}] [@option{--encrypted}] passwd [new-config-file]
11325 If used in the first section of a menu file, disable all interactive
11326 editing control (menu entry editor and command-line) and entries
11327 protected by the command @command{lock}. If the password @var{passwd} is
11328@@ -2408,7 +2401,9 @@ specified. Otherwise, GRUB will just unlock the privileged instructions.
11329 You can also use this command in the script section, in which case it
11330 will ask for the password, before continuing. The option
11331 @option{--md5} tells GRUB that @var{passwd} is encrypted with
11332-@command{md5crypt} (@pxref{md5crypt}).
11333+@command{md5crypt} (@pxref{md5crypt}), the option @option{--encrypted}
11334+tells GRUB that @var{passwd} is using one of the crypt formats (GRUB currently
11335+supports MD5, SHA-256 and SHA-512 encryption).
11336 @end deffn
11337
11338
11339@@ -2578,6 +2573,16 @@ character each of the symbols corresponds:
11340 @end deffn
11341
11342
11343+@node splashimage
11344+@subsection splashimage
11345+
11346+@deffn Command splashimage file
11347+Select an image to use as the background image. This should be
11348+specified using normal GRUB device naming syntax. The format of the
11349+file is a gzipped xpm which is 640x480 with a 14 color palette.
11350+@end deffn
11351+
11352+
11353 @node terminal
11354 @subsection terminal
11355
11356@@ -3542,7 +3547,7 @@ ignores this option.
11357
11358 @item --config-file=@var{file}
11359 Read the configuration file @var{file} instead of
11360-@file{/boot/grub/menu.lst}. The format is the same as the normal GRUB
11361+@file{/boot/grub/grub.conf}. The format is the same as the normal GRUB
11362 syntax. See @ref{Filesystem}, for more information.
11363
11364 @item --boot-drive=@var{drive}
11365@@ -3653,6 +3658,31 @@ comments in the file if needed, as the grub shell assumes that a line is
11366 just a comment if the first character is @samp{#}.
11367
11368
11369+@node Invoking grub-crypt
11370+@chapter Invoking grub-crypt
11371+
11372+The program @command{grub-crypt} encrypts a password in one of the specified
11373+formats. Passwords encrypted by this program can be used with the
11374+command @command{password} (@pxref{password}).
11375+
11376+@command{grub-crypt} accepts the following options:
11377+
11378+@table @option
11379+@item --help
11380+Print a summary of the command-line options and exit.
11381+
11382+@item --version
11383+Print the version information and exit.
11384+
11385+@item --md5
11386+Use MD5 for password encryption.
11387+@item --sha-256
11388+Use SHA-256 for password encryption.
11389+@item --sha-512
11390+Use SHA-512 for password encryption. This is the default.
11391+@end table
11392+
11393+
11394 @node Invoking grub-install
11395 @chapter Invoking grub-install
11396
11397@@ -3702,8 +3732,9 @@ Use @var{file} as the grub shell. You can append arbitrary options to
11398
11399 @item --recheck
11400 Recheck the device map, even if @file{/boot/grub/device.map} already
11401-exists. You should use this option whenever you add/remove a disk
11402-into/from your computer.
11403+exists.
11404+
11405+This option is unreliable and its use is strongly discouraged.
11406 @end table
11407
11408
11409diff --git a/docs/stamp-vti b/docs/stamp-vti
11410index b97de24..eb5144d 100644
11411--- a/docs/stamp-vti
11412+++ b/docs/stamp-vti
11413@@ -1,4 +1,4 @@
11414-@set UPDATED 8 May 2005
11415-@set UPDATED-MONTH May 2005
11416+@set UPDATED 7 August 2007
11417+@set UPDATED-MONTH August 2007
11418 @set EDITION 0.97
11419 @set VERSION 0.97
11420diff --git a/docs/version.texi b/docs/version.texi
11421index b97de24..eb5144d 100644
11422--- a/docs/version.texi
11423+++ b/docs/version.texi
11424@@ -1,4 +1,4 @@
11425-@set UPDATED 8 May 2005
11426-@set UPDATED-MONTH May 2005
11427+@set UPDATED 7 August 2007
11428+@set UPDATED-MONTH August 2007
11429 @set EDITION 0.97
11430 @set VERSION 0.97
11431diff --git a/efi/.gitignore b/efi/.gitignore
11432new file mode 100644
11433index 0000000..a0e4294
11434--- /dev/null
11435+++ b/efi/.gitignore
11436@@ -0,0 +1,7 @@
11437+.deps
11438+Makefile.in
11439+Makefile
11440+*.a
11441+*.o
11442+*.so
11443+*.efi
11444diff --git a/efi/Makefile.am b/efi/Makefile.am
11445new file mode 100644
11446index 0000000..1d5bd15
11447--- /dev/null
11448+++ b/efi/Makefile.am
11449@@ -0,0 +1,76 @@
11450+
11451+pkglibdir = $(libdir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
11452+pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
11453+
11454+if PLATFORM_EFI
11455+
11456+if NETBOOT_SUPPORT
11457+NETBOOT_FLAGS = -I$(top_srcdir)/netboot -DSUPPORT_NETBOOT=1
11458+else
11459+NETBOOT_FLAGS =
11460+endif
11461+
11462+if SERIAL_SUPPORT
11463+SERIAL_FLAGS = -DSUPPORT_SERIAL=1
11464+else
11465+SERIAL_FLAGS =
11466+endif
11467+
11468+if HERCULES_SUPPORT
11469+HERCULES_FLAGS = -DSUPPORT_HERCULES=1
11470+else
11471+HERCULES_FLAGS =
11472+endif
11473+
11474+if GRAPHICS_SUPPORT
11475+GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1
11476+else
11477+GRAPHICS_FLAGS =
11478+endif
11479+
11480+GRUBEFI_FORMAT = efi-app-$(EFI_ARCH)
11481+GRUBSO_LD_SCRIPT = @GNUEFI_LDS@
11482+GRUBSO_LD_FLAGS = -T $(GRUBSO_LD_SCRIPT) -nostdlib -shared -Bsymbolic
11483+
11484+GRUBSO_OBJS = efimain.o
11485+GRUBSO_LIBS = @GNUEFI_CRT0@ $(top_srcdir)/stage2/libstage2.a \
11486+ libgrubefi.a @LIBGCC@
11487+
11488+if NETBOOT_SUPPORT
11489+GRUBSO_LIBS += $(top_srcdir)/netboot/libdrivers.a
11490+endif
11491+
11492+pkgdata_DATA = grub.efi
11493+
11494+grub.efi: grub.so
11495+ $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
11496+ -j .rela -j .reloc --target=$(GRUBEFI_FORMAT) $^ $@
11497+
11498+grub.so: $(GRUBSO_OBJS) $(GRUBSO_LIBS) @LIBGNUEFI@
11499+ $(LD) -o $@ $(GRUBSO_LD_FLAGS) $^
11500+ echo '-------------- unresolved symbols ---------------------'
11501+ ! nm $@ | grep -iw u
11502+ echo '-------------------------------------------------------'
11503+
11504+crt0-efi.o: $(EFI_ARCH)/crt0-efi.S
11505+ $(CC) -o $@ -c $(libgrubefi_a_CFLAGS) $^
11506+
11507+efimain.o: efimain.c
11508+ $(CC) -o $@ -c $(libgrubefi_a_CFLAGS) $^
11509+
11510+clean-local:
11511+ -rm -rf grub.so grub.efi
11512+
11513+RELOC_FLAGS = $(STAGE2_CFLAGS) -I$(top_srcdir)/stage1 \
11514+ -I$(top_srcdir)/lib -I. -I$(top_srcdir) -I$(top_srcdir)/stage2 \
11515+ -fno-builtin $(NETBOOT_FLAGS) $(SERIAL_FLAGS) \
11516+ $(HERCULES_FLAGS) $(GRAPHICS_FLAGS)
11517+
11518+noinst_LIBRARIES = libgrubefi.a
11519+libgrubefi_a_SOURCES = $(EFI_ARCH)/callwrap.S eficore.c efimm.c efimisc.c \
11520+ eficon.c efidisk.c graphics.c efigraph.c efiuga.c efidp.c \
11521+ font_8x16.c efiserial.c $(EFI_ARCH)/loader/linux.c efichainloader.c \
11522+ xpm.c pxe.c efitftp.c
11523+libgrubefi_a_CFLAGS = $(RELOC_FLAGS) -nostdinc
11524+
11525+endif
11526diff --git a/efi/byteswap.h b/efi/byteswap.h
11527new file mode 100644
11528index 0000000..5a057c4
11529--- /dev/null
11530+++ b/efi/byteswap.h
11531@@ -0,0 +1,37 @@
11532+#ifndef BYTESWAP_H
11533+#define BYTESWAP_H 1
11534+
11535+#if defined(__i386__)
11536+#define LITTLE_ENDIAN 1
11537+#elif defined(__x86_64__)
11538+#define LITTLE_ENDIAN 1
11539+#else
11540+#error endian not defined
11541+#endif
11542+
11543+#define bswap_16(x) \
11544+ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
11545+
11546+#define bswap_32(x) \
11547+ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
11548+ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
11549+
11550+static inline grub_efi_uint16_t htons(grub_efi_uint16_t hostshort)
11551+{
11552+#ifdef LITTLE_ENDIAN
11553+ return bswap_16(hostshort);
11554+#else
11555+ return hostshort;
11556+#endif
11557+}
11558+
11559+static inline grub_efi_uint32_t htonl(grub_efi_uint32_t hostshort)
11560+{
11561+#ifdef LITTLE_ENDIAN
11562+ return bswap_32(hostshort);
11563+#else
11564+ return hostshort;
11565+#endif
11566+}
11567+
11568+#endif /* BYTESWAP_H */
11569diff --git a/efi/dhcp.h b/efi/dhcp.h
11570new file mode 100644
11571index 0000000..a82a522
11572--- /dev/null
11573+++ b/efi/dhcp.h
11574@@ -0,0 +1,133 @@
11575+#ifndef DHCP_H
11576+#define DHCP_H 1
11577+
11578+#include "pxe.h"
11579+
11580+#define EFI_DHCP4_PROTOCOL_GUID \
11581+{ 0x8a219718, 0x4ef5, 0x4761, {0x91,0xc8,0xc0,0xf0,0x4b,0xda,0x9e,0x56} }
11582+static grub_efi_guid_t DHCP4Protocol = EFI_DHCP4_PROTOCOL_GUID;
11583+
11584+#define EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID \
11585+{ 0x9d9a39d8, 0xbd42, 0x4a73, {0xa4,0xd5,0x8e,0xe9,0x4b,0xe1,0x13,0x80} }
11586+static grub_efi_guid_t DHCP4SbProtocol = EFI_DHCP4_SERVICE_BINDING_PROTOCOL_GUID;
11587+
11588+#define EFI_PXE_DHCP4_PROTOCOL_GUID \
11589+{ 0x03c4e624, 0xac28, 0x11d3, {0x9a,0x2d,0x00,0x90,0x29,0x3f,0xc1,0x4d} }
11590+static grub_efi_guid_t PxeDHCP4Protocol = EFI_PXE_DHCP4_PROTOCOL_GUID;
11591+
11592+
11593+typedef EFI_STATUS (*EFI_DHCP4_GET_MODE_DATA)();
11594+typedef EFI_STATUS (*EFI_DHCP4_CONFIGURE)();
11595+typedef EFI_STATUS (*EFI_DHCP4_START)();
11596+typedef EFI_STATUS (*EFI_DHCP4_RENEW_REBIND)();
11597+typedef EFI_STATUS (*EFI_DHCP4_RELEASE)();
11598+typedef EFI_STATUS (*EFI_DHCP4_STOP)();
11599+typedef EFI_STATUS (*EFI_DHCP4_BUILD)();
11600+typedef EFI_STATUS (*EFI_DHCP4_TRANSMIT_RECIEVE)();
11601+typedef EFI_STATUS (*EFI_DHCP4_PARSE)();
11602+
11603+typedef struct _EFI_DHCP4_PROTOCOL {
11604+ EFI_DHCP4_GET_MODE_DATA GetModeData;
11605+ EFI_DHCP4_CONFIGURE Configure;
11606+ EFI_DHCP4_START Start;
11607+ EFI_DHCP4_RENEW_REBIND RenewRebind;
11608+ EFI_DHCP4_RELEASE Release;
11609+ EFI_DHCP4_STOP Stop;
11610+ EFI_DHCP4_BUILD Build;
11611+ EFI_DHCP4_TRANSMIT_RECIEVE TransmitReceive;
11612+ EFI_DHCP4_PARSE Parse;
11613+} EFI_DHCP4_PROTOCOL;
11614+
11615+typedef enum {
11616+ Dhcp4Stopped,
11617+ Dhcp4Init,
11618+ Dhcp4Selecting,
11619+ Dhcp4Requesting,
11620+ Dhcp4Bound,
11621+ Dhcp4Renewing,
11622+ Dhcp4Rebinding,
11623+ Dhcp4InitReboot,
11624+ Dhcp4Rebooting,
11625+} EFI_DHCP4_STATE;
11626+
11627+typedef enum {
11628+ Dhcp4SendDiscover = 0x1,
11629+ Dhcp4RcvdOffer,
11630+ Dhcp4SelectOffer,
11631+ Dhcp4SendRequest,
11632+ Dhcp4RcvdAck,
11633+ Dhcp4RcvdNak,
11634+ Dhcp4SendDecline,
11635+ Dhcp4BoundCompleted,
11636+ Dhcp4EnterRenewing,
11637+ Dhcp4EnterRebinding,
11638+ Dhcp4AddressLost,
11639+ Dhcp4Fail,
11640+} EFI_DHCP4_EVENT;
11641+
11642+typedef struct {
11643+ grub_efi_uint8_t OpCode;
11644+ grub_efi_uint8_t HwType;
11645+ grub_efi_uint8_t HwAddrLen;
11646+ grub_efi_uint8_t Hops;
11647+ grub_efi_uint32_t xid;
11648+ grub_efi_uint16_t Seconds;
11649+ grub_efi_uint16_t reserved;
11650+ EFI_IPv4_ADDRESS ClientAddr;
11651+ EFI_IPv4_ADDRESS YourAddr;
11652+ EFI_IPv4_ADDRESS ServerAddr;
11653+ EFI_IPv4_ADDRESS GatewayAddr;
11654+ grub_efi_uint8_t ClientHwAddr[16];
11655+ char ServerName[64];
11656+ char BootFileName[128];
11657+} EFI_DHCP4_HEADER;
11658+
11659+typedef struct {
11660+ grub_efi_uint32_t Size;
11661+ grub_efi_uint32_t Length;
11662+ struct {
11663+ EFI_DHCP4_HEADER Header;
11664+ grub_efi_uint32_t Magik;
11665+ grub_efi_uint8_t option[];
11666+ } Dhcp4;
11667+} EFI_DHCP4_PACKET;
11668+
11669+typedef struct {
11670+ grub_efi_uint8_t OpCode;
11671+ grub_efi_uint8_t Length;
11672+ grub_efi_uint8_t Data[1];
11673+} EFI_DHCP4_PACKET_OPTION;
11674+
11675+typedef EFI_STATUS (*EFI_DHCP4_CALLBACK) (
11676+ EFI_DHCP4_PROTOCOL *This,
11677+ void *Context,
11678+ EFI_DHCP4_STATE CurrentState,
11679+ EFI_DHCP4_EVENT Dhcp4Event,
11680+ EFI_DHCP4_PACKET *Packet,
11681+ EFI_DHCP4_PACKET **NewPacket);
11682+
11683+typedef struct {
11684+ grub_efi_uint32_t DiscoverTryCount;
11685+ grub_efi_uint32_t *DiscoverTimeout;
11686+ grub_efi_uint32_t RequestTryCount;
11687+ grub_efi_uint32_t *RequestTimeout;
11688+ EFI_IPv4_ADDRESS ClientAddress;
11689+ EFI_DHCP4_CALLBACK Dhcp4Callback;
11690+ void *CallbackContext;
11691+ grub_efi_uint32_t OptionCount;
11692+ EFI_DHCP4_PACKET_OPTION **OptionList;
11693+} EFI_DHCP4_CONFIG_DATA;
11694+
11695+typedef struct {
11696+ EFI_DHCP4_STATE State;
11697+ EFI_DHCP4_CONFIG_DATA ConfigData;
11698+ EFI_IPv4_ADDRESS ClientAddress;
11699+ EFI_MAC_ADDRESS ClientMacAddress;
11700+ EFI_IPv4_ADDRESS ServerAddress;
11701+ EFI_IPv4_ADDRESS RouterAddress;
11702+ EFI_IPv4_ADDRESS SubnetMask;
11703+ grub_efi_uint32_t LeaseTime;
11704+ EFI_DHCP4_PACKET *ReplyPacket;
11705+} EFI_DHCP4_MODE_DATA;
11706+
11707+#endif /* DHCP_H */
11708diff --git a/efi/efichainloader.c b/efi/efichainloader.c
11709new file mode 100644
11710index 0000000..016636c
11711--- /dev/null
11712+++ b/efi/efichainloader.c
11713@@ -0,0 +1,265 @@
11714+/* efichainloader.c - boot another boot loader */
11715+/*
11716+ * GRUB -- GRand Unified Bootloader
11717+ * Copyright (C) 2002,2004,2006 Free Software Foundation, Inc.
11718+ *
11719+ * This program is free software; you can redistribute it and/or modify
11720+ * it under the terms of the GNU General Public License as published by
11721+ * the Free Software Foundation; either version 2 of the License, or
11722+ * (at your option) any later version.
11723+ *
11724+ * This program is distributed in the hope that it will be useful,
11725+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11726+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11727+ * GNU General Public License for more details.
11728+ *
11729+ * You should have received a copy of the GNU General Public License
11730+ * along with this program; if not, write to the Free Software
11731+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
11732+ */
11733+
11734+#include <grub/misc.h>
11735+#include <grub/types.h>
11736+#include <grub/efi/api.h>
11737+#include <grub/efi/efi.h>
11738+#include <grub/efi/misc.h>
11739+
11740+#include <shared.h>
11741+
11742+#define grub_file_size() filemax
11743+
11744+static grub_efi_physical_address_t address;
11745+static grub_efi_uintn_t pages;
11746+static grub_efi_device_path_t *file_path;
11747+static grub_efi_handle_t image_handle;
11748+
11749+static int
11750+grub_chainloader_unload (void)
11751+{
11752+ grub_efi_boot_services_t *b;
11753+
11754+ b = grub_efi_system_table->boot_services;
11755+ Call_Service_1 (b->unload_image, image_handle);
11756+ Call_Service_2 (b->free_pages, address, pages);
11757+ grub_free (file_path);
11758+
11759+ return 0;
11760+}
11761+
11762+static int
11763+grub_chainloader_boot (void)
11764+{
11765+ grub_efi_boot_services_t *b;
11766+ grub_efi_status_t status;
11767+ grub_efi_uintn_t exit_data_size = 0;
11768+ grub_efi_char16_t *exit_data = NULL;
11769+
11770+ b = grub_efi_system_table->boot_services;
11771+ status = Call_Service_3 (b->start_image, image_handle,
11772+ &exit_data_size, &exit_data);
11773+ if (status != GRUB_EFI_SUCCESS)
11774+ {
11775+ if (exit_data)
11776+ {
11777+ char *buf;
11778+
11779+ buf = grub_malloc (exit_data_size * 4 + 1);
11780+ if (buf)
11781+ {
11782+ *grub_utf16_to_utf8 ((grub_uint8_t *) buf,
11783+ exit_data, exit_data_size) = 0;
11784+
11785+ grub_printf (buf);
11786+ grub_free (buf);
11787+ }
11788+ else
11789+ grub_printf ("unknown error\n");
11790+ }
11791+ errnum = ERR_UNRECOGNIZED;
11792+ }
11793+
11794+ if (exit_data)
11795+ Call_Service_1 (b->free_pool, exit_data);
11796+
11797+ grub_chainloader_unload ();
11798+
11799+ return 0;
11800+}
11801+
11802+static void
11803+copy_file_path (grub_efi_file_path_device_path_t *fp,
11804+ const char *str, grub_efi_uint16_t len)
11805+{
11806+ grub_efi_char16_t *p;
11807+ grub_efi_uint16_t size;
11808+
11809+ fp->header.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE;
11810+ fp->header.subtype = GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE;
11811+ size = len * sizeof (grub_efi_char16_t) + sizeof (*fp);
11812+ fp->header.length[0] = (grub_efi_uint8_t) (size & 0xff);
11813+ fp->header.length[1] = (grub_efi_uint8_t) (size >> 8);
11814+ for (p = fp->path_name; len > 0; len--, p++, str++)
11815+ {
11816+ *p = (grub_efi_char16_t) (*str == '/' ? '\\' : *str);
11817+ }
11818+}
11819+
11820+static grub_efi_device_path_t *
11821+make_file_path (const char *filename)
11822+{
11823+ char *dir_start;
11824+ char *dir_end;
11825+ grub_size_t size;
11826+ grub_efi_device_path_t *d;
11827+
11828+ dir_start = grub_strchr (filename, ')');
11829+ if (! dir_start)
11830+ dir_start = (char *) filename;
11831+ else
11832+ dir_start++;
11833+
11834+ dir_end = grub_strrchr (dir_start, '/');
11835+ if (! dir_end)
11836+ {
11837+ errnum = ERR_BAD_FILENAME;
11838+ grub_printf ("invalid EFI file path");
11839+ return 0;
11840+ }
11841+
11842+ size = 0;
11843+ file_path = grub_malloc ((grub_strlen (dir_start) + 1)
11844+ * sizeof (grub_efi_char16_t)
11845+ + sizeof (grub_efi_file_path_device_path_t) * 2);
11846+ if (! file_path)
11847+ return 0;
11848+
11849+ /* Fill the file path for the directory. */
11850+ d = (grub_efi_device_path_t *) file_path;
11851+
11852+ if (dir_end - dir_start)
11853+ {
11854+ copy_file_path ((grub_efi_file_path_device_path_t *) d,
11855+ dir_start, dir_end - dir_start);
11856+ d = GRUB_EFI_NEXT_DEVICE_PATH (d);
11857+ /* Fill the file path for the file. */
11858+ copy_file_path ((grub_efi_file_path_device_path_t *) d,
11859+ dir_end + 1, grub_strlen (dir_end + 1));
11860+ }
11861+ else
11862+ {
11863+ /* Fill the file path for the file. */
11864+ copy_file_path ((grub_efi_file_path_device_path_t *) d,
11865+ dir_end, grub_strlen (dir_end));
11866+ }
11867+
11868+ /* Fill the end of device path nodes. */
11869+ d = GRUB_EFI_NEXT_DEVICE_PATH (d);
11870+ d->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
11871+ d->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
11872+ d->length[0] = sizeof (*d);
11873+ d->length[1] = 0;
11874+
11875+ return file_path;
11876+}
11877+
11878+int
11879+grub_chainloader (char *filename)
11880+{
11881+ grub_ssize_t size;
11882+ grub_efi_status_t status;
11883+ grub_efi_boot_services_t *b;
11884+ grub_efi_handle_t dev_handle = 0;
11885+ grub_efi_loaded_image_t *loaded_image;
11886+
11887+ /* Initialize some global variables. */
11888+ address = 0xffffffff;
11889+ image_handle = 0;
11890+
11891+ b = grub_efi_system_table->boot_services;
11892+
11893+ if (! grub_open (filename))
11894+ goto fail1;
11895+
11896+ dev_handle = grub_efidisk_get_current_bdev_handle ();
11897+ if (! dev_handle)
11898+ {
11899+ errnum = ERR_UNRECOGNIZED;
11900+ grub_printf ("not a valid root device\n");
11901+ goto fail;
11902+ }
11903+
11904+ file_path = make_file_path (filename);
11905+ if (! file_path)
11906+ goto fail;
11907+
11908+ grub_printf ("file path: ");
11909+ grub_efi_print_device_path (file_path);
11910+
11911+ size = grub_file_size ();
11912+ pages = (((grub_efi_uintn_t) size + ((1 << 12) - 1)) >> 12);
11913+
11914+ status = Call_Service_4 (b->allocate_pages, GRUB_EFI_ALLOCATE_ANY_PAGES,
11915+ GRUB_EFI_LOADER_CODE, pages, &address);
11916+ if (status != GRUB_EFI_SUCCESS)
11917+ {
11918+ errnum = ERR_UNRECOGNIZED;
11919+ grub_printf ("cannot allocate %u pages", pages);
11920+ goto fail;
11921+ }
11922+
11923+ if (grub_read ((void *) ((grub_addr_t) address), size) != size)
11924+ {
11925+ if (errnum == ERR_NONE)
11926+ {
11927+ errnum = ERR_UNRECOGNIZED;
11928+ grub_printf ("too small");
11929+ }
11930+ goto fail;
11931+ }
11932+
11933+ status = Call_Service_6 (b->load_image, 0, grub_efi_image_handle, file_path,
11934+ (void *) ((grub_addr_t) address), size,
11935+ &image_handle);
11936+ if (status != GRUB_EFI_SUCCESS)
11937+ {
11938+ errnum = ERR_UNRECOGNIZED;
11939+ if (status == GRUB_EFI_OUT_OF_RESOURCES)
11940+ grub_printf ("out of resources");
11941+ else
11942+ grub_printf ("cannot load image");
11943+
11944+ goto fail;
11945+ }
11946+
11947+ /* LoadImage does not set a device handler when the image is
11948+ loaded from memory, so it is necessary to set it explicitly here.
11949+ This is a mess. */
11950+ loaded_image = grub_efi_get_loaded_image (image_handle);
11951+ if (! loaded_image)
11952+ {
11953+ errnum = ERR_UNRECOGNIZED;
11954+ grub_printf ("no loaded image available");
11955+ goto fail;
11956+ }
11957+ loaded_image->device_handle = dev_handle;
11958+
11959+ grub_close ();
11960+ return KERNEL_TYPE_CHAINLOADER;
11961+
11962+ fail:
11963+ grub_close ();
11964+ fail1:
11965+ if (address)
11966+ b->free_pages (address, pages);
11967+
11968+ return KERNEL_TYPE_NONE;
11969+}
11970+
11971+/* calls for direct boot-loader chaining */
11972+void
11973+chain_stage1 (unsigned long segment, unsigned long offset,
11974+ unsigned long part_table_addr)
11975+{
11976+ grub_chainloader_boot ();
11977+ for (;;);
11978+}
11979diff --git a/efi/eficon.c b/efi/eficon.c
11980new file mode 100644
11981index 0000000..037f050
11982--- /dev/null
11983+++ b/efi/eficon.c
11984@@ -0,0 +1,306 @@
11985+/*
11986+ * GRUB -- GRand Unified Bootloader
11987+ * Copyright (C) 2006 Free Software Foundation, Inc.
11988+ *
11989+ * This program is free software; you can redistribute it and/or modify
11990+ * it under the terms of the GNU General Public License as published by
11991+ * the Free Software Foundation; either version 2 of the License, or
11992+ * (at your option) any later version.
11993+ *
11994+ * This program is distributed in the hope that it will be useful,
11995+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11996+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11997+ * GNU General Public License for more details.
11998+ *
11999+ * You should have received a copy of the GNU General Public License
12000+ * along with this program; if not, write to the Free Software
12001+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
12002+ */
12003+
12004+#include <grub/misc.h>
12005+#include <grub/types.h>
12006+#include <grub/efi/efi.h>
12007+#include <grub/efi/api.h>
12008+#include <grub/efi/misc.h>
12009+
12010+#include <shared.h>
12011+#include <term.h>
12012+
12013+static int
12014+grub_console_standard_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_YELLOW,
12015+ GRUB_EFI_BACKGROUND_BLACK);
12016+static int
12017+grub_console_normal_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_LIGHTGRAY,
12018+ GRUB_EFI_BACKGROUND_BLACK);
12019+static int
12020+grub_console_highlight_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_BLACK,
12021+ GRUB_EFI_BACKGROUND_LIGHTGRAY);
12022+
12023+static int read_key = -1;
12024+
12025+void
12026+console_putchar (int c)
12027+{
12028+ grub_efi_char16_t str[2];
12029+ grub_efi_simple_text_output_interface_t *o;
12030+
12031+ o = grub_efi_system_table->con_out;
12032+
12033+ switch (c)
12034+ {
12035+ case DISP_LEFT:
12036+ c = '<';
12037+ break;
12038+
12039+ case DISP_UP:
12040+ c = '^';
12041+ break;
12042+
12043+ case DISP_RIGHT:
12044+ c = '>';
12045+ break;
12046+
12047+ case DISP_DOWN:
12048+ c = 'v';
12049+ break;
12050+
12051+ case DISP_HORIZ:
12052+ c = '-';
12053+ break;
12054+
12055+ case DISP_VERT:
12056+ c = '|';
12057+ break;
12058+
12059+ case DISP_UL:
12060+ case DISP_UR:
12061+ case DISP_LL:
12062+ case DISP_LR:
12063+ c = '+';
12064+ break;
12065+ }
12066+
12067+ /* For now, do not try to use a surrogate pair. */
12068+ if (c > 0xffff)
12069+ c = '?';
12070+
12071+ str[0] = (grub_efi_char16_t) (c & 0xffff);
12072+ str[1] = 0;
12073+
12074+ /* Should this test be cached? */
12075+ if (c > 0x7f && Call_Service_2 (o->test_string, o, str) != GRUB_EFI_SUCCESS)
12076+ return;
12077+
12078+ Call_Service_2 (o->output_string, o, str);
12079+}
12080+
12081+int
12082+console_checkkey (void)
12083+{
12084+ grub_efi_simple_input_interface_t *i;
12085+ grub_efi_input_key_t key;
12086+ grub_efi_status_t status;
12087+
12088+ if (read_key >= 0)
12089+ return 1;
12090+
12091+ i = grub_efi_system_table->con_in;
12092+ status = Call_Service_2 (i->read_key_stroke ,i, &key);
12093+#if 0
12094+ switch (status)
12095+ {
12096+ case GRUB_EFI_SUCCESS:
12097+ {
12098+ int xy;
12099+
12100+ xy = console_getxy ();
12101+ console_gotoxy (0, 0);
12102+ grub_printf ("scan_code=%x,unicode_char=%x ",
12103+ (unsigned) key.scan_code,
12104+ (unsigned) key.unicode_char);
12105+ console_gotoxy (xy >> 8, xy & 0xff);
12106+ }
12107+ break;
12108+
12109+ case GRUB_EFI_NOT_READY:
12110+ grub_printf ("not ready ");
12111+ break;
12112+
12113+ default:
12114+ grub_printf ("device error ");
12115+ break;
12116+ }
12117+#endif
12118+
12119+ if (status == GRUB_EFI_SUCCESS)
12120+ {
12121+ switch (key.scan_code)
12122+ {
12123+ case 0x00:
12124+ read_key = key.unicode_char;
12125+ break;
12126+ case 0x01:
12127+ read_key = 16;
12128+ break;
12129+ case 0x02:
12130+ read_key = 14;
12131+ break;
12132+ case 0x03:
12133+ read_key = 6;
12134+ break;
12135+ case 0x04:
12136+ read_key = 2;
12137+ break;
12138+ case 0x05:
12139+ read_key = 1;
12140+ break;
12141+ case 0x06:
12142+ read_key = 5;
12143+ break;
12144+ case 0x07:
12145+ break;
12146+ case 0x08:
12147+ read_key = 4;
12148+ break;
12149+ case 0x09:
12150+ break;
12151+ case 0x0a:
12152+ break;
12153+ case 0x17:
12154+ read_key = '\e';
12155+ break;
12156+ default:
12157+ break;
12158+ }
12159+ }
12160+
12161+ return read_key;
12162+}
12163+
12164+int
12165+console_getkey (void)
12166+{
12167+ grub_efi_simple_input_interface_t *i;
12168+ grub_efi_boot_services_t *b;
12169+ grub_efi_uintn_t index;
12170+ grub_efi_status_t status;
12171+ int key;
12172+
12173+ if (read_key >= 0)
12174+ {
12175+ key = read_key;
12176+ read_key = -1;
12177+ return key;
12178+ }
12179+
12180+ i = grub_efi_system_table->con_in;
12181+ b = grub_efi_system_table->boot_services;
12182+
12183+ do
12184+ {
12185+ status = Call_Service_3 (b->wait_for_event , 1, &(i->wait_for_key), &index);
12186+ if (status != GRUB_EFI_SUCCESS)
12187+ return -1;
12188+
12189+ console_checkkey ();
12190+ }
12191+ while (read_key < 0);
12192+
12193+ key = read_key;
12194+ read_key = -1;
12195+ return key;
12196+}
12197+
12198+int
12199+console_keystatus (void)
12200+{
12201+ /* Doesn't look like EFI can support this... */
12202+ return 0;
12203+}
12204+
12205+int
12206+console_getxy (void)
12207+{
12208+ grub_efi_simple_text_output_interface_t *o;
12209+
12210+ o = grub_efi_system_table->con_out;
12211+ return ((o->mode->cursor_column << 8) | o->mode->cursor_row);
12212+}
12213+
12214+void
12215+console_gotoxy (int x, int y)
12216+{
12217+ grub_efi_simple_text_output_interface_t *o;
12218+
12219+ o = grub_efi_system_table->con_out;
12220+ Call_Service_3 (o->set_cursor_position , o, x, y);
12221+}
12222+
12223+void
12224+console_cls (void)
12225+{
12226+ grub_efi_simple_text_output_interface_t *o;
12227+ grub_efi_int32_t orig_attr;
12228+
12229+ o = grub_efi_system_table->con_out;
12230+ orig_attr = o->mode->attribute;
12231+ Call_Service_2 (o->set_attributes, o, GRUB_EFI_BACKGROUND_BLACK);
12232+ Call_Service_1 (o->clear_screen , o);
12233+ Call_Service_2 (o->set_attributes , o, orig_attr);
12234+}
12235+
12236+void
12237+console_setcolorstate (color_state state)
12238+{
12239+ grub_efi_simple_text_output_interface_t *o;
12240+
12241+ o = grub_efi_system_table->con_out;
12242+
12243+ switch (state) {
12244+ case COLOR_STATE_STANDARD:
12245+ Call_Service_2 (o->set_attributes, o, grub_console_standard_color);
12246+ break;
12247+ case COLOR_STATE_NORMAL:
12248+ Call_Service_2 (o->set_attributes, o, grub_console_normal_color);
12249+ break;
12250+ case COLOR_STATE_HIGHLIGHT:
12251+ Call_Service_2 (o->set_attributes, o, grub_console_highlight_color);
12252+ break;
12253+ default:
12254+ break;
12255+ }
12256+}
12257+
12258+void
12259+console_setcolor (int normal_color, int highlight_color)
12260+{
12261+ grub_console_normal_color = normal_color;
12262+ grub_console_highlight_color = highlight_color;
12263+}
12264+
12265+int
12266+console_setcursor (int on)
12267+{
12268+ grub_efi_simple_text_output_interface_t *o;
12269+
12270+ o = grub_efi_system_table->con_out;
12271+ Call_Service_2 (o->enable_cursor, o, on);
12272+ return on;
12273+}
12274+
12275+void
12276+grub_console_init (void)
12277+{
12278+ /* FIXME: it is necessary to consider the case where no console control
12279+ is present but the default is already in text mode. */
12280+ if (! grub_efi_set_text_mode (1))
12281+ {
12282+ grub_printf ("cannot set text mode");
12283+ return;
12284+ }
12285+}
12286+
12287+void
12288+grub_console_fini (void)
12289+{
12290+}
12291diff --git a/efi/eficore.c b/efi/eficore.c
12292new file mode 100644
12293index 0000000..8abea7d
12294--- /dev/null
12295+++ b/efi/eficore.c
12296@@ -0,0 +1,241 @@
12297+/* eficore.c - generic EFI support */
12298+/*
12299+ * GRUB -- GRand Unified Bootloader
12300+ * Copyright (C) 2006 Free Software Foundation, Inc.
12301+ *
12302+ * This program is free software; you can redistribute it and/or modify
12303+ * it under the terms of the GNU General Public License as published by
12304+ * the Free Software Foundation; either version 2 of the License, or
12305+ * (at your option) any later version.
12306+ *
12307+ * This program is distributed in the hope that it will be useful,
12308+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12309+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12310+ * GNU General Public License for more details.
12311+ *
12312+ * You should have received a copy of the GNU General Public License
12313+ * along with this program; if not, write to the Free Software
12314+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
12315+ */
12316+
12317+#include <config.h>
12318+#include <grub/misc.h>
12319+#include <grub/efi/api.h>
12320+#include <grub/efi/efi.h>
12321+#include <grub/efi/eficall.h>
12322+#include <grub/efi/console_control.h>
12323+#include <grub/efi/time.h>
12324+
12325+#include <shared.h>
12326+
12327+/* The handle of GRUB itself. Filled in by the startup code. */
12328+grub_efi_handle_t grub_efi_image_handle;
12329+
12330+/* The pointer to a system table. Filled in by the startup code. */
12331+grub_efi_system_table_t *grub_efi_system_table;
12332+
12333+static grub_efi_guid_t console_control_guid = GRUB_EFI_CONSOLE_CONTROL_GUID;
12334+static grub_efi_guid_t loaded_image_guid = GRUB_EFI_LOADED_IMAGE_GUID;
12335+static grub_efi_guid_t device_path_guid = GRUB_EFI_DEVICE_PATH_GUID;
12336+
12337+/* temporary, until we're using gnu-efi's include files --pjones */
12338+extern int setjmp(grub_jmp_buf env);
12339+int grub_setjmp(grub_jmp_buf env)
12340+{
12341+ return setjmp(env);
12342+}
12343+
12344+extern void longjmp(grub_jmp_buf env, int val);
12345+void grub_longjmp(grub_jmp_buf env, int val)
12346+{
12347+ longjmp(env, val);
12348+}
12349+
12350+grub_efi_status_t
12351+grub_efi_locate_device_path (grub_efi_guid_t *protocol,
12352+ grub_efi_device_path_t **dp,
12353+ grub_efi_handle_t *handle)
12354+{
12355+ return Call_Service_3(
12356+ grub_efi_system_table->boot_services->locate_device_path,
12357+ protocol, dp, handle);
12358+}
12359+
12360+grub_efi_status_t
12361+grub_efi_locate_handle_buffer (grub_efi_locate_search_type_t search_type,
12362+ grub_efi_guid_t *protocol,
12363+ void *search_key,
12364+ grub_efi_uintn_t *no_handles,
12365+ grub_efi_handle_t **buffer)
12366+{
12367+ return Call_Service_5(
12368+ grub_efi_system_table->boot_services->locate_handle_buffer,
12369+ search_type, protocol, search_key, no_handles, buffer);
12370+}
12371+
12372+void *
12373+grub_efi_locate_protocol (grub_efi_guid_t *protocol, void *registration)
12374+{
12375+ void *interface;
12376+ grub_efi_status_t status;
12377+
12378+ status = Call_Service_3 (grub_efi_system_table->boot_services->locate_protocol,
12379+ protocol,
12380+ registration,
12381+ &interface);
12382+ if (status != GRUB_EFI_SUCCESS)
12383+ return 0;
12384+
12385+ return interface;
12386+}
12387+
12388+/* Return the array of handles which meet the requirement. If successful,
12389+ the number of handles is stored in NUM_HANDLES. The array is allocated
12390+ from the heap. */
12391+grub_efi_handle_t *
12392+grub_efi_locate_handle (grub_efi_locate_search_type_t search_type,
12393+ grub_efi_guid_t *protocol,
12394+ void *search_key,
12395+ grub_efi_uintn_t *num_handles)
12396+{
12397+ grub_efi_boot_services_t *b;
12398+ grub_efi_status_t status;
12399+ grub_efi_handle_t *buffer;
12400+ grub_efi_uintn_t buffer_size = 8 * sizeof (grub_efi_handle_t);
12401+
12402+ buffer = grub_malloc (buffer_size);
12403+ if (! buffer)
12404+ return 0;
12405+
12406+ b = grub_efi_system_table->boot_services;
12407+ status = Call_Service_5 (b->locate_handle, search_type, protocol,
12408+ search_key, &buffer_size, buffer);
12409+ if (status == GRUB_EFI_BUFFER_TOO_SMALL)
12410+ {
12411+ grub_free (buffer);
12412+ buffer = grub_malloc (buffer_size);
12413+ if (! buffer)
12414+ return 0;
12415+
12416+ status = Call_Service_5 (b->locate_handle, search_type, protocol,
12417+ search_key, &buffer_size, buffer);
12418+ }
12419+
12420+ if (status != GRUB_EFI_SUCCESS)
12421+ {
12422+ grub_free (buffer);
12423+ return 0;
12424+ }
12425+
12426+ *num_handles = buffer_size / sizeof (grub_efi_handle_t);
12427+ return buffer;
12428+}
12429+
12430+void *
12431+grub_efi_open_protocol (grub_efi_handle_t handle,
12432+ grub_efi_guid_t *protocol,
12433+ grub_efi_uint32_t attributes)
12434+{
12435+ grub_efi_boot_services_t *b;
12436+ grub_efi_status_t status;
12437+ void *interface;
12438+
12439+ b = grub_efi_system_table->boot_services;
12440+ status = Call_Service_6 ( b->open_protocol,
12441+ handle,
12442+ protocol,
12443+ &interface,
12444+ grub_efi_image_handle,
12445+ 0,
12446+ attributes);
12447+ if (status != GRUB_EFI_SUCCESS)
12448+ return 0;
12449+
12450+ return interface;
12451+}
12452+
12453+int
12454+grub_efi_set_text_mode (int on)
12455+{
12456+ grub_efi_console_control_protocol_t *c;
12457+ grub_efi_screen_mode_t mode, new_mode;
12458+
12459+ c = grub_efi_locate_protocol (&console_control_guid, 0);
12460+ if (! c)
12461+ /* No console control protocol instance available, assume it is
12462+ already in text mode. */
12463+ return 1;
12464+
12465+ if (Call_Service_4 (c->get_mode , c, &mode, 0, 0) != GRUB_EFI_SUCCESS)
12466+ return 0;
12467+
12468+ new_mode = on ? GRUB_EFI_SCREEN_TEXT : GRUB_EFI_SCREEN_GRAPHICS;
12469+ if (mode != new_mode)
12470+ if (Call_Service_2 (c->set_mode , c, new_mode) != GRUB_EFI_SUCCESS)
12471+ return 0;
12472+
12473+ return 1;
12474+}
12475+
12476+void
12477+grub_efi_stall (grub_efi_uintn_t microseconds)
12478+{
12479+ Call_Service_1 (grub_efi_system_table->boot_services->stall , microseconds);
12480+}
12481+
12482+grub_efi_loaded_image_t *
12483+grub_efi_get_loaded_image (grub_efi_handle_t image_handle)
12484+{
12485+ return grub_efi_open_protocol (image_handle,
12486+ &loaded_image_guid,
12487+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
12488+}
12489+
12490+void
12491+grub_exit (void)
12492+{
12493+ grub_efi_fini ();
12494+ Call_Service_4(grub_efi_system_table->boot_services->exit,
12495+ grub_efi_image_handle,
12496+ GRUB_EFI_SUCCESS,
12497+ 0,
12498+ 0 );
12499+ for (;;);
12500+}
12501+
12502+int
12503+grub_efi_exit_boot_services (grub_efi_uintn_t map_key)
12504+{
12505+ grub_efi_boot_services_t *b;
12506+ grub_efi_status_t status;
12507+
12508+ b = grub_efi_system_table->boot_services;
12509+ status = Call_Service_2 (b->exit_boot_services ,
12510+ grub_efi_image_handle,
12511+ map_key);
12512+ return status == GRUB_EFI_SUCCESS;
12513+}
12514+
12515+grub_uint32_t
12516+grub_get_rtc (void)
12517+{
12518+ grub_efi_time_t time;
12519+ grub_efi_runtime_services_t *r;
12520+
12521+ r = grub_efi_system_table->runtime_services;
12522+ if (Call_Service_2(r->get_time , &time, 0) != GRUB_EFI_SUCCESS)
12523+ /* What is possible in this case? */
12524+ return 0;
12525+
12526+ return (((time.minute * 60 + time.second) * 1000
12527+ + time.nanosecond / 1000000)
12528+ * GRUB_TICKS_PER_SECOND / 1000);
12529+}
12530+
12531+grub_efi_device_path_t *
12532+grub_efi_get_device_path (grub_efi_handle_t handle)
12533+{
12534+ return grub_efi_open_protocol (handle, &device_path_guid,
12535+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
12536+}
12537+
12538diff --git a/efi/efidisk.c b/efi/efidisk.c
12539new file mode 100644
12540index 0000000..6a505f3
12541--- /dev/null
12542+++ b/efi/efidisk.c
12543@@ -0,0 +1,801 @@
12544+/*
12545+ * GRUB -- GRand Unified Bootloader
12546+ * Copyright (C) 2006 Free Software Foundation, Inc.
12547+ *
12548+ * GRUB is free software; you can redistribute it and/or modify
12549+ * it under the terms of the GNU General Public License as published by
12550+ * the Free Software Foundation; either version 2 of the License, or
12551+ * (at your option) any later version.
12552+ *
12553+ * This program is distributed in the hope that it will be useful,
12554+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12555+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12556+ * GNU General Public License for more details.
12557+ *
12558+ * You should have received a copy of the GNU General Public License
12559+ * along with GRUB; if not, write to the Free Software
12560+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
12561+ */
12562+
12563+#include <grub/types.h>
12564+#include <grub/misc.h>
12565+#include <grub/efi/api.h>
12566+#include <grub/efi/efi.h>
12567+#include <grub/efi/misc.h>
12568+
12569+#include <shared.h>
12570+
12571+struct grub_efidisk_data
12572+{
12573+ grub_efi_handle_t handle;
12574+ grub_efi_device_path_t *device_path;
12575+ grub_efi_device_path_t *last_device_path;
12576+ grub_efi_block_io_t *block_io;
12577+ grub_efi_disk_io_t *disk_io;
12578+ struct grub_efidisk_data *next;
12579+};
12580+
12581+/* GUIDs. */
12582+static grub_efi_guid_t disk_io_guid = GRUB_EFI_DISK_IO_GUID;
12583+static grub_efi_guid_t block_io_guid = GRUB_EFI_BLOCK_IO_GUID;
12584+static grub_efi_guid_t device_path_from_text_guid = GRUB_EFI_DEVICE_PATH_FROM_TEXT_GUID;
12585+
12586+static struct grub_efidisk_data *fd_devices;
12587+static struct grub_efidisk_data *hd_devices;
12588+static struct grub_efidisk_data *cd_devices;
12589+
12590+static int get_device_sector_bits(struct grub_efidisk_data *device);
12591+static int get_device_sector_size(struct grub_efidisk_data *device);
12592+static struct grub_efidisk_data *get_device_from_drive (int drive);
12593+
12594+static struct grub_efidisk_data *
12595+make_devices (void)
12596+{
12597+ grub_efi_uintn_t num_handles;
12598+ grub_efi_handle_t *handles;
12599+ grub_efi_handle_t *handle;
12600+ struct grub_efidisk_data *devices = 0;
12601+
12602+ /* Find handles which support the disk io interface. */
12603+ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &disk_io_guid,
12604+ 0, &num_handles);
12605+ if (! handles)
12606+ return 0;
12607+
12608+ /* Make a linked list of devices. */
12609+ for (handle = handles; num_handles--; handle++)
12610+ {
12611+ grub_efi_device_path_t *dp;
12612+ grub_efi_device_path_t *ldp;
12613+ struct grub_efidisk_data *d;
12614+ grub_efi_block_io_t *bio;
12615+ grub_efi_disk_io_t *dio;
12616+
12617+ dp = grub_efi_get_device_path (*handle);
12618+ if (! dp)
12619+ continue;
12620+
12621+ ldp = find_last_device_path (dp);
12622+ if (! ldp)
12623+ /* This is empty. Why? */
12624+ continue;
12625+
12626+ bio = grub_efi_open_protocol (*handle, &block_io_guid,
12627+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
12628+ dio = grub_efi_open_protocol (*handle, &disk_io_guid,
12629+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
12630+ if (! bio || ! dio)
12631+ /* This should not happen... Why? */
12632+ continue;
12633+
12634+ d = grub_malloc (sizeof (*d));
12635+ if (! d)
12636+ {
12637+ /* Uggh. */
12638+ grub_free (handles);
12639+ return 0;
12640+ }
12641+
12642+ d->handle = *handle;
12643+ d->device_path = dp;
12644+ d->last_device_path = ldp;
12645+ d->block_io = bio;
12646+ d->disk_io = dio;
12647+ d->next = devices;
12648+ devices = d;
12649+ }
12650+
12651+ grub_free (handles);
12652+
12653+ return devices;
12654+}
12655+
12656+static int
12657+iterate_child_devices (struct grub_efidisk_data *devices,
12658+ struct grub_efidisk_data *d,
12659+ int (*hook) (struct grub_efidisk_data *child))
12660+{
12661+ struct grub_efidisk_data *p;
12662+
12663+ for (p = devices; p; p = p->next)
12664+ {
12665+ grub_efi_device_path_t *dp, *ldp;
12666+
12667+ dp = duplicate_device_path (p->device_path);
12668+ if (! dp)
12669+ return 0;
12670+
12671+ ldp = find_last_device_path (dp);
12672+ ldp->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
12673+ ldp->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
12674+ ldp->length[0] = sizeof (*ldp);
12675+ ldp->length[1] = 0;
12676+
12677+ if (compare_device_paths (dp, d->device_path) == 0)
12678+ if (hook (p))
12679+ {
12680+ grub_free (dp);
12681+ return 1;
12682+ }
12683+
12684+ grub_free (dp);
12685+ }
12686+
12687+ return 0;
12688+}
12689+
12690+/* Add a device into a list of devices in an ascending order. */
12691+static void
12692+add_device (struct grub_efidisk_data **devices, struct grub_efidisk_data *d)
12693+{
12694+ struct grub_efidisk_data **p;
12695+ struct grub_efidisk_data *n;
12696+
12697+ for (p = devices; *p; p = &((*p)->next))
12698+ {
12699+ int ret;
12700+
12701+ ret = compare_device_paths (find_last_device_path ((*p)->device_path),
12702+ find_last_device_path (d->device_path));
12703+ if (ret == 0)
12704+ ret = compare_device_paths ((*p)->device_path,
12705+ d->device_path);
12706+ if (ret == 0)
12707+ return;
12708+ else if (ret > 0)
12709+ break;
12710+ }
12711+
12712+ n = grub_malloc (sizeof (*n));
12713+ if (! n)
12714+ return;
12715+
12716+ grub_memcpy (n, d, sizeof (*n));
12717+ n->next = (*p);
12718+ (*p) = n;
12719+}
12720+
12721+/* Name the devices. */
12722+static void
12723+name_devices (struct grub_efidisk_data *devices)
12724+{
12725+ struct grub_efidisk_data *d;
12726+
12727+ /* Let's see what can be added more. */
12728+ for (d = devices; d; d = d->next)
12729+ {
12730+ grub_efi_device_path_t *dp;
12731+ grub_efi_block_io_media_t *m;
12732+
12733+ dp = d->last_device_path;
12734+ if (! dp)
12735+ continue;
12736+
12737+ m = d->block_io->media;
12738+ if (GRUB_EFI_DEVICE_PATH_TYPE(dp) == GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE)
12739+ {
12740+ /* XXX FIXME this won't work if we see write-protected disks with
12741+ * 4k sectors */
12742+ if (m->read_only && m->block_size > 0x200)
12743+ {
12744+ add_device (&cd_devices, d);
12745+ } else
12746+ {
12747+ add_device (&hd_devices, d);
12748+ }
12749+ }
12750+ if (GRUB_EFI_DEVICE_PATH_TYPE(dp) == GRUB_EFI_ACPI_DEVICE_PATH_TYPE)
12751+ {
12752+ add_device (&fd_devices, d);
12753+ }
12754+ }
12755+}
12756+
12757+static void
12758+free_devices (struct grub_efidisk_data *devices)
12759+{
12760+ struct grub_efidisk_data *p, *q;
12761+
12762+ for (p = devices; p; p = q)
12763+ {
12764+ q = p->next;
12765+ grub_free (p);
12766+ }
12767+}
12768+
12769+/* Enumerate all disks to name devices. */
12770+static void
12771+enumerate_disks (void)
12772+{
12773+ struct grub_efidisk_data *devices;
12774+
12775+ devices = make_devices ();
12776+ if (! devices)
12777+ return;
12778+
12779+ name_devices (devices);
12780+ free_devices (devices);
12781+}
12782+
12783+static struct grub_efidisk_data *
12784+get_device (struct grub_efidisk_data *devices, int num)
12785+{
12786+ struct grub_efidisk_data *d;
12787+
12788+ for (d = devices; d && num; d = d->next, num--)
12789+ ;
12790+
12791+ if (num == 0)
12792+ return d;
12793+
12794+ return 0;
12795+}
12796+
12797+static int
12798+grub_efidisk_read (struct grub_efidisk_data *d, grub_disk_addr_t sector,
12799+ grub_size_t size, char *buf)
12800+{
12801+ /* For now, use the disk io interface rather than the block io's. */
12802+ grub_efi_disk_io_t *dio;
12803+ grub_efi_block_io_t *bio;
12804+ grub_efi_status_t status;
12805+ grub_efi_uint64_t sector_size = get_device_sector_size(d);
12806+
12807+ dio = d->disk_io;
12808+ bio = d->block_io;
12809+
12810+ status = Call_Service_5 (dio->read,
12811+ dio, bio->media->media_id,
12812+ sector * sector_size,
12813+ size * sector_size,
12814+ buf);
12815+ if (status != GRUB_EFI_SUCCESS)
12816+ return -1;
12817+
12818+ return 0;
12819+}
12820+
12821+static int
12822+grub_efidisk_write (struct grub_efidisk_data *d, grub_disk_addr_t sector,
12823+ grub_size_t size, const char *buf)
12824+{
12825+ /* For now, use the disk io interface rather than the block io's. */
12826+ grub_efi_disk_io_t *dio;
12827+ grub_efi_block_io_t *bio;
12828+ grub_efi_status_t status;
12829+ grub_efi_uint64_t sector_size = get_device_sector_size(d);
12830+
12831+ dio = d->disk_io;
12832+ bio = d->block_io;
12833+
12834+ grub_dprintf ("efidisk",
12835+ "writing 0x%x sectors at the sector 0x%x to ??\n",
12836+ (unsigned) size, (unsigned int) sector);
12837+
12838+ status = Call_Service_5 (dio->write ,
12839+ dio, bio->media->media_id,
12840+ sector * sector_size,
12841+ size * sector_size,
12842+ (void *) buf);
12843+ if (status != GRUB_EFI_SUCCESS)
12844+ return -1;
12845+
12846+ return 0;
12847+}
12848+
12849+void
12850+grub_efidisk_init (void)
12851+{
12852+ enumerate_disks ();
12853+}
12854+
12855+void
12856+grub_efidisk_fini (void)
12857+{
12858+ free_devices (fd_devices);
12859+ free_devices (hd_devices);
12860+ free_devices (cd_devices);
12861+}
12862+
12863+static int
12864+get_device_sector_size(struct grub_efidisk_data *device)
12865+{
12866+ return device->block_io->media->block_size;
12867+}
12868+
12869+int
12870+get_sector_size(int drive)
12871+{
12872+ struct grub_efidisk_data *device = get_device_from_drive(drive);
12873+ return get_device_sector_size(device);
12874+}
12875+
12876+/*
12877+ * ffz = Find First Zero in word. Undefined if no zero exists,
12878+ * so code should check against ~0UL first..
12879+ */
12880+static __inline__ unsigned int
12881+ffz (unsigned int word)
12882+{
12883+ __asm__ ("bsfl %1,%0"
12884+: "=r" (word)
12885+: "r" (~word));
12886+ return word;
12887+}
12888+#define log2(n) ffz(~(n))
12889+
12890+static int
12891+get_device_sector_bits(struct grub_efidisk_data *device)
12892+{
12893+ int sector_size = get_device_sector_size(device);
12894+ return log2(sector_size);
12895+}
12896+
12897+int
12898+get_sector_bits(int drive)
12899+{
12900+ int sector_size = get_sector_size(drive);
12901+ return log2(sector_size);
12902+}
12903+
12904+static struct grub_efidisk_data *
12905+get_device_from_drive (int drive)
12906+{
12907+#ifdef SUPPORT_NETBOOT
12908+ /* Not supported */
12909+ if (drive == NETWORK_DRIVE)
12910+ return NULL;
12911+#endif
12912+ if (drive == GRUB_INVALID_DRIVE)
12913+ return NULL;
12914+ if (drive == cdrom_drive)
12915+ return get_device (cd_devices, 0);
12916+ /* Hard disk */
12917+ if (drive & 0x80)
12918+ return get_device (hd_devices, drive - 0x80);
12919+ /* Floppy disk */
12920+ else
12921+ return get_device (fd_devices, drive);
12922+}
12923+
12924+/* Low-level disk I/O. Our stubbed version just returns a file
12925+ descriptor, not the actual geometry. */
12926+int
12927+get_diskinfo (int drive, struct geometry *geometry)
12928+{
12929+ struct grub_efidisk_data *d;
12930+
12931+ d = get_device_from_drive (drive);
12932+ if (!d)
12933+ return -1;
12934+ geometry->total_sectors = d->block_io->media->last_block+1;
12935+ geometry->sector_size = d->block_io->media->block_size;
12936+ geometry->flags = BIOSDISK_FLAG_LBA_EXTENSION;
12937+ geometry->sectors = 63;
12938+ if (geometry->total_sectors / 63 < 255)
12939+ geometry->heads = 1;
12940+ else
12941+ geometry->heads = 255;
12942+ geometry->cylinders = geometry->total_sectors / 63 / geometry->heads;
12943+ return 0;
12944+}
12945+
12946+int
12947+biosdisk (int subfunc, int drive, struct geometry *geometry,
12948+ int sector, int nsec, int segment)
12949+{
12950+ char *buf;
12951+ struct grub_efidisk_data *d;
12952+ int ret;
12953+
12954+ d = get_device_from_drive (drive);
12955+ if (!d)
12956+ return -1;
12957+ buf = (char *) ((unsigned long) segment << 4);
12958+ switch (subfunc)
12959+ {
12960+ case BIOSDISK_READ:
12961+ ret = grub_efidisk_read (d, sector, nsec, buf);
12962+ break;
12963+ case BIOSDISK_WRITE:
12964+ ret = grub_efidisk_write (d, sector, nsec, buf);
12965+ break;
12966+ default:
12967+ return -1;
12968+ }
12969+
12970+ return 0;
12971+}
12972+
12973+/* Some utility functions to map GRUB devices with EFI devices. */
12974+grub_efi_handle_t
12975+grub_efidisk_get_current_bdev_handle (void)
12976+{
12977+ struct grub_efidisk_data *d;
12978+
12979+ d = get_device_from_drive (current_drive);
12980+ if (d == NULL)
12981+ return NULL;
12982+
12983+ if (current_drive == GRUB_INVALID_DRIVE)
12984+ return NULL;
12985+
12986+ if (current_drive == cdrom_drive)
12987+ return d->handle;
12988+
12989+ if (! (current_drive & 0x80))
12990+ return d->handle;
12991+ /* If this is the whole disk, just return its own data. */
12992+ else if (current_partition == 0xFFFFFF)
12993+ return d->handle;
12994+ /* Otherwise, we must query the corresponding device to the firmware. */
12995+ else
12996+ {
12997+ struct grub_efidisk_data *devices;
12998+ grub_efi_handle_t handle = 0;
12999+ auto int find_partition (struct grub_efidisk_data *c);
13000+
13001+ int find_partition (struct grub_efidisk_data *c)
13002+ {
13003+ grub_efi_hard_drive_device_path_t hd;
13004+
13005+ grub_memcpy (&hd, c->last_device_path, sizeof (hd));
13006+
13007+ if ((GRUB_EFI_DEVICE_PATH_TYPE (c->last_device_path)
13008+ == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE)
13009+ && (GRUB_EFI_DEVICE_PATH_SUBTYPE (c->last_device_path)
13010+ == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)
13011+ && (part_start == hd.partition_start))
13012+ {
13013+ handle = c->handle;
13014+ return 1;
13015+ }
13016+
13017+ return 0;
13018+ }
13019+
13020+ devices = make_devices ();
13021+ iterate_child_devices (devices, d, find_partition);
13022+ free_devices (devices);
13023+
13024+ if (handle != 0)
13025+ return handle;
13026+ }
13027+
13028+ return 0;
13029+}
13030+
13031+int
13032+grub_get_drive_partition_from_bdev_handle (grub_efi_handle_t handle,
13033+ unsigned long *drive,
13034+ unsigned long *partition)
13035+{
13036+ grub_efi_device_path_t *dp, *dp1;
13037+ struct grub_efidisk_data *d, *devices;
13038+ int drv;
13039+ unsigned long part;
13040+ grub_efi_hard_drive_device_path_t hd;
13041+ int found;
13042+ int part_type, part_entry;
13043+ unsigned long partition_start, partition_len, part_offset, part_extoffset;
13044+ unsigned long gpt_offset;
13045+ int gpt_count, gpt_size;
13046+ auto int find_bdev (struct grub_efidisk_data *c);
13047+
13048+ int find_bdev (struct grub_efidisk_data *c)
13049+ {
13050+ if (! compare_device_paths (c->device_path, dp))
13051+ {
13052+ grub_memcpy (&hd, c->last_device_path, sizeof (hd));
13053+ found = 1;
13054+ return 1;
13055+ }
13056+ return 0;
13057+ }
13058+
13059+ dp = grub_efi_get_device_path (handle);
13060+ if (! dp)
13061+ return 0;
13062+
13063+ dp1 = dp;
13064+ while (1)
13065+ {
13066+ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp1);
13067+ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE(dp1);
13068+ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (dp);
13069+
13070+ if (type == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE &&
13071+ subtype == GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE)
13072+ {
13073+ dp1->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
13074+ dp1->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
13075+ dp1->length[0] = 4;
13076+ dp1->length[1] = 0;
13077+ }
13078+
13079+ if (type == GRUB_EFI_MEDIA_DEVICE_PATH_TYPE &&
13080+ subtype == GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE)
13081+ {
13082+ grub_efi_hard_drive_device_path_t temp_hd;
13083+ grub_memcpy (&temp_hd, dp1, len);
13084+ if (temp_hd.signature_type == 0 && temp_hd.mbr_type >= 0x10) {
13085+ /*
13086+ * Apple Parttion Map CDs appear as hard drives with non-spec
13087+ * partition type fields. Fix them up.
13088+ */
13089+ dp1->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
13090+ dp1->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
13091+ dp1->length[0] = 4;
13092+ dp1->length[1] = 0;
13093+ }
13094+ }
13095+
13096+ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp1))
13097+ break;
13098+
13099+ dp1 = GRUB_EFI_NEXT_DEVICE_PATH(dp1);
13100+ }
13101+
13102+ drv = 0;
13103+ for (d = fd_devices; d; d = d->next, drv++)
13104+ {
13105+ if (! compare_device_paths (d->device_path, dp))
13106+ {
13107+ *partition = 0xFFFFFF;
13108+ *drive = drv;
13109+ return 1;
13110+ }
13111+ }
13112+
13113+ drv = cdrom_drive;
13114+ if (cd_devices && ! compare_device_paths (cd_devices->device_path, dp))
13115+ {
13116+ *partition = 0xFFFFFF;
13117+ *drive = drv;
13118+ return 1;
13119+ }
13120+
13121+ drv = 0x80;
13122+ for (d = hd_devices; d; d = d->next, drv++)
13123+ {
13124+ if (! compare_device_paths (d->device_path, dp))
13125+ {
13126+ *partition = 0xFFFFFF;
13127+ *drive = drv;
13128+ return 1;
13129+ }
13130+ }
13131+
13132+ devices = make_devices ();
13133+
13134+ drv = 0x80;
13135+ found = 0;
13136+ for (d = hd_devices; d; d = d->next, drv++)
13137+ {
13138+ iterate_child_devices (devices, d, find_bdev);
13139+ if (found)
13140+ break;
13141+ }
13142+
13143+ free_devices (devices);
13144+
13145+ if (! found)
13146+ return 0;
13147+
13148+ char buf[get_sector_size(drv)];
13149+ part = 0xFFFFFF;
13150+ while (next_partition (drv, 0, &part, &part_type,
13151+ &partition_start, &partition_len,
13152+ &part_offset, &part_entry,
13153+ &part_extoffset, &gpt_offset, &gpt_count,
13154+ &gpt_size, buf))
13155+ {
13156+ if (part_type
13157+ && partition_start == hd.partition_start)
13158+ {
13159+ *drive = drv;
13160+ *partition = part;
13161+ return 1;
13162+ }
13163+ }
13164+
13165+ return 0;
13166+}
13167+
13168+int
13169+check_device (const char *device)
13170+{
13171+ grub_efi_device_path_t *dp;
13172+
13173+ dp = device_path_from_utf8(device);
13174+ if (dp == NULL)
13175+ return 0;
13176+
13177+ grub_free(dp);
13178+ return 1;
13179+}
13180+
13181+static void
13182+swap_devices (struct grub_efidisk_data *d0,
13183+ struct grub_efidisk_data *d1)
13184+{
13185+ struct grub_efidisk_data tmp;
13186+
13187+ if (!d0 || !d1)
13188+ return;
13189+
13190+ memcpy(&tmp, d1, sizeof(*d1));
13191+
13192+ memcpy(&d0->handle, &d1->handle, sizeof(d1->handle));
13193+ d0->device_path = d1->device_path;
13194+ d0->last_device_path = d1->last_device_path;
13195+ d0->block_io = d1->block_io;
13196+ d0->disk_io = d1->disk_io;
13197+
13198+ memcpy(d1->handle, tmp.handle, sizeof(tmp.handle));
13199+ d1->device_path = tmp.device_path;
13200+ d1->last_device_path = tmp.last_device_path;
13201+ d1->block_io = tmp.block_io;
13202+ d1->disk_io = tmp.disk_io;
13203+}
13204+
13205+static int
13206+compare_hd_device_paths(grub_efi_hard_drive_device_path_t *hd0,
13207+ grub_efi_hard_drive_device_path_t *hd1)
13208+{
13209+ grub_efi_uint64_t x;
13210+ int sigsize;
13211+
13212+ if ((x = hd1->partition_number - hd0->partition_number))
13213+ return x;
13214+
13215+ if ((x = hd1->partition_start - hd0->partition_start))
13216+ return x;
13217+
13218+
13219+ if ((x = hd1->partition_size - hd0->partition_size))
13220+ return x;
13221+
13222+ if ((x = hd1->signature_type - hd0->signature_type))
13223+ return x;
13224+
13225+ switch (hd0->signature_type)
13226+ {
13227+ case 1:
13228+ sigsize = 4;
13229+ break;
13230+ case 2:
13231+ sigsize = 16;
13232+ break;
13233+ default:
13234+ sigsize = 0;
13235+ break;
13236+ }
13237+ x = grub_memcmp((char *)hd0->partition_signature,
13238+ (char *)hd1->partition_signature, sigsize);
13239+ return x;
13240+}
13241+
13242+static grub_efi_device_path_t *
13243+get_parent_of_disk(grub_efi_device_path_t *hd)
13244+{
13245+ grub_efi_uintn_t num_handles;
13246+ grub_efi_handle_t *handles;
13247+ grub_efi_handle_t *handle;
13248+ grub_efi_device_path_t *ret;
13249+
13250+ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL,
13251+ &simple_file_system_guid,
13252+ 0, &num_handles);
13253+ for (handle = handles; num_handles--; handle++)
13254+ {
13255+ grub_efi_device_path_t *fsdp, *hddp;
13256+
13257+ fsdp = grub_efi_get_device_path (*handle);
13258+ if (!fsdp)
13259+ continue;
13260+ hddp = find_last_device_path(fsdp);
13261+
13262+ if (compare_hd_device_paths((grub_efi_hard_drive_device_path_t *)hddp,
13263+ (grub_efi_hard_drive_device_path_t *)hd) == 0)
13264+ {
13265+ grub_efi_device_path_t *p;
13266+ ret = duplicate_device_path((grub_efi_device_path_t *)fsdp);
13267+ if (!ret)
13268+ return NULL;
13269+ for (p = ret; ; p = GRUB_EFI_NEXT_DEVICE_PATH(p))
13270+ {
13271+ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH(p))
13272+ break;
13273+ if ((GRUB_EFI_DEVICE_PATH_TYPE(p) ==
13274+ GRUB_EFI_MEDIA_DEVICE_PATH_TYPE)
13275+ && (GRUB_EFI_DEVICE_PATH_SUBTYPE(p) ==
13276+ GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE))
13277+ {
13278+ p->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
13279+ p->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
13280+ p->length[0] = 4;
13281+ p->length[1] = 0;
13282+ break;
13283+ }
13284+ }
13285+ return ret;
13286+ }
13287+ }
13288+ return NULL;
13289+}
13290+
13291+void
13292+assign_device_name (int drive, const char *device)
13293+{
13294+ grub_efi_device_path_t *dp0, *dp1;
13295+ struct grub_efidisk_data *devices;
13296+ struct grub_efidisk_data *d, *d0 = NULL, *d1 = NULL;
13297+ int n = -1;
13298+
13299+ dp0 = device_path_from_utf8(device);
13300+ if (!dp0)
13301+ return;
13302+
13303+ dp1 = get_parent_of_disk(dp0);
13304+ grub_free(dp0);
13305+ if (!dp1)
13306+ return;
13307+
13308+ if (drive & 0x80)
13309+ {
13310+ drive -= 0x80;
13311+ devices = hd_devices;
13312+ }
13313+ else
13314+ {
13315+ devices = cd_devices;
13316+ drive -= 0x100;
13317+ }
13318+
13319+ for (d = devices; d; d = d->next)
13320+ {
13321+ if (!d->device_path)
13322+ continue;
13323+
13324+ if (++n == drive)
13325+ d0 = d;
13326+
13327+ int x;
13328+ if (!(x = compare_device_paths(dp1, d->device_path)))
13329+ d1 = d;
13330+
13331+ if (d0 && d1)
13332+ {
13333+ /* if they're the same node, that just means it's already at
13334+ * the right position. */
13335+ if (d0 != d1)
13336+ {
13337+ swap_devices(d0, d1);
13338+ grub_free(dp1);
13339+ return;
13340+ }
13341+ }
13342+ }
13343+ grub_free(dp1);
13344+}
13345diff --git a/efi/efidp.c b/efi/efidp.c
13346new file mode 100644
13347index 0000000..d8ca03d
13348--- /dev/null
13349+++ b/efi/efidp.c
13350@@ -0,0 +1,999 @@
13351+/*
13352+ * GRUB -- GRand Unified Bootloader
13353+ * Copyright (C) 2010 Free Software Foundation, Inc.
13354+ *
13355+ * GRUB is free software; you can redistribute it and/or modify
13356+ * it under the terms of the GNU General Public License as published by
13357+ * the Free Software Foundation; either version 2 of the License, or
13358+ * (at your option) any later version.
13359+ *
13360+ * This program is distributed in the hope that it will be useful,
13361+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13362+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13363+ * GNU General Public License for more details.
13364+ *
13365+ * You should have received a copy of the GNU General Public License
13366+ * along with GRUB; if not, write to the Free Software
13367+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
13368+ */
13369+
13370+#include <grub/types.h>
13371+#include <grub/misc.h>
13372+#include <grub/efi/api.h>
13373+#include <grub/efi/efi.h>
13374+#include <grub/efi/misc.h>
13375+
13376+#include <shared.h>
13377+
13378+/* Duplicate a device path. */
13379+grub_efi_device_path_t *
13380+duplicate_device_path (const grub_efi_device_path_t *dp)
13381+{
13382+ grub_efi_device_path_t *p;
13383+ grub_size_t total_size = 0;
13384+
13385+ for (p = (grub_efi_device_path_t *) dp;
13386+ ;
13387+ p = GRUB_EFI_NEXT_DEVICE_PATH (p))
13388+ {
13389+ total_size += GRUB_EFI_DEVICE_PATH_LENGTH (p);
13390+ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (p))
13391+ break;
13392+ }
13393+
13394+ p = grub_malloc (total_size);
13395+ if (! p)
13396+ return 0;
13397+
13398+ grub_memcpy (p, dp, total_size);
13399+ return p;
13400+}
13401+
13402+/* Return the device path node right before the end node. */
13403+grub_efi_device_path_t *
13404+find_last_device_path (const grub_efi_device_path_t *dp)
13405+{
13406+ grub_efi_device_path_t *next, *p;
13407+
13408+ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp))
13409+ return 0;
13410+
13411+ for (p = (grub_efi_device_path_t *) dp, next = GRUB_EFI_NEXT_DEVICE_PATH (p);
13412+ ! GRUB_EFI_END_ENTIRE_DEVICE_PATH (next);
13413+ p = next, next = GRUB_EFI_NEXT_DEVICE_PATH (next))
13414+ ;
13415+
13416+ return p;
13417+}
13418+
13419+/* Return the parent device path node. Must be freed */
13420+grub_efi_device_path_t *
13421+find_parent_device_path (const grub_efi_device_path_t *dp)
13422+{
13423+ grub_efi_device_path_t *final, *dup;
13424+
13425+ dup = duplicate_device_path(dp);
13426+ final = find_last_device_path(dup);
13427+
13428+ final->type = GRUB_EFI_END_DEVICE_PATH_TYPE;
13429+ final->subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE;
13430+
13431+ return dup;
13432+}
13433+
13434+/* Compare device paths. */
13435+int
13436+compare_device_paths (const grub_efi_device_path_t *dp1,
13437+ const grub_efi_device_path_t *dp2)
13438+{
13439+ if (! dp1 || ! dp2)
13440+ /* Return non-zero. */
13441+ return 1;
13442+
13443+ while (1)
13444+ {
13445+ grub_efi_uint8_t type1, type2;
13446+ grub_efi_uint8_t subtype1, subtype2;
13447+ grub_efi_uint16_t len1, len2;
13448+ int ret;
13449+
13450+ type1 = GRUB_EFI_DEVICE_PATH_TYPE (dp1);
13451+ type2 = GRUB_EFI_DEVICE_PATH_TYPE (dp2);
13452+
13453+ if (type1 != type2)
13454+ return (int) type2 - (int) type1;
13455+
13456+ subtype1 = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp1);
13457+ subtype2 = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp2);
13458+
13459+ if (subtype1 != subtype2)
13460+ return (int) subtype1 - (int) subtype2;
13461+
13462+ len1 = GRUB_EFI_DEVICE_PATH_LENGTH (dp1);
13463+ len2 = GRUB_EFI_DEVICE_PATH_LENGTH (dp2);
13464+
13465+ if (len1 != len2)
13466+ return (int) len1 - (int) len2;
13467+
13468+ ret = grub_memcmp ((char *)dp1, (char *)dp2, len1);
13469+ if (ret != 0)
13470+ return ret;
13471+
13472+ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp1))
13473+ break;
13474+
13475+ dp1 = (grub_efi_device_path_t *) ((char *) dp1 + len1);
13476+ dp2 = (grub_efi_device_path_t *) ((char *) dp2 + len2);
13477+ }
13478+
13479+ return 0;
13480+}
13481+
13482+/* Print the chain of Device Path nodes. This is mainly for debugging. */
13483+void
13484+grub_efi_print_device_path (grub_efi_device_path_t *dp)
13485+{
13486+ while (1)
13487+ {
13488+ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (dp);
13489+ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (dp);
13490+ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (dp);
13491+
13492+ switch (type)
13493+ {
13494+ case GRUB_EFI_END_DEVICE_PATH_TYPE:
13495+ switch (subtype)
13496+ {
13497+ case GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE:
13498+ grub_printf ("/EndEntire\n");
13499+ //grub_putchar ('\n');
13500+ break;
13501+ case GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE:
13502+ grub_printf ("/EndThis\n");
13503+ //grub_putchar ('\n');
13504+ break;
13505+ default:
13506+ grub_printf ("/EndUnknown(%x)\n", (unsigned) subtype);
13507+ break;
13508+ }
13509+ break;
13510+
13511+ case GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE:
13512+ switch (subtype)
13513+ {
13514+ case GRUB_EFI_PCI_DEVICE_PATH_SUBTYPE:
13515+ {
13516+ grub_efi_pci_device_path_t pci;
13517+ grub_memcpy (&pci, dp, len);
13518+ grub_printf ("/PCI(%x,%x)",
13519+ (unsigned) pci.function, (unsigned) pci.device);
13520+ }
13521+ break;
13522+ case GRUB_EFI_PCCARD_DEVICE_PATH_SUBTYPE:
13523+ {
13524+ grub_efi_pccard_device_path_t pccard;
13525+ grub_memcpy (&pccard, dp, len);
13526+ grub_printf ("/PCCARD(%x)",
13527+ (unsigned) pccard.function);
13528+ }
13529+ break;
13530+ case GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE:
13531+ {
13532+ grub_efi_memory_mapped_device_path_t mmapped;
13533+ grub_memcpy (&mmapped, dp, len);
13534+ grub_printf ("/MMap(%x,%llx,%llx)",
13535+ (unsigned) mmapped.memory_type,
13536+ mmapped.start_address,
13537+ mmapped.end_address);
13538+ }
13539+ break;
13540+ case GRUB_EFI_VENDOR_DEVICE_PATH_SUBTYPE:
13541+ {
13542+ grub_efi_vendor_device_path_t vendor;
13543+ grub_memcpy (&vendor, dp, sizeof (vendor));
13544+ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
13545+ (unsigned) vendor.vendor_guid.data1,
13546+ (unsigned) vendor.vendor_guid.data2,
13547+ (unsigned) vendor.vendor_guid.data3,
13548+ (unsigned) vendor.vendor_guid.data4[0],
13549+ (unsigned) vendor.vendor_guid.data4[1],
13550+ (unsigned) vendor.vendor_guid.data4[2],
13551+ (unsigned) vendor.vendor_guid.data4[3],
13552+ (unsigned) vendor.vendor_guid.data4[4],
13553+ (unsigned) vendor.vendor_guid.data4[5],
13554+ (unsigned) vendor.vendor_guid.data4[6],
13555+ (unsigned) vendor.vendor_guid.data4[7]);
13556+ }
13557+ break;
13558+ case GRUB_EFI_CONTROLLER_DEVICE_PATH_SUBTYPE:
13559+ {
13560+ grub_efi_controller_device_path_t controller;
13561+ grub_memcpy (&controller, dp, len);
13562+ grub_printf ("/Ctrl(%x)",
13563+ (unsigned) controller.controller_number);
13564+ }
13565+ break;
13566+ default:
13567+ grub_printf ("/UnknownHW(%x)", (unsigned) subtype);
13568+ break;
13569+ }
13570+ break;
13571+
13572+ case GRUB_EFI_ACPI_DEVICE_PATH_TYPE:
13573+ switch (subtype)
13574+ {
13575+ case GRUB_EFI_ACPI_DEVICE_PATH_SUBTYPE:
13576+ {
13577+ grub_efi_acpi_device_path_t acpi;
13578+ grub_memcpy (&acpi, dp, len);
13579+ grub_printf ("/ACPI(%x,%x)",
13580+ (unsigned) acpi.hid,
13581+ (unsigned) acpi.uid);
13582+ }
13583+ break;
13584+ case GRUB_EFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE:
13585+ {
13586+ grub_efi_expanded_acpi_device_path_t eacpi;
13587+ grub_memcpy (&eacpi, dp, sizeof (eacpi));
13588+ grub_printf ("/ACPI(");
13589+
13590+ if (GRUB_EFI_EXPANDED_ACPI_HIDSTR (dp)[0] == '\0')
13591+ grub_printf ("%x,", (unsigned) eacpi.hid);
13592+ else
13593+ grub_printf ("%s,", GRUB_EFI_EXPANDED_ACPI_HIDSTR (dp));
13594+
13595+ if (GRUB_EFI_EXPANDED_ACPI_UIDSTR (dp)[0] == '\0')
13596+ grub_printf ("%x,", (unsigned) eacpi.uid);
13597+ else
13598+ grub_printf ("%s,", GRUB_EFI_EXPANDED_ACPI_UIDSTR (dp));
13599+
13600+ if (GRUB_EFI_EXPANDED_ACPI_CIDSTR (dp)[0] == '\0')
13601+ grub_printf ("%x)", (unsigned) eacpi.cid);
13602+ else
13603+ grub_printf ("%s)", GRUB_EFI_EXPANDED_ACPI_CIDSTR (dp));
13604+ }
13605+ break;
13606+ default:
13607+ grub_printf ("/UnknownACPI(%x)", (unsigned) subtype);
13608+ break;
13609+ }
13610+ break;
13611+
13612+ case GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE:
13613+ switch (subtype)
13614+ {
13615+ case GRUB_EFI_ATAPI_DEVICE_PATH_SUBTYPE:
13616+ {
13617+ grub_efi_atapi_device_path_t atapi;
13618+ grub_memcpy (&atapi, dp, len);
13619+ grub_printf ("/ATAPI(%x,%x,%x)",
13620+ (unsigned) atapi.primary_secondary,
13621+ (unsigned) atapi.slave_master,
13622+ (unsigned) atapi.lun);
13623+ }
13624+ break;
13625+ case GRUB_EFI_SCSI_DEVICE_PATH_SUBTYPE:
13626+ {
13627+ grub_efi_scsi_device_path_t scsi;
13628+ grub_memcpy (&scsi, dp, len);
13629+ grub_printf ("/SCSI(%x,%x)",
13630+ (unsigned) scsi.pun,
13631+ (unsigned) scsi.lun);
13632+ }
13633+ break;
13634+ case GRUB_EFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE:
13635+ {
13636+ grub_efi_fibre_channel_device_path_t fc;
13637+ grub_memcpy (&fc, dp, len);
13638+ grub_printf ("/FibreChannel(%llx,%llx)",
13639+ fc.wwn, fc.lun);
13640+ }
13641+ break;
13642+ case GRUB_EFI_1394_DEVICE_PATH_SUBTYPE:
13643+ {
13644+ grub_efi_1394_device_path_t firewire;
13645+ grub_memcpy (&firewire, dp, len);
13646+ grub_printf ("/1394(%llx)", firewire.guid);
13647+ }
13648+ break;
13649+ case GRUB_EFI_USB_DEVICE_PATH_SUBTYPE:
13650+ {
13651+ grub_efi_usb_device_path_t usb;
13652+ grub_memcpy (&usb, dp, len);
13653+ grub_printf ("/USB(%x,%x)",
13654+ (unsigned) usb.parent_port_number,
13655+ (unsigned) usb.interface);
13656+ }
13657+ break;
13658+ case GRUB_EFI_USB_CLASS_DEVICE_PATH_SUBTYPE:
13659+ {
13660+ grub_efi_usb_class_device_path_t usb_class;
13661+ grub_memcpy (&usb_class, dp, len);
13662+ grub_printf ("/USBClass(%x,%x,%x,%x,%x)",
13663+ (unsigned) usb_class.vendor_id,
13664+ (unsigned) usb_class.product_id,
13665+ (unsigned) usb_class.device_class,
13666+ (unsigned) usb_class.device_subclass,
13667+ (unsigned) usb_class.device_protocol);
13668+ }
13669+ break;
13670+ case GRUB_EFI_I2O_DEVICE_PATH_SUBTYPE:
13671+ {
13672+ grub_efi_i2o_device_path_t i2o;
13673+ grub_memcpy (&i2o, dp, len);
13674+ grub_printf ("/I2O(%x)", (unsigned) i2o.tid);
13675+ }
13676+ break;
13677+ case GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE:
13678+ {
13679+ grub_efi_mac_address_device_path_t mac;
13680+ grub_memcpy (&mac, dp, len);
13681+ grub_printf ("/MacAddr(%x:%x:%x:%x:%x:%x,%x)",
13682+ (unsigned) mac.mac_address[0],
13683+ (unsigned) mac.mac_address[1],
13684+ (unsigned) mac.mac_address[2],
13685+ (unsigned) mac.mac_address[3],
13686+ (unsigned) mac.mac_address[4],
13687+ (unsigned) mac.mac_address[5],
13688+ (unsigned) mac.if_type);
13689+ }
13690+ break;
13691+ case GRUB_EFI_IPV4_DEVICE_PATH_SUBTYPE:
13692+ {
13693+ grub_efi_ipv4_device_path_t ipv4;
13694+ grub_memcpy (&ipv4, dp, len);
13695+ grub_printf ("/IPv4(%u.%u.%u.%u,%u.%u.%u.%u,%u,%u,%x,%x)",
13696+ (unsigned) ipv4.local_ip_address[0],
13697+ (unsigned) ipv4.local_ip_address[1],
13698+ (unsigned) ipv4.local_ip_address[2],
13699+ (unsigned) ipv4.local_ip_address[3],
13700+ (unsigned) ipv4.remote_ip_address[0],
13701+ (unsigned) ipv4.remote_ip_address[1],
13702+ (unsigned) ipv4.remote_ip_address[2],
13703+ (unsigned) ipv4.remote_ip_address[3],
13704+ (unsigned) ipv4.local_port,
13705+ (unsigned) ipv4.remote_port,
13706+ (unsigned) ipv4.protocol,
13707+ (unsigned) ipv4.static_ip_address);
13708+ }
13709+ break;
13710+ case GRUB_EFI_IPV6_DEVICE_PATH_SUBTYPE:
13711+ {
13712+ grub_efi_ipv6_device_path_t ipv6;
13713+ grub_memcpy (&ipv6, dp, len);
13714+ grub_printf ("/IPv6(%x:%x:%x:%x:%x:%x:%x:%x,%x:%x:%x:%x:%x:%x:%x:%x,%u,%u,%x,%x)",
13715+ (unsigned) ipv6.local_ip_address[0],
13716+ (unsigned) ipv6.local_ip_address[1],
13717+ (unsigned) ipv6.local_ip_address[2],
13718+ (unsigned) ipv6.local_ip_address[3],
13719+ (unsigned) ipv6.local_ip_address[4],
13720+ (unsigned) ipv6.local_ip_address[5],
13721+ (unsigned) ipv6.local_ip_address[6],
13722+ (unsigned) ipv6.local_ip_address[7],
13723+ (unsigned) ipv6.remote_ip_address[0],
13724+ (unsigned) ipv6.remote_ip_address[1],
13725+ (unsigned) ipv6.remote_ip_address[2],
13726+ (unsigned) ipv6.remote_ip_address[3],
13727+ (unsigned) ipv6.remote_ip_address[4],
13728+ (unsigned) ipv6.remote_ip_address[5],
13729+ (unsigned) ipv6.remote_ip_address[6],
13730+ (unsigned) ipv6.remote_ip_address[7],
13731+ (unsigned) ipv6.local_port,
13732+ (unsigned) ipv6.remote_port,
13733+ (unsigned) ipv6.protocol,
13734+ (unsigned) ipv6.static_ip_address);
13735+ }
13736+ break;
13737+ case GRUB_EFI_INFINIBAND_DEVICE_PATH_SUBTYPE:
13738+ {
13739+ grub_efi_infiniband_device_path_t ib;
13740+ grub_memcpy (&ib, dp, len);
13741+ grub_printf ("/InfiniBand(%x,%llx,%llx,%llx)",
13742+ (unsigned) ib.port_gid[0], /* XXX */
13743+ ib.remote_id,
13744+ ib.target_port_id,
13745+ ib.device_id);
13746+ }
13747+ break;
13748+ case GRUB_EFI_UART_DEVICE_PATH_SUBTYPE:
13749+ {
13750+ grub_efi_uart_device_path_t uart;
13751+ grub_memcpy (&uart, dp, len);
13752+ grub_printf ("/UART(%llu,%u,%x,%x)",
13753+ uart.baud_rate,
13754+ uart.data_bits,
13755+ uart.parity,
13756+ uart.stop_bits);
13757+ }
13758+ break;
13759+ case GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE:
13760+ {
13761+ grub_efi_vendor_messaging_device_path_t vendor;
13762+ grub_memcpy (&vendor, dp, sizeof (vendor));
13763+ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
13764+ (unsigned) vendor.vendor_guid.data1,
13765+ (unsigned) vendor.vendor_guid.data2,
13766+ (unsigned) vendor.vendor_guid.data3,
13767+ (unsigned) vendor.vendor_guid.data4[0],
13768+ (unsigned) vendor.vendor_guid.data4[1],
13769+ (unsigned) vendor.vendor_guid.data4[2],
13770+ (unsigned) vendor.vendor_guid.data4[3],
13771+ (unsigned) vendor.vendor_guid.data4[4],
13772+ (unsigned) vendor.vendor_guid.data4[5],
13773+ (unsigned) vendor.vendor_guid.data4[6],
13774+ (unsigned) vendor.vendor_guid.data4[7]);
13775+ }
13776+ break;
13777+ default:
13778+ grub_printf ("/UnknownMessaging(%x)", (unsigned) subtype);
13779+ break;
13780+ }
13781+ break;
13782+
13783+ case GRUB_EFI_MEDIA_DEVICE_PATH_TYPE:
13784+ switch (subtype)
13785+ {
13786+ case GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE:
13787+ {
13788+ grub_efi_hard_drive_device_path_t hd;
13789+ grub_memcpy (&hd, dp, len);
13790+ grub_printf ("/HD(%u,%llx,%llx,%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
13791+ hd.partition_number,
13792+ hd.partition_start,
13793+ hd.partition_size,
13794+ (unsigned) hd.partition_signature[3],
13795+ (unsigned) hd.partition_signature[2],
13796+ (unsigned) hd.partition_signature[1],
13797+ (unsigned) hd.partition_signature[0],
13798+ (unsigned) hd.partition_signature[5],
13799+ (unsigned) hd.partition_signature[4],
13800+ (unsigned) hd.partition_signature[7],
13801+ (unsigned) hd.partition_signature[6],
13802+ (unsigned) hd.partition_signature[9],
13803+ (unsigned) hd.partition_signature[8],
13804+ (unsigned) hd.partition_signature[10],
13805+ (unsigned) hd.partition_signature[11],
13806+ (unsigned) hd.partition_signature[12],
13807+ (unsigned) hd.partition_signature[13],
13808+ (unsigned) hd.partition_signature[14],
13809+ (unsigned) hd.partition_signature[15]);
13810+ }
13811+ break;
13812+ case GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE:
13813+ {
13814+ grub_efi_cdrom_device_path_t cd;
13815+ grub_memcpy (&cd, dp, len);
13816+ grub_printf ("/CD(%u,%llx,%llx)",
13817+ cd.boot_entry,
13818+ cd.partition_start,
13819+ cd.partition_size);
13820+ }
13821+ break;
13822+ case GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE:
13823+ {
13824+ grub_efi_vendor_media_device_path_t vendor;
13825+ grub_memcpy (&vendor, dp, sizeof (vendor));
13826+ grub_printf ("/Vendor(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
13827+ (unsigned) vendor.vendor_guid.data1,
13828+ (unsigned) vendor.vendor_guid.data2,
13829+ (unsigned) vendor.vendor_guid.data3,
13830+ (unsigned) vendor.vendor_guid.data4[0],
13831+ (unsigned) vendor.vendor_guid.data4[1],
13832+ (unsigned) vendor.vendor_guid.data4[2],
13833+ (unsigned) vendor.vendor_guid.data4[3],
13834+ (unsigned) vendor.vendor_guid.data4[4],
13835+ (unsigned) vendor.vendor_guid.data4[5],
13836+ (unsigned) vendor.vendor_guid.data4[6],
13837+ (unsigned) vendor.vendor_guid.data4[7]);
13838+ }
13839+ break;
13840+ case GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE:
13841+ {
13842+ grub_efi_file_path_device_path_t *fp;
13843+ grub_uint8_t buf[(len - 4) * 2 + 1];
13844+ fp = (grub_efi_file_path_device_path_t *) dp;
13845+ *grub_utf16_to_utf8 (buf, fp->path_name,
13846+ (len - 4) / sizeof (grub_efi_char16_t))
13847+ = '\0';
13848+ grub_printf ("/File(%s)", buf);
13849+ }
13850+ break;
13851+ case GRUB_EFI_PROTOCOL_DEVICE_PATH_SUBTYPE:
13852+ {
13853+ grub_efi_protocol_device_path_t proto;
13854+ grub_memcpy (&proto, dp, sizeof (proto));
13855+ grub_printf ("/Protocol(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
13856+ (unsigned) proto.guid.data1,
13857+ (unsigned) proto.guid.data2,
13858+ (unsigned) proto.guid.data3,
13859+ (unsigned) proto.guid.data4[0],
13860+ (unsigned) proto.guid.data4[1],
13861+ (unsigned) proto.guid.data4[2],
13862+ (unsigned) proto.guid.data4[3],
13863+ (unsigned) proto.guid.data4[4],
13864+ (unsigned) proto.guid.data4[5],
13865+ (unsigned) proto.guid.data4[6],
13866+ (unsigned) proto.guid.data4[7]);
13867+ }
13868+ break;
13869+ default:
13870+ grub_printf ("/UnknownMedia(%x)", (unsigned) subtype);
13871+ break;
13872+ }
13873+ break;
13874+
13875+ case GRUB_EFI_BIOS_DEVICE_PATH_TYPE:
13876+ switch (subtype)
13877+ {
13878+ case GRUB_EFI_BIOS_DEVICE_PATH_SUBTYPE:
13879+ {
13880+ grub_efi_bios_device_path_t bios;
13881+ grub_memcpy (&bios, dp, sizeof (bios));
13882+ grub_printf ("/BIOS(%x,%x,%s)",
13883+ (unsigned) bios.device_type,
13884+ (unsigned) bios.status_flags,
13885+ (char *) (dp + 1));
13886+ }
13887+ break;
13888+ default:
13889+ grub_printf ("/UnknownBIOS(%x)", (unsigned) subtype);
13890+ break;
13891+ }
13892+ break;
13893+
13894+ default:
13895+ grub_printf ("/UnknownType(%x,%x)\n",
13896+ (unsigned) type,
13897+ (unsigned) subtype);
13898+ return;
13899+ break;
13900+ }
13901+
13902+ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp))
13903+ break;
13904+
13905+ dp = (grub_efi_device_path_t *) ((char *) dp + len);
13906+ }
13907+}
13908+
13909+static inline int
13910+dpname_matches(char *str, char *candidate)
13911+{
13912+ grub_size_t clen = grub_strlen(candidate);
13913+ char scratch[clen + 2];
13914+ int rc;
13915+
13916+ grub_strncpy(scratch, candidate, clen);
13917+ scratch[clen+1] = '\0';
13918+ if (scratch[clen-1] == '$')
13919+ {
13920+ scratch[--clen] = '\0';
13921+ rc = !grub_strncasecmp(str, scratch, clen);
13922+ return rc;
13923+ }
13924+
13925+ grub_strncpy(scratch+clen, "(", 2);
13926+ clen = grub_strlen(scratch);
13927+ rc = !grub_strncasecmp(str, scratch, clen);
13928+ return rc;
13929+}
13930+
13931+static void
13932+finish_param_parse(char *pos, char **end, char *tmp)
13933+{
13934+ if (!pos || !end || !tmp)
13935+ return;
13936+
13937+ if (*end)
13938+ **end = *tmp;
13939+}
13940+
13941+static char *
13942+get_next_param(char *pos, char **end, char *tmp)
13943+{
13944+ char *comma = NULL;
13945+ char *openparen = NULL;
13946+ char *closeparen = NULL;
13947+
13948+ if (!pos || !end || !tmp)
13949+ return NULL;
13950+
13951+ if (*end)
13952+ **end = *tmp;
13953+
13954+ openparen = grub_strchr(pos, '(');
13955+ if (openparen && *openparen)
13956+ {
13957+ pos = grub_strnchr(openparen + 1, ' ');
13958+ comma = grub_strchr(pos, ',');
13959+ closeparen = grub_strchr(pos, ')');
13960+
13961+ if (comma && *comma)
13962+ {
13963+ *tmp = *comma;
13964+ *comma = '\0';
13965+ *end = comma;
13966+ }
13967+ else if (closeparen && *closeparen)
13968+ {
13969+ *tmp = *closeparen;
13970+ *closeparen = '\0';
13971+ *end = closeparen;
13972+ }
13973+ return pos;
13974+ }
13975+
13976+ comma = grub_strchr(pos, ',');
13977+ if (comma && *comma)
13978+ {
13979+ pos = grub_strnchr(comma + 1, ' ');
13980+ comma = grub_strchr(pos, ',');
13981+ closeparen = grub_strchr(pos, ')');
13982+
13983+ if (comma && *comma)
13984+ {
13985+ *tmp = *comma;
13986+ *comma = '\0';
13987+ *end = comma;
13988+ }
13989+ else if (closeparen && *closeparen)
13990+ {
13991+ *tmp = *closeparen;
13992+ *closeparen = '\0';
13993+ *end = closeparen;
13994+ }
13995+ return pos;
13996+ }
13997+
13998+ closeparen = grub_strchr(pos, ')');
13999+ if (closeparen && *closeparen)
14000+ pos = grub_strnchr(closeparen + 1, ' ');
14001+
14002+ return pos;
14003+}
14004+
14005+struct generic_device_path
14006+ {
14007+ grub_efi_uint8_t type;
14008+ grub_efi_uint8_t subtype;
14009+ grub_efi_uint16_t length;
14010+ } __attribute__((packed));
14011+
14012+struct hd_media_device_path
14013+ {
14014+ grub_efi_uint8_t type;
14015+ grub_efi_uint8_t subtype;
14016+ grub_efi_uint16_t length;
14017+ grub_efi_uint32_t partition;
14018+ grub_efi_uint64_t startlba;
14019+ grub_efi_uint64_t size;
14020+ grub_efi_uint8_t signature[16];
14021+ grub_efi_uint8_t mbr_type;
14022+ grub_efi_uint8_t signature_type;
14023+ } __attribute__((packed));
14024+
14025+static inline int
14026+parse_device_path_component(const char *orig_str, void *data)
14027+{
14028+ int orig_str_len = strlen(orig_str) + 1;
14029+ char str[orig_str_len];
14030+ char tmp;
14031+ char *pos = str;
14032+ int ret = 0;
14033+
14034+ grub_strcpy(str, orig_str);
14035+ if (dpname_matches(str, "pci"))
14036+ {
14037+ }
14038+ else if (dpname_matches(str, "pccard"))
14039+ {
14040+ }
14041+ else if (dpname_matches(str, "mmap"))
14042+ {
14043+ }
14044+ else if (dpname_matches(str, "ctrl"))
14045+ {
14046+ }
14047+ else if (dpname_matches(str, "acpi"))
14048+ {
14049+ }
14050+ /* XXX what about _ADR? */
14051+ /* messaging device paths */
14052+ else if (dpname_matches(str, "atapi"))
14053+ {
14054+ }
14055+ else if (dpname_matches(str, "scsi"))
14056+ {
14057+ }
14058+ else if (dpname_matches(str, "fibrechannel"))
14059+ {
14060+ }
14061+ else if (dpname_matches(str, "1394"))
14062+ {
14063+ }
14064+ else if (dpname_matches(str, "usb"))
14065+ {
14066+ }
14067+ else if (dpname_matches(str, "sata"))
14068+ {
14069+ }
14070+ /* XXX what about usb-wwid */
14071+ /* XXX what about lun */
14072+ else if (dpname_matches(str, "usbclass"))
14073+ {
14074+ }
14075+ else if (dpname_matches(str, "i2o"))
14076+ {
14077+ }
14078+ else if (dpname_matches(str, "macaddr"))
14079+ {
14080+ }
14081+ else if (dpname_matches(str, "ipv4"))
14082+ {
14083+ }
14084+ else if (dpname_matches(str, "ipv6"))
14085+ {
14086+ }
14087+ /* XXX what about vlan */
14088+ else if (dpname_matches(str, "infiniband"))
14089+ {
14090+ }
14091+ else if (dpname_matches(str, "uart"))
14092+ {
14093+ }
14094+ else if (dpname_matches(str, "uartflowctrl"))
14095+ {
14096+ }
14097+ else if (dpname_matches(str, "sas"))
14098+ {
14099+ }
14100+ else if (dpname_matches(str, "iscsi"))
14101+ {
14102+ }
14103+ /* media device paths */
14104+ else if (dpname_matches(str, "hd"))
14105+ {
14106+ /* these look roughly like:
14107+ * HD(Partition,Type,Signature,Start, Size)
14108+ * but:
14109+ * - type may be optional. 1 or "MBR" means MBR. 2 or "GPT" means GPT.
14110+ * - start and size are optional
14111+ * - there can be random spaces
14112+ */
14113+ struct hd_media_device_path hddp;
14114+ unsigned long tmpul;
14115+ char *end = NULL, c;
14116+ char tmps[19] = "0x";
14117+ char *tmpsp;
14118+
14119+ ret = 42;
14120+
14121+ hddp.type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE;
14122+ hddp.subtype = GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE;
14123+ hddp.length = ret;
14124+
14125+ //pos += grub_strcspn(pos, '(');
14126+ pos = get_next_param(pos, &end, &c);
14127+ if (!*pos)
14128+ {
14129+broken_hd:
14130+ finish_param_parse(pos, &end, &c);
14131+ return 0;
14132+ }
14133+ grub_strncpy(tmps+2, pos, 16);
14134+ tmps[18] = '\0';
14135+ tmpsp = tmps;
14136+ safe_parse_maxulong(&tmpsp, &tmpul);
14137+ hddp.partition = tmpul;
14138+
14139+ pos = get_next_param(pos, &end, &c);
14140+ if (!*pos)
14141+ goto broken_hd;
14142+ grub_strcpy(tmps+2, pos);
14143+ tmpsp = tmps;
14144+ safe_parse_maxulong(&tmpsp, &tmpul);
14145+ hddp.startlba = tmpul;
14146+
14147+ pos = get_next_param(pos, &end, &c);
14148+ if (!*pos)
14149+ goto broken_hd;
14150+ grub_strcpy(tmps+2, pos);
14151+ tmpsp = tmps;
14152+ safe_parse_maxulong(&tmpsp, &tmpul);
14153+ hddp.size = tmpul;
14154+
14155+ pos = get_next_param(pos, &end, &c);
14156+ if (!*pos)
14157+ goto broken_hd;
14158+ if (!grub_strcmp(pos, "None"))
14159+ {
14160+ hddp.signature_type = 0;
14161+ grub_memset(hddp.signature, '\0', sizeof(hddp.signature));
14162+ }
14163+ else if (grub_strnlen(pos, 36) == 8)
14164+ {
14165+ grub_efi_uint32_t tmpu32;
14166+ grub_strncpy(tmps+2, pos, 8);
14167+ tmps[10] = '\0';
14168+ tmpsp = tmps;
14169+ safe_parse_maxulong(&tmpsp, &tmpul);
14170+ tmpu32 = tmpul;
14171+ hddp.signature_type = 1;
14172+ grub_memcpy(hddp.signature, &tmpu32, sizeof(tmpu32));
14173+ }
14174+ else if (grub_strnlen(pos, 36) == 36)
14175+ {
14176+ grub_efi_uint32_t tmpu32;
14177+ grub_efi_uint16_t tmpu16;
14178+ grub_efi_uint8_t tmpu8;
14179+
14180+ grub_strncpy(tmps+2, pos, 8);
14181+ tmps[10] = '\0';
14182+ tmpsp = tmps;
14183+ safe_parse_maxulong(&tmpsp, &tmpul);
14184+ tmpu32 = tmpul;
14185+ grub_memcpy(hddp.signature, &tmpu32, sizeof(tmpu32));
14186+
14187+ grub_strncpy(tmps+2, pos+9, 4);
14188+ tmps[6] = '\0';
14189+ tmpsp = tmps;
14190+ safe_parse_maxulong(&tmpsp, &tmpul);
14191+ tmpu16 = tmpul;
14192+ grub_memcpy(hddp.signature + 4, &tmpu16, sizeof(tmpu16));
14193+
14194+ grub_strncpy(tmps+2, pos+14, 4);
14195+ tmps[6] = '\0';
14196+ tmpsp = tmps;
14197+ safe_parse_maxulong(&tmpsp, &tmpul);
14198+ tmpu16 = tmpul;
14199+ grub_memcpy(hddp.signature + 6, &tmpu16, sizeof(tmpu16));
14200+
14201+ /* these are displayed like a u16, but they're a u8. thanks. */
14202+ grub_strncpy(tmps+2, pos+19, 2);
14203+ tmps[4] = '\0';
14204+ tmpsp = tmps;
14205+ safe_parse_maxulong(&tmpsp, &tmpul);
14206+ tmpu8 = tmpul;
14207+ grub_memcpy(hddp.signature + 8, &tmpu8, sizeof(tmpu8));
14208+ grub_strncpy(tmps+2, pos+21, 2);
14209+ tmps[4] = '\0';
14210+ tmpsp = tmps;
14211+ safe_parse_maxulong(&tmpsp, &tmpul);
14212+ tmpu8 = tmpul;
14213+ grub_memcpy(hddp.signature + 9, &tmpu8, sizeof(tmpu8));
14214+
14215+ grub_strncpy(tmps+2, pos+24, 2);
14216+ tmps[4] = '\0';
14217+ tmpsp = tmps;
14218+ safe_parse_maxulong(&tmpsp, &tmpul);
14219+ tmpu8 = tmpul;
14220+ grub_memcpy(hddp.signature + 10, &tmpu8, sizeof(tmpu8));
14221+
14222+ grub_strncpy(tmps+2, pos+26, 2);
14223+ tmps[4] = '\0';
14224+ tmpsp = tmps;
14225+ safe_parse_maxulong(&tmpsp, &tmpul);
14226+ tmpu8 = tmpul;
14227+ grub_memcpy(hddp.signature + 11, &tmpu8, sizeof(tmpu8));
14228+
14229+ grub_strncpy(tmps+2, pos+28, 2);
14230+ tmps[4] = '\0';
14231+ tmpsp = tmps;
14232+ safe_parse_maxulong(&tmpsp, &tmpul);
14233+ tmpu8 = tmpul;
14234+ grub_memcpy(hddp.signature + 12, &tmpu8, sizeof(tmpu8));
14235+
14236+ grub_strncpy(tmps+2, pos+30, 2);
14237+ tmps[4] = '\0';
14238+ tmpsp = tmps;
14239+ safe_parse_maxulong(&tmpsp, &tmpul);
14240+ tmpu8 = tmpul;
14241+ grub_memcpy(hddp.signature + 13, &tmpu8, sizeof(tmpu8));
14242+
14243+ grub_strncpy(tmps+2, pos+32, 2);
14244+ tmps[4] = '\0';
14245+ tmpsp = tmps;
14246+ safe_parse_maxulong(&tmpsp, &tmpul);
14247+ tmpu8 = tmpul;
14248+ grub_memcpy(hddp.signature + 14, &tmpu8, sizeof(tmpu8));
14249+
14250+ grub_strncpy(tmps+2, pos+34, 2);
14251+ tmps[4] = '\0';
14252+ tmpsp = tmps;
14253+ safe_parse_maxulong(&tmpsp, &tmpul);
14254+ tmpu8 = tmpul;
14255+ grub_memcpy(hddp.signature + 15, &tmpu8, sizeof(tmpu8));
14256+
14257+ hddp.signature_type = 2;
14258+ }
14259+ else
14260+ goto broken_hd;
14261+
14262+ hddp.mbr_type = hddp.signature_type;
14263+
14264+ if (data)
14265+ grub_memcpy(data, &hddp, sizeof(hddp));
14266+ }
14267+ else if (dpname_matches(str, "cd"))
14268+ {
14269+ }
14270+ else if (dpname_matches(str, "file"))
14271+ {
14272+ }
14273+ else if (dpname_matches(str, "protocol"))
14274+ {
14275+ }
14276+ /* what about piwg firmware file? */
14277+ /* what about piwg firmware volume? */
14278+ /* what about relative offset media */
14279+ else if (dpname_matches(str, "bios"))
14280+ {
14281+ }
14282+ /* This is the end beautiful friend */
14283+ else if (dpname_matches(str, "EndEntire$"))
14284+ {
14285+ struct generic_device_path gdp = {
14286+ .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
14287+ .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,
14288+ .length = 4
14289+ };
14290+ ret = 4;
14291+ if (data)
14292+ grub_memmove(data, &gdp, sizeof(gdp));
14293+ }
14294+ else if (dpname_matches(str, "EndThis$"))
14295+ {
14296+ struct generic_device_path gdp = {
14297+ .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
14298+ .subtype = GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE,
14299+ .length = 4
14300+ };
14301+ ret = 4;
14302+ if (data)
14303+ grub_memmove(data, &gdp, sizeof(gdp));
14304+ }
14305+ else if (dpname_matches(str, "EndUnknown$"))
14306+ {
14307+ struct generic_device_path gdp = {
14308+ .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
14309+ .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,
14310+ .length = 4
14311+ };
14312+ ret = 4;
14313+ if (data)
14314+ grub_memmove(data, &gdp, sizeof(gdp));
14315+ }
14316+ /* handle anything we didn't recognize */
14317+ else if (dpname_matches(str, "vendor"))
14318+ {
14319+ /* needs to handle:
14320+ * 1) hw vendor
14321+ * 2) messaging vendor
14322+ * 3) media vendor
14323+ */
14324+ }
14325+ else
14326+ {
14327+ }
14328+
14329+ return ret;
14330+}
14331+
14332+grub_efi_device_path_t *
14333+device_path_from_utf8 (const char *device)
14334+{
14335+ grub_size_t device_len;
14336+ grub_efi_device_path_t *dp = NULL;
14337+
14338+ device_len = parse_device_path_component(device, dp);
14339+ device_len += parse_device_path_component("EndEntire", dp);
14340+ dp = grub_malloc(device_len);
14341+ if (!dp)
14342+ return NULL;
14343+ device_len = parse_device_path_component(device, dp);
14344+ device_len += parse_device_path_component("EndEntire",
14345+ (void *)((unsigned long)dp + device_len));
14346+
14347+
14348+ return dp;
14349+}
14350diff --git a/efi/efigraph.c b/efi/efigraph.c
14351new file mode 100644
14352index 0000000..6905e07
14353--- /dev/null
14354+++ b/efi/efigraph.c
14355@@ -0,0 +1,1501 @@
14356+/* efigraph.c - EFI "graphics output" support for GRUB/EFI */
14357+/*
14358+ * GRUB -- GRand Unified Bootloader
14359+ * Copyright 2007 Red Hat, Inc.
14360+ * Copyright (C) 2007 Intel Corp.
14361+ * Copyright (C) 2001,2002 Red Hat, Inc.
14362+ * Portions copyright (C) 2000 Conectiva, Inc.
14363+ *
14364+ * This program is free software; you can redistribute it and/or modify
14365+ * it under the terms of the GNU General Public License as published by
14366+ * the Free Software Foundation; either version 2 of the License, or
14367+ * (at your option) any later version.
14368+ *
14369+ * This program is distributed in the hope that it will be useful,
14370+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14371+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14372+ * GNU General Public License for more details.
14373+ *
14374+ * You should have received a copy of the GNU General Public License
14375+ * along with this program; if not, write to the Free Software
14376+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
14377+ */
14378+
14379+#ifdef SUPPORT_GRAPHICS
14380+
14381+#include <grub/misc.h>
14382+#include <grub/types.h>
14383+#include <grub/cpu/linux.h>
14384+#include <grub/efi/api.h>
14385+#include <grub/efi/efi.h>
14386+#include <grub/efi/misc.h>
14387+
14388+#include <term.h>
14389+#include <shared.h>
14390+#include <graphics.h>
14391+
14392+#include "graphics.h"
14393+#include "xpm.h"
14394+
14395+#define dbgdelay(_f, _l) ({\
14396+ if (debug_graphics) { \
14397+ do { \
14398+ grub_efi_stall(1000); \
14399+ } while (console_getkey() < 0); \
14400+ } \
14401+ })
14402+
14403+#define dprintf(format, args...) ({ \
14404+ if (debug_graphics) { \
14405+ struct term_entry *_tt = current_term; \
14406+ current_term = term_table; \
14407+ grub_printf(format, ##args); \
14408+ current_term = _tt; \
14409+ } \
14410+ })
14411+
14412+struct grub_pixel_info
14413+{
14414+ char depth_bits;
14415+ char depth_bytes;
14416+ unsigned char red_size;
14417+ unsigned char red_pos;
14418+ unsigned char green_size;
14419+ unsigned char green_pos;
14420+ unsigned char blue_size;
14421+ unsigned char blue_pos;
14422+ unsigned char reserved_size;
14423+ unsigned char reserved_pos;
14424+ int line_length;
14425+};
14426+
14427+typedef struct grub_pixel_info grub_pixel_info_t;
14428+
14429+
14430+static grub_efi_guid_t graphics_output_guid = GRUB_EFI_GRAPHICS_OUTPUT_GUID;
14431+static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID;
14432+
14433+#ifndef MIN
14434+#define MIN(x,y) ( ((x) < (y)) ? (x) : (y))
14435+#endif
14436+#ifndef MAX
14437+#define MAX(x,y) ( ((x) < (y)) ? (y) : (x))
14438+#endif
14439+
14440+#define pixel_equal(x,y) ((x).bgrr.red == (y).bgrr.red && \
14441+ (x).bgrr.green == (y).bgrr.green && \
14442+ (x).bgrr.blue == (y).bgrr.blue && \
14443+ (x).bgrr.reserved == (y).bgrr.reserved)
14444+
14445+struct video_mode {
14446+ grub_efi_uint32_t number;
14447+ grub_efi_uintn_t size;
14448+ grub_efi_graphics_output_mode_information_t *info;
14449+};
14450+
14451+#define MAX_PALETTE 16
14452+struct eg {
14453+ struct graphics_backend *backend;
14454+ grub_efi_graphics_output_t *output_intf;
14455+ struct video_mode **modes;
14456+ int max_mode;
14457+ grub_efi_uint32_t text_mode;
14458+ grub_efi_uint32_t graphics_mode;
14459+ grub_pixel_info_t pixel_info;
14460+ enum { TEXT, GRAPHICS } current_mode;
14461+
14462+ position_t screen_size;
14463+ position_t screen_pos;
14464+
14465+ struct bltbuf *background;
14466+
14467+ grub_efi_graphics_output_pixel_t palette[MAX_PALETTE + 1];
14468+};
14469+
14470+#define RGB(r,g,b) { .bgrr.red = r, .bgrr.green = g, .bgrr.blue = b }
14471+
14472+static grub_efi_graphics_output_pixel_t cga_colors[] = {
14473+ RGB(0x00,0x00,0x00), // 0 Black
14474+ RGB(0x7f,0x00,0x00), // 1 Dark Red
14475+ RGB(0x00,0x7f,0x00), // 2 Dark Green
14476+ RGB(0x7f,0x7f,0x00), // 3 Dark Yellow
14477+ RGB(0x00,0x00,0x7f), // 4 Dark Blue
14478+ RGB(0x7f,0x00,0x7f), // 5 Dark Magenta
14479+ RGB(0x00,0x7f,0x7f), // 6 Dark Cyan
14480+ RGB(0xc0,0xc0,0xc0), // 7 Light Grey
14481+ RGB(0x7f,0x7f,0x7f), // 8 Dark Grey
14482+ RGB(0xff,0x00,0x00), // 9 Red
14483+ RGB(0x00,0xff,0x00), // 10 Green
14484+ RGB(0xff,0xff,0x00), // 11 Yellow
14485+ RGB(0x00,0x00,0xff), // 12 Blue
14486+ RGB(0xff,0x00,0xff), // 13 Magenta
14487+ RGB(0x00,0xff,0xff), // 14 Cyan
14488+ RGB(0xff,0xff,0xff), // 15 White
14489+ RGB(0xff,0xff,0xff), // 16 Also white ;)
14490+};
14491+
14492+static const int n_cga_colors = sizeof (cga_colors) / sizeof (cga_colors[0]);
14493+
14494+static void
14495+find_bits (unsigned long mask, unsigned char *first,
14496+ unsigned char* len)
14497+{
14498+ unsigned char bit_pos = 0, bit_len = 0;
14499+ *first =0;
14500+ *len = 0;
14501+ if (mask == 0)
14502+ return;
14503+ while (! (mask & 0x1)) {
14504+ mask = mask >> 1;
14505+ bit_pos++;
14506+ }
14507+ while (mask & 0x1) {
14508+ mask = mask >> 1;
14509+ bit_len++;
14510+ }
14511+ *first = bit_pos;
14512+ *len = bit_len;
14513+}
14514+
14515+static grub_efi_graphics_output_mode_information_t *
14516+get_graphics_mode_info_for_mode(struct eg *eg, int mode)
14517+{
14518+ int i;
14519+
14520+ for (i = 0; i < eg->max_mode; i++) {
14521+ if (eg->modes[i] == NULL)
14522+ continue;
14523+ if (eg->modes[i]->number == mode)
14524+ return eg->modes[i]->info;
14525+ }
14526+ return NULL;
14527+}
14528+
14529+static grub_efi_graphics_output_mode_information_t *
14530+get_graphics_mode_info(struct eg *eg)
14531+{
14532+ return get_graphics_mode_info_for_mode(eg, eg->graphics_mode);
14533+}
14534+
14535+static void
14536+print_mode_info(struct video_mode *mode)
14537+{
14538+ grub_efi_graphics_output_mode_information_t *info = mode->info;
14539+ dprintf("mode %d (%dx%d, pitch %d, ",
14540+ mode->number,
14541+ info->horizontal_resolution,
14542+ info->vertical_resolution,
14543+ info->pixels_per_scan_line);
14544+ switch(info->pixel_format) {
14545+ case GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR:
14546+ dprintf("rgbr 8bpc");
14547+ break;
14548+ case GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR:
14549+ dprintf("bgrr 8bpc");
14550+ break;
14551+ case GRUB_EFI_PIXEL_BIT_MASK:
14552+ dprintf("bitmask color");
14553+ break;
14554+ case GRUB_EFI_PIXEL_BLT_ONLY:
14555+ dprintf("blt only");
14556+ break;
14557+ }
14558+ dprintf(")\n");
14559+ if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) {
14560+ dprintf("red: %08x green: %08x blue: %08x res: %08x\n",
14561+ info->pixel_information.red_mask,
14562+ info->pixel_information.green_mask,
14563+ info->pixel_information.blue_mask,
14564+ info->pixel_information.reserved_mask);
14565+ }
14566+}
14567+
14568+static void
14569+set_kernel_params(struct graphics_backend *backend,
14570+ struct linux_kernel_params *params)
14571+{
14572+ struct eg *eg;
14573+
14574+ if (!backend || !backend->priv)
14575+ return;
14576+
14577+ eg = backend->priv;
14578+ grub_efi_graphics_output_t *gop_intf = NULL;
14579+ grub_efi_graphics_output_mode_t *gop_mode = NULL;
14580+ grub_efi_status_t efi_status = GRUB_EFI_SUCCESS;
14581+ grub_efi_graphics_output_mode_information_t *gop_info = NULL;
14582+ grub_efi_uintn_t size;
14583+
14584+ gop_intf = grub_efi_locate_protocol (&graphics_output_guid, NULL);
14585+ if (gop_intf == NULL)
14586+ return;
14587+
14588+ gop_mode = gop_intf->mode;
14589+
14590+ efi_status = Call_Service_4 (gop_intf->query_mode,
14591+ gop_intf, gop_mode->mode, &size, &gop_info);
14592+
14593+
14594+ if (efi_status == GRUB_EFI_SUCCESS) {
14595+ /* No VBE on EFI. */
14596+ params->lfb_width = gop_info->horizontal_resolution;
14597+ params->lfb_height = gop_info->vertical_resolution;
14598+ params->lfb_base = gop_mode->frame_buffer_base;
14599+ params->lfb_size = gop_mode->frame_buffer_size;
14600+ params->lfb_pages = 1;
14601+ params->vesapm_segment = 0;
14602+ params->vesapm_offset = 0;
14603+ params->vesa_attrib = 0;
14604+ if (gop_info->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) {
14605+ params->lfb_depth = 32;
14606+ params->red_mask_size = 8;
14607+ params->red_field_pos = 0;
14608+ params->green_mask_size = 8;
14609+ params->green_field_pos = 8;
14610+ params->blue_mask_size = 8;
14611+ params->blue_field_pos = 16;
14612+ params->reserved_mask_size = 8;
14613+ params->reserved_field_pos = 24;
14614+ params->lfb_line_len = gop_info->pixels_per_scan_line * 4;
14615+ } else if (gop_info->pixel_format ==
14616+ GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) {
14617+ params->lfb_depth = 32;
14618+ params->red_mask_size = 8;
14619+ params->red_field_pos = 16;
14620+ params->green_mask_size = 8;
14621+ params->green_field_pos = 8;
14622+ params->blue_mask_size = 8;
14623+ params->blue_field_pos = 0;
14624+ params->reserved_mask_size = 8;
14625+ params->reserved_field_pos = 24;
14626+ params->lfb_line_len = gop_info->pixels_per_scan_line * 4;
14627+ } else if (gop_info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) {
14628+ find_bits (gop_info->pixel_information.red_mask,
14629+ &params->red_field_pos, &params->red_mask_size);
14630+ find_bits (gop_info->pixel_information.green_mask,
14631+ &params->green_field_pos, &params->green_mask_size);
14632+ find_bits (gop_info->pixel_information.blue_mask,
14633+ &params->blue_field_pos, &params->blue_mask_size);
14634+ find_bits (gop_info->pixel_information.reserved_mask,
14635+ &params->reserved_field_pos, &params->reserved_mask_size);
14636+ params->lfb_depth = params->red_mask_size
14637+ + params->green_mask_size
14638+ + params->blue_mask_size
14639+ + params->reserved_mask_size;
14640+ params->lfb_line_len =
14641+ (gop_info->pixels_per_scan_line * params->lfb_depth) / 8;
14642+ } else {
14643+ params->lfb_depth = 4;
14644+ params->red_mask_size = 0;
14645+ params->red_field_pos = 0;
14646+ params->green_mask_size = 0;
14647+ params->green_field_pos = 0;
14648+ params->blue_mask_size = 0;
14649+ params->blue_field_pos = 0;
14650+ params->reserved_mask_size = 0;
14651+ params->reserved_field_pos = 0;
14652+ params->lfb_line_len = params->lfb_width / 2;
14653+ }
14654+#if 0
14655+ params->video_cursor_x = 0;
14656+ params->video_cursor_y = 0;
14657+ params->video_page = 0;
14658+ params->video_mode = 0;
14659+ params->video_width = 0;
14660+ params->video_ega_bx = 0;
14661+ params->video_height = 0;
14662+ params->have_vga = 0x70;
14663+ params->font_size = 0;
14664+#else
14665+ params->video_cursor_x = grub_efi_system_table->con_out->mode->cursor_column;
14666+ params->video_cursor_y = grub_efi_system_table->con_out->mode->cursor_row;
14667+ params->video_page = 0; /* ??? */
14668+ params->video_mode = grub_efi_system_table->con_out->mode->mode;
14669+ params->video_width = (grub_console_getwh () >> 8);
14670+ params->video_ega_bx = 0;
14671+ params->video_height = (grub_console_getwh () & 0xff);
14672+ params->have_vga = VIDEO_TYPE_EFI;
14673+ params->font_size = 16; /* XXX */
14674+#endif
14675+ }
14676+}
14677+
14678+static void
14679+pixel_to_rgb(grub_efi_graphics_output_pixel_t *pixel,
14680+ int *red, int *green, int *blue)
14681+{
14682+ *red = pixel->bgrr.red;
14683+ *green = pixel->bgrr.green;
14684+ *blue = pixel->bgrr.blue;
14685+}
14686+
14687+static void
14688+rgb_to_pixel(int red, int green, int blue,
14689+ grub_efi_graphics_output_pixel_t *pixel)
14690+{
14691+ pixel->bgrr.red = red;
14692+ pixel->bgrr.green = green;
14693+ pixel->bgrr.blue = blue;
14694+}
14695+
14696+static void
14697+position_to_phys(struct eg *eg, position_t *virt, position_t *phys)
14698+{
14699+ phys->x = virt->x + eg->screen_pos.x;
14700+ phys->y = virt->y + eg->screen_pos.y;
14701+}
14702+
14703+static int
14704+abs_paddr(struct eg *eg, position_t *virt)
14705+{
14706+ position_t phys;
14707+ position_to_phys(eg, virt, &phys);
14708+ return phys.x + phys.y * eg->screen_size.x;
14709+}
14710+
14711+struct bltbuf {
14712+ grub_efi_uintn_t width;
14713+ grub_efi_uintn_t height;
14714+ grub_efi_graphics_output_pixel_t pixbuf[];
14715+};
14716+
14717+static struct bltbuf *alloc_bltbuf(grub_efi_uintn_t width,
14718+ grub_efi_uintn_t height)
14719+{
14720+ struct bltbuf *buf = NULL;
14721+ grub_efi_uintn_t pixbuf_size = width * height *
14722+ sizeof (grub_efi_graphics_output_pixel_t);
14723+
14724+ if (!(buf = grub_malloc(sizeof(buf->width) + sizeof(buf->height) +
14725+ pixbuf_size)))
14726+ return NULL;
14727+
14728+ buf->width = width;
14729+ buf->height = height;
14730+ grub_memset(buf->pixbuf, '\0', pixbuf_size);
14731+ return buf;
14732+}
14733+
14734+
14735+static void
14736+hw_blt_pos_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf,
14737+ position_t *bltpos, position_t *bltsz, position_t *pos)
14738+{
14739+ position_t phys;
14740+
14741+ position_to_phys(eg, pos, &phys);
14742+
14743+ Call_Service_10(eg->output_intf->blt, eg->output_intf, (void *)bltbuf->pixbuf,
14744+ GRUB_EFI_BLT_BUFFER_TO_VIDEO,
14745+ bltpos->x, bltpos->y,
14746+ phys.x, phys.y,
14747+ bltsz->x, bltsz->y,
14748+ 0);
14749+}
14750+
14751+static void
14752+blt_pos_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf,
14753+ position_t *bltpos, position_t *bltsz, position_t *pos)
14754+{
14755+ grub_efi_graphics_output_mode_information_t *info = get_graphics_mode_info(eg);
14756+ grub_efi_graphics_output_pixel_t *pixel;
14757+ position_t phys;
14758+ const int pxlstride = info->pixels_per_scan_line;
14759+ const int bytestride = pxlstride * sizeof (*pixel);
14760+
14761+ position_to_phys(eg, pos, &phys);
14762+
14763+ if (info->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY || 1) {
14764+ hw_blt_pos_to_screen_pos(eg, bltbuf, bltpos, bltsz, pos);
14765+#if 0
14766+ } else if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) {
14767+ int y;
14768+ grub_pixel_info_t *pinfo = &eg->pixel_info;
14769+ const int maxpixels =
14770+ MIN(info->horizontal_resolution - pos->x, bltsz->x);
14771+
14772+ for (y = bltpos->y; y < bltpos->y + bltsz->y; y++, phys.y++) {
14773+ char raw_pixels[maxpixels * pinfo->depth_bytes];
14774+ char *fb = (char *)(unsigned long)eg->output_intf->mode->frame_buffer_base;
14775+ int x;
14776+
14777+ pixel = (void *)&bltbuf->pixbuf[y * bltbuf->width + bltpos->x];
14778+ fb += phys.y * pinfo->line_length + phys.x * pinfo->depth_bytes;
14779+
14780+ for (x = 0; x < maxpixels; x++) {
14781+ char depth_bytes = pinfo->depth_bytes;
14782+ char *raw_pixel = raw_pixels + x * depth_bytes;
14783+
14784+ int red, green, blue, color;
14785+ char *colorp;
14786+
14787+#if 0
14788+ red = pixel[x].bgrr.red & 0x3f;
14789+ green = pixel[x].bgrr.green & 0x3f;
14790+ blue = pixel[x].bgrr.blue & 0x3f;
14791+ red = red * ((1 << pinfo->red_size) - 1) / 0x3f;
14792+ green = green * ((1 << pinfo->green_size) - 1) / 0x3f;
14793+ blue = blue * ((1 << pinfo->blue_size) - 1) / 0x3f;
14794+#else
14795+ red = pixel[x].bgrr.red;
14796+ green = pixel[x].bgrr.green;
14797+ blue = pixel[x].bgrr.blue;
14798+
14799+ red >>= 8 - pinfo->red_size;
14800+ green >>= 8 - pinfo->green_size;
14801+ blue >>= 8 - pinfo->blue_size;
14802+#endif
14803+
14804+ color = (red << pinfo->red_pos) |
14805+ (green << pinfo->green_pos) |
14806+ (blue << pinfo->blue_pos);
14807+ colorp = (void *)&color;
14808+ while (depth_bytes--)
14809+ *raw_pixel++ = *colorp++;
14810+ }
14811+ memmove(fb, raw_pixels, maxpixels * pinfo->depth_bytes);
14812+ }
14813+#endif
14814+ } else {
14815+ int y;
14816+ grub_pixel_info_t *pinfo = &eg->pixel_info;
14817+ const int maxpixels =
14818+ MIN(info->horizontal_resolution - pos->x, bltsz->x);
14819+
14820+ //char *line = &fb[phys.y * bytestride + phys.x * sizeof(*pixel)];
14821+ for (y = bltpos->y; y < bltpos->y + bltsz->y; y++, phys.y++) {
14822+ char raw_pixels[maxpixels * sizeof(*pixel)];
14823+ char *fb = (char *)(unsigned long)eg->output_intf->mode->frame_buffer_base;
14824+ int x;
14825+
14826+ pixel = (void *)&bltbuf->pixbuf[y * bltbuf->width + bltpos->x];
14827+ fb += phys.y * pinfo->line_length + phys.x * pinfo->depth_bytes;
14828+
14829+ if (info->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR) {
14830+ memmove(raw_pixels, pixel, maxpixels * sizeof (*pixel));
14831+ continue;
14832+ } else if (info->pixel_format==GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR) {
14833+ grub_efi_graphics_output_pixel_t shadow[maxpixels];
14834+ for (x = 0; x < maxpixels; x++) {
14835+ shadow[x].rgbr.red = pixel[x].bgrr.red;
14836+ shadow[x].rgbr.green = pixel[x].bgrr.green;
14837+ shadow[x].rgbr.blue = pixel[x].bgrr.blue;
14838+ }
14839+
14840+ memmove(raw_pixels, shadow, maxpixels * sizeof (*pixel));
14841+ } else if (info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK) {
14842+ for (x = 0; x < maxpixels; x++) {
14843+ char depth_bytes = pinfo->depth_bytes;
14844+ char *raw_pixel = raw_pixels + x * depth_bytes;
14845+
14846+ int red, green, blue, color;
14847+ char *colorp;
14848+
14849+#if 0
14850+ red = pixel[x].bgrr.red & 0x3f;
14851+ green = pixel[x].bgrr.green & 0x3f;
14852+ blue = pixel[x].bgrr.blue & 0x3f;
14853+ red = red * ((1 << pinfo->red_size) - 1) / 0x3f;
14854+ green = green * ((1 << pinfo->green_size) - 1) / 0x3f;
14855+ blue = blue * ((1 << pinfo->blue_size) - 1) / 0x3f;
14856+#else
14857+ red = pixel[x].bgrr.red;
14858+ green = pixel[x].bgrr.green;
14859+ blue = pixel[x].bgrr.blue;
14860+
14861+ red >>= 8 - pinfo->red_size;
14862+ green >>= 8 - pinfo->green_size;
14863+ blue >>= 8 - pinfo->blue_size;
14864+#endif
14865+
14866+ color = (red << pinfo->red_pos) |
14867+ (green << pinfo->green_pos) |
14868+ (blue << pinfo->blue_pos);
14869+ colorp = (void *)&color;
14870+ while (depth_bytes--)
14871+ *raw_pixel++ = *colorp++;
14872+ }
14873+ }
14874+ memmove(fb, raw_pixels, maxpixels * pinfo->depth_bytes);
14875+ }
14876+ }
14877+}
14878+
14879+static void
14880+blt_to_screen(struct eg *eg, struct bltbuf *bltbuf)
14881+{
14882+#if 0
14883+ position_t addr = {0, 0};
14884+
14885+ position_to_phys(eg, &addr, &addr);
14886+
14887+ Call_Service_10(eg->output_intf->blt, eg->output_intf, bltbuf->pixbuf,
14888+ GRUB_EFI_BLT_BUFFER_TO_VIDEO,
14889+ 0, 0,
14890+ addr.x, addr.y,
14891+ bltbuf->width, bltbuf->height,
14892+ 0);
14893+#else
14894+ const int pxlstride = eg->output_intf->mode->info->pixels_per_scan_line;
14895+ position_t bltsz, bltpos = { 0, 0 }, pos = { 0, 0 };
14896+ bltsz.x = MIN(bltbuf->width, pxlstride);
14897+ bltsz.y = MIN(bltbuf->height, eg->output_intf->mode->info->vertical_resolution);
14898+
14899+ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, &pos);
14900+#endif
14901+}
14902+
14903+static void
14904+blt_to_screen_pos(struct eg *eg, struct bltbuf *bltbuf, position_t *pos)
14905+{
14906+ position_t bltpos = {0, 0};
14907+ position_t bltsz = { bltbuf->width, bltbuf->height };
14908+ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, pos);
14909+}
14910+
14911+static int
14912+save_video_mode(struct eg *eg, struct video_mode *mode)
14913+{
14914+ grub_efi_status_t status;
14915+
14916+
14917+
14918+ status = Call_Service_4(eg->output_intf->query_mode, eg->output_intf,
14919+ mode->number, &mode->size, &mode->info);
14920+ return status == GRUB_EFI_SUCCESS;
14921+}
14922+
14923+static void
14924+get_screen_size(struct graphics_backend *backend, position_t *size)
14925+{
14926+ struct eg *eg = backend->priv;
14927+ grub_efi_graphics_output_mode_information_t *info;
14928+
14929+ info = get_graphics_mode_info(eg);
14930+
14931+ size->x = info->horizontal_resolution;
14932+ size->y = info->vertical_resolution;
14933+}
14934+
14935+static void
14936+bltbuf_set_pixel(struct bltbuf *bltbuf, position_t *pos,
14937+ grub_efi_graphics_output_pixel_t *pixel)
14938+{
14939+ if (pos->x < 0 || pos->x >= bltbuf->width)
14940+ return;
14941+ if (pos->x < 0 || pos->y >= bltbuf->height)
14942+ return;
14943+ grub_memmove(&bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], pixel,
14944+ sizeof *pixel);
14945+}
14946+
14947+static void
14948+bltbuf_get_pixel(struct bltbuf *bltbuf, position_t *pos,
14949+ grub_efi_graphics_output_pixel_t *pixel)
14950+{
14951+ if (bltbuf && pos->x < bltbuf->width && pos->y < bltbuf->height) {
14952+ grub_memmove(pixel, &bltbuf->pixbuf[pos->x + pos->y * bltbuf->width],
14953+ sizeof *pixel);
14954+ } else {
14955+ pixel->bgrr.red = 0x00;
14956+ pixel->bgrr.green = 0x00;
14957+ pixel->bgrr.blue = 0x00;
14958+ }
14959+}
14960+
14961+static void
14962+bltbuf_set_pixel_rgb(struct bltbuf *bltbuf, position_t *pos,
14963+ int red, int green, int blue)
14964+{
14965+ grub_efi_graphics_output_pixel_t pixel;
14966+ rgb_to_pixel(red, green, blue, &pixel);
14967+ bltbuf_set_pixel(bltbuf, pos, &pixel);
14968+}
14969+
14970+static void
14971+bltbuf_set_pixel_idx(struct eg *eg, struct bltbuf *bltbuf,
14972+ position_t *pos, int idx)
14973+{
14974+ bltbuf_set_pixel(bltbuf, pos, &eg->palette[idx]);
14975+}
14976+
14977+static void
14978+bltbuf_get_pixel_idx(struct bltbuf *bltbuf, position_t *pos, int *idx)
14979+{
14980+ grub_efi_graphics_output_pixel_t pixel;
14981+
14982+ rgb_to_pixel(0, 0, 0, &pixel);
14983+ bltbuf_get_pixel(bltbuf, pos, &pixel);
14984+ for (*idx = 0; *idx < 16; (*idx)++) {
14985+ if (pixel_equal(cga_colors[*idx], pixel))
14986+ break;
14987+ }
14988+}
14989+
14990+static struct bltbuf *
14991+xpm_to_bltbuf(struct xpm *xpm)
14992+{
14993+ struct bltbuf *bltbuf = NULL;
14994+ position_t pos;
14995+
14996+ if (!(bltbuf = alloc_bltbuf(xpm->width, xpm->height)))
14997+ return NULL;
14998+
14999+ for (pos.y = 0; pos.y < xpm->height; pos.y++) {
15000+ for (pos.x = 0; pos.x < xpm->width; pos.x++) {
15001+ xpm_pixel_t xpl;
15002+ unsigned char idx;
15003+
15004+ idx = xpm_get_pixel_idx(xpm, pos.x, pos.y);
15005+ xpm_get_idx(xpm, idx, &xpl);
15006+
15007+ bltbuf_set_pixel_rgb(bltbuf, &pos, xpl.red, xpl.green, xpl.blue);
15008+ }
15009+ }
15010+
15011+ return bltbuf;
15012+}
15013+
15014+static void
15015+cursor(struct graphics_backend *backend, int set)
15016+{
15017+ struct eg *eg;
15018+ int ch, invert;
15019+ unsigned short *text;
15020+ position_t fpos, screensz;
15021+ int offset;
15022+
15023+ eg = backend->priv;
15024+
15025+ if (set && !graphics_get_scroll())
15026+ return;
15027+
15028+ text = graphics_get_text_buf();
15029+ graphics_get_font_position(&fpos);
15030+ graphics_get_screen_rowscols(&screensz);
15031+
15032+ offset = fpos.y * screensz.x + fpos.x;
15033+
15034+ if (set)
15035+ text[offset] |= 0x0200;
15036+
15037+ graphics_clbl(fpos.x, fpos.y, 1, 1, 1);
15038+
15039+ if (set)
15040+ text[offset] &= 0xfdff;
15041+}
15042+
15043+static void blank(struct graphics_backend *backend);
15044+
15045+static void
15046+reset_screen_geometry(struct graphics_backend *backend)
15047+{
15048+ struct eg *eg = backend->priv;
15049+ struct xpm *xpm = graphics_get_splash_xpm();
15050+ grub_efi_graphics_output_mode_information_t *info;
15051+ position_t screensz;
15052+
15053+ info = get_graphics_mode_info(eg);
15054+
15055+ if (xpm) {
15056+ eg->screen_pos.x =
15057+ (info->horizontal_resolution - xpm->width) / 2;
15058+ eg->screen_pos.y =
15059+ (info->vertical_resolution - xpm->height) / 2;
15060+ } else {
15061+ eg->screen_pos.x = 0;
15062+ eg->screen_pos.y = 0;
15063+ }
15064+
15065+ blank(backend);
15066+ graphics_get_screen_rowscols(&screensz);
15067+ graphics_clbl(0, 0, screensz.x, screensz.y, 0);
15068+ graphics_clbl(0, 0, screensz.x, screensz.y, 1);
15069+}
15070+
15071+static void
15072+setxy(struct graphics_backend *backend, position_t *pos)
15073+{
15074+ position_t fpos;
15075+
15076+ fpos.x = pos->x;
15077+ fpos.y = pos->y;
15078+ graphics_set_font_position(&fpos);
15079+}
15080+
15081+static void
15082+eg_getxy(struct graphics_backend *backend, position_t *pos)
15083+{
15084+ graphics_get_font_position(pos);
15085+}
15086+
15087+static void
15088+draw_pixel(struct graphics_backend *backend, position_t *pos, pixel_t *pixel)
15089+{
15090+ struct bltbuf *bltbuf = NULL;
15091+ grub_efi_graphics_output_pixel_t *eup = (grub_efi_graphics_output_pixel_t *)pixel;
15092+
15093+ bltbuf = alloc_bltbuf(1,1);
15094+ if (!bltbuf)
15095+ return;
15096+
15097+ grub_memmove(&bltbuf->pixbuf[0], eup, sizeof (*eup));
15098+
15099+ blt_to_screen_pos(backend->priv, bltbuf, pos);
15100+
15101+ grub_free(bltbuf);
15102+}
15103+
15104+static pixel_t *
15105+get_pixel_idx(struct graphics_backend *backend, int idx)
15106+{
15107+ static grub_efi_graphics_output_pixel_t pixel;
15108+ struct eg *eg = backend->priv;
15109+ if (idx < 0 || idx > MAX_PALETTE)
15110+ return NULL;
15111+ pixel.bgrr.red = eg->palette[idx].bgrr.red;
15112+ pixel.bgrr.green = eg->palette[idx].bgrr.green;
15113+ pixel.bgrr.blue = eg->palette[idx].bgrr.blue;
15114+ return (pixel_t *)&pixel;
15115+}
15116+
15117+static pixel_t *
15118+get_pixel_rgb(struct graphics_backend *backend, int red, int green, int blue)
15119+{
15120+ static grub_efi_graphics_output_pixel_t pixel;
15121+ rgb_to_pixel(red, green, blue, &pixel);
15122+ return &pixel;
15123+}
15124+
15125+static void
15126+set_palette(struct graphics_backend *backend, int idx,
15127+ int red, int green, int blue)
15128+{
15129+ grub_efi_graphics_output_pixel_t pixel;
15130+ struct eg *eg = backend->priv;
15131+
15132+ if (idx > MAX_PALETTE)
15133+ return;
15134+ rgb_to_pixel(red, green, blue, &pixel);
15135+ grub_memmove(&eg->palette[idx], &pixel, sizeof pixel);
15136+}
15137+
15138+static void
15139+blank(struct graphics_backend *backend)
15140+{
15141+ struct eg *eg = backend->priv;
15142+ struct bltbuf *bltbuf;
15143+ position_t pos = {0, 0};
15144+ grub_efi_graphics_output_mode_information_t *info;
15145+ grub_efi_uintn_t x, y, i, j;
15146+ unsigned char r = 0 ,g = 0;
15147+
15148+ info = get_graphics_mode_info(eg);
15149+ x = info->horizontal_resolution;
15150+ y = info->vertical_resolution;
15151+
15152+ if (x == 0 || y == 0)
15153+ return;
15154+
15155+ bltbuf = alloc_bltbuf(x, y);
15156+ for (j = 0; j < y; j++) {
15157+ if (debug_graphics && j % 16 == 0) {
15158+ g = g == 0 ? 7 : 0;
15159+ r = g == 0 ? 7 : 0;
15160+ }
15161+ for (i = 0; i < x; i++) {
15162+ if (debug_graphics && i % 16 == 0) {
15163+ g = g == 0 ? 7 : 0;
15164+ r = g == 0 ? 7 : 0;
15165+ }
15166+ pos.x = i;
15167+ pos.y = j;
15168+ bltbuf_set_pixel_rgb(bltbuf, &pos, r * 16, g * 16, 0x0);
15169+ }
15170+ }
15171+
15172+ blt_to_screen(eg, bltbuf);
15173+
15174+ grub_free(bltbuf);
15175+}
15176+
15177+
15178+static void
15179+draw_white_box(struct graphics_backend *backend)
15180+{
15181+ struct eg *eg = backend->priv;
15182+ struct bltbuf *bltbuf;
15183+ position_t pos = {0, 0}, bltpos = {0, 0}, bltsz = {100,100};
15184+
15185+ bltbuf = alloc_bltbuf(bltsz.x, bltsz.y);
15186+ for (pos.y = 0; pos.y < bltsz.y; pos.y++) {
15187+ for (pos.x = 0; pos.x < bltsz.x; pos.x++) {
15188+ bltbuf_set_pixel_rgb(bltbuf, &pos, 0xff, 0xff, 0xff);
15189+ }
15190+ }
15191+
15192+ blt_pos_to_screen_pos(eg, bltbuf, &bltpos, &bltsz, &pos);
15193+
15194+#if 0
15195+ Call_Service_10(eg->output_intf->blt, eg->output_intf, bltbuf->pixbuf,
15196+ GRUB_EFI_BLT_BUFFER_TO_VIDEO, 0, 0, 100, 100, x, y, 0);
15197+#endif
15198+
15199+ grub_free(bltbuf);
15200+}
15201+
15202+static void
15203+bltbuf_cp_bl(struct bltbuf *d, position_t dpos,
15204+ struct bltbuf *s, position_t spos)
15205+{
15206+ grub_efi_graphics_output_pixel_t *dp, *sp;
15207+
15208+ const int xavail = MAX(0, s ? s->width - spos.x : 0);
15209+ const int xtotal = MAX(0, d->width - dpos.x);
15210+ const int xcp = MAX(0, MIN(xtotal, xavail));
15211+ const int xcl = MAX(0, xtotal - xcp);
15212+
15213+ const int yavail = MAX(0, s ? s->height - spos.y : 0);
15214+ const int ytotal = MAX(0, d->height - dpos.y);
15215+ const int ycp = MAX(0, MIN(ytotal, yavail));
15216+ const int ycl = MAX(0, ytotal - ycp);
15217+
15218+ int y, x;
15219+
15220+ for (y = 0; y < ytotal; y++) {
15221+ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x];
15222+
15223+ if (y < yavail) {
15224+ sp = &s->pixbuf[(spos.y + y) * s->width + spos.x];
15225+ memmove(dp, sp, xcp * sizeof (*dp));
15226+ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x + xcp];
15227+ memset(dp, '\0', xcl * sizeof (*dp));
15228+ } else {
15229+ memset(dp, '\0', xtotal * sizeof (*dp));
15230+ }
15231+ }
15232+}
15233+
15234+/* copy a region the size of bltbuf from the background into bltbuf,
15235+ * starting at offset bgpos
15236+ */
15237+static void
15238+bltbuf_draw_bg(struct graphics_backend *backend, struct bltbuf *bltbuf,
15239+ position_t bgpos)
15240+{
15241+ struct eg *eg = backend->priv;
15242+ position_t blpos = { 0, 0 };
15243+
15244+ bltbuf_cp_bl(bltbuf, blpos, eg->background, bgpos);
15245+}
15246+
15247+static void
15248+dbg_dump_palette(struct graphics_backend *backend)
15249+{
15250+ struct eg *eg;
15251+ int i;
15252+ if (!backend || !backend->priv)
15253+ return;
15254+ eg = backend->priv;
15255+ if (!eg->palette)
15256+ return;
15257+}
15258+
15259+static int
15260+is_shadow_pixel(position_t screensz, position_t textpos, position_t bitpos,
15261+ position_t fontsz)
15262+{
15263+ unsigned short *text = graphics_get_text_buf();
15264+ const unsigned char *glyph;
15265+ position_t glyphpos = { textpos.x, textpos.y };
15266+ position_t glyphbit = { bitpos.x, bitpos.y };
15267+ unsigned short ch;
15268+
15269+ if (glyphbit.x == 0) {
15270+ glyphbit.x = fontsz.x;
15271+ glyphpos.x--;
15272+ }
15273+ if (glyphbit.y == 0) {
15274+ glyphbit.y = fontsz.y;
15275+ glyphpos.y--;
15276+ }
15277+ glyphbit.x--;
15278+ glyphbit.y--;
15279+
15280+ if (glyphpos.x < 0 || glyphpos.y < 0)
15281+ return 0;
15282+
15283+ ch = text[glyphpos.y * screensz.x + glyphpos.x] & 0xff;
15284+ glyph = font8x16 + (ch << 4);
15285+ return glyph[glyphbit.y] & (1 << ((fontsz.x-1) - glyphbit.x));
15286+}
15287+
15288+static void
15289+bltbuf_draw_character(struct graphics_backend *backend,
15290+ struct bltbuf *bltbuf, /* the bltbuf to draw into */
15291+ position_t target, /* the position in the bltbuf to draw to */
15292+ position_t fontsz, /* the size of the font, in pixels */
15293+ position_t charpos, /* the position of the character in the text
15294+ screen buffer */
15295+ position_t screensz, /* the size of the screen in characters */
15296+ unsigned short ch /* the character to draw, plus flags */
15297+ )
15298+{
15299+ struct eg *eg = backend->priv;
15300+ position_t blpos;
15301+ position_t glyphpos;
15302+
15303+ blpos.y = target.y;
15304+ for (glyphpos.y = 0; glyphpos.y < fontsz.y; glyphpos.y++, blpos.y++) {
15305+ blpos.x = target.x;
15306+ for (glyphpos.x = 0; glyphpos.x < fontsz.x; glyphpos.x++, blpos.x++) {
15307+ int invert = (ch & 0x0100) != 0;
15308+ int set = (ch & 0x0200) != 0;
15309+ const unsigned char *glyph = font8x16 + ((ch & 0xff) << 4);
15310+ int bit = glyph[glyphpos.y] & (1 << ((fontsz.x-1) - glyphpos.x));
15311+ int idx = -1;
15312+
15313+ if (!set) {
15314+ if (invert)
15315+ idx = bit ? 0 : 15;
15316+ else if (bit)
15317+ idx = 15;
15318+
15319+ if (idx == -1) {
15320+ if (is_shadow_pixel(screensz, charpos, glyphpos, fontsz) ||
15321+ !eg->background)
15322+ idx = invert ? 15 : 0;
15323+ }
15324+ } else {
15325+ idx = bit ? 0 : 15;
15326+ }
15327+
15328+ if (idx != -1)
15329+ bltbuf_set_pixel_idx(eg, bltbuf, &blpos, idx);
15330+ }
15331+ }
15332+}
15333+
15334+static void
15335+bltbuf_draw_text(struct graphics_backend *backend,
15336+ struct bltbuf *bltbuf, /* the buffer to draw into */
15337+ position_t screensz, /* the size of the screen in characters */
15338+ position_t fontsz, /* the size of the font in pixels */
15339+ position_t txtpos, /* the position of the text on the screen
15340+ (in characters) */
15341+ position_t txtsz /* the size of the block to fill in
15342+ (in characters) */
15343+ )
15344+{
15345+ struct eg *eg = backend->priv;
15346+ unsigned short *text = graphics_get_text_buf();
15347+ position_t charpos;
15348+
15349+ for (charpos.y = txtpos.y; charpos.y < txtpos.y + txtsz.y; charpos.y++) {
15350+ for (charpos.x = txtpos.x; charpos.x < txtpos.x + txtsz.x; charpos.x++){
15351+ int offset = charpos.y * screensz.x + charpos.x;
15352+ position_t blpos = { (charpos.x-txtpos.x)*fontsz.x,
15353+ (charpos.y-txtpos.y)*fontsz.y };
15354+
15355+ bltbuf_draw_character(backend, bltbuf, blpos, fontsz, charpos,
15356+ screensz, text[offset]);
15357+ }
15358+ }
15359+}
15360+
15361+static void
15362+clbl(struct graphics_backend *backend, int col, int row, int width, int height,
15363+ int draw_text)
15364+{
15365+ struct eg *eg = backend->priv;
15366+ struct xpm *xpm;
15367+
15368+ struct bltbuf *bltbuf;
15369+ position_t fontsz, blpos, blsz, screensz;
15370+ unsigned short *text;
15371+
15372+// blank(backend);
15373+//
15374+ xpm = graphics_get_splash_xpm();
15375+ if (xpm && !eg->background)
15376+ eg->background = xpm_to_bltbuf(xpm);
15377+
15378+ graphics_get_screen_rowscols(&screensz);
15379+ width = MIN(width, screensz.x - col);
15380+ height = MIN(height, screensz.y - row);
15381+ graphics_get_font_size(&fontsz);
15382+
15383+ blsz.x = width * fontsz.x;
15384+ blsz.y = height * fontsz.y;
15385+
15386+ bltbuf = alloc_bltbuf(blsz.x, blsz.y);
15387+ if (!bltbuf)
15388+ return;
15389+
15390+ blsz.x = col * fontsz.x;
15391+ blsz.y = row * fontsz.y;
15392+
15393+ text = graphics_get_text_buf();
15394+ bltbuf_draw_bg(backend, bltbuf, blsz);
15395+
15396+ if (draw_text) {
15397+ blsz.x = width;
15398+ blsz.y = height;
15399+ blpos.x = col;
15400+ blpos.y = row;
15401+
15402+ bltbuf_draw_text(backend, bltbuf, screensz, fontsz, blpos, blsz);
15403+ }
15404+
15405+ blpos.x = col * fontsz.x;
15406+ blpos.y = row * fontsz.y;
15407+
15408+ blt_to_screen_pos(eg, bltbuf, &blpos);
15409+}
15410+
15411+static void
15412+setup_cga_palette(struct eg *eg)
15413+{
15414+ rgb_to_pixel(0x00,0x00,0x00, &eg->palette[0]); // 0 Black
15415+ rgb_to_pixel(0x7f,0x00,0x00, &eg->palette[1]); // 1 Dark Red
15416+ rgb_to_pixel(0x00,0x7f,0x00, &eg->palette[2]); // 2 Dark Green
15417+ rgb_to_pixel(0x7f,0x7f,0x00, &eg->palette[3]); // 3 Dark Yellow
15418+ rgb_to_pixel(0x00,0x00,0x7f, &eg->palette[4]); // 4 Dark Blue
15419+ rgb_to_pixel(0x7f,0x00,0x7f, &eg->palette[5]); // 5 Dark Magenta
15420+ rgb_to_pixel(0x00,0x7f,0x7f, &eg->palette[6]); // 6 Dark Cyan
15421+ rgb_to_pixel(0xc0,0xc0,0xc0, &eg->palette[7]); // 7 Light Grey
15422+ rgb_to_pixel(0x7f,0x7f,0x7f, &eg->palette[8]); // 8 Dark Grey
15423+ rgb_to_pixel(0xff,0x00,0x00, &eg->palette[9]); // 9 Red
15424+ rgb_to_pixel(0x00,0xff,0x00, &eg->palette[10]); // 10 Green
15425+ rgb_to_pixel(0xff,0xff,0x00, &eg->palette[11]); // 11 Yellow
15426+ rgb_to_pixel(0x00,0x00,0xff, &eg->palette[12]); // 12 Blue
15427+ rgb_to_pixel(0xff,0x00,0xff, &eg->palette[13]); // 13 Magenta
15428+ rgb_to_pixel(0x00,0xff,0xff, &eg->palette[14]); // 14 Cyan
15429+ rgb_to_pixel(0xff,0xff,0xff, &eg->palette[15]); // 15 White
15430+ rgb_to_pixel(0xff,0xff,0xff, &eg->palette[16]); // 16 Also white ;)
15431+}
15432+
15433+static grub_efi_status_t
15434+set_video_mode(struct eg *eg, int mode)
15435+{
15436+ grub_efi_status_t efi_status;
15437+ efi_status = Call_Service_2(eg->output_intf->set_mode, eg->output_intf, mode);
15438+ return efi_status;
15439+}
15440+
15441+static void disable(struct graphics_backend *backend)
15442+{
15443+ struct eg *eg;
15444+
15445+ if (!backend)
15446+ return;
15447+
15448+ eg = backend->priv;
15449+ if (!eg || eg->current_mode != GRAPHICS)
15450+ return;
15451+
15452+#if 0
15453+ blank(backend);
15454+
15455+ set_video_mode(eg, eg->text_mode);
15456+ grub_efi_set_text_mode(1);
15457+#endif
15458+ eg->current_mode = TEXT;
15459+}
15460+
15461+static int
15462+fill_pixel_info (grub_pixel_info_t *pixel_info,
15463+ grub_efi_graphics_output_mode_information_t *mode_info)
15464+{
15465+ if (mode_info->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR)
15466+ {
15467+ pixel_info->depth_bits = 32;
15468+ pixel_info->depth_bytes = 4;
15469+ pixel_info->red_size = 8;
15470+ pixel_info->red_pos = 0;
15471+ pixel_info->green_size = 8;
15472+ pixel_info->green_pos = 8;
15473+ pixel_info->blue_size = 8;
15474+ pixel_info->blue_pos = 16;
15475+ pixel_info->reserved_size = 8;
15476+ pixel_info->reserved_pos = 24;
15477+ pixel_info->line_length = mode_info->pixels_per_scan_line * 4;
15478+ }
15479+ else if (mode_info->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR)
15480+ {
15481+ pixel_info->depth_bits = 32;
15482+ pixel_info->depth_bytes = 4;
15483+ pixel_info->red_size = 8;
15484+ pixel_info->red_pos = 16;
15485+ pixel_info->green_size = 8;
15486+ pixel_info->green_pos = 8;
15487+ pixel_info->blue_size = 8;
15488+ pixel_info->blue_pos = 0;
15489+ pixel_info->reserved_size = 8;
15490+ pixel_info->reserved_pos = 24;
15491+ pixel_info->line_length = mode_info->pixels_per_scan_line * 4;
15492+ }
15493+ else if (mode_info->pixel_format == GRUB_EFI_PIXEL_BIT_MASK)
15494+ {
15495+ find_bits (mode_info->pixel_information.red_mask,
15496+ &pixel_info->red_pos, &pixel_info->red_size);
15497+ find_bits (mode_info->pixel_information.green_mask,
15498+ &pixel_info->green_pos, &pixel_info->green_size);
15499+ find_bits (mode_info->pixel_information.blue_mask,
15500+ &pixel_info->blue_pos, &pixel_info->blue_size);
15501+ find_bits (mode_info->pixel_information.reserved_mask,
15502+ &pixel_info->reserved_pos, &pixel_info->reserved_size);
15503+ pixel_info->depth_bits = pixel_info->red_size + pixel_info->green_size +
15504+ pixel_info->blue_size + pixel_info->reserved_size;
15505+ pixel_info->depth_bytes = (pixel_info->depth_bits + 7) / 8;
15506+ pixel_info->line_length = mode_info->pixels_per_scan_line *
15507+ pixel_info->depth_bytes;
15508+ }
15509+ else
15510+ return 0;
15511+ return 1;
15512+}
15513+
15514+/* 1 = prefer a
15515+ * 0 = prefer neither
15516+ * -1 = prefer b
15517+ */
15518+static int
15519+modecmp_helper(struct eg *eg, struct video_mode *amode, struct video_mode *bmode)
15520+{
15521+ grub_efi_graphics_output_mode_information_t *a = amode->info;
15522+ grub_efi_graphics_output_mode_information_t *b = bmode->info;
15523+
15524+ if (a != NULL && b == NULL)
15525+ return 1;
15526+ if (a == NULL && b == NULL)
15527+ return 0;
15528+ if (a == NULL && b != NULL)
15529+ return -1;
15530+
15531+#if 0
15532+ if (amode->number == eg->graphics_mode && bmode->number != eg->graphics_mode)
15533+ return 1;
15534+ if (amode->number == eg->graphics_mode && bmode->number == eg->graphics_mode)
15535+ return 0;
15536+ if (amode->number != eg->graphics_mode && bmode->number == eg->graphics_mode)
15537+ return -1;
15538+#endif
15539+
15540+
15541+ /* kernel doesn't deal with blt only modes, so prefer against them. */
15542+ if (a->pixel_format != GRUB_EFI_PIXEL_BLT_ONLY &&
15543+ b->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY)
15544+ return 1;
15545+ if (b->pixel_format != GRUB_EFI_PIXEL_BLT_ONLY &&
15546+ a->pixel_format == GRUB_EFI_PIXEL_BLT_ONLY)
15547+ return -1;
15548+
15549+ /* XXX PJFIX there's something wrong with what we're passing to the
15550+ * kernel for stride in the bgrr/rgbr modes, and I haven't figured out
15551+ * just what yet, so for now, prefer bitmask modes.
15552+ */
15553+ if (a->pixel_format == GRUB_EFI_PIXEL_BIT_MASK &&
15554+ b->pixel_format != GRUB_EFI_PIXEL_BIT_MASK)
15555+ return 1;
15556+ if (a->pixel_format != GRUB_EFI_PIXEL_BIT_MASK &&
15557+ b->pixel_format == GRUB_EFI_PIXEL_BIT_MASK)
15558+ return -1;
15559+
15560+ if (a->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR &&
15561+ b->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR)
15562+ return 1;
15563+ if (a->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR &&
15564+ b->pixel_format == GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR)
15565+ return -1;
15566+
15567+ if (a->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR &&
15568+ b->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR)
15569+ return 1;
15570+ if (a->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR &&
15571+ b->pixel_format == GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR)
15572+ return -1;
15573+
15574+ if (a->horizontal_resolution > b->horizontal_resolution &&
15575+ a->vertical_resolution > b->vertical_resolution)
15576+ return 1;
15577+ if (a->horizontal_resolution < b->horizontal_resolution &&
15578+ a->vertical_resolution < b->vertical_resolution)
15579+ return -1;
15580+ return 0;
15581+}
15582+
15583+static int
15584+modecmp(struct eg *eg, struct video_mode *amode, struct video_mode *bmode)
15585+{
15586+ int rc;
15587+#if 0
15588+ grub_efi_graphics_output_mode_information_t *a = amode->info;
15589+ grub_efi_graphics_output_mode_information_t *b = bmode->info;
15590+#endif
15591+ rc = modecmp_helper(eg, amode, bmode);
15592+#if 0
15593+ grub_printf("comparing nodes:\n");
15594+ print_mode_info(amode);
15595+ print_mode_info(bmode);
15596+ if (rc > 0)
15597+ grub_printf("result: a > b\n");
15598+ else if (rc < 0)
15599+ grub_printf("result: a < b\n");
15600+ else
15601+ grub_printf("result: a == b\n");
15602+
15603+ //dbgdelay(__FILE__, __LINE__);
15604+#endif
15605+ return rc;
15606+}
15607+
15608+static void
15609+modeswap(struct video_mode *amode, struct video_mode *bmode)
15610+{
15611+ struct video_mode tmp;
15612+
15613+ memcpy(&tmp, amode, sizeof (tmp));
15614+ memcpy(amode, bmode, sizeof (tmp));
15615+ memcpy(bmode, &tmp, sizeof(tmp));
15616+}
15617+
15618+static void
15619+sort_modes(struct eg *eg, int p, int r)
15620+{
15621+ struct video_mode **modes = eg->modes;
15622+
15623+ int i, j;
15624+ for (i = 0; i < eg->max_mode; i++) {
15625+ for (j = i + 1; j < eg->max_mode; j++) {
15626+ if (modecmp(eg, modes[j], modes[i]) < 0)
15627+ modeswap(modes[j], modes[i]);
15628+ }
15629+ }
15630+}
15631+
15632+static int
15633+try_enable(struct graphics_backend *backend)
15634+{
15635+ struct eg *eg = backend->priv;
15636+ grub_efi_status_t efi_status = GRUB_EFI_UNSUPPORTED;
15637+ int i;
15638+
15639+ if (eg->text_mode == 0xffffffff) {
15640+ grub_efi_set_text_mode(1);
15641+ eg->text_mode = eg->output_intf->mode->mode;
15642+ }
15643+
15644+ if (eg->graphics_mode == 0xffffffff) {
15645+ grub_efi_graphics_output_mode_information_t *info;
15646+
15647+ if (!graphics_alloc_text_buf())
15648+ return 0;
15649+
15650+ grub_efi_set_text_mode(0);
15651+ eg->graphics_mode = eg->output_intf->mode->mode;
15652+ grub_efi_set_text_mode(1);
15653+#if 0
15654+ dprintf("graphics mode is %d\n", eg->graphics_mode);
15655+ /* this is okay here because we haven't sorted yet.*/
15656+ print_mode_info(eg->modes[eg->graphics_mode]);
15657+ dprintf("text mode is %d\n", eg->text_mode);
15658+ print_mode_info(eg->modes[eg->text_mode]);
15659+#endif
15660+
15661+ sort_modes(eg, 0, eg->max_mode-1);
15662+
15663+#if 0
15664+ for (i = eg->max_mode - 1; i >= 0; i--)
15665+ print_mode_info(eg->modes[i]);
15666+ dbgdelay(__FILE__, __LINE__);
15667+#endif
15668+
15669+ efi_status = GRUB_EFI_UNSUPPORTED;
15670+
15671+ for (i = eg->max_mode - 1; i >= 0; i--) {
15672+ if (!eg->modes[i])
15673+ continue;
15674+
15675+ info = eg->modes[i]->info;
15676+
15677+#if 0
15678+ if (info->pixel_format != GRUB_EFI_PIXEL_RGBR_8BIT_PER_COLOR &&
15679+ info->pixel_format != GRUB_EFI_PIXEL_BGRR_8BIT_PER_COLOR &&
15680+ info->pixel_format != GRUB_EFI_PIXEL_BIT_MASK) {
15681+ continue;
15682+ }
15683+#endif
15684+
15685+ grub_efi_set_text_mode(0);
15686+ efi_status = set_video_mode(eg, eg->modes[i]->number);
15687+ if (efi_status == GRUB_EFI_SUCCESS) {
15688+#if 0
15689+ grub_efi_set_text_mode(1);
15690+ dprintf("switched to mode %d successfully\n",
15691+ eg->modes[i]->number);
15692+ dbgdelay(__FILE__,__LINE__);
15693+ grub_efi_set_text_mode(0);
15694+#endif
15695+ eg->graphics_mode = eg->modes[i]->number;
15696+ fill_pixel_info(&eg->pixel_info, info);
15697+ break;
15698+ } else {
15699+#if 0
15700+ set_video_mode(eg, eg->text_mode);
15701+ grub_efi_set_text_mode(1);
15702+ dprintf("return code was %d\n", efi_status);
15703+#endif
15704+ }
15705+ }
15706+ if (efi_status != GRUB_EFI_SUCCESS) {
15707+#if 1
15708+ grub_efi_set_text_mode(1);
15709+ set_video_mode(eg, eg->text_mode);
15710+#endif
15711+ return 0;
15712+ }
15713+
15714+ }
15715+
15716+ eg->current_mode = GRAPHICS;
15717+ return 1;
15718+}
15719+
15720+static int
15721+enable(struct graphics_backend *backend)
15722+{
15723+ struct eg *eg = backend->priv;
15724+ int i;
15725+
15726+ if (eg) {
15727+ if (eg->current_mode == GRAPHICS) {
15728+ return 1;
15729+ }
15730+ } else {
15731+ grub_efi_status_t efi_status;
15732+ grub_efi_handle_t *handle, *handles;
15733+ grub_efi_uintn_t num_handles;
15734+ grub_efi_pci_io_t *pci_proto;
15735+
15736+ if (!(eg = grub_malloc(sizeof (*eg))))
15737+ return 0;
15738+
15739+ grub_memset(eg, '\0', sizeof (*eg));
15740+
15741+ eg->backend = backend;
15742+ eg->current_mode = TEXT;
15743+
15744+ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL,
15745+ &graphics_output_guid,
15746+ NULL, &num_handles);
15747+
15748+ if (!num_handles || !handles)
15749+ goto fail;
15750+
15751+ for (handle = handles; num_handles--; handle++)
15752+ {
15753+ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid,
15754+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
15755+
15756+ if (!pci_proto)
15757+ continue;
15758+
15759+ eg->output_intf = grub_efi_open_protocol (*handle,
15760+ &graphics_output_guid, GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
15761+
15762+ if (eg->output_intf)
15763+ {
15764+ grub_efi_setup_gfx_pci(*handle);
15765+ break;
15766+ }
15767+ }
15768+
15769+ grub_free(handles);
15770+
15771+ if (!eg->output_intf)
15772+ eg->output_intf = grub_efi_locate_protocol(&graphics_output_guid, NULL);
15773+
15774+ if (!eg->output_intf)
15775+ goto fail;
15776+
15777+ eg->text_mode = eg->graphics_mode = 0xffffffff;
15778+
15779+ eg->max_mode = eg->output_intf->mode->max_mode;
15780+ eg->modes = grub_malloc(eg->max_mode * sizeof (void *));
15781+ if (!eg->modes)
15782+ goto fail;
15783+ memset(eg->modes, '\0', eg->max_mode * sizeof (void *));
15784+
15785+ for (i = 0; i < eg->max_mode; i++) {
15786+ eg->modes[i] = grub_malloc(sizeof *(eg->modes[0]));
15787+ if (!eg->modes[i])
15788+ goto fail;
15789+ memset(eg->modes[i], '\0', sizeof *(eg->modes[0]));
15790+ eg->modes[i]->number = i;
15791+
15792+ efi_status = Call_Service_4(eg->output_intf->query_mode,
15793+ eg->output_intf, i, &eg->modes[i]->size,
15794+ &eg->modes[i]->info);
15795+ if (efi_status == GRUB_EFI_NOT_STARTED) {
15796+ /* The firmware didn't turn on GRAPHICS_OUTPUT_PROTOCOL, so
15797+ * try to do so ourselves. Thanks, Intel. */
15798+ set_video_mode(eg, eg->output_intf->mode->mode);
15799+ efi_status = Call_Service_4(eg->output_intf->query_mode,
15800+ eg->output_intf, i, &eg->modes[i]->size,
15801+ &eg->modes[i]->info);
15802+ }
15803+ if (efi_status != GRUB_EFI_SUCCESS) {
15804+ grub_free(eg->modes[i]);
15805+ eg->modes[i] = NULL;
15806+ //eg->max_mode = i;
15807+ break;
15808+ }
15809+ }
15810+
15811+ backend->priv = eg;
15812+ setup_cga_palette(eg);
15813+ for (i = 0; i < n_cga_colors; i++) {
15814+ eg->palette[i].bgrr.red = cga_colors[i].bgrr.red;
15815+ eg->palette[i].bgrr.green = cga_colors[i].bgrr.green;
15816+ eg->palette[i].bgrr.blue = cga_colors[i].bgrr.blue;
15817+ }
15818+ }
15819+
15820+ if (try_enable(backend)) {
15821+ reset_screen_geometry(backend);
15822+ return 1;
15823+ }
15824+
15825+fail:
15826+ backend->priv = NULL;
15827+ if (eg->modes) {
15828+ for (i = 0; i < eg->max_mode; i++) {
15829+ if (eg->modes[i])
15830+ grub_free(eg->modes[i]);
15831+ }
15832+ grub_free(eg->modes);
15833+ }
15834+ grub_free(eg);
15835+ return 0;
15836+}
15837+
15838+struct graphics_backend eg_backend = {
15839+ .name = "eg",
15840+ .enable = enable,
15841+ .disable = disable,
15842+ .set_kernel_params = set_kernel_params,
15843+ .clbl = clbl,
15844+ .set_palette = set_palette,
15845+ .get_pixel_idx = get_pixel_idx,
15846+ .get_pixel_rgb = get_pixel_rgb,
15847+ .draw_pixel = draw_pixel,
15848+ .reset_screen_geometry = reset_screen_geometry,
15849+ .get_screen_size = get_screen_size,
15850+ .getxy = eg_getxy,
15851+ .setxy = setxy,
15852+ .gotoxy = NULL,
15853+ .cursor = cursor,
15854+};
15855+
15856+#endif /* SUPPORT_GRAPHICS */
15857diff --git a/efi/efimain.c b/efi/efimain.c
15858new file mode 100644
15859index 0000000..e1a1e66
15860--- /dev/null
15861+++ b/efi/efimain.c
15862@@ -0,0 +1,129 @@
15863+/*
15864+ * GRUB -- GRand Unified Bootloader
15865+ * Copyright (C) 2007 Intel Corp.
15866+ *
15867+ * This program is free software; you can redistribute it and/or modify
15868+ * it under the terms of the GNU General Public License as published by
15869+ * the Free Software Foundation; either version 2 of the License, or
15870+ * (at your option) any later version.
15871+ *
15872+ * This program is distributed in the hope that it will be useful,
15873+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15874+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15875+ * GNU General Public License for more details.
15876+ *
15877+ * You should have received a copy of the GNU General Public License
15878+ * along with this program; if not, write to the Free Software
15879+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
15880+ * MA 02110-1301, USA.
15881+ */
15882+
15883+#include <grub/efi/efi.h>
15884+#include <grub/efi/api.h>
15885+#include <grub/efi/misc.h>
15886+#include <grub/misc.h>
15887+
15888+#include <shared.h>
15889+#include <efistubs.h>
15890+
15891+#include "pxe.h"
15892+
15893+#define GRUB_SCRATCH_MEM_PAGES (GRUB_SCRATCH_MEM_SIZE >> 12)
15894+
15895+/* Emulation requirements. */
15896+void *grub_scratch_mem = NULL;
15897+
15898+#define LOW_STACK_SIZE 0x100000
15899+#define LOW_STACK_PAGES (LOW_STACK_SIZE >> 12)
15900+static void *low_stack, *real_stack;
15901+
15902+extern int grub_test_pxe(grub_efi_loaded_image_t *loaded_image);
15903+
15904+static void
15905+real_main (void)
15906+{
15907+ grub_efi_loaded_image_t *loaded_image;
15908+ char *path_name = NULL;
15909+
15910+ loaded_image = grub_efi_get_loaded_image (grub_efi_image_handle);
15911+
15912+ path_name = grub_efi_pxe_get_config_path(loaded_image);
15913+
15914+ if (path_name) {
15915+ network_ready = 1;
15916+
15917+ grub_set_config_file (path_name);
15918+ grub_free (path_name);
15919+ } else {
15920+ grub_get_drive_partition_from_bdev_handle (loaded_image->device_handle,
15921+ &boot_drive,
15922+ &install_partition);
15923+ path_name = grub_efi_file_path_to_path_name (loaded_image->file_path);
15924+
15925+ if (path_name)
15926+ {
15927+ grub_set_config_file (path_name);
15928+ grub_free (path_name);
15929+ }
15930+
15931+ grub_load_saved_default (loaded_image->device_handle);
15932+ }
15933+
15934+ init_bios_info ();
15935+ while (console_getkey() < 0)
15936+ grub_efi_stall(1000);
15937+}
15938+
15939+grub_efi_status_t
15940+efi_main (grub_efi_handle_t image_handle, grub_efi_system_table_t *sys_tab)
15941+{
15942+ grub_efi_image_handle = image_handle;
15943+ grub_efi_system_table = sys_tab;
15944+ grub_efi_init ();
15945+
15946+ grub_scratch_mem = grub_efi_allocate_pages (0, GRUB_SCRATCH_MEM_PAGES);
15947+ if (! grub_scratch_mem)
15948+ {
15949+ grub_printf ("Failed to allocate scratch mem!\n");
15950+ return GRUB_EFI_OUT_OF_RESOURCES;
15951+ }
15952+
15953+ /* If current stack reside in memory region > 2G, switch stack to a
15954+ memory region < 2G */
15955+ if ((unsigned long)&image_handle >= 0x80000000UL)
15956+ {
15957+ low_stack = grub_efi_allocate_pages (0, LOW_STACK_PAGES);
15958+ if (! low_stack)
15959+ {
15960+ grub_printf("Failed to allocate low memory stack!\n");
15961+ return GRUB_EFI_OUT_OF_RESOURCES;
15962+ }
15963+
15964+#ifdef __x86_64__
15965+ asm volatile ("movq %%rsp, %0\n\tmovq %1, %%rsp\n"
15966+ : "=&r" (real_stack) : "r" (low_stack+LOW_STACK_SIZE));
15967+#else
15968+ asm volatile ("movl %%esp, %0\n\tmovl %1, %%esp\n"
15969+ : "=&r" (real_stack) : "r" (low_stack+LOW_STACK_SIZE));
15970+#endif
15971+ }
15972+
15973+ real_main ();
15974+
15975+ if (real_stack) {
15976+#ifdef __x86_64__
15977+ asm volatile ("movq %0, %%rsp\n" : : "r" (real_stack));
15978+#else
15979+ asm volatile ("movl %0, %%esp\n" : : "r" (real_stack));
15980+#endif
15981+
15982+ grub_efi_free_pages ((grub_efi_physical_address_t)(unsigned long) low_stack,
15983+ LOW_STACK_PAGES);
15984+ }
15985+
15986+ grub_efi_free_pages ((grub_efi_physical_address_t)(unsigned long)grub_scratch_mem,
15987+ GRUB_SCRATCH_MEM_PAGES);
15988+ grub_efi_fini ();
15989+
15990+ return GRUB_EFI_SUCCESS;
15991+}
15992diff --git a/efi/efimisc.c b/efi/efimisc.c
15993new file mode 100644
15994index 0000000..480ba25
15995--- /dev/null
15996+++ b/efi/efimisc.c
15997@@ -0,0 +1,665 @@
15998+/*
15999+ * GRUB -- GRand Unified Bootloader
16000+ * Copyright (C) 2006 Free Software Foundation, Inc.
16001+ *
16002+ * This program is free software; you can redistribute it and/or modify
16003+ * it under the terms of the GNU General Public License as published by
16004+ * the Free Software Foundation; either version 2 of the License, or
16005+ * (at your option) any later version.
16006+ *
16007+ * This program is distributed in the hope that it will be useful,
16008+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16009+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16010+ * GNU General Public License for more details.
16011+ *
16012+ * You should have received a copy of the GNU General Public License
16013+ * along with this program; if not, write to the Free Software
16014+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
16015+ * MA 02110-1301, USA.
16016+ */
16017+
16018+#include <config.h>
16019+#include <grub/efi/efi.h>
16020+#include <grub/efi/time.h>
16021+#include <grub/efi/misc.h>
16022+#include <grub/misc.h>
16023+
16024+#include <shared.h>
16025+
16026+unsigned long install_partition = 0x20000;
16027+unsigned long boot_drive = 0x80;
16028+int saved_entryno = 0;
16029+char version_string[] = VERSION;
16030+char config_file[128] = "/boot/grub/menu.lst";
16031+unsigned short io_map[IO_MAP_SIZE];
16032+struct apm_info apm_bios_info;
16033+/* The key map. */
16034+unsigned short bios_key_map[KEY_MAP_SIZE + 1];
16035+unsigned short ascii_key_map[KEY_MAP_SIZE + 1];
16036+
16037+void
16038+grub_efi_init (void)
16039+{
16040+ /* First of all, initialize the console so that GRUB can display
16041+ messages. */
16042+ grub_console_init ();
16043+ /* Initialize the memory management system. */
16044+ grub_efi_mm_init ();
16045+ grub_efidisk_init ();
16046+}
16047+
16048+void
16049+grub_efi_fini (void)
16050+{
16051+ grub_efidisk_fini ();
16052+ grub_efi_mm_fini ();
16053+ grub_console_fini ();
16054+}
16055+
16056+void *
16057+grub_malloc (grub_size_t size)
16058+{
16059+ return grub_efi_allocate_pool (size);
16060+}
16061+
16062+void
16063+grub_free (void *p)
16064+{
16065+ grub_efi_free_pool (p);
16066+}
16067+
16068+char *
16069+grub_stpcpy (char *dest, const char *src)
16070+{
16071+ char *d = dest;
16072+ const char *s = src;
16073+
16074+ do
16075+ *d++ = *s;
16076+ while (*s++ != '\0');
16077+
16078+ return d - 1;
16079+}
16080+
16081+void
16082+grub_fatal (const char *fmt, ...)
16083+{
16084+ va_list ap;
16085+
16086+ va_start (ap, fmt);
16087+ grub_vsprintf (NULL, fmt, ap);
16088+ va_end (ap);
16089+
16090+ grub_exit ();
16091+}
16092+
16093+void
16094+grub_real_dprintf (const char *file, const int line, const char *condition,
16095+ const char *fmt, ...)
16096+{
16097+ va_list args;
16098+
16099+ if (! debug)
16100+ return;
16101+
16102+ grub_printf ("%s:%d: ", file, line);
16103+ va_start (args, fmt);
16104+ grub_vsprintf (0, fmt, args);
16105+ va_end (args);
16106+}
16107+
16108+grub_size_t
16109+grub_utf8_char_len(grub_uint8_t ch)
16110+{
16111+ return ((0xe5000000 >> ((ch >> 3) & 0x1e)) & 3) + 1;
16112+}
16113+
16114+#define UTF8_SHIFT_AND_MASK(unicode, byte) (unicode)<<=6; (unicode) |= (0x3f & (byte))
16115+
16116+/* convert utf8 to utf32 */
16117+grub_uint32_t
16118+grub_utf8_to_utf32(const grub_uint8_t *src, grub_size_t length)
16119+{
16120+ grub_uint32_t unicode;
16121+
16122+ switch (length)
16123+ {
16124+ case 1:
16125+ return src[0];
16126+ case 2:
16127+ unicode = src[0] & 0x1f;
16128+ UTF8_SHIFT_AND_MASK(unicode, src[1]);
16129+ return unicode;
16130+ case 3:
16131+ unicode = src[0] & 0x0f;
16132+ UTF8_SHIFT_AND_MASK(unicode, src[1]);
16133+ UTF8_SHIFT_AND_MASK(unicode, src[2]);
16134+ return unicode;
16135+ case 4:
16136+ unicode = src[0] & 0x07;
16137+ UTF8_SHIFT_AND_MASK(unicode, src[1]);
16138+ UTF8_SHIFT_AND_MASK(unicode, src[2]);
16139+ UTF8_SHIFT_AND_MASK(unicode, src[3]);
16140+ return unicode;
16141+ default:
16142+ return 0xffff;
16143+ }
16144+}
16145+
16146+/* convert utf8 to utf16 */
16147+void
16148+grub_utf8_to_utf16(const grub_uint8_t *src, grub_size_t srclen,
16149+ grub_uint16_t *dst, grub_size_t dstlen)
16150+{
16151+ const grub_uint8_t *end = src + srclen;
16152+ grub_efi_char16_t *dstend = dst + dstlen;
16153+
16154+ while (src < end && dst < dstend)
16155+ {
16156+ grub_size_t len = grub_utf8_char_len(*src);
16157+ /* get the utf32 codepoint */
16158+ grub_uint32_t codepoint = grub_utf8_to_utf32(src, len);
16159+
16160+ /* convert that codepoint to utf16 codepoints */
16161+ if (codepoint <= 0xffff)
16162+ {
16163+ /* it's a single utf16 character */
16164+ *dst++ = (grub_efi_char16_t) codepoint;
16165+ }
16166+ else
16167+ {
16168+ /* it's multiple utf16 characters, with surrogate pairs */
16169+ codepoint = codepoint - 0x10000;
16170+ *dst++ = (grub_efi_char16_t) ((codepoint >> 10) + 0xd800);
16171+ *dst++ = (grub_efi_char16_t) ((codepoint & 0x3ff) + 0xdc00);
16172+ }
16173+
16174+ src += len;
16175+ }
16176+
16177+ if (dst < dstend)
16178+ *dst = 0;
16179+}
16180+
16181+/* Convert UTF-16 to UTF-8. */
16182+grub_uint8_t *
16183+grub_utf16_to_utf8 (grub_uint8_t *dest, grub_uint16_t *src,
16184+ grub_size_t size)
16185+{
16186+ grub_uint32_t code_high = 0;
16187+
16188+ while (size--)
16189+ {
16190+ grub_uint32_t code = *src++;
16191+
16192+ if (code_high)
16193+ {
16194+ if (code >= 0xDC00 && code <= 0xDFFF)
16195+ {
16196+ /* Surrogate pair. */
16197+ code = ((code_high - 0xD800) << 12) + (code - 0xDC00) + 0x10000;
16198+
16199+ *dest++ = (code >> 18) | 0xF0;
16200+ *dest++ = ((code >> 12) & 0x3F) | 0x80;
16201+ *dest++ = ((code >> 6) & 0x3F) | 0x80;
16202+ *dest++ = (code & 0x3F) | 0x80;
16203+ }
16204+ else
16205+ {
16206+ /* Error... */
16207+ *dest++ = '?';
16208+ }
16209+
16210+ code_high = 0;
16211+ }
16212+ else
16213+ {
16214+ if (code <= 0x007F)
16215+ *dest++ = code;
16216+ else if (code <= 0x07FF)
16217+ {
16218+ *dest++ = (code >> 6) | 0xC0;
16219+ *dest++ = (code & 0x3F) | 0x80;
16220+ }
16221+ else if (code >= 0xD800 && code <= 0xDBFF)
16222+ {
16223+ code_high = code;
16224+ continue;
16225+ }
16226+ else if (code >= 0xDC00 && code <= 0xDFFF)
16227+ {
16228+ /* Error... */
16229+ *dest++ = '?';
16230+ }
16231+ else
16232+ {
16233+ *dest++ = (code >> 16) | 0xE0;
16234+ *dest++ = ((code >> 12) & 0x3F) | 0x80;
16235+ *dest++ = (code & 0x3F) | 0x80;
16236+ }
16237+ }
16238+ }
16239+
16240+ return dest;
16241+}
16242+
16243+/* low-level timing info */
16244+int
16245+getrtsecs (void)
16246+{
16247+ return grub_get_rtc() / GRUB_TICKS_PER_SECOND;
16248+}
16249+
16250+void
16251+grub_reboot (void)
16252+{
16253+ grub_efi_runtime_services_t *r;
16254+
16255+ r = grub_efi_system_table->runtime_services;
16256+ Call_Service_4 (r->reset_system, GRUB_EFI_RESET_COLD,
16257+ GRUB_EFI_SUCCESS, 0, NULL);
16258+ for (;;);
16259+}
16260+
16261+void
16262+grub_halt (int no_apm)
16263+{
16264+ grub_efi_runtime_services_t *r;
16265+
16266+ r = grub_efi_system_table->runtime_services;
16267+ Call_Service_4 (r->reset_system, GRUB_EFI_RESET_SHUTDOWN,
16268+ GRUB_EFI_SUCCESS, 0, NULL);
16269+ for (;;);
16270+}
16271+
16272+void
16273+stop (void)
16274+{
16275+ grub_exit ();
16276+}
16277+
16278+/* booting a multiboot executable */
16279+void
16280+multi_boot (int start, int mb_info)
16281+{
16282+ stop ();
16283+}
16284+
16285+/* sets it to linear or wired A20 operation */
16286+void
16287+gateA20 (int linear)
16288+{
16289+}
16290+
16291+/* Set up the int15 handler. */
16292+void
16293+set_int15_handler (void)
16294+{
16295+}
16296+
16297+/* Restore the original int15 handler. */
16298+void
16299+unset_int15_handler (void)
16300+{
16301+}
16302+
16303+/* Copy MAP to the drive map and set up the int13 handler. */
16304+void
16305+set_int13_handler (unsigned short *map)
16306+{
16307+}
16308+
16309+/* Get the ROM configuration table. */
16310+unsigned long
16311+get_rom_config_table (void)
16312+{
16313+ return 0;
16314+}
16315+
16316+/* Get APM BIOS information. */
16317+void
16318+get_apm_info (void)
16319+{
16320+ /* Nothing to do in the simulator. */
16321+}
16322+
16323+void
16324+stop_floppy (void)
16325+{
16326+ /* NOTUSED */
16327+}
16328+
16329+char *
16330+grub_strndup (const char *s, int n)
16331+{
16332+ int l = grub_strnlen(s, n);
16333+ char *new = grub_malloc(l + 1);
16334+
16335+ if (new == NULL)
16336+ return NULL;
16337+
16338+ new[l] = '\0';
16339+ return grub_strncpy(new, s, l);
16340+}
16341+
16342+int
16343+safe_parse_maxulong (char **str_ptr, unsigned long *myulong_ptr)
16344+{
16345+ char *ptr = *str_ptr;
16346+ unsigned long myulong = 0;
16347+ unsigned int mult = 10, found = 0;
16348+
16349+ /*
16350+ * Is this a hex number?
16351+ */
16352+ if (*ptr == '0' && tolower (*(ptr + 1)) == 'x')
16353+ {
16354+ ptr += 2;
16355+ mult = 16;
16356+ }
16357+
16358+ while (1)
16359+ {
16360+ /* A bit tricky. This below makes use of the equivalence:
16361+ (A >= B && A <= C) <=> ((A - B) <= (C - B))
16362+ when C > B and A is unsigned. */
16363+ unsigned int digit;
16364+
16365+ digit = tolower (*ptr) - '0';
16366+ if (digit > 9)
16367+ {
16368+ digit -= 'a' - '0';
16369+ if (mult == 10 || digit > 5)
16370+ break;
16371+ digit += 10;
16372+ }
16373+
16374+ found = 1;
16375+ if (myulong > ((~0UL - digit) / mult))
16376+ {
16377+ errnum = ERR_NUMBER_OVERFLOW;
16378+ return 0;
16379+ }
16380+ myulong = (myulong * mult) + digit;
16381+ ptr++;
16382+ }
16383+
16384+ if (!found)
16385+ {
16386+ errnum = ERR_NUMBER_PARSING;
16387+ return 0;
16388+ }
16389+
16390+ *str_ptr = ptr;
16391+ *myulong_ptr = myulong;
16392+
16393+ return 1;
16394+}
16395+
16396+int
16397+currticks (void)
16398+{
16399+ return grub_get_rtc ();
16400+}
16401+
16402+static char *
16403+fix_path_name (char *path_name)
16404+{
16405+ char *p1, *p2;
16406+
16407+ p1 = path_name;
16408+ p2 = p1 + 1;
16409+ if (*p1 == '\\')
16410+ *p1 = '/';
16411+ while (*p1)
16412+ {
16413+ switch (*p2)
16414+ {
16415+ case '\0':
16416+ *++p1 = *p2;
16417+ break;
16418+ case '.':
16419+ if (*p1 == '/' && *(p2+1) == '\\')
16420+ p2 += 2;
16421+ else
16422+ *++p1=*p2++;
16423+ break;
16424+ case '\\':
16425+ if (*p1 == '/')
16426+ p2++;
16427+ else
16428+ *++p1 = '/';
16429+ break;
16430+ default:
16431+ *++p1=*p2++;
16432+ break;
16433+ }
16434+ }
16435+ return path_name;
16436+}
16437+
16438+char *
16439+grub_efi_file_path_to_path_name (grub_efi_device_path_t *file_path)
16440+{
16441+ char *str;
16442+ grub_efi_uint32_t str_len = 16;
16443+ grub_efi_uint32_t str_pos = 0;
16444+
16445+ str = grub_malloc (str_len);
16446+ if (! str)
16447+ return NULL;
16448+ str[0] = '\0';
16449+
16450+ while (1)
16451+ {
16452+ grub_efi_uint8_t type = GRUB_EFI_DEVICE_PATH_TYPE (file_path);
16453+ grub_efi_uint8_t subtype = GRUB_EFI_DEVICE_PATH_SUBTYPE (file_path);
16454+ grub_efi_uint16_t len = GRUB_EFI_DEVICE_PATH_LENGTH (file_path);
16455+
16456+ switch (type)
16457+ {
16458+ case GRUB_EFI_MEDIA_DEVICE_PATH_TYPE:
16459+ switch (subtype)
16460+ {
16461+ case GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE:
16462+ {
16463+ grub_efi_file_path_device_path_t *fp;
16464+ grub_uint8_t buf[(len - 4) * 2 + 2];
16465+ grub_uint32_t path_name_len;
16466+ char *tmp_str;
16467+
16468+ fp = (grub_efi_file_path_device_path_t *) file_path;
16469+ *grub_utf16_to_utf8 (buf, fp->path_name,
16470+ (len - 4) / sizeof (grub_efi_char16_t))
16471+ = '\0';
16472+ path_name_len = strlen ((char *)buf) + 1;
16473+ if ((str_len - str_pos) <= path_name_len)
16474+ {
16475+ do
16476+ str_len *= 2;
16477+ while ((str_len - str_pos) <= path_name_len);
16478+ tmp_str = grub_malloc (str_len);
16479+ if (tmp_str == NULL)
16480+ goto fail;
16481+ grub_memmove (tmp_str, str, str_pos);
16482+ grub_free (str);
16483+ str = tmp_str;
16484+ }
16485+ str[str_pos] = '\\';
16486+ strcpy (str + str_pos + 1, (char *)buf);
16487+ str_pos += path_name_len;
16488+ }
16489+ break;
16490+ default:
16491+ break;
16492+ }
16493+ break;
16494+ default:
16495+ break;
16496+ }
16497+
16498+ if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (file_path))
16499+ break;
16500+
16501+ file_path = (grub_efi_device_path_t *) ((char *) file_path + len);
16502+ }
16503+ return fix_path_name (str);
16504+
16505+ fail:
16506+ grub_free (str);
16507+ return NULL;
16508+}
16509+
16510+#define DEFAULT_SAVED_DEFAULT_FILE_NAME "grub.default"
16511+#define DEFAULT_CONFIG_FILE_NAME "grub.conf"
16512+
16513+static char saved_default_file[128] = "/boot/grub/grub.default";
16514+
16515+void
16516+grub_set_config_file (char *path_name)
16517+{
16518+ char *dir_end;
16519+ grub_uint32_t path_name_len;
16520+
16521+ path_name_len = strlen (path_name);
16522+ if (path_name_len > 4
16523+ && path_name[path_name_len - 4] == '.'
16524+ && grub_tolower (path_name[path_name_len - 3]) == 'e'
16525+ && grub_tolower (path_name[path_name_len - 2]) == 'f'
16526+ && grub_tolower (path_name[path_name_len - 1]) == 'i')
16527+ {
16528+ /* Bigger than buffer of config_file */
16529+ if (path_name_len + 1 > 127)
16530+ return;
16531+ grub_memmove (config_file, path_name, path_name_len - 4);
16532+ grub_strcpy (config_file + path_name_len - 4, ".conf");
16533+ /* Bigger than buffer of default file */
16534+ if (path_name_len + 4 > 127)
16535+ return;
16536+ grub_memmove (saved_default_file, path_name, path_name_len - 4);
16537+ grub_strcpy (saved_default_file + path_name_len - 4, ".default");
16538+ return;
16539+ }
16540+ dir_end = grub_strrchr (path_name, '/');
16541+ if (! dir_end)
16542+ {
16543+ grub_strcpy (config_file, DEFAULT_CONFIG_FILE_NAME);
16544+ grub_strcpy (saved_default_file, DEFAULT_SAVED_DEFAULT_FILE_NAME);
16545+ return;
16546+ }
16547+ if (strlen(dir_end) == 1) {
16548+ path_name_len = dir_end + 1 - path_name;
16549+ if (path_name_len + sizeof (DEFAULT_CONFIG_FILE_NAME) > 128)
16550+ return;
16551+ grub_memmove (config_file, path_name, path_name_len);
16552+ grub_strcpy (config_file + path_name_len, DEFAULT_CONFIG_FILE_NAME);
16553+ } else {
16554+ grub_memmove (config_file, path_name, path_name_len+1);
16555+ }
16556+ if (path_name_len + sizeof (DEFAULT_SAVED_DEFAULT_FILE_NAME) > 128)
16557+ return;
16558+ path_name_len = dir_end + 1 - path_name;
16559+ grub_memmove (saved_default_file, path_name, path_name_len);
16560+ grub_strcpy (saved_default_file + path_name_len,
16561+ DEFAULT_SAVED_DEFAULT_FILE_NAME);
16562+}
16563+
16564+grub_efi_guid_t simple_file_system_guid = GRUB_EFI_SIMPLE_FILE_SYSTEM_GUID;
16565+
16566+static grub_efi_file_t *
16567+simple_open_file(grub_efi_handle_t dev_handle,
16568+ char *file_name,
16569+ int for_write)
16570+{
16571+ grub_efi_simple_file_system_t *file_system;
16572+ grub_efi_file_t *root;
16573+ grub_efi_file_t *file = NULL;
16574+ grub_efi_status_t status;
16575+ grub_efi_char16_t *file_name_w = NULL;
16576+ grub_efi_char16_t *chp_w;
16577+ grub_efi_uint64_t open_mode;
16578+
16579+ file_system = grub_efi_open_protocol (dev_handle,
16580+ &simple_file_system_guid,
16581+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
16582+ if (! file_system)
16583+ return NULL;
16584+ status = Call_Service_2 (file_system->open_volume, file_system, &root);
16585+ if (status != GRUB_EFI_SUCCESS)
16586+ return NULL;
16587+ file_name_w = grub_malloc (2 * strlen(file_name) + 2);
16588+ if (! file_name_w)
16589+ goto done;
16590+ for (chp_w = file_name_w; *file_name; chp_w++, file_name++)
16591+ if (*file_name == '/')
16592+ *chp_w = '\\';
16593+ else
16594+ *chp_w = *file_name;
16595+ *chp_w = '\0';
16596+ open_mode = for_write ? GRUB_EFI_FILE_MODE_READ | GRUB_EFI_FILE_MODE_WRITE \
16597+ | GRUB_EFI_FILE_MODE_CREATE : GRUB_EFI_FILE_MODE_READ;
16598+ status = Call_Service_5 (root->open, root, &file, file_name_w,
16599+ open_mode, 0);
16600+ done:
16601+ if (file_name_w)
16602+ grub_free (file_name_w);
16603+ Call_Service_1 (root->close, root);
16604+ return file;
16605+}
16606+
16607+void
16608+grub_load_saved_default (grub_efi_handle_t dev_handle)
16609+{
16610+ grub_efi_file_t *file;
16611+ char buf[16];
16612+ char *ptr = buf;
16613+ grub_efi_status_t status;
16614+ int val;
16615+ grub_efi_uintn_t buf_size = sizeof(buf);
16616+
16617+ file = simple_open_file (dev_handle, saved_default_file, 0);
16618+ if (! file)
16619+ return;
16620+ status = Call_Service_3 (file->read, file, &buf_size, buf);
16621+ if (status != GRUB_EFI_SUCCESS)
16622+ goto done;
16623+ if (buf_size >= sizeof(buf))
16624+ buf_size = sizeof(buf) - 1;
16625+ buf[buf_size] = '\0';
16626+ if (safe_parse_maxint (&ptr, &val))
16627+ saved_entryno = val;
16628+ done:
16629+ Call_Service_1 (file->close, file);
16630+}
16631+
16632+int
16633+grub_save_saved_default (int new_default)
16634+{
16635+ grub_efi_loaded_image_t *loaded_image;
16636+ grub_efi_file_t *file;
16637+ char buf[16];
16638+ grub_efi_status_t status;
16639+ grub_efi_uintn_t buf_size;
16640+ int ret = 0;
16641+
16642+ loaded_image = grub_efi_get_loaded_image (grub_efi_image_handle);
16643+ file = simple_open_file (loaded_image->device_handle,
16644+ saved_default_file, 1);
16645+ if (! file)
16646+ {
16647+ errnum = ERR_FILE_NOT_FOUND;
16648+ return 1;
16649+ }
16650+ sprintf (buf, "%d", new_default);
16651+ buf_size = strlen (buf);
16652+ status = Call_Service_3 (file->write, file, &buf_size, buf);
16653+ if (status != GRUB_EFI_SUCCESS)
16654+ {
16655+ errnum = ERR_WRITE;
16656+ ret = 1;
16657+ goto done;
16658+ }
16659+ done:
16660+ Call_Service_1 (file->close, file);
16661+ return ret;
16662+}
16663diff --git a/efi/efimm.c b/efi/efimm.c
16664new file mode 100644
16665index 0000000..836188d
16666--- /dev/null
16667+++ b/efi/efimm.c
16668@@ -0,0 +1,539 @@
16669+/*
16670+ * GRUB -- GRand Unified Bootloader
16671+ * Copyright (C) 2006 Free Software Foundation, Inc.
16672+ *
16673+ * This program is free software; you can redistribute it and/or modify
16674+ * it under the terms of the GNU General Public License as published by
16675+ * the Free Software Foundation; either version 2 of the License, or
16676+ * (at your option) any later version.
16677+ *
16678+ * This program is distributed in the hope that it will be useful,
16679+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16680+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16681+ * GNU General Public License for more details.
16682+ *
16683+ * You should have received a copy of the GNU General Public License
16684+ * along with this program; if not, write to the Free Software
16685+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
16686+ * MA 02110-1301, USA.
16687+ */
16688+
16689+#include <config.h>
16690+#include <grub/misc.h>
16691+#include <grub/efi/api.h>
16692+#include <grub/efi/efi.h>
16693+#include <grub/efi/misc.h>
16694+
16695+#include <shared.h>
16696+
16697+#define NEXT_MEMORY_DESCRIPTOR(desc, size) \
16698+ ((grub_efi_memory_descriptor_t *) ((char *) (desc) + (size)))
16699+
16700+#define BYTES_TO_PAGES(bytes) ((bytes) >> 12)
16701+#define PAGES_TO_BYTES(pages) ((pages) << 12)
16702+
16703+/* Global variables used to store memory map, its size, and the number of
16704+ * pages allocated for the buffer. */
16705+void *mmap_buf;
16706+grub_efi_uintn_t mmap_size;
16707+grub_efi_uintn_t mmap_pages;
16708+
16709+/* Maintain the list of allocated pages. */
16710+struct allocated_page
16711+{
16712+ grub_efi_physical_address_t addr;
16713+ grub_efi_uint64_t num_pages;
16714+};
16715+
16716+#define ALLOCATED_PAGES_SIZE 0x1000
16717+#define MAX_ALLOCATED_PAGES \
16718+ (ALLOCATED_PAGES_SIZE / sizeof (struct allocated_page))
16719+
16720+static struct allocated_page *allocated_pages = 0;
16721+
16722+/* The minimum and maximum heap size for GRUB itself. */
16723+#define MIN_HEAP_SIZE 0x100000
16724+#define MAX_HEAP_SIZE (16 * 0x100000)
16725+
16726+
16727+void *
16728+grub_efi_allocate_pool (grub_efi_uintn_t size)
16729+{
16730+ grub_efi_status_t status;
16731+ void *p;
16732+ grub_efi_boot_services_t *b;
16733+
16734+ b = grub_efi_system_table->boot_services;
16735+ status = Call_Service_3(b->allocate_pool, GRUB_EFI_LOADER_DATA, size, &p);
16736+ if (status != GRUB_EFI_SUCCESS)
16737+ return NULL;
16738+
16739+ return p;
16740+}
16741+
16742+void
16743+grub_efi_free_pool (void *buffer)
16744+{
16745+ grub_efi_boot_services_t *b;
16746+
16747+ b = grub_efi_system_table->boot_services;
16748+ Call_Service_1(b->free_pool, buffer);
16749+}
16750+
16751+void *
16752+grub_efi_allocate_anypages(grub_efi_uintn_t pages)
16753+{
16754+ grub_efi_boot_services_t *b;
16755+ grub_efi_status_t status;
16756+ grub_efi_physical_address_t address;
16757+
16758+ b = grub_efi_system_table->boot_services;
16759+ status = Call_Service_4 (b->allocate_pages,
16760+ GRUB_EFI_ALLOCATE_ANY_PAGES,
16761+ GRUB_EFI_LOADER_DATA,
16762+ pages,
16763+ &address);
16764+ if (status != GRUB_EFI_SUCCESS)
16765+ return 0;
16766+
16767+ if (allocated_pages)
16768+ {
16769+ unsigned i;
16770+
16771+ for (i = 0; i < MAX_ALLOCATED_PAGES; i++)
16772+ if (allocated_pages[i].addr == 0)
16773+ {
16774+ allocated_pages[i].addr = address;
16775+ allocated_pages[i].num_pages = pages;
16776+ break;
16777+ }
16778+
16779+ if (i == MAX_ALLOCATED_PAGES)
16780+ {
16781+ grub_printf ("too many page allocations");
16782+ return NULL;
16783+ }
16784+ }
16785+
16786+ return (void *) ((grub_addr_t) address);
16787+
16788+}
16789+
16790+/* Allocate pages. Return the pointer to the first of allocated pages. */
16791+static void *
16792+grub_efi_allocate_pages_real (grub_efi_physical_address_t address,
16793+ grub_efi_uintn_t pages,
16794+ grub_efi_memory_type_t memtype)
16795+{
16796+ grub_efi_allocate_type_t type;
16797+ grub_efi_status_t status;
16798+ grub_efi_boot_services_t *b;
16799+
16800+ /* Limit the memory access to less than 2GB to avoid 64bit
16801+ * compatible problem of grub */
16802+ if (address > 0x7fffffff)
16803+ return 0;
16804+
16805+ if (address == 0)
16806+ {
16807+ type = GRUB_EFI_ALLOCATE_MAX_ADDRESS;
16808+ address = 0x7fffffff;
16809+ }
16810+ else
16811+ type = GRUB_EFI_ALLOCATE_ADDRESS;
16812+
16813+ b = grub_efi_system_table->boot_services;
16814+ status = Call_Service_4 (b->allocate_pages, type,
16815+ memtype, pages, &address);
16816+
16817+ if (status != GRUB_EFI_SUCCESS)
16818+ {
16819+ /* EFI_NOT_FOUND means the region was unavailable, which means we can
16820+ probably just use it. This is only for hacks to start with */
16821+ if (memtype == GRUB_EFI_RUNTIME_SERVICES_DATA &&
16822+ status == GRUB_EFI_NOT_FOUND)
16823+ return (void *) ((grub_addr_t) address);
16824+ else
16825+ return 0;
16826+ }
16827+
16828+ if (address == 0)
16829+ {
16830+ /* Uggh, the address 0 was allocated... This is too annoying,
16831+ so reallocate another one. */
16832+ address = 0x7fffffff;
16833+ status = Call_Service_4 (b->allocate_pages,
16834+ type, GRUB_EFI_LOADER_DATA, pages, &address);
16835+ grub_efi_free_pages (0, pages);
16836+ if (status != GRUB_EFI_SUCCESS)
16837+ return 0;
16838+ }
16839+
16840+ /* We don't want to free anything we've allocated for runtime */
16841+ if (allocated_pages && memtype != GRUB_EFI_RUNTIME_SERVICES_DATA)
16842+ {
16843+ unsigned i;
16844+
16845+ for (i = 0; i < MAX_ALLOCATED_PAGES; i++)
16846+ if (allocated_pages[i].addr == 0)
16847+ {
16848+ allocated_pages[i].addr = address;
16849+ allocated_pages[i].num_pages = pages;
16850+ break;
16851+ }
16852+
16853+ if (i == MAX_ALLOCATED_PAGES)
16854+ {
16855+ grub_printf ("too many page allocations");
16856+ return NULL;
16857+ }
16858+ }
16859+
16860+ return (void *) ((grub_addr_t) address);
16861+}
16862+
16863+void *
16864+grub_efi_allocate_pages (grub_efi_physical_address_t address,
16865+ grub_efi_uintn_t pages)
16866+
16867+{
16868+ return grub_efi_allocate_pages_real(address, pages, GRUB_EFI_LOADER_DATA);
16869+}
16870+
16871+void *
16872+grub_efi_allocate_runtime_pages (grub_efi_physical_address_t address,
16873+ grub_efi_uintn_t pages)
16874+
16875+{
16876+ return grub_efi_allocate_pages_real(address, pages,
16877+ GRUB_EFI_RUNTIME_SERVICES_DATA);
16878+}
16879+/* Free pages starting from ADDRESS. */
16880+void
16881+grub_efi_free_pages (grub_efi_physical_address_t address,
16882+ grub_efi_uintn_t pages)
16883+{
16884+ grub_efi_boot_services_t *b;
16885+
16886+ if (allocated_pages
16887+ && ((grub_efi_physical_address_t) ((grub_addr_t) allocated_pages)
16888+ != address))
16889+ {
16890+ unsigned i;
16891+
16892+ for (i = 0; i < MAX_ALLOCATED_PAGES; i++)
16893+ if (allocated_pages[i].addr == address)
16894+ {
16895+ allocated_pages[i].addr = 0;
16896+ break;
16897+ }
16898+ }
16899+
16900+ b = grub_efi_system_table->boot_services;
16901+ Call_Service_2 (b->free_pages ,address, pages);
16902+}
16903+
16904+/* Get the memory map as defined in the EFI spec. Return 1 if successful,
16905+ return 0 if partial, or return -1 if an error occurs.
16906+
16907+ This function will allocate memory for (global) mmap_buf if there isn't
16908+ already a buffer allocated, and will free & reallocate if it needs to
16909+ be larger. */
16910+
16911+int
16912+grub_efi_get_memory_map (grub_efi_uintn_t *map_key,
16913+ grub_efi_uintn_t *descriptor_size,
16914+ grub_efi_uint32_t *descriptor_version)
16915+{
16916+ grub_efi_status_t status;
16917+ grub_efi_boot_services_t *b;
16918+ grub_efi_uintn_t key;
16919+ grub_efi_uint32_t version;
16920+ grub_efi_uintn_t tmp_mmap_size;
16921+
16922+ /* Allow some parameters to be missing. */
16923+ if (! map_key)
16924+ map_key = &key;
16925+ if (! descriptor_version)
16926+ descriptor_version = &version;
16927+
16928+ while (1)
16929+ {
16930+ b = grub_efi_system_table->boot_services;
16931+ tmp_mmap_size = PAGES_TO_BYTES(mmap_pages);
16932+ status = Call_Service_5 (b->get_memory_map,
16933+ &tmp_mmap_size, mmap_buf, map_key,
16934+ descriptor_size, descriptor_version);
16935+ if (status == GRUB_EFI_SUCCESS)
16936+ {
16937+ mmap_size = tmp_mmap_size;
16938+ return 1;
16939+ }
16940+ else if (status != GRUB_EFI_BUFFER_TOO_SMALL)
16941+ return -1;
16942+
16943+ /* we need a larger buffer */
16944+ if (mmap_buf)
16945+ grub_efi_free_pages ((grub_addr_t) mmap_buf, mmap_pages);
16946+
16947+ /* get 1 more page than we need, just in case */
16948+ mmap_pages = BYTES_TO_PAGES(tmp_mmap_size + 4095) + 1;
16949+ mmap_buf = grub_efi_allocate_pages (0, mmap_pages);
16950+ if (! mmap_buf)
16951+ {
16952+ mmap_pages = 0;
16953+ grub_printf ("cannot allocate memory for memory map");
16954+ return -1;
16955+ }
16956+ }
16957+}
16958+
16959+#define MMAR_DESC_LENGTH 20
16960+
16961+/*
16962+ * Add a memory region to the kernel e820 map.
16963+ *
16964+ * Convert EFI memory map to E820 map for the operating system
16965+ * This code is based on a Linux kernel patch submitted by Edgar Hucek
16966+ */
16967+static void
16968+add_memory_region (struct e820_entry *e820_map,
16969+ int *e820_nr_map,
16970+ unsigned long long start,
16971+ unsigned long long size,
16972+ unsigned int type)
16973+{
16974+ int x = *e820_nr_map;
16975+ static unsigned long long estart = 0ULL;
16976+ static unsigned long esize = 0L;
16977+ static unsigned int etype = -1;
16978+ static int merge = 0;
16979+
16980+ /* merge adjacent regions of same type */
16981+ if ((x > 0) && e820_map[x-1].addr + e820_map[x-1].size == start
16982+ && e820_map[x-1].type == type)
16983+ {
16984+ e820_map[x-1].size += size;
16985+ estart = e820_map[x-1].addr;
16986+ esize = e820_map[x-1].size;
16987+ etype = e820_map[x-1].type;
16988+ merge++;
16989+ return;
16990+ }
16991+
16992+ /* fill up to E820_MAX */
16993+ if ( x < E820_MAX )
16994+ {
16995+ e820_map[x].addr = start;
16996+ e820_map[x].size = size;
16997+ e820_map[x].type = type;
16998+ (*e820_nr_map)++;
16999+ merge=0;
17000+ return;
17001+ }
17002+
17003+ /* different type means another region didn't fit */
17004+ /* or same type, but there's a hole */
17005+ if (etype != type || (estart + esize) != start)
17006+ {
17007+ merge = 0;
17008+ estart = start;
17009+ esize = size;
17010+ etype = type;
17011+ return;
17012+ }
17013+
17014+ /* same type and no hole, merge it */
17015+ estart += esize;
17016+ esize += size;
17017+ merge++;
17018+}
17019+
17020+/*
17021+ * Make a e820 memory map
17022+ */
17023+void
17024+e820_map_from_efi_map (struct e820_entry *e820_map,
17025+ int *e820_nr_map,
17026+ grub_efi_memory_descriptor_t *memory_map,
17027+ grub_efi_uintn_t desc_size,
17028+ grub_efi_uintn_t memory_map_size)
17029+{
17030+ grub_efi_memory_descriptor_t *desc;
17031+ unsigned long long start = 0;
17032+ unsigned long long end = 0;
17033+ unsigned long long size = 0;
17034+ grub_efi_memory_descriptor_t *memory_map_end;
17035+
17036+ memory_map_end = NEXT_MEMORY_DESCRIPTOR (memory_map, memory_map_size);
17037+ *e820_nr_map = 0;
17038+ for (desc = memory_map;
17039+ desc < memory_map_end;
17040+ desc = NEXT_MEMORY_DESCRIPTOR (desc, desc_size))
17041+ {
17042+ switch (desc->type)
17043+ {
17044+ case GRUB_EFI_ACPI_RECLAIM_MEMORY:
17045+ add_memory_region (e820_map, e820_nr_map,
17046+ desc->physical_start, desc->num_pages << 12,
17047+ E820_ACPI);
17048+ break;
17049+ case GRUB_EFI_RUNTIME_SERVICES_CODE:
17050+ case GRUB_EFI_RUNTIME_SERVICES_DATA:
17051+ case GRUB_EFI_RESERVED_MEMORY_TYPE:
17052+ case GRUB_EFI_MEMORY_MAPPED_IO:
17053+ case GRUB_EFI_MEMORY_MAPPED_IO_PORT_SPACE:
17054+ case GRUB_EFI_UNUSABLE_MEMORY:
17055+ case GRUB_EFI_PAL_CODE:
17056+ add_memory_region (e820_map, e820_nr_map,
17057+ desc->physical_start, desc->num_pages << 12,
17058+ E820_RESERVED);
17059+ break;
17060+ case GRUB_EFI_LOADER_CODE:
17061+ case GRUB_EFI_LOADER_DATA:
17062+ case GRUB_EFI_BOOT_SERVICES_CODE:
17063+ case GRUB_EFI_BOOT_SERVICES_DATA:
17064+ case GRUB_EFI_CONVENTIONAL_MEMORY:
17065+ start = desc->physical_start;
17066+ size = desc->num_pages << 12;
17067+ end = start + size;
17068+ if (start < 0x100000ULL && end > 0xA0000ULL)
17069+ {
17070+ if (start < 0xA0000ULL)
17071+ add_memory_region (e820_map, e820_nr_map,
17072+ start, 0xA0000ULL-start,
17073+ E820_RAM);
17074+ if (end <= 0x100000ULL)
17075+ continue;
17076+ start = 0x100000ULL;
17077+ size = end - start;
17078+ }
17079+ add_memory_region (e820_map, e820_nr_map,
17080+ start, size, E820_RAM);
17081+ break;
17082+ case GRUB_EFI_ACPI_MEMORY_NVS:
17083+ add_memory_region (e820_map, e820_nr_map,
17084+ desc->physical_start, desc->num_pages << 12,
17085+ E820_NVS);
17086+ break;
17087+ }
17088+ }
17089+}
17090+
17091+static void
17092+update_e820_map (struct e820_entry *e820_map,
17093+ int *e820_nr_map)
17094+{
17095+ grub_efi_uintn_t desc_size;
17096+
17097+ if (grub_efi_get_memory_map (0, &desc_size, 0) < 0)
17098+ {
17099+ grub_printf ("cannot get memory map");
17100+ return;
17101+ }
17102+
17103+ e820_map_from_efi_map (e820_map, e820_nr_map,
17104+ mmap_buf, desc_size, mmap_size);
17105+}
17106+
17107+/* Simulated memory sizes. */
17108+#define EXTENDED_MEMSIZE (3 * 1024 * 1024) /* 3MB */
17109+#define CONVENTIONAL_MEMSIZE (640 * 1024) /* 640kB */
17110+
17111+int
17112+get_code_end (void)
17113+{
17114+ /* Just return a little area for simulation. */
17115+ return BOOTSEC_LOCATION + (60 * 1024);
17116+}
17117+
17118+/* memory probe routines */
17119+int
17120+get_memsize (int type)
17121+{
17122+ if (! type)
17123+ return CONVENTIONAL_MEMSIZE >> 10;
17124+ else
17125+ return EXTENDED_MEMSIZE >> 10;
17126+}
17127+
17128+/* get_eisamemsize() : return packed EISA memory map, lower 16 bits is
17129+ * memory between 1M and 16M in 1K parts, upper 16 bits is
17130+ * memory above 16M in 64K parts. If error, return -1.
17131+ */
17132+int
17133+get_eisamemsize (void)
17134+{
17135+ return (EXTENDED_MEMSIZE >> 10);
17136+}
17137+
17138+static int grub_e820_nr_map;
17139+static struct e820_entry grub_e820_map[E820_MAX];
17140+
17141+/* Fetch the next entry in the memory map and return the continuation
17142+ value. DESC is a pointer to the descriptor buffer, and CONT is the
17143+ previous continuation value (0 to get the first entry in the
17144+ map). */
17145+int
17146+get_mmap_entry (struct mmar_desc *desc, int cont)
17147+{
17148+ if (cont < 0 || cont >= grub_e820_nr_map)
17149+ {
17150+ /* Should not happen. */
17151+ desc->desc_len = 0;
17152+ }
17153+ else
17154+ {
17155+ struct e820_entry *entry;
17156+ /* Copy the entry. */
17157+ desc->desc_len = MMAR_DESC_LENGTH;
17158+ entry = &grub_e820_map[cont++];
17159+ desc->addr = entry->addr;
17160+ desc->length = entry->size;
17161+ desc->type = entry->type;
17162+
17163+ /* If the next entry exists, return the index. */
17164+ if (cont < grub_e820_nr_map)
17165+ return cont;
17166+ }
17167+
17168+ return 0;
17169+}
17170+
17171+void
17172+grub_efi_mm_init (void)
17173+{
17174+ /* First of all, allocate pages to maintain allocations. */
17175+ allocated_pages
17176+ = grub_efi_allocate_pages (0, BYTES_TO_PAGES (ALLOCATED_PAGES_SIZE));
17177+ if (! allocated_pages)
17178+ {
17179+ grub_printf ("cannot allocate memory");
17180+ return;
17181+ }
17182+
17183+ grub_memset (allocated_pages, 0, ALLOCATED_PAGES_SIZE);
17184+
17185+ update_e820_map (grub_e820_map, &grub_e820_nr_map);
17186+}
17187+
17188+void
17189+grub_efi_mm_fini (void)
17190+{
17191+ if (allocated_pages)
17192+ {
17193+ unsigned i;
17194+
17195+ for (i = 0; i < MAX_ALLOCATED_PAGES; i++)
17196+ {
17197+ struct allocated_page *p;
17198+
17199+ p = allocated_pages + i;
17200+ if (p->addr != 0)
17201+ grub_efi_free_pages ((grub_addr_t) p->addr, p->num_pages);
17202+ }
17203+
17204+ grub_efi_free_pages ((grub_addr_t) allocated_pages,
17205+ BYTES_TO_PAGES (ALLOCATED_PAGES_SIZE));
17206+ }
17207+}
17208diff --git a/efi/efinic.c b/efi/efinic.c
17209new file mode 100644
17210index 0000000..e69de29
17211diff --git a/efi/efiserial.c b/efi/efiserial.c
17212new file mode 100644
17213index 0000000..32898a9
17214--- /dev/null
17215+++ b/efi/efiserial.c
17216@@ -0,0 +1,265 @@
17217+/*
17218+ * GRUB -- GRand Unified Bootloader
17219+ * Copyright (C) 2007 Intel Corp.
17220+ *
17221+ * GRUB is free software; you can redistribute it and/or modify
17222+ * it under the terms of the GNU General Public License as published by
17223+ * the Free Software Foundation; either version 2 of the License, or
17224+ * (at your option) any later version.
17225+ *
17226+ * This program is distributed in the hope that it will be useful,
17227+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
17228+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17229+ * GNU General Public License for more details.
17230+ *
17231+ * You should have received a copy of the GNU General Public License
17232+ * along with GRUB; if not, write to the Free Software
17233+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17234+ */
17235+
17236+#ifdef SUPPORT_SERIAL
17237+
17238+#include <grub/types.h>
17239+#include <grub/misc.h>
17240+#include <grub/efi/api.h>
17241+#include <grub/efi/efi.h>
17242+#include <grub/efi/misc.h>
17243+
17244+#include <shared.h>
17245+#include <serial.h>
17246+#include <term.h>
17247+
17248+struct grub_efiserial_data
17249+{
17250+ grub_efi_handle_t handle;
17251+ grub_efi_serial_io_t *serial_io;
17252+ struct grub_efiserial_data *next;
17253+};
17254+
17255+/* GUIDs. */
17256+static grub_efi_guid_t serial_io_guid = GRUB_EFI_SERIAL_IO_GUID;
17257+
17258+static grub_efi_serial_io_t *serial_device = NULL;
17259+
17260+static struct grub_efiserial_data *
17261+make_devices (void)
17262+{
17263+ grub_efi_uintn_t num_handles;
17264+ grub_efi_handle_t *handles;
17265+ grub_efi_handle_t *handle;
17266+ struct grub_efiserial_data *devices = 0;
17267+
17268+ /* Find handles which support the serial io interface. */
17269+ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL, &serial_io_guid,
17270+ 0, &num_handles);
17271+ if (! handles)
17272+ return 0;
17273+
17274+ /* Make a linked list of devices. */
17275+ for (handle = handles; num_handles--; handle++)
17276+ {
17277+ struct grub_efiserial_data *s;
17278+ grub_efi_serial_io_t *sio;
17279+
17280+ sio = grub_efi_open_protocol (*handle, &serial_io_guid,
17281+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
17282+ if (! sio)
17283+ /* This should not happen... Why? */
17284+ continue;
17285+
17286+ s = grub_malloc (sizeof (*s));
17287+ if (! s)
17288+ {
17289+ /* Uggh. */
17290+ grub_free (handles);
17291+ return 0;
17292+ }
17293+
17294+ s->handle = *handle;
17295+ s->serial_io = sio;
17296+ s->next = devices;
17297+ devices = s;
17298+ }
17299+
17300+ grub_free (handles);
17301+
17302+ return devices;
17303+}
17304+
17305+static void
17306+free_devices (struct grub_efiserial_data *devices)
17307+{
17308+ struct grub_efiserial_data *p, *q;
17309+
17310+ for (p = devices; p; p = q)
17311+ {
17312+ q = p->next;
17313+ grub_free (p);
17314+ }
17315+}
17316+
17317+static struct grub_efiserial_data *
17318+get_device (struct grub_efiserial_data *devices, int num)
17319+{
17320+ struct grub_efiserial_data *s;
17321+
17322+ for (s = devices; s && num; s = s->next, num--)
17323+ ;
17324+
17325+ if (num == 0)
17326+ return s;
17327+
17328+ return 0;
17329+}
17330+
17331+/* Fetch a key from a serial device. */
17332+int
17333+serial_hw_fetch (void)
17334+{
17335+ grub_efi_status_t status;
17336+ char buf[1];
17337+ grub_efi_uintn_t buf_siz = sizeof (buf);
17338+ grub_efi_uint32_t control;
17339+
17340+ if (! serial_device)
17341+ return -1;
17342+
17343+ status = Call_Service_2 (serial_device->get_control_bits, serial_device, &control);
17344+ if (status != GRUB_EFI_SUCCESS)
17345+ return -1;
17346+ if (control & GRUB_EFI_SERIAL_INPUT_BUFFER_EMPTY)
17347+ return -1;
17348+ status = Call_Service_3 (serial_device->read, serial_device, &buf_siz, buf);
17349+ if (status != GRUB_EFI_SUCCESS)
17350+ return -1;
17351+
17352+ return buf[0];
17353+}
17354+
17355+/* Put a character to a serial device. */
17356+void
17357+serial_hw_put (int c)
17358+{
17359+ grub_efi_status_t status;
17360+ char ch = c;
17361+ grub_efi_uintn_t buf_size = sizeof (ch);
17362+
17363+ if (! serial_device)
17364+ return;
17365+
17366+ status = Call_Service_3 (serial_device->write, serial_device, &buf_size, &ch);
17367+}
17368+
17369+void
17370+serial_hw_delay (void)
17371+{
17372+}
17373+
17374+/* Get the port number of the unit UNIT, the port number is same as
17375+ serial port unit number in EFI. */
17376+unsigned short
17377+serial_hw_get_port (int unit)
17378+{
17379+ return unit;
17380+}
17381+
17382+static inline grub_efi_uint8_t
17383+efi_data_bits_from_8250_LCR (int word_len)
17384+{
17385+ switch (word_len & 0x3)
17386+ {
17387+ case 0:
17388+ return 5;
17389+ case 1:
17390+ return 6;
17391+ case 2:
17392+ return 7;
17393+ case 3:
17394+ return 8;
17395+ default:
17396+ return 0;
17397+ }
17398+}
17399+
17400+static inline grub_efi_stop_bits_t
17401+efi_stop_bits_from_8250_LCR (int stop_bit_len)
17402+{
17403+ switch (stop_bit_len & 0x4)
17404+ {
17405+ case 0x0:
17406+ return GRUB_EFI_ONE_STOP_BIT;
17407+ case 0x4:
17408+ return GRUB_EFI_TWO_STOP_BITS;
17409+ default:
17410+ return GRUB_EFI_DEFAULT_STOP_BITS;
17411+ }
17412+}
17413+
17414+static inline grub_efi_parity_t
17415+efi_parity_from_8250_LCR (int parity_8250)
17416+{
17417+ if (! (parity_8250 & 0x8))
17418+ return GRUB_EFI_NO_PARITY;
17419+
17420+ switch (parity_8250 & 0x30)
17421+ {
17422+ case 0x00:
17423+ return GRUB_EFI_ODD_PARITY;
17424+ case 0x10:
17425+ return GRUB_EFI_EVEN_PARITY;
17426+ case 0x20:
17427+ return GRUB_EFI_MARK_PARITY;
17428+ case 0x30:
17429+ return GRUB_EFI_SPACE_PARITY;
17430+ default:
17431+ return GRUB_EFI_DEFAULT_PARITY;
17432+ }
17433+}
17434+
17435+/* Initialize a serial device. In EFI, PORT is used to assign
17436+ serial port unit number. */
17437+int
17438+serial_hw_init (unsigned short port, unsigned int speed,
17439+ int word_len, int parity, int stop_bit_len)
17440+{
17441+ grub_efi_serial_io_t *sio;
17442+ struct grub_efiserial_data *devices, *s;
17443+ grub_efi_parity_t efi_parity;
17444+ grub_efi_stop_bits_t efi_stop_bits;
17445+ grub_efi_uint8_t efi_data_bits;
17446+ grub_efi_status_t status;
17447+ int i;
17448+
17449+ devices = make_devices ();
17450+ s = get_device (devices, port);
17451+ if (!s)
17452+ return 0;
17453+ sio = s->serial_io;
17454+ free_devices (devices);
17455+
17456+ efi_data_bits = efi_data_bits_from_8250_LCR (word_len);
17457+ efi_parity = efi_parity_from_8250_LCR (parity);
17458+ efi_stop_bits = efi_stop_bits_from_8250_LCR (stop_bit_len);
17459+
17460+ status = Call_Service_1 (sio->reset, sio);
17461+ if (status != GRUB_EFI_SUCCESS)
17462+ return 0;
17463+
17464+ status = Call_Service_7 (sio->set_attributes, sio, speed, 0, 0,
17465+ efi_parity, efi_data_bits, efi_stop_bits);
17466+ if (status != GRUB_EFI_SUCCESS)
17467+ return 0;
17468+
17469+ serial_device = sio;
17470+ /* Get rid of TERM_NEED_INIT from the serial terminal. */
17471+ for (i = 0; term_table[i].name; i++)
17472+ if (grub_strcmp (term_table[i].name, "serial") == 0)
17473+ {
17474+ term_table[i].flags &= ~TERM_NEED_INIT;
17475+ break;
17476+ }
17477+
17478+ return 1;
17479+}
17480+
17481+#endif /* SUPPORT_SERIAL */
17482diff --git a/efi/efitftp.c b/efi/efitftp.c
17483new file mode 100644
17484index 0000000..ba6918f
17485--- /dev/null
17486+++ b/efi/efitftp.c
17487@@ -0,0 +1,228 @@
17488+#include <grub/efi/efi.h>
17489+#include <grub/efi/api.h>
17490+#include <grub/efi/misc.h>
17491+#include <grub/misc.h>
17492+
17493+#include <shared.h>
17494+#include <filesys.h>
17495+#include "pxe.h"
17496+
17497+struct tftp_info tftp_info = {
17498+ .LoadedImage = NULL,
17499+ .Pxe = NULL,
17500+ .ServerIp = NULL,
17501+ .BasePath = NULL
17502+};
17503+
17504+/*
17505+ * CLIENT MAC ADDR: 00 15 17 4C E6 74
17506+ * CLIENT IP: 10.16.52.158 MASK: 255.255.255.0 DHCP IP: 10.16.52.16
17507+ * GATEWAY IP: 10.16.52.254
17508+ *
17509+ * TSize.Running LoadFile()
17510+ *
17511+ * TFTP.status: 5
17512+ * got to grub_efi_pxe_get_config_path
17513+ * SiAddr: 10.16.52.16
17514+ * BootpHwAddr: 00:15:17:4c:e6:74:00:00:00:00:00:00:00:00:00:00
17515+ * BootpSrvName:
17516+ * BootpBootFile: X86PC/UNDI/pxelinux/bootx64.efi
17517+ */
17518+
17519+static grub_efi_status_t tftp_get_file_size_defective_buffer_fallback(
17520+ char *Filename,
17521+ grub_efi_uintn_t *Size)
17522+{
17523+ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_READ_FILE;
17524+ char *Buffer = NULL;
17525+ grub_efi_boolean_t Overwrite = 0;
17526+ grub_efi_boolean_t DontUseBuffer = 0;
17527+ grub_efi_uint64_t BufferSize = 4096;
17528+ grub_efi_uintn_t BlockSize = 512;
17529+ grub_efi_status_t rc = GRUB_EFI_BUFFER_TOO_SMALL;
17530+ char *FullPath = NULL;
17531+
17532+ while (rc == GRUB_EFI_BUFFER_TOO_SMALL) {
17533+ char *NewBuffer;
17534+
17535+ if (Buffer) {
17536+ grub_free(Buffer);
17537+ Buffer = NULL;
17538+ }
17539+ BufferSize *= 2;
17540+ NewBuffer = grub_malloc(BufferSize);
17541+ if (!NewBuffer)
17542+ return GRUB_EFI_OUT_OF_RESOURCES;
17543+ Buffer = NewBuffer;
17544+
17545+ if (tftp_info.BasePath) {
17546+ int PathSize = 0;
17547+ PathSize = strlen(tftp_info.BasePath) + 2 +
17548+ strlen(Filename);
17549+ FullPath = grub_malloc(PathSize);
17550+ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath,
17551+ Filename);
17552+ } else {
17553+ FullPath = grub_malloc(strlen(Filename));
17554+ strcpy(FullPath, Filename);
17555+ }
17556+
17557+ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe,
17558+ OpCode, Buffer, Overwrite, &BufferSize, &BlockSize,
17559+ tftp_info.ServerIp, FullPath, NULL, DontUseBuffer);
17560+ if (rc == GRUB_EFI_SUCCESS || rc == GRUB_EFI_BUFFER_TOO_SMALL)
17561+ *Size = BufferSize;
17562+ }
17563+ grub_free(FullPath);
17564+ grub_free(Buffer);
17565+ return rc;
17566+}
17567+
17568+grub_efi_status_t tftp_get_file_size(
17569+ char *Filename,
17570+ grub_efi_uintn_t *Size)
17571+{
17572+ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE;
17573+ char Buffer[8192];
17574+ grub_efi_boolean_t Overwrite = 0;
17575+ grub_efi_boolean_t DontUseBuffer = 0;
17576+ grub_efi_uint64_t BufferSize = 8192;
17577+ grub_efi_uintn_t BlockSize = 512;
17578+ grub_efi_status_t rc;
17579+ char *FullPath = NULL;
17580+
17581+ if (tftp_info.BasePath) {
17582+ int PathSize = 0;
17583+ PathSize = strlen(tftp_info.BasePath) + 2 + strlen(Filename);
17584+ FullPath = grub_malloc(PathSize);
17585+ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, Filename);
17586+ } else {
17587+ FullPath = grub_malloc(strlen(Filename));
17588+ strcpy(FullPath, Filename);
17589+ }
17590+
17591+ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, OpCode,
17592+ Buffer, Overwrite, &BufferSize, &BlockSize, tftp_info.ServerIp,
17593+ FullPath, NULL, DontUseBuffer);
17594+ if (rc == GRUB_EFI_BUFFER_TOO_SMALL)
17595+ rc = tftp_get_file_size_defective_buffer_fallback(Filename, Size);
17596+ if (rc == GRUB_EFI_SUCCESS)
17597+ *Size = BufferSize;
17598+ grub_free(FullPath);
17599+ return rc;
17600+}
17601+
17602+static grub_efi_status_t tftp_read_file(
17603+ char *Filename,
17604+ char *Buffer,
17605+ grub_efi_uint64_t BufferSize)
17606+{
17607+ EFI_PXE_BASE_CODE_TFTP_OPCODE OpCode = EFI_PXE_BASE_CODE_TFTP_READ_FILE;
17608+ grub_efi_boolean_t Overwrite = 0;
17609+ grub_efi_boolean_t DontUseBuffer = 0;
17610+ grub_efi_uintn_t BlockSize = 512;
17611+ grub_efi_status_t rc;
17612+ char *FullPath = NULL;
17613+
17614+ if (tftp_info.BasePath) {
17615+ int PathSize = 0;
17616+ PathSize = strlen(tftp_info.BasePath) + 2 + strlen(Filename);
17617+ FullPath = grub_malloc(PathSize);
17618+ grub_sprintf(FullPath, "%s/%s", tftp_info.BasePath, Filename);
17619+ } else {
17620+ FullPath = grub_malloc(strlen(Filename));
17621+ strcpy(FullPath, Filename);
17622+ }
17623+
17624+ rc = Call_Service_10(tftp_info.Pxe->Mtftp, tftp_info.Pxe, OpCode,
17625+ Buffer, Overwrite, &BufferSize, &BlockSize, tftp_info.ServerIp,
17626+ FullPath, NULL, DontUseBuffer);
17627+ grub_free(FullPath);
17628+ return rc;
17629+}
17630+
17631+int
17632+efi_tftp_mount (void)
17633+{
17634+ if (current_drive != NETWORK_DRIVE) {
17635+ return 0;
17636+ }
17637+ return 1;
17638+}
17639+
17640+int
17641+efi_tftp_read (char *addr, int size)
17642+{
17643+ int rc;
17644+
17645+ if (tftp_info.LastPath == NULL) {
17646+ grub_printf(" = 0 (no path known)\n");
17647+ return 0;
17648+ }
17649+ if (tftp_info.Buffer == NULL) {
17650+ grub_printf(" = 0 (no file open)\n");
17651+ return 0;
17652+ }
17653+ if (filemax == -1) {
17654+ grub_printf(" = 0 (file not found)\n");
17655+ return 0;
17656+ }
17657+ if (filepos == 0) {
17658+ rc = tftp_read_file(tftp_info.LastPath, tftp_info.Buffer,
17659+ filemax);
17660+ }
17661+
17662+ grub_memmove(addr, tftp_info.Buffer+filepos, size);
17663+ filepos += size;
17664+
17665+ return size;
17666+}
17667+
17668+int
17669+efi_tftp_dir (char *dirname)
17670+{
17671+ int rc;
17672+ int ch;
17673+ grub_efi_uintn_t size;
17674+ int len;
17675+ char *name;
17676+
17677+ ch = nul_terminate(dirname);
17678+ len = strlen(dirname);
17679+
17680+ name = grub_malloc(len + 1);
17681+ grub_memmove(name, dirname, len);
17682+ name[len] = '\0';
17683+ dirname[len] = ch;
17684+
17685+#if 0
17686+ if (print_possibilities)
17687+ return 1;
17688+#endif
17689+
17690+ filemax = -1;
17691+
17692+ rc = tftp_get_file_size(name, &size);
17693+ if (rc == GRUB_EFI_SUCCESS) {
17694+ tftp_info.LastPath = grub_malloc(strlen(name) + 1);
17695+ sprintf(tftp_info.LastPath, "%s", name);
17696+ filemax = size;
17697+ filepos = 0;
17698+
17699+ tftp_info.Buffer = grub_malloc(filemax);
17700+
17701+ return 1;
17702+ }
17703+ return 0;
17704+}
17705+
17706+void
17707+efi_tftp_close (void)
17708+{
17709+ filepos = 0;
17710+ filemax = -1;
17711+ grub_free(tftp_info.LastPath);
17712+ tftp_info.LastPath = NULL;
17713+ grub_free(tftp_info.Buffer);
17714+ tftp_info.Buffer = NULL;
17715+}
17716diff --git a/efi/efiuga.c b/efi/efiuga.c
17717new file mode 100644
17718index 0000000..b27500b
17719--- /dev/null
17720+++ b/efi/efiuga.c
17721@@ -0,0 +1,982 @@
17722+/* efiuga.c - "univeral graphics adapter" support for GRUB/EFI */
17723+/*
17724+ * GRUB -- GRand Unified Bootloader
17725+ * Copyright 2007 Red Hat, Inc.
17726+ * Copyright (C) 2007 Intel Corp.
17727+ * Copyright (C) 2001,2002 Red Hat, Inc.
17728+ * Portions copyright (C) 2000 Conectiva, Inc.
17729+ *
17730+ * This program is free software; you can redistribute it and/or modify
17731+ * it under the terms of the GNU General Public License as published by
17732+ * the Free Software Foundation; either version 2 of the License, or
17733+ * (at your option) any later version.
17734+ *
17735+ * This program is distributed in the hope that it will be useful,
17736+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
17737+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17738+ * GNU General Public License for more details.
17739+ *
17740+ * You should have received a copy of the GNU General Public License
17741+ * along with this program; if not, write to the Free Software
17742+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17743+ */
17744+
17745+#ifdef SUPPORT_GRAPHICS
17746+
17747+#include <grub/misc.h>
17748+#include <grub/types.h>
17749+#include <grub/cpu/linux.h>
17750+#include <grub/efi/api.h>
17751+#include <grub/efi/efi.h>
17752+#include <grub/misc.h>
17753+
17754+#include <term.h>
17755+#include <shared.h>
17756+#include <graphics.h>
17757+
17758+#include "graphics.h"
17759+#include "xpm.h"
17760+
17761+static grub_efi_guid_t draw_guid = GRUB_EFI_UGA_DRAW_GUID;
17762+static grub_efi_guid_t pci_io_guid = GRUB_EFI_PCI_IO_GUID;
17763+
17764+#if 0
17765+#define UGA
17766+#include "ugadebug.h"
17767+#endif
17768+
17769+#ifndef MIN
17770+#define MIN(x,y) ( ((x) < (y)) ? (x) : (y))
17771+#endif
17772+#ifndef MAX
17773+#define MAX(x,y) ( ((x) < (y)) ? (y) : (x))
17774+#endif
17775+
17776+#define pixel_equal(x,y) ((x).red == (y).red && \
17777+ (x).green == (y).green && \
17778+ (x).blue == (y).blue)
17779+
17780+struct video_mode {
17781+ grub_efi_uint32_t horizontal_resolution;
17782+ grub_efi_uint32_t vertical_resolution;
17783+ grub_efi_uint32_t color_depth;
17784+ grub_efi_uint32_t refresh_rate;
17785+};
17786+
17787+static void
17788+xpnd_6_to_8(grub_efi_uga_pixel_t *pixel)
17789+{
17790+ if (!((pixel->red | pixel->green | pixel->blue) & 0xc0)) {
17791+ pixel->red <<= 2;
17792+ pixel->red |= ((pixel->red & 0xc0) >> 6);
17793+ pixel->red &= 0xff;
17794+ pixel->green <<= 2;
17795+ pixel->green |= ((pixel->green & 0xc0) >> 6);
17796+ pixel->green &= 0xff;
17797+ pixel->blue <<= 2;
17798+ pixel->blue |= ((pixel->blue & 0xc0) >> 6);
17799+ pixel->blue &= 0xff;
17800+ }
17801+}
17802+
17803+
17804+
17805+#define MAX_PALETTE 16
17806+struct uga {
17807+ grub_efi_uga_draw_t *draw_intf;
17808+ struct video_mode graphics_mode;
17809+ struct video_mode text_mode;
17810+ enum { TEXT, GRAPHICS } current_mode;
17811+
17812+ position_t screen_size;
17813+ position_t screen_pos;
17814+
17815+ struct bltbuf *background;
17816+
17817+ grub_efi_uga_pixel_t palette[MAX_PALETTE + 1];
17818+};
17819+
17820+#define RGB(r,g,b) { .red = r, .green = g, .blue = b }
17821+
17822+static grub_efi_uga_pixel_t cga_colors[] = {
17823+ RGB(0x00,0x00,0x00), // 0 Black
17824+ RGB(0x7f,0x00,0x00), // 1 Dark Red
17825+ RGB(0x00,0x7f,0x00), // 2 Dark Green
17826+ RGB(0x7f,0x7f,0x00), // 3 Dark Yellow
17827+ RGB(0x00,0x00,0x7f), // 4 Dark Blue
17828+ RGB(0x7f,0x00,0x7f), // 5 Dark Magenta
17829+ RGB(0x00,0x7f,0x7f), // 6 Dark Cyan
17830+ RGB(0xc0,0xc0,0xc0), // 7 Light Grey
17831+ RGB(0x7f,0x7f,0x7f), // 8 Dark Grey
17832+ RGB(0xff,0x00,0x00), // 9 Red
17833+ RGB(0x00,0xff,0x00), // 10 Green
17834+ RGB(0xff,0xff,0x00), // 11 Yellow
17835+ RGB(0x00,0x00,0xff), // 12 Blue
17836+ RGB(0xff,0x00,0xff), // 13 Magenta
17837+ RGB(0x00,0xff,0xff), // 14 Cyan
17838+ RGB(0xff,0xff,0xff), // 15 White
17839+ RGB(0xff,0xff,0xff), // 16 Also white ;)
17840+};
17841+
17842+static const int n_cga_colors = sizeof (cga_colors) / sizeof (cga_colors[0]);
17843+
17844+static void
17845+set_kernel_params(struct graphics_backend *backend,
17846+ struct linux_kernel_params *params)
17847+{
17848+ struct uga *uga;
17849+
17850+ if (!backend || !backend->priv)
17851+ return;
17852+
17853+ uga = backend->priv;
17854+
17855+ params->lfb_width = uga->graphics_mode.horizontal_resolution;
17856+ params->lfb_height = uga->graphics_mode.vertical_resolution;
17857+ params->lfb_depth = 32;
17858+ params->red_mask_size = 8;
17859+ params->red_field_pos = 16;
17860+ params->green_mask_size = 8;
17861+ params->green_field_pos = 8;
17862+ params->blue_mask_size = 8;
17863+ params->blue_field_pos = 0;
17864+ params->reserved_mask_size = 8;
17865+ params->reserved_field_pos = 24;
17866+ params->have_vga = VIDEO_TYPE_EFI;
17867+}
17868+
17869+static void
17870+pixel_to_rgb(grub_efi_uga_pixel_t *pixel, int *red, int *green, int *blue)
17871+{
17872+ *red = pixel->red;
17873+ *green = pixel->green;
17874+ *blue = pixel->blue;
17875+}
17876+
17877+static void
17878+rgb_to_pixel(int red, int green, int blue, grub_efi_uga_pixel_t *pixel)
17879+{
17880+ pixel->red = red;
17881+ pixel->green = green;
17882+ pixel->blue = blue;
17883+}
17884+
17885+static void
17886+position_to_phys(struct uga *uga, position_t *virt, position_t *phys)
17887+{
17888+ phys->x = virt->x + uga->screen_pos.x;
17889+ phys->y = virt->y + uga->screen_pos.y;
17890+}
17891+
17892+static int
17893+abs_paddr(struct uga *uga, position_t *virt)
17894+{
17895+ position_t phys;
17896+ position_to_phys(uga, virt, &phys);
17897+ return phys.x + phys.y * uga->screen_size.x;
17898+}
17899+
17900+struct bltbuf {
17901+ grub_efi_uintn_t width;
17902+ grub_efi_uintn_t height;
17903+ grub_efi_uga_pixel_t pixbuf[];
17904+};
17905+
17906+static struct bltbuf *alloc_bltbuf(grub_efi_uintn_t width,
17907+ grub_efi_uintn_t height)
17908+{
17909+ struct bltbuf *buf = NULL;
17910+ grub_efi_uintn_t pixbuf_size = width * height *
17911+ sizeof (grub_efi_uga_pixel_t);
17912+
17913+ if (!(buf = grub_malloc(sizeof(buf->width) + sizeof(buf->height) +
17914+ pixbuf_size)))
17915+ return NULL;
17916+
17917+ buf->width = width;
17918+ buf->height = height;
17919+ grub_memset(buf->pixbuf, '\0', pixbuf_size);
17920+ return buf;
17921+}
17922+
17923+static void
17924+blt_to_screen(struct uga *uga, struct bltbuf *bltbuf)
17925+{
17926+ position_t addr = {0, 0};
17927+
17928+ position_to_phys(uga, &addr, &addr);
17929+
17930+ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf,
17931+ EfiUgaBltBufferToVideo,
17932+ 0, 0,
17933+ addr.x, addr.y,
17934+ bltbuf->width, bltbuf->height,
17935+ 0);
17936+}
17937+
17938+static void
17939+blt_pos_to_screen_pos(struct uga *uga, struct bltbuf *bltbuf,
17940+ position_t *bltpos, position_t *bltsz, position_t *pos)
17941+{
17942+ position_t phys;
17943+
17944+ position_to_phys(uga, pos, &phys);
17945+
17946+ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf,
17947+ EfiUgaBltBufferToVideo,
17948+ bltpos->x, bltpos->y,
17949+ phys.x, phys.y,
17950+ bltsz->x, bltsz->y,
17951+ 0);
17952+}
17953+
17954+static void
17955+blt_to_screen_pos(struct uga *uga, struct bltbuf *bltbuf, position_t *pos)
17956+{
17957+ position_t bltpos = {0, 0};
17958+ position_t bltsz = { bltbuf->width, bltbuf->height };
17959+ blt_pos_to_screen_pos(uga, bltbuf, &bltpos, &bltsz, pos);
17960+}
17961+
17962+static int
17963+blt_from_screen_pos(struct uga *uga, struct bltbuf **retbuf,
17964+ position_t *pos, position_t *size)
17965+{
17966+ struct bltbuf *bltbuf = NULL;
17967+ position_t phys;
17968+
17969+ if (!retbuf)
17970+ return 0;
17971+
17972+ if (*retbuf)
17973+ grub_free(*retbuf);
17974+
17975+ bltbuf = alloc_bltbuf(size->x, size->y);
17976+ if (!bltbuf)
17977+ return 0;
17978+
17979+ position_to_phys(uga, pos, &phys);
17980+
17981+ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf,
17982+ EfiUgaVideoToBltBuffer,
17983+ phys.x, phys.y,
17984+ 0, 0,
17985+ size->x, size->y, 0);
17986+ *retbuf = bltbuf;
17987+ return 1;
17988+}
17989+
17990+static int
17991+save_video_mode(struct uga *uga, struct video_mode *mode)
17992+{
17993+ grub_efi_status_t status;
17994+
17995+ status = Call_Service_5(uga->draw_intf->get_mode, uga->draw_intf,
17996+ &mode->horizontal_resolution, &mode->vertical_resolution,
17997+ &mode->color_depth, &mode->refresh_rate);
17998+ return status == GRUB_EFI_SUCCESS;
17999+}
18000+
18001+static grub_efi_status_t
18002+set_video_mode(struct uga *uga, struct video_mode *mode)
18003+{
18004+ grub_efi_status_t status;
18005+
18006+ status = Call_Service_5(uga->draw_intf->set_mode, uga->draw_intf,
18007+ mode->horizontal_resolution,
18008+ mode->vertical_resolution,
18009+ mode->color_depth,
18010+ mode->refresh_rate);
18011+ return status;
18012+}
18013+
18014+static int
18015+cmp_video_modes(struct video_mode *vm0, struct video_mode *vm1)
18016+{
18017+ if (vm0->horizontal_resolution == vm1->horizontal_resolution &&
18018+ vm0->vertical_resolution == vm1->vertical_resolution)
18019+ return 0;
18020+ if (vm0->horizontal_resolution >= vm1->horizontal_resolution &&
18021+ vm0->vertical_resolution >= vm1->vertical_resolution)
18022+ return 1;
18023+ return -1;
18024+}
18025+
18026+static int
18027+blt_from_screen(struct uga *uga, struct bltbuf **retbuf)
18028+{
18029+ struct bltbuf *bltbuf = NULL;
18030+ position_t pos = {0 ,0};
18031+ position_t size = {
18032+ .x = uga->graphics_mode.horizontal_resolution,
18033+ .y = uga->graphics_mode.vertical_resolution
18034+ };
18035+
18036+ return blt_from_screen_pos(uga, retbuf, &pos, &size);
18037+}
18038+
18039+static void
18040+bltbuf_set_pixel(struct bltbuf *bltbuf, position_t *pos,
18041+ grub_efi_uga_pixel_t *pixel)
18042+{
18043+ if (pos->x < 0 || pos->x >= bltbuf->width)
18044+ return;
18045+ if (pos->x < 0 || pos->y >= bltbuf->height)
18046+ return;
18047+ grub_memmove(&bltbuf->pixbuf[pos->x + pos->y * bltbuf->width], pixel,
18048+ sizeof *pixel);
18049+}
18050+
18051+static void
18052+bltbuf_get_pixel(struct bltbuf *bltbuf, position_t *pos,
18053+ grub_efi_uga_pixel_t *pixel)
18054+{
18055+ if (bltbuf && pos->x < bltbuf->width && pos->y < bltbuf->height) {
18056+ grub_memmove(pixel, &bltbuf->pixbuf[pos->x + pos->y * bltbuf->width],
18057+ sizeof *pixel);
18058+ } else {
18059+ pixel->red = 0x00;
18060+ pixel->green = 0x00;
18061+ pixel->blue = 0x00;
18062+ }
18063+}
18064+
18065+static void
18066+bltbuf_set_pixel_rgb(struct bltbuf *bltbuf, position_t *pos,
18067+ int red, int green, int blue)
18068+{
18069+ grub_efi_uga_pixel_t pixel;
18070+ rgb_to_pixel(red, green, blue, &pixel);
18071+ bltbuf_set_pixel(bltbuf, pos, &pixel);
18072+}
18073+
18074+static void
18075+bltbuf_set_pixel_idx(struct uga *uga, struct bltbuf *bltbuf,
18076+ position_t *pos, int idx)
18077+{
18078+ bltbuf_set_pixel(bltbuf, pos, &uga->palette[idx]);
18079+}
18080+
18081+static void
18082+bltbuf_get_pixel_idx(struct bltbuf *bltbuf, position_t *pos, int *idx)
18083+{
18084+ grub_efi_uga_pixel_t pixel;
18085+
18086+ rgb_to_pixel(0, 0, 0, &pixel);
18087+ bltbuf_get_pixel(bltbuf, pos, &pixel);
18088+ for (*idx = 0; *idx < 16; (*idx)++) {
18089+ if (pixel_equal(cga_colors[*idx], pixel))
18090+ break;
18091+ }
18092+}
18093+
18094+static struct bltbuf *
18095+xpm_to_bltbuf(struct xpm *xpm)
18096+{
18097+ struct bltbuf *bltbuf = NULL;
18098+ position_t pos;
18099+
18100+ if (!(bltbuf = alloc_bltbuf(xpm->width, xpm->height)))
18101+ return NULL;
18102+
18103+ for (pos.y = 0; pos.y < xpm->height; pos.y++) {
18104+ for (pos.x = 0; pos.x < xpm->width; pos.x++) {
18105+ xpm_pixel_t xpl;
18106+ unsigned char idx;
18107+
18108+ idx = xpm_get_pixel_idx(xpm, pos.x, pos.y);
18109+ xpm_get_idx(xpm, idx, &xpl);
18110+
18111+ bltbuf_set_pixel_rgb(bltbuf, &pos, xpl.red, xpl.green, xpl.blue);
18112+ }
18113+ }
18114+
18115+ return bltbuf;
18116+}
18117+
18118+static void
18119+cursor(struct graphics_backend *backend, int set)
18120+{
18121+ struct uga *uga;
18122+ int ch, invert;
18123+ unsigned short *text;
18124+ position_t fpos, screensz;
18125+ int offset;
18126+
18127+ uga = backend->priv;
18128+
18129+ if (set && !graphics_get_scroll())
18130+ return;
18131+
18132+ text = graphics_get_text_buf();
18133+ graphics_get_font_position(&fpos);
18134+ graphics_get_screen_rowscols(&screensz);
18135+
18136+ offset = fpos.y * screensz.x + fpos.x;
18137+
18138+ if (set)
18139+ text[offset] |= 0x200;
18140+
18141+ graphics_clbl(fpos.x, fpos.y, 1, 1, 1);
18142+
18143+ if (set)
18144+ text[offset] &= 0xfdff;
18145+}
18146+
18147+static void blank(struct graphics_backend *backend);
18148+
18149+static void
18150+reset_screen_geometry(struct graphics_backend *backend)
18151+{
18152+ struct uga *uga = backend->priv;
18153+ struct xpm *xpm = graphics_get_splash_xpm();
18154+ position_t screensz = { .x = 640, .y = 480 };
18155+
18156+ if (xpm) {
18157+ screensz.x = xpm->width;
18158+ screensz.y = xpm->height;
18159+ }
18160+
18161+ uga->screen_pos.x =
18162+ (uga->graphics_mode.horizontal_resolution - screensz.x) / 2;
18163+ uga->screen_pos.y =
18164+ (uga->graphics_mode.vertical_resolution - screensz.y) / 2;
18165+
18166+ blank(backend);
18167+ graphics_get_screen_rowscols(&screensz);
18168+ graphics_clbl(0, 0, screensz.x, screensz.y, 0);
18169+ graphics_clbl(0, 0, screensz.x, screensz.y, 1);
18170+}
18171+
18172+static void
18173+get_screen_size(struct graphics_backend *backend, position_t *size)
18174+{
18175+ struct uga *uga = backend->priv;
18176+ size->x = uga->graphics_mode.horizontal_resolution;
18177+ size->y = uga->graphics_mode.vertical_resolution;
18178+}
18179+
18180+static void
18181+setxy(struct graphics_backend *backend, position_t *pos)
18182+{
18183+ position_t fpos;
18184+
18185+ fpos.x = pos->x;
18186+ fpos.y = pos->y;
18187+ graphics_set_font_position(&fpos);
18188+}
18189+
18190+static void
18191+uga_getxy(struct graphics_backend *backend, position_t *pos)
18192+{
18193+ graphics_get_font_position(pos);
18194+}
18195+
18196+static void
18197+draw_pixel(struct graphics_backend *backend, position_t *pos, pixel_t *pixel)
18198+{
18199+ struct bltbuf *bltbuf = NULL;
18200+ grub_efi_uga_pixel_t *eup = (grub_efi_uga_pixel_t *)pixel;
18201+
18202+ bltbuf = alloc_bltbuf(1,1);
18203+ if (!bltbuf)
18204+ return;
18205+
18206+ grub_memmove(&bltbuf->pixbuf[0], eup, sizeof (*eup));
18207+
18208+ blt_to_screen_pos(backend->priv, bltbuf, pos);
18209+
18210+ grub_free(bltbuf);
18211+}
18212+
18213+static pixel_t *
18214+get_pixel_idx(struct graphics_backend *backend, int idx)
18215+{
18216+ static grub_efi_uga_pixel_t pixel;
18217+ struct uga *uga = backend->priv;
18218+ if (idx < 0 || idx > MAX_PALETTE)
18219+ return NULL;
18220+ pixel.red = uga->palette[idx].red;
18221+ pixel.green = uga->palette[idx].green;
18222+ pixel.blue = uga->palette[idx].blue;
18223+ return (pixel_t *)&pixel;
18224+}
18225+
18226+static pixel_t *
18227+get_pixel_rgb(struct graphics_backend *backend, int red, int green, int blue)
18228+{
18229+ static grub_efi_uga_pixel_t pixel;
18230+ rgb_to_pixel(red, green, blue, &pixel);
18231+ return &pixel;
18232+}
18233+
18234+static void
18235+set_palette(struct graphics_backend *backend, int idx,
18236+ int red, int green, int blue)
18237+{
18238+ grub_efi_uga_pixel_t pixel;
18239+ struct uga *uga = backend->priv;
18240+
18241+ if (idx > MAX_PALETTE)
18242+ return;
18243+ rgb_to_pixel(red, green, blue, &pixel);
18244+ grub_memmove(&uga->palette[idx], &pixel, sizeof pixel);
18245+}
18246+
18247+static void
18248+blank(struct graphics_backend *backend)
18249+{
18250+ struct uga *uga = backend->priv;
18251+ struct bltbuf *bltbuf;
18252+ position_t pos = {0, 0};
18253+ grub_efi_uintn_t x, y, i, j;
18254+ unsigned char r = 0 ,g = 0;
18255+
18256+ x = uga->graphics_mode.horizontal_resolution;
18257+ y = uga->graphics_mode.vertical_resolution;
18258+
18259+ if (x == 0 || y == 0)
18260+ return;
18261+
18262+ bltbuf = alloc_bltbuf(x, y);
18263+ for (j = 0; j < y; j++) {
18264+ if (debug_graphics && j % 16 == 0) {
18265+ g = g == 0 ? 7 : 0;
18266+ r = g == 0 ? 7 : 0;
18267+ }
18268+ for (i = 0; i < x; i++) {
18269+ if (debug_graphics && i % 16 == 0) {
18270+ g = g == 0 ? 7 : 0;
18271+ r = g == 0 ? 7 : 0;
18272+ }
18273+ pos.x = i;
18274+ pos.y = j;
18275+ bltbuf_set_pixel_rgb(bltbuf, &pos, r * 16, g * 16, 0x0);
18276+ }
18277+ }
18278+
18279+ Call_Service_10(uga->draw_intf->blt, uga->draw_intf, bltbuf->pixbuf,
18280+ EfiUgaBltBufferToVideo, 0, 0, 0, 0, x, y, 0);
18281+
18282+ grub_free(bltbuf);
18283+}
18284+
18285+static void
18286+bltbuf_cp_bl(struct bltbuf *d, position_t dpos,
18287+ struct bltbuf *s, position_t spos)
18288+{
18289+ grub_efi_uga_pixel_t *dp, *sp;
18290+
18291+ const int xavail = MAX(0, s ? s->width - spos.x : 0);
18292+ const int xtotal = MAX(0, d->width - dpos.x);
18293+ const int xcp = MAX(0, MIN(xtotal, xavail));
18294+ const int xcl = MAX(0, xtotal - xcp);
18295+
18296+ const int yavail = MAX(0, s ? s->height - spos.y : 0);
18297+ const int ytotal = MAX(0, d->height - dpos.y);
18298+ const int ycp = MAX(0, MIN(ytotal, yavail));
18299+ const int ycl = MAX(0, ytotal - ycp);
18300+
18301+ int y, x;
18302+
18303+ for (y = 0; y < ytotal; y++) {
18304+ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x];
18305+
18306+ if (y < yavail) {
18307+ sp = &s->pixbuf[(spos.y + y) * s->width + spos.x];
18308+ memmove(dp, sp, xcp * sizeof (*dp));
18309+ dp = &d->pixbuf[(dpos.y + y) * d->width + dpos.x + xcp];
18310+ memset(dp, '\0', xcl * sizeof (*dp));
18311+ } else {
18312+ memset(dp, '\0', xtotal * sizeof (*dp));
18313+ }
18314+ }
18315+}
18316+
18317+/* copy a region the size of bltbuf from the background into bltbuf,
18318+ * starting at offset bgpos
18319+ */
18320+static void
18321+bltbuf_draw_bg(struct graphics_backend *backend, struct bltbuf *bltbuf,
18322+ position_t bgpos)
18323+{
18324+ struct uga *uga = backend->priv;
18325+ position_t blpos = { 0, 0 };
18326+
18327+ bltbuf_cp_bl(bltbuf, blpos, uga->background, bgpos);
18328+}
18329+
18330+static void
18331+dbg_dump_palette(struct graphics_backend *backend)
18332+{
18333+ struct uga *uga;
18334+ int i;
18335+ if (!backend || !backend->priv)
18336+ return;
18337+ uga = backend->priv;
18338+ if (!uga->palette)
18339+ return;
18340+}
18341+
18342+static int
18343+is_shadow_pixel(position_t screensz, position_t textpos, position_t bitpos,
18344+ position_t fontsz)
18345+{
18346+ unsigned short *text = graphics_get_text_buf();
18347+ const unsigned char *glyph;
18348+ position_t glyphpos = { textpos.x, textpos.y };
18349+ position_t glyphbit = { bitpos.x, bitpos.y };
18350+ unsigned short ch;
18351+
18352+ if (glyphbit.x == 0) {
18353+ glyphbit.x = fontsz.x;
18354+ glyphpos.x--;
18355+ }
18356+ if (glyphbit.y == 0) {
18357+ glyphbit.y = fontsz.y;
18358+ glyphpos.y--;
18359+ }
18360+ glyphbit.x--;
18361+ glyphbit.y--;
18362+
18363+ if (glyphpos.x < 0 || glyphpos.y < 0)
18364+ return 0;
18365+
18366+ ch = text[glyphpos.y * screensz.x + glyphpos.x] & 0xff;
18367+ glyph = font8x16 + (ch << 4);
18368+ return glyph[glyphbit.y] & (1 << ((fontsz.x-1) - glyphbit.x));
18369+}
18370+
18371+static void
18372+bltbuf_draw_character(struct graphics_backend *backend,
18373+ struct bltbuf *bltbuf, /* the bltbuf to draw into */
18374+ position_t target, /* the position in the bltbuf to draw to */
18375+ position_t fontsz, /* the size of the font, in pixels */
18376+ position_t charpos, /* the position of the character in the text
18377+ screen buffer */
18378+ position_t screensz, /* the size of the screen in characters */
18379+ unsigned short ch /* the character to draw, plus flags */
18380+ )
18381+{
18382+ struct uga *uga = backend->priv;
18383+ position_t blpos;
18384+ position_t glyphpos;
18385+
18386+ blpos.y = target.y;
18387+ for (glyphpos.y = 0; glyphpos.y < fontsz.y; glyphpos.y++, blpos.y++) {
18388+ blpos.x = target.x;
18389+ for (glyphpos.x = 0; glyphpos.x < fontsz.x; glyphpos.x++, blpos.x++) {
18390+ int invert = (ch & 0x0100) != 0;
18391+ int set = (ch & 0x0200) != 0;
18392+ const unsigned char *glyph = font8x16 + ((ch & 0xff) << 4);
18393+ int bit = glyph[glyphpos.y] & (1 << ((fontsz.x-1) - glyphpos.x));
18394+ int idx = -1;
18395+
18396+ if (!set) {
18397+ if (invert)
18398+ idx = bit ? 0 : 15;
18399+ else if (bit)
18400+ idx = 15;
18401+
18402+ if (idx == -1) {
18403+ if (is_shadow_pixel(screensz, charpos, glyphpos, fontsz) ||
18404+ !uga->background)
18405+ idx = invert ? 15 : 0;
18406+ }
18407+ } else {
18408+ idx = bit ? 0 : 15;
18409+ }
18410+
18411+ if (idx != -1)
18412+ bltbuf_set_pixel_idx(uga, bltbuf, &blpos, idx);
18413+ }
18414+ }
18415+}
18416+
18417+static void
18418+bltbuf_draw_text(struct graphics_backend *backend,
18419+ struct bltbuf *bltbuf, /* the buffer to draw into */
18420+ position_t screensz, /* the size of the screen in characters */
18421+ position_t fontsz, /* the size of the font in pixels */
18422+ position_t txtpos, /* the position of the text on the screen
18423+ (in characters) */
18424+ position_t txtsz /* the size of the block to fill in
18425+ (in characters) */
18426+ )
18427+{
18428+ struct uga *uga = backend->priv;
18429+ unsigned short *text = graphics_get_text_buf();
18430+ position_t charpos;
18431+
18432+ for (charpos.y = txtpos.y; charpos.y < txtpos.y + txtsz.y; charpos.y++) {
18433+ for (charpos.x = txtpos.x; charpos.x < txtpos.x + txtsz.x; charpos.x++){
18434+ int offset = charpos.y * screensz.x + charpos.x;
18435+ position_t blpos = { (charpos.x-txtpos.x)*fontsz.x,
18436+ (charpos.y-txtpos.y)*fontsz.y };
18437+
18438+ bltbuf_draw_character(backend, bltbuf, blpos, fontsz, charpos,
18439+ screensz, text[offset]);
18440+ }
18441+ }
18442+}
18443+
18444+static void
18445+clbl(struct graphics_backend *backend, int col, int row, int width, int height,
18446+ int draw_text)
18447+{
18448+ struct uga *uga = backend->priv;
18449+ struct xpm *xpm;
18450+
18451+ struct bltbuf *bltbuf;
18452+ position_t fontsz, blpos, blsz, screensz;
18453+ unsigned short *text;
18454+
18455+// blank(backend);
18456+//
18457+ xpm = graphics_get_splash_xpm();
18458+ if (xpm && !uga->background)
18459+ uga->background = xpm_to_bltbuf(xpm);
18460+
18461+ graphics_get_screen_rowscols(&screensz);
18462+ width = MIN(width, screensz.x - col);
18463+ height = MIN(height, screensz.y - row);
18464+ graphics_get_font_size(&fontsz);
18465+
18466+ blsz.x = width * fontsz.x;
18467+ blsz.y = height * fontsz.y;
18468+
18469+ bltbuf = alloc_bltbuf(blsz.x, blsz.y);
18470+ if (!bltbuf)
18471+ return;
18472+
18473+ blsz.x = col * fontsz.x;
18474+ blsz.y = row * fontsz.y;
18475+
18476+ text = graphics_get_text_buf();
18477+ bltbuf_draw_bg(backend, bltbuf, blsz);
18478+
18479+ if (draw_text) {
18480+ blsz.x = width;
18481+ blsz.y = height;
18482+ blpos.x = col;
18483+ blpos.y = row;
18484+
18485+ bltbuf_draw_text(backend, bltbuf, screensz, fontsz, blpos, blsz);
18486+ }
18487+
18488+ blpos.x = col * fontsz.x;
18489+ blpos.y = row * fontsz.y;
18490+
18491+ blt_to_screen_pos(uga, bltbuf, &blpos);
18492+}
18493+
18494+static void
18495+setup_cga_palette(void)
18496+{
18497+/*
18498+ * Nov 27 15:53:19 <pjones> ping?
18499+ * Nov 27 15:54:13 <ajax> pong?
18500+ * Nov 27 15:54:16 <pjones> say I've got a color channel in 6 bits, and it's
18501+ * stored in an 8-bit value. let's call it white.
18502+ * now let's say I've got hardware with 8 bits per
18503+ * channel that I'm blitting to. What's the right
18504+ * way to expand 0x3f to 0xff?
18505+ * Nov 27 15:55:17 <pjones> (my naive idea, which I haven't tried yet, is
18506+ * "x <<= 2; if (x) x |= 3;")
18507+ * Nov 27 15:55:35 <ajax> no.
18508+ * Nov 27 15:55:43 <pjones> yeah, figured I'd ask instead of doing that.
18509+ * Nov 27 15:56:15 <ajax> x <<= 2; x |= ((x & 0xc0) >> 6);
18510+ */
18511+ int i;
18512+ for (i = 0; i < n_cga_colors; i++) {
18513+ grub_efi_uga_pixel_t *pixel = &cga_colors[i];
18514+
18515+ if ((pixel->red | pixel->green | pixel->blue) & 0xc0)
18516+ continue;
18517+ pixel->red <<= 2;
18518+ pixel->red |= ((pixel->red & 0xc0) >> 6);
18519+ pixel->red &= 0xff;
18520+ pixel->green <<= 2;
18521+ pixel->green |= ((pixel->green & 0xc0) >> 6);
18522+ pixel->green &= 0xff;
18523+ pixel->blue <<= 2;
18524+ pixel->blue |= ((pixel->blue & 0xc0) >> 6);
18525+ pixel->blue &= 0xff;
18526+ }
18527+}
18528+
18529+static int
18530+try_enable(struct graphics_backend *backend)
18531+{
18532+ struct uga *uga = backend->priv;
18533+ struct video_mode modes[] = {
18534+ { 1440, 900, 32, 60 },
18535+ { 640, 480, 32, 60 },
18536+ { 800, 600, 32, 60 },
18537+ { 640, 480, 16, 60 },
18538+ { 800, 600, 16, 60 },
18539+ { 640, 480, 8, 60 },
18540+ { 800, 600, 8, 60 }
18541+ };
18542+ struct video_mode mode;
18543+ position_t font_size;
18544+ int i;
18545+
18546+ if (uga->text_mode.horizontal_resolution == 0) {
18547+ grub_efi_set_text_mode(1);
18548+ save_video_mode(uga, &uga->text_mode);
18549+ }
18550+
18551+ if (uga->graphics_mode.horizontal_resolution == 0) {
18552+ grub_efi_set_text_mode(0);
18553+ save_video_mode(uga, &uga->graphics_mode);
18554+
18555+ if (cmp_video_modes(&uga->graphics_mode, &modes[0]) >= 0) {
18556+ uga->current_mode = GRAPHICS;
18557+ graphics_alloc_text_buf();
18558+ return 1;
18559+ }
18560+ for (i = 0; i < sizeof (modes) / sizeof (modes[0]); i++) {
18561+ set_video_mode(uga, &modes[i]);
18562+ save_video_mode(uga, &mode);
18563+ if (!cmp_video_modes(&modes[i], &mode)) {
18564+ grub_memmove(&uga->graphics_mode, &mode, sizeof (mode));
18565+ uga->current_mode = GRAPHICS;
18566+ graphics_alloc_text_buf();
18567+ return 1;
18568+ }
18569+ }
18570+ set_video_mode(uga, &uga->graphics_mode);
18571+ save_video_mode(uga, &mode);
18572+ if (!cmp_video_modes(&uga->graphics_mode, &mode)) {
18573+ uga->current_mode = GRAPHICS;
18574+ graphics_alloc_text_buf();
18575+ return 1;
18576+ }
18577+ grub_efi_set_text_mode(1);
18578+ return 0;
18579+ }
18580+ set_video_mode(uga, &uga->graphics_mode);
18581+
18582+ uga->current_mode = GRAPHICS;
18583+ return 1;
18584+}
18585+
18586+static int
18587+enable(struct graphics_backend *backend)
18588+{
18589+ struct uga *uga = backend->priv;
18590+ grub_efi_handle_t *handle, *handles;
18591+ grub_efi_uintn_t num_handles;
18592+ grub_efi_pci_io_t *pci_proto;
18593+ int i;
18594+
18595+ if (uga) {
18596+ if (uga->current_mode == GRAPHICS) {
18597+ return 1;
18598+ }
18599+ } else {
18600+ if (!(uga = grub_malloc(sizeof (*uga)))) {
18601+ return 0;
18602+ }
18603+ grub_memset(uga, '\0', sizeof (*uga));
18604+
18605+ uga->current_mode = TEXT;
18606+
18607+ handles = grub_efi_locate_handle (GRUB_EFI_BY_PROTOCOL,
18608+ &draw_guid, NULL, &num_handles);
18609+
18610+ if (!num_handles || !handles)
18611+ {
18612+ grub_free(uga);
18613+ return 0;
18614+ }
18615+
18616+ for (handle = handles; num_handles--; handle++)
18617+ {
18618+ pci_proto = grub_efi_open_protocol (*handle, &pci_io_guid,
18619+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
18620+
18621+ if (!pci_proto)
18622+ continue;
18623+
18624+ uga->draw_intf = grub_efi_open_protocol (*handle, &draw_guid,
18625+ GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL);
18626+
18627+ if (uga->draw_intf)
18628+ {
18629+ grub_efi_setup_gfx_pci(*handle);
18630+ break;
18631+ }
18632+ }
18633+
18634+ grub_free(handles);
18635+
18636+ if (!uga->draw_intf)
18637+ uga->draw_intf = grub_efi_locate_protocol(&draw_guid, NULL);
18638+
18639+ if (!uga->draw_intf) {
18640+ grub_free(uga);
18641+ return 0;
18642+ }
18643+ grub_memset(&uga->graphics_mode, '\0', sizeof (uga->graphics_mode));
18644+ grub_memset(&uga->text_mode, '\0', sizeof (uga->text_mode));
18645+ backend->priv = uga;
18646+
18647+ setup_cga_palette();
18648+ for (i = 0; i < n_cga_colors; i++) {
18649+ uga->palette[i].red = cga_colors[i].red;
18650+ uga->palette[i].green = cga_colors[i].green;
18651+ uga->palette[i].blue = cga_colors[i].blue;
18652+ }
18653+ }
18654+
18655+ if (try_enable(backend)) {
18656+ reset_screen_geometry(backend);
18657+ return 1;
18658+ }
18659+
18660+ backend->priv = NULL;
18661+ grub_free(uga);
18662+ return 0;
18663+}
18664+
18665+static void disable(struct graphics_backend *backend)
18666+{
18667+ struct uga *uga;
18668+
18669+ if (!backend)
18670+ return;
18671+
18672+ uga = backend->priv;
18673+ if (!uga || uga->current_mode != GRAPHICS)
18674+ return;
18675+
18676+#if 0
18677+ blank(backend);
18678+
18679+ set_video_mode(uga, &uga->text_mode);
18680+ grub_efi_set_text_mode(1);
18681+#endif
18682+ uga->current_mode = TEXT;
18683+}
18684+
18685+struct graphics_backend uga_backend = {
18686+ .name = "uga",
18687+ .enable = enable,
18688+ .disable = disable,
18689+ .set_kernel_params = set_kernel_params,
18690+ .clbl = clbl,
18691+ .set_palette = set_palette,
18692+ .get_pixel_idx = get_pixel_idx,
18693+ .get_pixel_rgb = get_pixel_rgb,
18694+ .draw_pixel = draw_pixel,
18695+ .reset_screen_geometry = reset_screen_geometry,
18696+ .get_screen_size = get_screen_size,
18697+ .getxy = uga_getxy,
18698+ .setxy = setxy,
18699+ .gotoxy = NULL,
18700+ .cursor = cursor,
18701+};
18702+
18703+#endif /* SUPPORT_GRAPHICS */
18704diff --git a/efi/font_8x16.c b/efi/font_8x16.c
18705new file mode 100644
18706index 0000000..94829ec
18707--- /dev/null
18708+++ b/efi/font_8x16.c
18709@@ -0,0 +1,4638 @@
18710+/* font_8x16.c - 8x16 font for GRUB/EFI */
18711+/*
18712+ * GRUB -- GRand Unified Bootloader
18713+ * Copied from Linux kernel drivers/video/console/font_8x16.c,
18714+ * which is generated by cpi2fnt.
18715+ *
18716+ * This program is free software; you can redistribute it and/or modify
18717+ * it under the terms of the GNU General Public License as published by
18718+ * the Free Software Foundation; either version 2 of the License, or
18719+ * (at your option) any later version.
18720+ *
18721+ * This program is distributed in the hope that it will be useful,
18722+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18723+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18724+ * GNU General Public License for more details.
18725+ *
18726+ * You should have received a copy of the GNU General Public License
18727+ * along with this program; if not, write to the Free Software
18728+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18729+ */
18730+
18731+#ifdef SUPPORT_GRAPHICS
18732+
18733+#define FONTDATAMAX 4096
18734+
18735+const unsigned char font8x16[FONTDATAMAX] = {
18736+
18737+ /* 0 0x00 '^@' */
18738+ 0x00, /* 00000000 */
18739+ 0x00, /* 00000000 */
18740+ 0x00, /* 00000000 */
18741+ 0x00, /* 00000000 */
18742+ 0x00, /* 00000000 */
18743+ 0x00, /* 00000000 */
18744+ 0x00, /* 00000000 */
18745+ 0x00, /* 00000000 */
18746+ 0x00, /* 00000000 */
18747+ 0x00, /* 00000000 */
18748+ 0x00, /* 00000000 */
18749+ 0x00, /* 00000000 */
18750+ 0x00, /* 00000000 */
18751+ 0x00, /* 00000000 */
18752+ 0x00, /* 00000000 */
18753+ 0x00, /* 00000000 */
18754+
18755+ /* 1 0x01 '^A' */
18756+ 0x00, /* 00000000 */
18757+ 0x00, /* 00000000 */
18758+ 0x7e, /* 01111110 */
18759+ 0x81, /* 10000001 */
18760+ 0xa5, /* 10100101 */
18761+ 0x81, /* 10000001 */
18762+ 0x81, /* 10000001 */
18763+ 0xbd, /* 10111101 */
18764+ 0x99, /* 10011001 */
18765+ 0x81, /* 10000001 */
18766+ 0x81, /* 10000001 */
18767+ 0x7e, /* 01111110 */
18768+ 0x00, /* 00000000 */
18769+ 0x00, /* 00000000 */
18770+ 0x00, /* 00000000 */
18771+ 0x00, /* 00000000 */
18772+
18773+ /* 2 0x02 '^B' */
18774+ 0x00, /* 00000000 */
18775+ 0x00, /* 00000000 */
18776+ 0x7e, /* 01111110 */
18777+ 0xff, /* 11111111 */
18778+ 0xdb, /* 11011011 */
18779+ 0xff, /* 11111111 */
18780+ 0xff, /* 11111111 */
18781+ 0xc3, /* 11000011 */
18782+ 0xe7, /* 11100111 */
18783+ 0xff, /* 11111111 */
18784+ 0xff, /* 11111111 */
18785+ 0x7e, /* 01111110 */
18786+ 0x00, /* 00000000 */
18787+ 0x00, /* 00000000 */
18788+ 0x00, /* 00000000 */
18789+ 0x00, /* 00000000 */
18790+
18791+ /* 3 0x03 '^C' */
18792+ 0x00, /* 00000000 */
18793+ 0x00, /* 00000000 */
18794+ 0x00, /* 00000000 */
18795+ 0x00, /* 00000000 */
18796+ 0x6c, /* 01101100 */
18797+ 0xfe, /* 11111110 */
18798+ 0xfe, /* 11111110 */
18799+ 0xfe, /* 11111110 */
18800+ 0xfe, /* 11111110 */
18801+ 0x7c, /* 01111100 */
18802+ 0x38, /* 00111000 */
18803+ 0x10, /* 00010000 */
18804+ 0x00, /* 00000000 */
18805+ 0x00, /* 00000000 */
18806+ 0x00, /* 00000000 */
18807+ 0x00, /* 00000000 */
18808+
18809+ /* 4 0x04 '^D' */
18810+ 0x00, /* 00000000 */
18811+ 0x00, /* 00000000 */
18812+ 0x00, /* 00000000 */
18813+ 0x00, /* 00000000 */
18814+ 0x10, /* 00010000 */
18815+ 0x38, /* 00111000 */
18816+ 0x7c, /* 01111100 */
18817+ 0xfe, /* 11111110 */
18818+ 0x7c, /* 01111100 */
18819+ 0x38, /* 00111000 */
18820+ 0x10, /* 00010000 */
18821+ 0x00, /* 00000000 */
18822+ 0x00, /* 00000000 */
18823+ 0x00, /* 00000000 */
18824+ 0x00, /* 00000000 */
18825+ 0x00, /* 00000000 */
18826+
18827+ /* 5 0x05 '^E' */
18828+ 0x00, /* 00000000 */
18829+ 0x00, /* 00000000 */
18830+ 0x00, /* 00000000 */
18831+ 0x18, /* 00011000 */
18832+ 0x3c, /* 00111100 */
18833+ 0x3c, /* 00111100 */
18834+ 0xe7, /* 11100111 */
18835+ 0xe7, /* 11100111 */
18836+ 0xe7, /* 11100111 */
18837+ 0x18, /* 00011000 */
18838+ 0x18, /* 00011000 */
18839+ 0x3c, /* 00111100 */
18840+ 0x00, /* 00000000 */
18841+ 0x00, /* 00000000 */
18842+ 0x00, /* 00000000 */
18843+ 0x00, /* 00000000 */
18844+
18845+ /* 6 0x06 '^F' */
18846+ 0x00, /* 00000000 */
18847+ 0x00, /* 00000000 */
18848+ 0x00, /* 00000000 */
18849+ 0x18, /* 00011000 */
18850+ 0x3c, /* 00111100 */
18851+ 0x7e, /* 01111110 */
18852+ 0xff, /* 11111111 */
18853+ 0xff, /* 11111111 */
18854+ 0x7e, /* 01111110 */
18855+ 0x18, /* 00011000 */
18856+ 0x18, /* 00011000 */
18857+ 0x3c, /* 00111100 */
18858+ 0x00, /* 00000000 */
18859+ 0x00, /* 00000000 */
18860+ 0x00, /* 00000000 */
18861+ 0x00, /* 00000000 */
18862+
18863+ /* 7 0x07 '^G' */
18864+ 0x00, /* 00000000 */
18865+ 0x00, /* 00000000 */
18866+ 0x00, /* 00000000 */
18867+ 0x00, /* 00000000 */
18868+ 0x00, /* 00000000 */
18869+ 0x00, /* 00000000 */
18870+ 0x18, /* 00011000 */
18871+ 0x3c, /* 00111100 */
18872+ 0x3c, /* 00111100 */
18873+ 0x18, /* 00011000 */
18874+ 0x00, /* 00000000 */
18875+ 0x00, /* 00000000 */
18876+ 0x00, /* 00000000 */
18877+ 0x00, /* 00000000 */
18878+ 0x00, /* 00000000 */
18879+ 0x00, /* 00000000 */
18880+
18881+ /* 8 0x08 '^H' */
18882+ 0xff, /* 11111111 */
18883+ 0xff, /* 11111111 */
18884+ 0xff, /* 11111111 */
18885+ 0xff, /* 11111111 */
18886+ 0xff, /* 11111111 */
18887+ 0xff, /* 11111111 */
18888+ 0xe7, /* 11100111 */
18889+ 0xc3, /* 11000011 */
18890+ 0xc3, /* 11000011 */
18891+ 0xe7, /* 11100111 */
18892+ 0xff, /* 11111111 */
18893+ 0xff, /* 11111111 */
18894+ 0xff, /* 11111111 */
18895+ 0xff, /* 11111111 */
18896+ 0xff, /* 11111111 */
18897+ 0xff, /* 11111111 */
18898+
18899+ /* 9 0x09 '^I' */
18900+ 0x00, /* 00000000 */
18901+ 0x00, /* 00000000 */
18902+ 0x00, /* 00000000 */
18903+ 0x00, /* 00000000 */
18904+ 0x00, /* 00000000 */
18905+ 0x3c, /* 00111100 */
18906+ 0x66, /* 01100110 */
18907+ 0x42, /* 01000010 */
18908+ 0x42, /* 01000010 */
18909+ 0x66, /* 01100110 */
18910+ 0x3c, /* 00111100 */
18911+ 0x00, /* 00000000 */
18912+ 0x00, /* 00000000 */
18913+ 0x00, /* 00000000 */
18914+ 0x00, /* 00000000 */
18915+ 0x00, /* 00000000 */
18916+
18917+ /* 10 0x0a '^J' */
18918+ 0xff, /* 11111111 */
18919+ 0xff, /* 11111111 */
18920+ 0xff, /* 11111111 */
18921+ 0xff, /* 11111111 */
18922+ 0xff, /* 11111111 */
18923+ 0xc3, /* 11000011 */
18924+ 0x99, /* 10011001 */
18925+ 0xbd, /* 10111101 */
18926+ 0xbd, /* 10111101 */
18927+ 0x99, /* 10011001 */
18928+ 0xc3, /* 11000011 */
18929+ 0xff, /* 11111111 */
18930+ 0xff, /* 11111111 */
18931+ 0xff, /* 11111111 */
18932+ 0xff, /* 11111111 */
18933+ 0xff, /* 11111111 */
18934+
18935+ /* 11 0x0b '^K' */
18936+ 0x00, /* 00000000 */
18937+ 0x00, /* 00000000 */
18938+ 0x1e, /* 00011110 */
18939+ 0x0e, /* 00001110 */
18940+ 0x1a, /* 00011010 */
18941+ 0x32, /* 00110010 */
18942+ 0x78, /* 01111000 */
18943+ 0xcc, /* 11001100 */
18944+ 0xcc, /* 11001100 */
18945+ 0xcc, /* 11001100 */
18946+ 0xcc, /* 11001100 */
18947+ 0x78, /* 01111000 */
18948+ 0x00, /* 00000000 */
18949+ 0x00, /* 00000000 */
18950+ 0x00, /* 00000000 */
18951+ 0x00, /* 00000000 */
18952+
18953+ /* 12 0x0c '^L' */
18954+ 0x00, /* 00000000 */
18955+ 0x00, /* 00000000 */
18956+ 0x3c, /* 00111100 */
18957+ 0x66, /* 01100110 */
18958+ 0x66, /* 01100110 */
18959+ 0x66, /* 01100110 */
18960+ 0x66, /* 01100110 */
18961+ 0x3c, /* 00111100 */
18962+ 0x18, /* 00011000 */
18963+ 0x7e, /* 01111110 */
18964+ 0x18, /* 00011000 */
18965+ 0x18, /* 00011000 */
18966+ 0x00, /* 00000000 */
18967+ 0x00, /* 00000000 */
18968+ 0x00, /* 00000000 */
18969+ 0x00, /* 00000000 */
18970+
18971+ /* 13 0x0d '^M' */
18972+ 0x00, /* 00000000 */
18973+ 0x00, /* 00000000 */
18974+ 0x3f, /* 00111111 */
18975+ 0x33, /* 00110011 */
18976+ 0x3f, /* 00111111 */
18977+ 0x30, /* 00110000 */
18978+ 0x30, /* 00110000 */
18979+ 0x30, /* 00110000 */
18980+ 0x30, /* 00110000 */
18981+ 0x70, /* 01110000 */
18982+ 0xf0, /* 11110000 */
18983+ 0xe0, /* 11100000 */
18984+ 0x00, /* 00000000 */
18985+ 0x00, /* 00000000 */
18986+ 0x00, /* 00000000 */
18987+ 0x00, /* 00000000 */
18988+
18989+ /* 14 0x0e '^N' */
18990+ 0x00, /* 00000000 */
18991+ 0x00, /* 00000000 */
18992+ 0x7f, /* 01111111 */
18993+ 0x63, /* 01100011 */
18994+ 0x7f, /* 01111111 */
18995+ 0x63, /* 01100011 */
18996+ 0x63, /* 01100011 */
18997+ 0x63, /* 01100011 */
18998+ 0x63, /* 01100011 */
18999+ 0x67, /* 01100111 */
19000+ 0xe7, /* 11100111 */
19001+ 0xe6, /* 11100110 */
19002+ 0xc0, /* 11000000 */
19003+ 0x00, /* 00000000 */
19004+ 0x00, /* 00000000 */
19005+ 0x00, /* 00000000 */
19006+
19007+ /* 15 0x0f '^O' */
19008+ 0x00, /* 00000000 */
19009+ 0x00, /* 00000000 */
19010+ 0x00, /* 00000000 */
19011+ 0x18, /* 00011000 */
19012+ 0x18, /* 00011000 */
19013+ 0xdb, /* 11011011 */
19014+ 0x3c, /* 00111100 */
19015+ 0xe7, /* 11100111 */
19016+ 0x3c, /* 00111100 */
19017+ 0xdb, /* 11011011 */
19018+ 0x18, /* 00011000 */
19019+ 0x18, /* 00011000 */
19020+ 0x00, /* 00000000 */
19021+ 0x00, /* 00000000 */
19022+ 0x00, /* 00000000 */
19023+ 0x00, /* 00000000 */
19024+
19025+ /* 16 0x10 '^P' */
19026+ 0x00, /* 00000000 */
19027+ 0x80, /* 10000000 */
19028+ 0xc0, /* 11000000 */
19029+ 0xe0, /* 11100000 */
19030+ 0xf0, /* 11110000 */
19031+ 0xf8, /* 11111000 */
19032+ 0xfe, /* 11111110 */
19033+ 0xf8, /* 11111000 */
19034+ 0xf0, /* 11110000 */
19035+ 0xe0, /* 11100000 */
19036+ 0xc0, /* 11000000 */
19037+ 0x80, /* 10000000 */
19038+ 0x00, /* 00000000 */
19039+ 0x00, /* 00000000 */
19040+ 0x00, /* 00000000 */
19041+ 0x00, /* 00000000 */
19042+
19043+ /* 17 0x11 '^Q' */
19044+ 0x00, /* 00000000 */
19045+ 0x02, /* 00000010 */
19046+ 0x06, /* 00000110 */
19047+ 0x0e, /* 00001110 */
19048+ 0x1e, /* 00011110 */
19049+ 0x3e, /* 00111110 */
19050+ 0xfe, /* 11111110 */
19051+ 0x3e, /* 00111110 */
19052+ 0x1e, /* 00011110 */
19053+ 0x0e, /* 00001110 */
19054+ 0x06, /* 00000110 */
19055+ 0x02, /* 00000010 */
19056+ 0x00, /* 00000000 */
19057+ 0x00, /* 00000000 */
19058+ 0x00, /* 00000000 */
19059+ 0x00, /* 00000000 */
19060+
19061+ /* 18 0x12 '^R' */
19062+ 0x00, /* 00000000 */
19063+ 0x00, /* 00000000 */
19064+ 0x18, /* 00011000 */
19065+ 0x3c, /* 00111100 */
19066+ 0x7e, /* 01111110 */
19067+ 0x18, /* 00011000 */
19068+ 0x18, /* 00011000 */
19069+ 0x18, /* 00011000 */
19070+ 0x7e, /* 01111110 */
19071+ 0x3c, /* 00111100 */
19072+ 0x18, /* 00011000 */
19073+ 0x00, /* 00000000 */
19074+ 0x00, /* 00000000 */
19075+ 0x00, /* 00000000 */
19076+ 0x00, /* 00000000 */
19077+ 0x00, /* 00000000 */
19078+
19079+ /* 19 0x13 '^S' */
19080+ 0x00, /* 00000000 */
19081+ 0x00, /* 00000000 */
19082+ 0x66, /* 01100110 */
19083+ 0x66, /* 01100110 */
19084+ 0x66, /* 01100110 */
19085+ 0x66, /* 01100110 */
19086+ 0x66, /* 01100110 */
19087+ 0x66, /* 01100110 */
19088+ 0x66, /* 01100110 */
19089+ 0x00, /* 00000000 */
19090+ 0x66, /* 01100110 */
19091+ 0x66, /* 01100110 */
19092+ 0x00, /* 00000000 */
19093+ 0x00, /* 00000000 */
19094+ 0x00, /* 00000000 */
19095+ 0x00, /* 00000000 */
19096+
19097+ /* 20 0x14 '^T' */
19098+ 0x00, /* 00000000 */
19099+ 0x00, /* 00000000 */
19100+ 0x7f, /* 01111111 */
19101+ 0xdb, /* 11011011 */
19102+ 0xdb, /* 11011011 */
19103+ 0xdb, /* 11011011 */
19104+ 0x7b, /* 01111011 */
19105+ 0x1b, /* 00011011 */
19106+ 0x1b, /* 00011011 */
19107+ 0x1b, /* 00011011 */
19108+ 0x1b, /* 00011011 */
19109+ 0x1b, /* 00011011 */
19110+ 0x00, /* 00000000 */
19111+ 0x00, /* 00000000 */
19112+ 0x00, /* 00000000 */
19113+ 0x00, /* 00000000 */
19114+
19115+ /* 21 0x15 '^U' */
19116+ 0x00, /* 00000000 */
19117+ 0x7c, /* 01111100 */
19118+ 0xc6, /* 11000110 */
19119+ 0x60, /* 01100000 */
19120+ 0x38, /* 00111000 */
19121+ 0x6c, /* 01101100 */
19122+ 0xc6, /* 11000110 */
19123+ 0xc6, /* 11000110 */
19124+ 0x6c, /* 01101100 */
19125+ 0x38, /* 00111000 */
19126+ 0x0c, /* 00001100 */
19127+ 0xc6, /* 11000110 */
19128+ 0x7c, /* 01111100 */
19129+ 0x00, /* 00000000 */
19130+ 0x00, /* 00000000 */
19131+ 0x00, /* 00000000 */
19132+
19133+ /* 22 0x16 '^V' */
19134+ 0x00, /* 00000000 */
19135+ 0x00, /* 00000000 */
19136+ 0x00, /* 00000000 */
19137+ 0x00, /* 00000000 */
19138+ 0x00, /* 00000000 */
19139+ 0x00, /* 00000000 */
19140+ 0x00, /* 00000000 */
19141+ 0x00, /* 00000000 */
19142+ 0xfe, /* 11111110 */
19143+ 0xfe, /* 11111110 */
19144+ 0xfe, /* 11111110 */
19145+ 0xfe, /* 11111110 */
19146+ 0x00, /* 00000000 */
19147+ 0x00, /* 00000000 */
19148+ 0x00, /* 00000000 */
19149+ 0x00, /* 00000000 */
19150+
19151+ /* 23 0x17 '^W' */
19152+ 0x00, /* 00000000 */
19153+ 0x00, /* 00000000 */
19154+ 0x18, /* 00011000 */
19155+ 0x3c, /* 00111100 */
19156+ 0x7e, /* 01111110 */
19157+ 0x18, /* 00011000 */
19158+ 0x18, /* 00011000 */
19159+ 0x18, /* 00011000 */
19160+ 0x7e, /* 01111110 */
19161+ 0x3c, /* 00111100 */
19162+ 0x18, /* 00011000 */
19163+ 0x7e, /* 01111110 */
19164+ 0x00, /* 00000000 */
19165+ 0x00, /* 00000000 */
19166+ 0x00, /* 00000000 */
19167+ 0x00, /* 00000000 */
19168+
19169+ /* 24 0x18 '^X' */
19170+ 0x00, /* 00000000 */
19171+ 0x00, /* 00000000 */
19172+ 0x18, /* 00011000 */
19173+ 0x3c, /* 00111100 */
19174+ 0x7e, /* 01111110 */
19175+ 0x18, /* 00011000 */
19176+ 0x18, /* 00011000 */
19177+ 0x18, /* 00011000 */
19178+ 0x18, /* 00011000 */
19179+ 0x18, /* 00011000 */
19180+ 0x18, /* 00011000 */
19181+ 0x18, /* 00011000 */
19182+ 0x00, /* 00000000 */
19183+ 0x00, /* 00000000 */
19184+ 0x00, /* 00000000 */
19185+ 0x00, /* 00000000 */
19186+
19187+ /* 25 0x19 '^Y' */
19188+ 0x00, /* 00000000 */
19189+ 0x00, /* 00000000 */
19190+ 0x18, /* 00011000 */
19191+ 0x18, /* 00011000 */
19192+ 0x18, /* 00011000 */
19193+ 0x18, /* 00011000 */
19194+ 0x18, /* 00011000 */
19195+ 0x18, /* 00011000 */
19196+ 0x18, /* 00011000 */
19197+ 0x7e, /* 01111110 */
19198+ 0x3c, /* 00111100 */
19199+ 0x18, /* 00011000 */
19200+ 0x00, /* 00000000 */
19201+ 0x00, /* 00000000 */
19202+ 0x00, /* 00000000 */
19203+ 0x00, /* 00000000 */
19204+
19205+ /* 26 0x1a '^Z' */
19206+ 0x00, /* 00000000 */
19207+ 0x00, /* 00000000 */
19208+ 0x00, /* 00000000 */
19209+ 0x00, /* 00000000 */
19210+ 0x00, /* 00000000 */
19211+ 0x18, /* 00011000 */
19212+ 0x0c, /* 00001100 */
19213+ 0xfe, /* 11111110 */
19214+ 0x0c, /* 00001100 */
19215+ 0x18, /* 00011000 */
19216+ 0x00, /* 00000000 */
19217+ 0x00, /* 00000000 */
19218+ 0x00, /* 00000000 */
19219+ 0x00, /* 00000000 */
19220+ 0x00, /* 00000000 */
19221+ 0x00, /* 00000000 */
19222+
19223+ /* 27 0x1b '^[' */
19224+ 0x00, /* 00000000 */
19225+ 0x00, /* 00000000 */
19226+ 0x00, /* 00000000 */
19227+ 0x00, /* 00000000 */
19228+ 0x00, /* 00000000 */
19229+ 0x30, /* 00110000 */
19230+ 0x60, /* 01100000 */
19231+ 0xfe, /* 11111110 */
19232+ 0x60, /* 01100000 */
19233+ 0x30, /* 00110000 */
19234+ 0x00, /* 00000000 */
19235+ 0x00, /* 00000000 */
19236+ 0x00, /* 00000000 */
19237+ 0x00, /* 00000000 */
19238+ 0x00, /* 00000000 */
19239+ 0x00, /* 00000000 */
19240+
19241+ /* 28 0x1c '^\' */
19242+ 0x00, /* 00000000 */
19243+ 0x00, /* 00000000 */
19244+ 0x00, /* 00000000 */
19245+ 0x00, /* 00000000 */
19246+ 0x00, /* 00000000 */
19247+ 0x00, /* 00000000 */
19248+ 0xc0, /* 11000000 */
19249+ 0xc0, /* 11000000 */
19250+ 0xc0, /* 11000000 */
19251+ 0xfe, /* 11111110 */
19252+ 0x00, /* 00000000 */
19253+ 0x00, /* 00000000 */
19254+ 0x00, /* 00000000 */
19255+ 0x00, /* 00000000 */
19256+ 0x00, /* 00000000 */
19257+ 0x00, /* 00000000 */
19258+
19259+ /* 29 0x1d '^]' */
19260+ 0x00, /* 00000000 */
19261+ 0x00, /* 00000000 */
19262+ 0x00, /* 00000000 */
19263+ 0x00, /* 00000000 */
19264+ 0x00, /* 00000000 */
19265+ 0x28, /* 00101000 */
19266+ 0x6c, /* 01101100 */
19267+ 0xfe, /* 11111110 */
19268+ 0x6c, /* 01101100 */
19269+ 0x28, /* 00101000 */
19270+ 0x00, /* 00000000 */
19271+ 0x00, /* 00000000 */
19272+ 0x00, /* 00000000 */
19273+ 0x00, /* 00000000 */
19274+ 0x00, /* 00000000 */
19275+ 0x00, /* 00000000 */
19276+
19277+ /* 30 0x1e '^^' */
19278+ 0x00, /* 00000000 */
19279+ 0x00, /* 00000000 */
19280+ 0x00, /* 00000000 */
19281+ 0x00, /* 00000000 */
19282+ 0x10, /* 00010000 */
19283+ 0x38, /* 00111000 */
19284+ 0x38, /* 00111000 */
19285+ 0x7c, /* 01111100 */
19286+ 0x7c, /* 01111100 */
19287+ 0xfe, /* 11111110 */
19288+ 0xfe, /* 11111110 */
19289+ 0x00, /* 00000000 */
19290+ 0x00, /* 00000000 */
19291+ 0x00, /* 00000000 */
19292+ 0x00, /* 00000000 */
19293+ 0x00, /* 00000000 */
19294+
19295+ /* 31 0x1f '^_' */
19296+ 0x00, /* 00000000 */
19297+ 0x00, /* 00000000 */
19298+ 0x00, /* 00000000 */
19299+ 0x00, /* 00000000 */
19300+ 0xfe, /* 11111110 */
19301+ 0xfe, /* 11111110 */
19302+ 0x7c, /* 01111100 */
19303+ 0x7c, /* 01111100 */
19304+ 0x38, /* 00111000 */
19305+ 0x38, /* 00111000 */
19306+ 0x10, /* 00010000 */
19307+ 0x00, /* 00000000 */
19308+ 0x00, /* 00000000 */
19309+ 0x00, /* 00000000 */
19310+ 0x00, /* 00000000 */
19311+ 0x00, /* 00000000 */
19312+
19313+ /* 32 0x20 ' ' */
19314+ 0x00, /* 00000000 */
19315+ 0x00, /* 00000000 */
19316+ 0x00, /* 00000000 */
19317+ 0x00, /* 00000000 */
19318+ 0x00, /* 00000000 */
19319+ 0x00, /* 00000000 */
19320+ 0x00, /* 00000000 */
19321+ 0x00, /* 00000000 */
19322+ 0x00, /* 00000000 */
19323+ 0x00, /* 00000000 */
19324+ 0x00, /* 00000000 */
19325+ 0x00, /* 00000000 */
19326+ 0x00, /* 00000000 */
19327+ 0x00, /* 00000000 */
19328+ 0x00, /* 00000000 */
19329+ 0x00, /* 00000000 */
19330+
19331+ /* 33 0x21 '!' */
19332+ 0x00, /* 00000000 */
19333+ 0x00, /* 00000000 */
19334+ 0x18, /* 00011000 */
19335+ 0x3c, /* 00111100 */
19336+ 0x3c, /* 00111100 */
19337+ 0x3c, /* 00111100 */
19338+ 0x18, /* 00011000 */
19339+ 0x18, /* 00011000 */
19340+ 0x18, /* 00011000 */
19341+ 0x00, /* 00000000 */
19342+ 0x18, /* 00011000 */
19343+ 0x18, /* 00011000 */
19344+ 0x00, /* 00000000 */
19345+ 0x00, /* 00000000 */
19346+ 0x00, /* 00000000 */
19347+ 0x00, /* 00000000 */
19348+
19349+ /* 34 0x22 '"' */
19350+ 0x00, /* 00000000 */
19351+ 0x66, /* 01100110 */
19352+ 0x66, /* 01100110 */
19353+ 0x66, /* 01100110 */
19354+ 0x24, /* 00100100 */
19355+ 0x00, /* 00000000 */
19356+ 0x00, /* 00000000 */
19357+ 0x00, /* 00000000 */
19358+ 0x00, /* 00000000 */
19359+ 0x00, /* 00000000 */
19360+ 0x00, /* 00000000 */
19361+ 0x00, /* 00000000 */
19362+ 0x00, /* 00000000 */
19363+ 0x00, /* 00000000 */
19364+ 0x00, /* 00000000 */
19365+ 0x00, /* 00000000 */
19366+
19367+ /* 35 0x23 '#' */
19368+ 0x00, /* 00000000 */
19369+ 0x00, /* 00000000 */
19370+ 0x00, /* 00000000 */
19371+ 0x6c, /* 01101100 */
19372+ 0x6c, /* 01101100 */
19373+ 0xfe, /* 11111110 */
19374+ 0x6c, /* 01101100 */
19375+ 0x6c, /* 01101100 */
19376+ 0x6c, /* 01101100 */
19377+ 0xfe, /* 11111110 */
19378+ 0x6c, /* 01101100 */
19379+ 0x6c, /* 01101100 */
19380+ 0x00, /* 00000000 */
19381+ 0x00, /* 00000000 */
19382+ 0x00, /* 00000000 */
19383+ 0x00, /* 00000000 */
19384+
19385+ /* 36 0x24 '$' */
19386+ 0x18, /* 00011000 */
19387+ 0x18, /* 00011000 */
19388+ 0x7c, /* 01111100 */
19389+ 0xc6, /* 11000110 */
19390+ 0xc2, /* 11000010 */
19391+ 0xc0, /* 11000000 */
19392+ 0x7c, /* 01111100 */
19393+ 0x06, /* 00000110 */
19394+ 0x06, /* 00000110 */
19395+ 0x86, /* 10000110 */
19396+ 0xc6, /* 11000110 */
19397+ 0x7c, /* 01111100 */
19398+ 0x18, /* 00011000 */
19399+ 0x18, /* 00011000 */
19400+ 0x00, /* 00000000 */
19401+ 0x00, /* 00000000 */
19402+
19403+ /* 37 0x25 '%' */
19404+ 0x00, /* 00000000 */
19405+ 0x00, /* 00000000 */
19406+ 0x00, /* 00000000 */
19407+ 0x00, /* 00000000 */
19408+ 0xc2, /* 11000010 */
19409+ 0xc6, /* 11000110 */
19410+ 0x0c, /* 00001100 */
19411+ 0x18, /* 00011000 */
19412+ 0x30, /* 00110000 */
19413+ 0x60, /* 01100000 */
19414+ 0xc6, /* 11000110 */
19415+ 0x86, /* 10000110 */
19416+ 0x00, /* 00000000 */
19417+ 0x00, /* 00000000 */
19418+ 0x00, /* 00000000 */
19419+ 0x00, /* 00000000 */
19420+
19421+ /* 38 0x26 '&' */
19422+ 0x00, /* 00000000 */
19423+ 0x00, /* 00000000 */
19424+ 0x38, /* 00111000 */
19425+ 0x6c, /* 01101100 */
19426+ 0x6c, /* 01101100 */
19427+ 0x38, /* 00111000 */
19428+ 0x76, /* 01110110 */
19429+ 0xdc, /* 11011100 */
19430+ 0xcc, /* 11001100 */
19431+ 0xcc, /* 11001100 */
19432+ 0xcc, /* 11001100 */
19433+ 0x76, /* 01110110 */
19434+ 0x00, /* 00000000 */
19435+ 0x00, /* 00000000 */
19436+ 0x00, /* 00000000 */
19437+ 0x00, /* 00000000 */
19438+
19439+ /* 39 0x27 ''' */
19440+ 0x00, /* 00000000 */
19441+ 0x30, /* 00110000 */
19442+ 0x30, /* 00110000 */
19443+ 0x30, /* 00110000 */
19444+ 0x60, /* 01100000 */
19445+ 0x00, /* 00000000 */
19446+ 0x00, /* 00000000 */
19447+ 0x00, /* 00000000 */
19448+ 0x00, /* 00000000 */
19449+ 0x00, /* 00000000 */
19450+ 0x00, /* 00000000 */
19451+ 0x00, /* 00000000 */
19452+ 0x00, /* 00000000 */
19453+ 0x00, /* 00000000 */
19454+ 0x00, /* 00000000 */
19455+ 0x00, /* 00000000 */
19456+
19457+ /* 40 0x28 '(' */
19458+ 0x00, /* 00000000 */
19459+ 0x00, /* 00000000 */
19460+ 0x0c, /* 00001100 */
19461+ 0x18, /* 00011000 */
19462+ 0x30, /* 00110000 */
19463+ 0x30, /* 00110000 */
19464+ 0x30, /* 00110000 */
19465+ 0x30, /* 00110000 */
19466+ 0x30, /* 00110000 */
19467+ 0x30, /* 00110000 */
19468+ 0x18, /* 00011000 */
19469+ 0x0c, /* 00001100 */
19470+ 0x00, /* 00000000 */
19471+ 0x00, /* 00000000 */
19472+ 0x00, /* 00000000 */
19473+ 0x00, /* 00000000 */
19474+
19475+ /* 41 0x29 ')' */
19476+ 0x00, /* 00000000 */
19477+ 0x00, /* 00000000 */
19478+ 0x30, /* 00110000 */
19479+ 0x18, /* 00011000 */
19480+ 0x0c, /* 00001100 */
19481+ 0x0c, /* 00001100 */
19482+ 0x0c, /* 00001100 */
19483+ 0x0c, /* 00001100 */
19484+ 0x0c, /* 00001100 */
19485+ 0x0c, /* 00001100 */
19486+ 0x18, /* 00011000 */
19487+ 0x30, /* 00110000 */
19488+ 0x00, /* 00000000 */
19489+ 0x00, /* 00000000 */
19490+ 0x00, /* 00000000 */
19491+ 0x00, /* 00000000 */
19492+
19493+ /* 42 0x2a '*' */
19494+ 0x00, /* 00000000 */
19495+ 0x00, /* 00000000 */
19496+ 0x00, /* 00000000 */
19497+ 0x00, /* 00000000 */
19498+ 0x00, /* 00000000 */
19499+ 0x66, /* 01100110 */
19500+ 0x3c, /* 00111100 */
19501+ 0xff, /* 11111111 */
19502+ 0x3c, /* 00111100 */
19503+ 0x66, /* 01100110 */
19504+ 0x00, /* 00000000 */
19505+ 0x00, /* 00000000 */
19506+ 0x00, /* 00000000 */
19507+ 0x00, /* 00000000 */
19508+ 0x00, /* 00000000 */
19509+ 0x00, /* 00000000 */
19510+
19511+ /* 43 0x2b '+' */
19512+ 0x00, /* 00000000 */
19513+ 0x00, /* 00000000 */
19514+ 0x00, /* 00000000 */
19515+ 0x00, /* 00000000 */
19516+ 0x00, /* 00000000 */
19517+ 0x18, /* 00011000 */
19518+ 0x18, /* 00011000 */
19519+ 0x7e, /* 01111110 */
19520+ 0x18, /* 00011000 */
19521+ 0x18, /* 00011000 */
19522+ 0x00, /* 00000000 */
19523+ 0x00, /* 00000000 */
19524+ 0x00, /* 00000000 */
19525+ 0x00, /* 00000000 */
19526+ 0x00, /* 00000000 */
19527+ 0x00, /* 00000000 */
19528+
19529+ /* 44 0x2c ',' */
19530+ 0x00, /* 00000000 */
19531+ 0x00, /* 00000000 */
19532+ 0x00, /* 00000000 */
19533+ 0x00, /* 00000000 */
19534+ 0x00, /* 00000000 */
19535+ 0x00, /* 00000000 */
19536+ 0x00, /* 00000000 */
19537+ 0x00, /* 00000000 */
19538+ 0x00, /* 00000000 */
19539+ 0x18, /* 00011000 */
19540+ 0x18, /* 00011000 */
19541+ 0x18, /* 00011000 */
19542+ 0x30, /* 00110000 */
19543+ 0x00, /* 00000000 */
19544+ 0x00, /* 00000000 */
19545+ 0x00, /* 00000000 */
19546+
19547+ /* 45 0x2d '-' */
19548+ 0x00, /* 00000000 */
19549+ 0x00, /* 00000000 */
19550+ 0x00, /* 00000000 */
19551+ 0x00, /* 00000000 */
19552+ 0x00, /* 00000000 */
19553+ 0x00, /* 00000000 */
19554+ 0x00, /* 00000000 */
19555+ 0xfe, /* 11111110 */
19556+ 0x00, /* 00000000 */
19557+ 0x00, /* 00000000 */
19558+ 0x00, /* 00000000 */
19559+ 0x00, /* 00000000 */
19560+ 0x00, /* 00000000 */
19561+ 0x00, /* 00000000 */
19562+ 0x00, /* 00000000 */
19563+ 0x00, /* 00000000 */
19564+
19565+ /* 46 0x2e '.' */
19566+ 0x00, /* 00000000 */
19567+ 0x00, /* 00000000 */
19568+ 0x00, /* 00000000 */
19569+ 0x00, /* 00000000 */
19570+ 0x00, /* 00000000 */
19571+ 0x00, /* 00000000 */
19572+ 0x00, /* 00000000 */
19573+ 0x00, /* 00000000 */
19574+ 0x00, /* 00000000 */
19575+ 0x00, /* 00000000 */
19576+ 0x18, /* 00011000 */
19577+ 0x18, /* 00011000 */
19578+ 0x00, /* 00000000 */
19579+ 0x00, /* 00000000 */
19580+ 0x00, /* 00000000 */
19581+ 0x00, /* 00000000 */
19582+
19583+ /* 47 0x2f '/' */
19584+ 0x00, /* 00000000 */
19585+ 0x00, /* 00000000 */
19586+ 0x00, /* 00000000 */
19587+ 0x00, /* 00000000 */
19588+ 0x02, /* 00000010 */
19589+ 0x06, /* 00000110 */
19590+ 0x0c, /* 00001100 */
19591+ 0x18, /* 00011000 */
19592+ 0x30, /* 00110000 */
19593+ 0x60, /* 01100000 */
19594+ 0xc0, /* 11000000 */
19595+ 0x80, /* 10000000 */
19596+ 0x00, /* 00000000 */
19597+ 0x00, /* 00000000 */
19598+ 0x00, /* 00000000 */
19599+ 0x00, /* 00000000 */
19600+
19601+ /* 48 0x30 '0' */
19602+ 0x00, /* 00000000 */
19603+ 0x00, /* 00000000 */
19604+ 0x38, /* 00111000 */
19605+ 0x6c, /* 01101100 */
19606+ 0xc6, /* 11000110 */
19607+ 0xc6, /* 11000110 */
19608+ 0xd6, /* 11010110 */
19609+ 0xd6, /* 11010110 */
19610+ 0xc6, /* 11000110 */
19611+ 0xc6, /* 11000110 */
19612+ 0x6c, /* 01101100 */
19613+ 0x38, /* 00111000 */
19614+ 0x00, /* 00000000 */
19615+ 0x00, /* 00000000 */
19616+ 0x00, /* 00000000 */
19617+ 0x00, /* 00000000 */
19618+
19619+ /* 49 0x31 '1' */
19620+ 0x00, /* 00000000 */
19621+ 0x00, /* 00000000 */
19622+ 0x18, /* 00011000 */
19623+ 0x38, /* 00111000 */
19624+ 0x78, /* 01111000 */
19625+ 0x18, /* 00011000 */
19626+ 0x18, /* 00011000 */
19627+ 0x18, /* 00011000 */
19628+ 0x18, /* 00011000 */
19629+ 0x18, /* 00011000 */
19630+ 0x18, /* 00011000 */
19631+ 0x7e, /* 01111110 */
19632+ 0x00, /* 00000000 */
19633+ 0x00, /* 00000000 */
19634+ 0x00, /* 00000000 */
19635+ 0x00, /* 00000000 */
19636+
19637+ /* 50 0x32 '2' */
19638+ 0x00, /* 00000000 */
19639+ 0x00, /* 00000000 */
19640+ 0x7c, /* 01111100 */
19641+ 0xc6, /* 11000110 */
19642+ 0x06, /* 00000110 */
19643+ 0x0c, /* 00001100 */
19644+ 0x18, /* 00011000 */
19645+ 0x30, /* 00110000 */
19646+ 0x60, /* 01100000 */
19647+ 0xc0, /* 11000000 */
19648+ 0xc6, /* 11000110 */
19649+ 0xfe, /* 11111110 */
19650+ 0x00, /* 00000000 */
19651+ 0x00, /* 00000000 */
19652+ 0x00, /* 00000000 */
19653+ 0x00, /* 00000000 */
19654+
19655+ /* 51 0x33 '3' */
19656+ 0x00, /* 00000000 */
19657+ 0x00, /* 00000000 */
19658+ 0x7c, /* 01111100 */
19659+ 0xc6, /* 11000110 */
19660+ 0x06, /* 00000110 */
19661+ 0x06, /* 00000110 */
19662+ 0x3c, /* 00111100 */
19663+ 0x06, /* 00000110 */
19664+ 0x06, /* 00000110 */
19665+ 0x06, /* 00000110 */
19666+ 0xc6, /* 11000110 */
19667+ 0x7c, /* 01111100 */
19668+ 0x00, /* 00000000 */
19669+ 0x00, /* 00000000 */
19670+ 0x00, /* 00000000 */
19671+ 0x00, /* 00000000 */
19672+
19673+ /* 52 0x34 '4' */
19674+ 0x00, /* 00000000 */
19675+ 0x00, /* 00000000 */
19676+ 0x0c, /* 00001100 */
19677+ 0x1c, /* 00011100 */
19678+ 0x3c, /* 00111100 */
19679+ 0x6c, /* 01101100 */
19680+ 0xcc, /* 11001100 */
19681+ 0xfe, /* 11111110 */
19682+ 0x0c, /* 00001100 */
19683+ 0x0c, /* 00001100 */
19684+ 0x0c, /* 00001100 */
19685+ 0x1e, /* 00011110 */
19686+ 0x00, /* 00000000 */
19687+ 0x00, /* 00000000 */
19688+ 0x00, /* 00000000 */
19689+ 0x00, /* 00000000 */
19690+
19691+ /* 53 0x35 '5' */
19692+ 0x00, /* 00000000 */
19693+ 0x00, /* 00000000 */
19694+ 0xfe, /* 11111110 */
19695+ 0xc0, /* 11000000 */
19696+ 0xc0, /* 11000000 */
19697+ 0xc0, /* 11000000 */
19698+ 0xfc, /* 11111100 */
19699+ 0x06, /* 00000110 */
19700+ 0x06, /* 00000110 */
19701+ 0x06, /* 00000110 */
19702+ 0xc6, /* 11000110 */
19703+ 0x7c, /* 01111100 */
19704+ 0x00, /* 00000000 */
19705+ 0x00, /* 00000000 */
19706+ 0x00, /* 00000000 */
19707+ 0x00, /* 00000000 */
19708+
19709+ /* 54 0x36 '6' */
19710+ 0x00, /* 00000000 */
19711+ 0x00, /* 00000000 */
19712+ 0x38, /* 00111000 */
19713+ 0x60, /* 01100000 */
19714+ 0xc0, /* 11000000 */
19715+ 0xc0, /* 11000000 */
19716+ 0xfc, /* 11111100 */
19717+ 0xc6, /* 11000110 */
19718+ 0xc6, /* 11000110 */
19719+ 0xc6, /* 11000110 */
19720+ 0xc6, /* 11000110 */
19721+ 0x7c, /* 01111100 */
19722+ 0x00, /* 00000000 */
19723+ 0x00, /* 00000000 */
19724+ 0x00, /* 00000000 */
19725+ 0x00, /* 00000000 */
19726+
19727+ /* 55 0x37 '7' */
19728+ 0x00, /* 00000000 */
19729+ 0x00, /* 00000000 */
19730+ 0xfe, /* 11111110 */
19731+ 0xc6, /* 11000110 */
19732+ 0x06, /* 00000110 */
19733+ 0x06, /* 00000110 */
19734+ 0x0c, /* 00001100 */
19735+ 0x18, /* 00011000 */
19736+ 0x30, /* 00110000 */
19737+ 0x30, /* 00110000 */
19738+ 0x30, /* 00110000 */
19739+ 0x30, /* 00110000 */
19740+ 0x00, /* 00000000 */
19741+ 0x00, /* 00000000 */
19742+ 0x00, /* 00000000 */
19743+ 0x00, /* 00000000 */
19744+
19745+ /* 56 0x38 '8' */
19746+ 0x00, /* 00000000 */
19747+ 0x00, /* 00000000 */
19748+ 0x7c, /* 01111100 */
19749+ 0xc6, /* 11000110 */
19750+ 0xc6, /* 11000110 */
19751+ 0xc6, /* 11000110 */
19752+ 0x7c, /* 01111100 */
19753+ 0xc6, /* 11000110 */
19754+ 0xc6, /* 11000110 */
19755+ 0xc6, /* 11000110 */
19756+ 0xc6, /* 11000110 */
19757+ 0x7c, /* 01111100 */
19758+ 0x00, /* 00000000 */
19759+ 0x00, /* 00000000 */
19760+ 0x00, /* 00000000 */
19761+ 0x00, /* 00000000 */
19762+
19763+ /* 57 0x39 '9' */
19764+ 0x00, /* 00000000 */
19765+ 0x00, /* 00000000 */
19766+ 0x7c, /* 01111100 */
19767+ 0xc6, /* 11000110 */
19768+ 0xc6, /* 11000110 */
19769+ 0xc6, /* 11000110 */
19770+ 0x7e, /* 01111110 */
19771+ 0x06, /* 00000110 */
19772+ 0x06, /* 00000110 */
19773+ 0x06, /* 00000110 */
19774+ 0x0c, /* 00001100 */
19775+ 0x78, /* 01111000 */
19776+ 0x00, /* 00000000 */
19777+ 0x00, /* 00000000 */
19778+ 0x00, /* 00000000 */
19779+ 0x00, /* 00000000 */
19780+
19781+ /* 58 0x3a ':' */
19782+ 0x00, /* 00000000 */
19783+ 0x00, /* 00000000 */
19784+ 0x00, /* 00000000 */
19785+ 0x00, /* 00000000 */
19786+ 0x18, /* 00011000 */
19787+ 0x18, /* 00011000 */
19788+ 0x00, /* 00000000 */
19789+ 0x00, /* 00000000 */
19790+ 0x00, /* 00000000 */
19791+ 0x18, /* 00011000 */
19792+ 0x18, /* 00011000 */
19793+ 0x00, /* 00000000 */
19794+ 0x00, /* 00000000 */
19795+ 0x00, /* 00000000 */
19796+ 0x00, /* 00000000 */
19797+ 0x00, /* 00000000 */
19798+
19799+ /* 59 0x3b ';' */
19800+ 0x00, /* 00000000 */
19801+ 0x00, /* 00000000 */
19802+ 0x00, /* 00000000 */
19803+ 0x00, /* 00000000 */
19804+ 0x18, /* 00011000 */
19805+ 0x18, /* 00011000 */
19806+ 0x00, /* 00000000 */
19807+ 0x00, /* 00000000 */
19808+ 0x00, /* 00000000 */
19809+ 0x18, /* 00011000 */
19810+ 0x18, /* 00011000 */
19811+ 0x30, /* 00110000 */
19812+ 0x00, /* 00000000 */
19813+ 0x00, /* 00000000 */
19814+ 0x00, /* 00000000 */
19815+ 0x00, /* 00000000 */
19816+
19817+ /* 60 0x3c '<' */
19818+ 0x00, /* 00000000 */
19819+ 0x00, /* 00000000 */
19820+ 0x00, /* 00000000 */
19821+ 0x06, /* 00000110 */
19822+ 0x0c, /* 00001100 */
19823+ 0x18, /* 00011000 */
19824+ 0x30, /* 00110000 */
19825+ 0x60, /* 01100000 */
19826+ 0x30, /* 00110000 */
19827+ 0x18, /* 00011000 */
19828+ 0x0c, /* 00001100 */
19829+ 0x06, /* 00000110 */
19830+ 0x00, /* 00000000 */
19831+ 0x00, /* 00000000 */
19832+ 0x00, /* 00000000 */
19833+ 0x00, /* 00000000 */
19834+
19835+ /* 61 0x3d '=' */
19836+ 0x00, /* 00000000 */
19837+ 0x00, /* 00000000 */
19838+ 0x00, /* 00000000 */
19839+ 0x00, /* 00000000 */
19840+ 0x00, /* 00000000 */
19841+ 0x7e, /* 01111110 */
19842+ 0x00, /* 00000000 */
19843+ 0x00, /* 00000000 */
19844+ 0x7e, /* 01111110 */
19845+ 0x00, /* 00000000 */
19846+ 0x00, /* 00000000 */
19847+ 0x00, /* 00000000 */
19848+ 0x00, /* 00000000 */
19849+ 0x00, /* 00000000 */
19850+ 0x00, /* 00000000 */
19851+ 0x00, /* 00000000 */
19852+
19853+ /* 62 0x3e '>' */
19854+ 0x00, /* 00000000 */
19855+ 0x00, /* 00000000 */
19856+ 0x00, /* 00000000 */
19857+ 0x60, /* 01100000 */
19858+ 0x30, /* 00110000 */
19859+ 0x18, /* 00011000 */
19860+ 0x0c, /* 00001100 */
19861+ 0x06, /* 00000110 */
19862+ 0x0c, /* 00001100 */
19863+ 0x18, /* 00011000 */
19864+ 0x30, /* 00110000 */
19865+ 0x60, /* 01100000 */
19866+ 0x00, /* 00000000 */
19867+ 0x00, /* 00000000 */
19868+ 0x00, /* 00000000 */
19869+ 0x00, /* 00000000 */
19870+
19871+ /* 63 0x3f '?' */
19872+ 0x00, /* 00000000 */
19873+ 0x00, /* 00000000 */
19874+ 0x7c, /* 01111100 */
19875+ 0xc6, /* 11000110 */
19876+ 0xc6, /* 11000110 */
19877+ 0x0c, /* 00001100 */
19878+ 0x18, /* 00011000 */
19879+ 0x18, /* 00011000 */
19880+ 0x18, /* 00011000 */
19881+ 0x00, /* 00000000 */
19882+ 0x18, /* 00011000 */
19883+ 0x18, /* 00011000 */
19884+ 0x00, /* 00000000 */
19885+ 0x00, /* 00000000 */
19886+ 0x00, /* 00000000 */
19887+ 0x00, /* 00000000 */
19888+
19889+ /* 64 0x40 '@' */
19890+ 0x00, /* 00000000 */
19891+ 0x00, /* 00000000 */
19892+ 0x00, /* 00000000 */
19893+ 0x7c, /* 01111100 */
19894+ 0xc6, /* 11000110 */
19895+ 0xc6, /* 11000110 */
19896+ 0xde, /* 11011110 */
19897+ 0xde, /* 11011110 */
19898+ 0xde, /* 11011110 */
19899+ 0xdc, /* 11011100 */
19900+ 0xc0, /* 11000000 */
19901+ 0x7c, /* 01111100 */
19902+ 0x00, /* 00000000 */
19903+ 0x00, /* 00000000 */
19904+ 0x00, /* 00000000 */
19905+ 0x00, /* 00000000 */
19906+
19907+ /* 65 0x41 'A' */
19908+ 0x00, /* 00000000 */
19909+ 0x00, /* 00000000 */
19910+ 0x10, /* 00010000 */
19911+ 0x38, /* 00111000 */
19912+ 0x6c, /* 01101100 */
19913+ 0xc6, /* 11000110 */
19914+ 0xc6, /* 11000110 */
19915+ 0xfe, /* 11111110 */
19916+ 0xc6, /* 11000110 */
19917+ 0xc6, /* 11000110 */
19918+ 0xc6, /* 11000110 */
19919+ 0xc6, /* 11000110 */
19920+ 0x00, /* 00000000 */
19921+ 0x00, /* 00000000 */
19922+ 0x00, /* 00000000 */
19923+ 0x00, /* 00000000 */
19924+
19925+ /* 66 0x42 'B' */
19926+ 0x00, /* 00000000 */
19927+ 0x00, /* 00000000 */
19928+ 0xfc, /* 11111100 */
19929+ 0x66, /* 01100110 */
19930+ 0x66, /* 01100110 */
19931+ 0x66, /* 01100110 */
19932+ 0x7c, /* 01111100 */
19933+ 0x66, /* 01100110 */
19934+ 0x66, /* 01100110 */
19935+ 0x66, /* 01100110 */
19936+ 0x66, /* 01100110 */
19937+ 0xfc, /* 11111100 */
19938+ 0x00, /* 00000000 */
19939+ 0x00, /* 00000000 */
19940+ 0x00, /* 00000000 */
19941+ 0x00, /* 00000000 */
19942+
19943+ /* 67 0x43 'C' */
19944+ 0x00, /* 00000000 */
19945+ 0x00, /* 00000000 */
19946+ 0x3c, /* 00111100 */
19947+ 0x66, /* 01100110 */
19948+ 0xc2, /* 11000010 */
19949+ 0xc0, /* 11000000 */
19950+ 0xc0, /* 11000000 */
19951+ 0xc0, /* 11000000 */
19952+ 0xc0, /* 11000000 */
19953+ 0xc2, /* 11000010 */
19954+ 0x66, /* 01100110 */
19955+ 0x3c, /* 00111100 */
19956+ 0x00, /* 00000000 */
19957+ 0x00, /* 00000000 */
19958+ 0x00, /* 00000000 */
19959+ 0x00, /* 00000000 */
19960+
19961+ /* 68 0x44 'D' */
19962+ 0x00, /* 00000000 */
19963+ 0x00, /* 00000000 */
19964+ 0xf8, /* 11111000 */
19965+ 0x6c, /* 01101100 */
19966+ 0x66, /* 01100110 */
19967+ 0x66, /* 01100110 */
19968+ 0x66, /* 01100110 */
19969+ 0x66, /* 01100110 */
19970+ 0x66, /* 01100110 */
19971+ 0x66, /* 01100110 */
19972+ 0x6c, /* 01101100 */
19973+ 0xf8, /* 11111000 */
19974+ 0x00, /* 00000000 */
19975+ 0x00, /* 00000000 */
19976+ 0x00, /* 00000000 */
19977+ 0x00, /* 00000000 */
19978+
19979+ /* 69 0x45 'E' */
19980+ 0x00, /* 00000000 */
19981+ 0x00, /* 00000000 */
19982+ 0xfe, /* 11111110 */
19983+ 0x66, /* 01100110 */
19984+ 0x62, /* 01100010 */
19985+ 0x68, /* 01101000 */
19986+ 0x78, /* 01111000 */
19987+ 0x68, /* 01101000 */
19988+ 0x60, /* 01100000 */
19989+ 0x62, /* 01100010 */
19990+ 0x66, /* 01100110 */
19991+ 0xfe, /* 11111110 */
19992+ 0x00, /* 00000000 */
19993+ 0x00, /* 00000000 */
19994+ 0x00, /* 00000000 */
19995+ 0x00, /* 00000000 */
19996+
19997+ /* 70 0x46 'F' */
19998+ 0x00, /* 00000000 */
19999+ 0x00, /* 00000000 */
20000+ 0xfe, /* 11111110 */
20001+ 0x66, /* 01100110 */
20002+ 0x62, /* 01100010 */
20003+ 0x68, /* 01101000 */
20004+ 0x78, /* 01111000 */
20005+ 0x68, /* 01101000 */
20006+ 0x60, /* 01100000 */
20007+ 0x60, /* 01100000 */
20008+ 0x60, /* 01100000 */
20009+ 0xf0, /* 11110000 */
20010+ 0x00, /* 00000000 */
20011+ 0x00, /* 00000000 */
20012+ 0x00, /* 00000000 */
20013+ 0x00, /* 00000000 */
20014+
20015+ /* 71 0x47 'G' */
20016+ 0x00, /* 00000000 */
20017+ 0x00, /* 00000000 */
20018+ 0x3c, /* 00111100 */
20019+ 0x66, /* 01100110 */
20020+ 0xc2, /* 11000010 */
20021+ 0xc0, /* 11000000 */
20022+ 0xc0, /* 11000000 */
20023+ 0xde, /* 11011110 */
20024+ 0xc6, /* 11000110 */
20025+ 0xc6, /* 11000110 */
20026+ 0x66, /* 01100110 */
20027+ 0x3a, /* 00111010 */
20028+ 0x00, /* 00000000 */
20029+ 0x00, /* 00000000 */
20030+ 0x00, /* 00000000 */
20031+ 0x00, /* 00000000 */
20032+
20033+ /* 72 0x48 'H' */
20034+ 0x00, /* 00000000 */
20035+ 0x00, /* 00000000 */
20036+ 0xc6, /* 11000110 */
20037+ 0xc6, /* 11000110 */
20038+ 0xc6, /* 11000110 */
20039+ 0xc6, /* 11000110 */
20040+ 0xfe, /* 11111110 */
20041+ 0xc6, /* 11000110 */
20042+ 0xc6, /* 11000110 */
20043+ 0xc6, /* 11000110 */
20044+ 0xc6, /* 11000110 */
20045+ 0xc6, /* 11000110 */
20046+ 0x00, /* 00000000 */
20047+ 0x00, /* 00000000 */
20048+ 0x00, /* 00000000 */
20049+ 0x00, /* 00000000 */
20050+
20051+ /* 73 0x49 'I' */
20052+ 0x00, /* 00000000 */
20053+ 0x00, /* 00000000 */
20054+ 0x3c, /* 00111100 */
20055+ 0x18, /* 00011000 */
20056+ 0x18, /* 00011000 */
20057+ 0x18, /* 00011000 */
20058+ 0x18, /* 00011000 */
20059+ 0x18, /* 00011000 */
20060+ 0x18, /* 00011000 */
20061+ 0x18, /* 00011000 */
20062+ 0x18, /* 00011000 */
20063+ 0x3c, /* 00111100 */
20064+ 0x00, /* 00000000 */
20065+ 0x00, /* 00000000 */
20066+ 0x00, /* 00000000 */
20067+ 0x00, /* 00000000 */
20068+
20069+ /* 74 0x4a 'J' */
20070+ 0x00, /* 00000000 */
20071+ 0x00, /* 00000000 */
20072+ 0x1e, /* 00011110 */
20073+ 0x0c, /* 00001100 */
20074+ 0x0c, /* 00001100 */
20075+ 0x0c, /* 00001100 */
20076+ 0x0c, /* 00001100 */
20077+ 0x0c, /* 00001100 */
20078+ 0xcc, /* 11001100 */
20079+ 0xcc, /* 11001100 */
20080+ 0xcc, /* 11001100 */
20081+ 0x78, /* 01111000 */
20082+ 0x00, /* 00000000 */
20083+ 0x00, /* 00000000 */
20084+ 0x00, /* 00000000 */
20085+ 0x00, /* 00000000 */
20086+
20087+ /* 75 0x4b 'K' */
20088+ 0x00, /* 00000000 */
20089+ 0x00, /* 00000000 */
20090+ 0xe6, /* 11100110 */
20091+ 0x66, /* 01100110 */
20092+ 0x66, /* 01100110 */
20093+ 0x6c, /* 01101100 */
20094+ 0x78, /* 01111000 */
20095+ 0x78, /* 01111000 */
20096+ 0x6c, /* 01101100 */
20097+ 0x66, /* 01100110 */
20098+ 0x66, /* 01100110 */
20099+ 0xe6, /* 11100110 */
20100+ 0x00, /* 00000000 */
20101+ 0x00, /* 00000000 */
20102+ 0x00, /* 00000000 */
20103+ 0x00, /* 00000000 */
20104+
20105+ /* 76 0x4c 'L' */
20106+ 0x00, /* 00000000 */
20107+ 0x00, /* 00000000 */
20108+ 0xf0, /* 11110000 */
20109+ 0x60, /* 01100000 */
20110+ 0x60, /* 01100000 */
20111+ 0x60, /* 01100000 */
20112+ 0x60, /* 01100000 */
20113+ 0x60, /* 01100000 */
20114+ 0x60, /* 01100000 */
20115+ 0x62, /* 01100010 */
20116+ 0x66, /* 01100110 */
20117+ 0xfe, /* 11111110 */
20118+ 0x00, /* 00000000 */
20119+ 0x00, /* 00000000 */
20120+ 0x00, /* 00000000 */
20121+ 0x00, /* 00000000 */
20122+
20123+ /* 77 0x4d 'M' */
20124+ 0x00, /* 00000000 */
20125+ 0x00, /* 00000000 */
20126+ 0xc6, /* 11000110 */
20127+ 0xee, /* 11101110 */
20128+ 0xfe, /* 11111110 */
20129+ 0xfe, /* 11111110 */
20130+ 0xd6, /* 11010110 */
20131+ 0xc6, /* 11000110 */
20132+ 0xc6, /* 11000110 */
20133+ 0xc6, /* 11000110 */
20134+ 0xc6, /* 11000110 */
20135+ 0xc6, /* 11000110 */
20136+ 0x00, /* 00000000 */
20137+ 0x00, /* 00000000 */
20138+ 0x00, /* 00000000 */
20139+ 0x00, /* 00000000 */
20140+
20141+ /* 78 0x4e 'N' */
20142+ 0x00, /* 00000000 */
20143+ 0x00, /* 00000000 */
20144+ 0xc6, /* 11000110 */
20145+ 0xe6, /* 11100110 */
20146+ 0xf6, /* 11110110 */
20147+ 0xfe, /* 11111110 */
20148+ 0xde, /* 11011110 */
20149+ 0xce, /* 11001110 */
20150+ 0xc6, /* 11000110 */
20151+ 0xc6, /* 11000110 */
20152+ 0xc6, /* 11000110 */
20153+ 0xc6, /* 11000110 */
20154+ 0x00, /* 00000000 */
20155+ 0x00, /* 00000000 */
20156+ 0x00, /* 00000000 */
20157+ 0x00, /* 00000000 */
20158+
20159+ /* 79 0x4f 'O' */
20160+ 0x00, /* 00000000 */
20161+ 0x00, /* 00000000 */
20162+ 0x7c, /* 01111100 */
20163+ 0xc6, /* 11000110 */
20164+ 0xc6, /* 11000110 */
20165+ 0xc6, /* 11000110 */
20166+ 0xc6, /* 11000110 */
20167+ 0xc6, /* 11000110 */
20168+ 0xc6, /* 11000110 */
20169+ 0xc6, /* 11000110 */
20170+ 0xc6, /* 11000110 */
20171+ 0x7c, /* 01111100 */
20172+ 0x00, /* 00000000 */
20173+ 0x00, /* 00000000 */
20174+ 0x00, /* 00000000 */
20175+ 0x00, /* 00000000 */
20176+
20177+ /* 80 0x50 'P' */
20178+ 0x00, /* 00000000 */
20179+ 0x00, /* 00000000 */
20180+ 0xfc, /* 11111100 */
20181+ 0x66, /* 01100110 */
20182+ 0x66, /* 01100110 */
20183+ 0x66, /* 01100110 */
20184+ 0x7c, /* 01111100 */
20185+ 0x60, /* 01100000 */
20186+ 0x60, /* 01100000 */
20187+ 0x60, /* 01100000 */
20188+ 0x60, /* 01100000 */
20189+ 0xf0, /* 11110000 */
20190+ 0x00, /* 00000000 */
20191+ 0x00, /* 00000000 */
20192+ 0x00, /* 00000000 */
20193+ 0x00, /* 00000000 */
20194+
20195+ /* 81 0x51 'Q' */
20196+ 0x00, /* 00000000 */
20197+ 0x00, /* 00000000 */
20198+ 0x7c, /* 01111100 */
20199+ 0xc6, /* 11000110 */
20200+ 0xc6, /* 11000110 */
20201+ 0xc6, /* 11000110 */
20202+ 0xc6, /* 11000110 */
20203+ 0xc6, /* 11000110 */
20204+ 0xc6, /* 11000110 */
20205+ 0xd6, /* 11010110 */
20206+ 0xde, /* 11011110 */
20207+ 0x7c, /* 01111100 */
20208+ 0x0c, /* 00001100 */
20209+ 0x0e, /* 00001110 */
20210+ 0x00, /* 00000000 */
20211+ 0x00, /* 00000000 */
20212+
20213+ /* 82 0x52 'R' */
20214+ 0x00, /* 00000000 */
20215+ 0x00, /* 00000000 */
20216+ 0xfc, /* 11111100 */
20217+ 0x66, /* 01100110 */
20218+ 0x66, /* 01100110 */
20219+ 0x66, /* 01100110 */
20220+ 0x7c, /* 01111100 */
20221+ 0x6c, /* 01101100 */
20222+ 0x66, /* 01100110 */
20223+ 0x66, /* 01100110 */
20224+ 0x66, /* 01100110 */
20225+ 0xe6, /* 11100110 */
20226+ 0x00, /* 00000000 */
20227+ 0x00, /* 00000000 */
20228+ 0x00, /* 00000000 */
20229+ 0x00, /* 00000000 */
20230+
20231+ /* 83 0x53 'S' */
20232+ 0x00, /* 00000000 */
20233+ 0x00, /* 00000000 */
20234+ 0x7c, /* 01111100 */
20235+ 0xc6, /* 11000110 */
20236+ 0xc6, /* 11000110 */
20237+ 0x60, /* 01100000 */
20238+ 0x38, /* 00111000 */
20239+ 0x0c, /* 00001100 */
20240+ 0x06, /* 00000110 */
20241+ 0xc6, /* 11000110 */
20242+ 0xc6, /* 11000110 */
20243+ 0x7c, /* 01111100 */
20244+ 0x00, /* 00000000 */
20245+ 0x00, /* 00000000 */
20246+ 0x00, /* 00000000 */
20247+ 0x00, /* 00000000 */
20248+
20249+ /* 84 0x54 'T' */
20250+ 0x00, /* 00000000 */
20251+ 0x00, /* 00000000 */
20252+ 0x7e, /* 01111110 */
20253+ 0x7e, /* 01111110 */
20254+ 0x5a, /* 01011010 */
20255+ 0x18, /* 00011000 */
20256+ 0x18, /* 00011000 */
20257+ 0x18, /* 00011000 */
20258+ 0x18, /* 00011000 */
20259+ 0x18, /* 00011000 */
20260+ 0x18, /* 00011000 */
20261+ 0x3c, /* 00111100 */
20262+ 0x00, /* 00000000 */
20263+ 0x00, /* 00000000 */
20264+ 0x00, /* 00000000 */
20265+ 0x00, /* 00000000 */
20266+
20267+ /* 85 0x55 'U' */
20268+ 0x00, /* 00000000 */
20269+ 0x00, /* 00000000 */
20270+ 0xc6, /* 11000110 */
20271+ 0xc6, /* 11000110 */
20272+ 0xc6, /* 11000110 */
20273+ 0xc6, /* 11000110 */
20274+ 0xc6, /* 11000110 */
20275+ 0xc6, /* 11000110 */
20276+ 0xc6, /* 11000110 */
20277+ 0xc6, /* 11000110 */
20278+ 0xc6, /* 11000110 */
20279+ 0x7c, /* 01111100 */
20280+ 0x00, /* 00000000 */
20281+ 0x00, /* 00000000 */
20282+ 0x00, /* 00000000 */
20283+ 0x00, /* 00000000 */
20284+
20285+ /* 86 0x56 'V' */
20286+ 0x00, /* 00000000 */
20287+ 0x00, /* 00000000 */
20288+ 0xc6, /* 11000110 */
20289+ 0xc6, /* 11000110 */
20290+ 0xc6, /* 11000110 */
20291+ 0xc6, /* 11000110 */
20292+ 0xc6, /* 11000110 */
20293+ 0xc6, /* 11000110 */
20294+ 0xc6, /* 11000110 */
20295+ 0x6c, /* 01101100 */
20296+ 0x38, /* 00111000 */
20297+ 0x10, /* 00010000 */
20298+ 0x00, /* 00000000 */
20299+ 0x00, /* 00000000 */
20300+ 0x00, /* 00000000 */
20301+ 0x00, /* 00000000 */
20302+
20303+ /* 87 0x57 'W' */
20304+ 0x00, /* 00000000 */
20305+ 0x00, /* 00000000 */
20306+ 0xc6, /* 11000110 */
20307+ 0xc6, /* 11000110 */
20308+ 0xc6, /* 11000110 */
20309+ 0xc6, /* 11000110 */
20310+ 0xd6, /* 11010110 */
20311+ 0xd6, /* 11010110 */
20312+ 0xd6, /* 11010110 */
20313+ 0xfe, /* 11111110 */
20314+ 0xee, /* 11101110 */
20315+ 0x6c, /* 01101100 */
20316+ 0x00, /* 00000000 */
20317+ 0x00, /* 00000000 */
20318+ 0x00, /* 00000000 */
20319+ 0x00, /* 00000000 */
20320+
20321+ /* 88 0x58 'X' */
20322+ 0x00, /* 00000000 */
20323+ 0x00, /* 00000000 */
20324+ 0xc6, /* 11000110 */
20325+ 0xc6, /* 11000110 */
20326+ 0x6c, /* 01101100 */
20327+ 0x7c, /* 01111100 */
20328+ 0x38, /* 00111000 */
20329+ 0x38, /* 00111000 */
20330+ 0x7c, /* 01111100 */
20331+ 0x6c, /* 01101100 */
20332+ 0xc6, /* 11000110 */
20333+ 0xc6, /* 11000110 */
20334+ 0x00, /* 00000000 */
20335+ 0x00, /* 00000000 */
20336+ 0x00, /* 00000000 */
20337+ 0x00, /* 00000000 */
20338+
20339+ /* 89 0x59 'Y' */
20340+ 0x00, /* 00000000 */
20341+ 0x00, /* 00000000 */
20342+ 0x66, /* 01100110 */
20343+ 0x66, /* 01100110 */
20344+ 0x66, /* 01100110 */
20345+ 0x66, /* 01100110 */
20346+ 0x3c, /* 00111100 */
20347+ 0x18, /* 00011000 */
20348+ 0x18, /* 00011000 */
20349+ 0x18, /* 00011000 */
20350+ 0x18, /* 00011000 */
20351+ 0x3c, /* 00111100 */
20352+ 0x00, /* 00000000 */
20353+ 0x00, /* 00000000 */
20354+ 0x00, /* 00000000 */
20355+ 0x00, /* 00000000 */
20356+
20357+ /* 90 0x5a 'Z' */
20358+ 0x00, /* 00000000 */
20359+ 0x00, /* 00000000 */
20360+ 0xfe, /* 11111110 */
20361+ 0xc6, /* 11000110 */
20362+ 0x86, /* 10000110 */
20363+ 0x0c, /* 00001100 */
20364+ 0x18, /* 00011000 */
20365+ 0x30, /* 00110000 */
20366+ 0x60, /* 01100000 */
20367+ 0xc2, /* 11000010 */
20368+ 0xc6, /* 11000110 */
20369+ 0xfe, /* 11111110 */
20370+ 0x00, /* 00000000 */
20371+ 0x00, /* 00000000 */
20372+ 0x00, /* 00000000 */
20373+ 0x00, /* 00000000 */
20374+
20375+ /* 91 0x5b '[' */
20376+ 0x00, /* 00000000 */
20377+ 0x00, /* 00000000 */
20378+ 0x3c, /* 00111100 */
20379+ 0x30, /* 00110000 */
20380+ 0x30, /* 00110000 */
20381+ 0x30, /* 00110000 */
20382+ 0x30, /* 00110000 */
20383+ 0x30, /* 00110000 */
20384+ 0x30, /* 00110000 */
20385+ 0x30, /* 00110000 */
20386+ 0x30, /* 00110000 */
20387+ 0x3c, /* 00111100 */
20388+ 0x00, /* 00000000 */
20389+ 0x00, /* 00000000 */
20390+ 0x00, /* 00000000 */
20391+ 0x00, /* 00000000 */
20392+
20393+ /* 92 0x5c '\' */
20394+ 0x00, /* 00000000 */
20395+ 0x00, /* 00000000 */
20396+ 0x00, /* 00000000 */
20397+ 0x80, /* 10000000 */
20398+ 0xc0, /* 11000000 */
20399+ 0xe0, /* 11100000 */
20400+ 0x70, /* 01110000 */
20401+ 0x38, /* 00111000 */
20402+ 0x1c, /* 00011100 */
20403+ 0x0e, /* 00001110 */
20404+ 0x06, /* 00000110 */
20405+ 0x02, /* 00000010 */
20406+ 0x00, /* 00000000 */
20407+ 0x00, /* 00000000 */
20408+ 0x00, /* 00000000 */
20409+ 0x00, /* 00000000 */
20410+
20411+ /* 93 0x5d ']' */
20412+ 0x00, /* 00000000 */
20413+ 0x00, /* 00000000 */
20414+ 0x3c, /* 00111100 */
20415+ 0x0c, /* 00001100 */
20416+ 0x0c, /* 00001100 */
20417+ 0x0c, /* 00001100 */
20418+ 0x0c, /* 00001100 */
20419+ 0x0c, /* 00001100 */
20420+ 0x0c, /* 00001100 */
20421+ 0x0c, /* 00001100 */
20422+ 0x0c, /* 00001100 */
20423+ 0x3c, /* 00111100 */
20424+ 0x00, /* 00000000 */
20425+ 0x00, /* 00000000 */
20426+ 0x00, /* 00000000 */
20427+ 0x00, /* 00000000 */
20428+
20429+ /* 94 0x5e '^' */
20430+ 0x10, /* 00010000 */
20431+ 0x38, /* 00111000 */
20432+ 0x6c, /* 01101100 */
20433+ 0xc6, /* 11000110 */
20434+ 0x00, /* 00000000 */
20435+ 0x00, /* 00000000 */
20436+ 0x00, /* 00000000 */
20437+ 0x00, /* 00000000 */
20438+ 0x00, /* 00000000 */
20439+ 0x00, /* 00000000 */
20440+ 0x00, /* 00000000 */
20441+ 0x00, /* 00000000 */
20442+ 0x00, /* 00000000 */
20443+ 0x00, /* 00000000 */
20444+ 0x00, /* 00000000 */
20445+ 0x00, /* 00000000 */
20446+
20447+ /* 95 0x5f '_' */
20448+ 0x00, /* 00000000 */
20449+ 0x00, /* 00000000 */
20450+ 0x00, /* 00000000 */
20451+ 0x00, /* 00000000 */
20452+ 0x00, /* 00000000 */
20453+ 0x00, /* 00000000 */
20454+ 0x00, /* 00000000 */
20455+ 0x00, /* 00000000 */
20456+ 0x00, /* 00000000 */
20457+ 0x00, /* 00000000 */
20458+ 0x00, /* 00000000 */
20459+ 0x00, /* 00000000 */
20460+ 0x00, /* 00000000 */
20461+ 0xff, /* 11111111 */
20462+ 0x00, /* 00000000 */
20463+ 0x00, /* 00000000 */
20464+
20465+ /* 96 0x60 '`' */
20466+ 0x00, /* 00000000 */
20467+ 0x30, /* 00110000 */
20468+ 0x18, /* 00011000 */
20469+ 0x0c, /* 00001100 */
20470+ 0x00, /* 00000000 */
20471+ 0x00, /* 00000000 */
20472+ 0x00, /* 00000000 */
20473+ 0x00, /* 00000000 */
20474+ 0x00, /* 00000000 */
20475+ 0x00, /* 00000000 */
20476+ 0x00, /* 00000000 */
20477+ 0x00, /* 00000000 */
20478+ 0x00, /* 00000000 */
20479+ 0x00, /* 00000000 */
20480+ 0x00, /* 00000000 */
20481+ 0x00, /* 00000000 */
20482+
20483+ /* 97 0x61 'a' */
20484+ 0x00, /* 00000000 */
20485+ 0x00, /* 00000000 */
20486+ 0x00, /* 00000000 */
20487+ 0x00, /* 00000000 */
20488+ 0x00, /* 00000000 */
20489+ 0x78, /* 01111000 */
20490+ 0x0c, /* 00001100 */
20491+ 0x7c, /* 01111100 */
20492+ 0xcc, /* 11001100 */
20493+ 0xcc, /* 11001100 */
20494+ 0xcc, /* 11001100 */
20495+ 0x76, /* 01110110 */
20496+ 0x00, /* 00000000 */
20497+ 0x00, /* 00000000 */
20498+ 0x00, /* 00000000 */
20499+ 0x00, /* 00000000 */
20500+
20501+ /* 98 0x62 'b' */
20502+ 0x00, /* 00000000 */
20503+ 0x00, /* 00000000 */
20504+ 0xe0, /* 11100000 */
20505+ 0x60, /* 01100000 */
20506+ 0x60, /* 01100000 */
20507+ 0x78, /* 01111000 */
20508+ 0x6c, /* 01101100 */
20509+ 0x66, /* 01100110 */
20510+ 0x66, /* 01100110 */
20511+ 0x66, /* 01100110 */
20512+ 0x66, /* 01100110 */
20513+ 0x7c, /* 01111100 */
20514+ 0x00, /* 00000000 */
20515+ 0x00, /* 00000000 */
20516+ 0x00, /* 00000000 */
20517+ 0x00, /* 00000000 */
20518+
20519+ /* 99 0x63 'c' */
20520+ 0x00, /* 00000000 */
20521+ 0x00, /* 00000000 */
20522+ 0x00, /* 00000000 */
20523+ 0x00, /* 00000000 */
20524+ 0x00, /* 00000000 */
20525+ 0x7c, /* 01111100 */
20526+ 0xc6, /* 11000110 */
20527+ 0xc0, /* 11000000 */
20528+ 0xc0, /* 11000000 */
20529+ 0xc0, /* 11000000 */
20530+ 0xc6, /* 11000110 */
20531+ 0x7c, /* 01111100 */
20532+ 0x00, /* 00000000 */
20533+ 0x00, /* 00000000 */
20534+ 0x00, /* 00000000 */
20535+ 0x00, /* 00000000 */
20536+
20537+ /* 100 0x64 'd' */
20538+ 0x00, /* 00000000 */
20539+ 0x00, /* 00000000 */
20540+ 0x1c, /* 00011100 */
20541+ 0x0c, /* 00001100 */
20542+ 0x0c, /* 00001100 */
20543+ 0x3c, /* 00111100 */
20544+ 0x6c, /* 01101100 */
20545+ 0xcc, /* 11001100 */
20546+ 0xcc, /* 11001100 */
20547+ 0xcc, /* 11001100 */
20548+ 0xcc, /* 11001100 */
20549+ 0x76, /* 01110110 */
20550+ 0x00, /* 00000000 */
20551+ 0x00, /* 00000000 */
20552+ 0x00, /* 00000000 */
20553+ 0x00, /* 00000000 */
20554+
20555+ /* 101 0x65 'e' */
20556+ 0x00, /* 00000000 */
20557+ 0x00, /* 00000000 */
20558+ 0x00, /* 00000000 */
20559+ 0x00, /* 00000000 */
20560+ 0x00, /* 00000000 */
20561+ 0x7c, /* 01111100 */
20562+ 0xc6, /* 11000110 */
20563+ 0xfe, /* 11111110 */
20564+ 0xc0, /* 11000000 */
20565+ 0xc0, /* 11000000 */
20566+ 0xc6, /* 11000110 */
20567+ 0x7c, /* 01111100 */
20568+ 0x00, /* 00000000 */
20569+ 0x00, /* 00000000 */
20570+ 0x00, /* 00000000 */
20571+ 0x00, /* 00000000 */
20572+
20573+ /* 102 0x66 'f' */
20574+ 0x00, /* 00000000 */
20575+ 0x00, /* 00000000 */
20576+ 0x1c, /* 00011100 */
20577+ 0x36, /* 00110110 */
20578+ 0x32, /* 00110010 */
20579+ 0x30, /* 00110000 */
20580+ 0x78, /* 01111000 */
20581+ 0x30, /* 00110000 */
20582+ 0x30, /* 00110000 */
20583+ 0x30, /* 00110000 */
20584+ 0x30, /* 00110000 */
20585+ 0x78, /* 01111000 */
20586+ 0x00, /* 00000000 */
20587+ 0x00, /* 00000000 */
20588+ 0x00, /* 00000000 */
20589+ 0x00, /* 00000000 */
20590+
20591+ /* 103 0x67 'g' */
20592+ 0x00, /* 00000000 */
20593+ 0x00, /* 00000000 */
20594+ 0x00, /* 00000000 */
20595+ 0x00, /* 00000000 */
20596+ 0x00, /* 00000000 */
20597+ 0x76, /* 01110110 */
20598+ 0xcc, /* 11001100 */
20599+ 0xcc, /* 11001100 */
20600+ 0xcc, /* 11001100 */
20601+ 0xcc, /* 11001100 */
20602+ 0xcc, /* 11001100 */
20603+ 0x7c, /* 01111100 */
20604+ 0x0c, /* 00001100 */
20605+ 0xcc, /* 11001100 */
20606+ 0x78, /* 01111000 */
20607+ 0x00, /* 00000000 */
20608+
20609+ /* 104 0x68 'h' */
20610+ 0x00, /* 00000000 */
20611+ 0x00, /* 00000000 */
20612+ 0xe0, /* 11100000 */
20613+ 0x60, /* 01100000 */
20614+ 0x60, /* 01100000 */
20615+ 0x6c, /* 01101100 */
20616+ 0x76, /* 01110110 */
20617+ 0x66, /* 01100110 */
20618+ 0x66, /* 01100110 */
20619+ 0x66, /* 01100110 */
20620+ 0x66, /* 01100110 */
20621+ 0xe6, /* 11100110 */
20622+ 0x00, /* 00000000 */
20623+ 0x00, /* 00000000 */
20624+ 0x00, /* 00000000 */
20625+ 0x00, /* 00000000 */
20626+
20627+ /* 105 0x69 'i' */
20628+ 0x00, /* 00000000 */
20629+ 0x00, /* 00000000 */
20630+ 0x18, /* 00011000 */
20631+ 0x18, /* 00011000 */
20632+ 0x00, /* 00000000 */
20633+ 0x38, /* 00111000 */
20634+ 0x18, /* 00011000 */
20635+ 0x18, /* 00011000 */
20636+ 0x18, /* 00011000 */
20637+ 0x18, /* 00011000 */
20638+ 0x18, /* 00011000 */
20639+ 0x3c, /* 00111100 */
20640+ 0x00, /* 00000000 */
20641+ 0x00, /* 00000000 */
20642+ 0x00, /* 00000000 */
20643+ 0x00, /* 00000000 */
20644+
20645+ /* 106 0x6a 'j' */
20646+ 0x00, /* 00000000 */
20647+ 0x00, /* 00000000 */
20648+ 0x06, /* 00000110 */
20649+ 0x06, /* 00000110 */
20650+ 0x00, /* 00000000 */
20651+ 0x0e, /* 00001110 */
20652+ 0x06, /* 00000110 */
20653+ 0x06, /* 00000110 */
20654+ 0x06, /* 00000110 */
20655+ 0x06, /* 00000110 */
20656+ 0x06, /* 00000110 */
20657+ 0x06, /* 00000110 */
20658+ 0x66, /* 01100110 */
20659+ 0x66, /* 01100110 */
20660+ 0x3c, /* 00111100 */
20661+ 0x00, /* 00000000 */
20662+
20663+ /* 107 0x6b 'k' */
20664+ 0x00, /* 00000000 */
20665+ 0x00, /* 00000000 */
20666+ 0xe0, /* 11100000 */
20667+ 0x60, /* 01100000 */
20668+ 0x60, /* 01100000 */
20669+ 0x66, /* 01100110 */
20670+ 0x6c, /* 01101100 */
20671+ 0x78, /* 01111000 */
20672+ 0x78, /* 01111000 */
20673+ 0x6c, /* 01101100 */
20674+ 0x66, /* 01100110 */
20675+ 0xe6, /* 11100110 */
20676+ 0x00, /* 00000000 */
20677+ 0x00, /* 00000000 */
20678+ 0x00, /* 00000000 */
20679+ 0x00, /* 00000000 */
20680+
20681+ /* 108 0x6c 'l' */
20682+ 0x00, /* 00000000 */
20683+ 0x00, /* 00000000 */
20684+ 0x38, /* 00111000 */
20685+ 0x18, /* 00011000 */
20686+ 0x18, /* 00011000 */
20687+ 0x18, /* 00011000 */
20688+ 0x18, /* 00011000 */
20689+ 0x18, /* 00011000 */
20690+ 0x18, /* 00011000 */
20691+ 0x18, /* 00011000 */
20692+ 0x18, /* 00011000 */
20693+ 0x3c, /* 00111100 */
20694+ 0x00, /* 00000000 */
20695+ 0x00, /* 00000000 */
20696+ 0x00, /* 00000000 */
20697+ 0x00, /* 00000000 */
20698+
20699+ /* 109 0x6d 'm' */
20700+ 0x00, /* 00000000 */
20701+ 0x00, /* 00000000 */
20702+ 0x00, /* 00000000 */
20703+ 0x00, /* 00000000 */
20704+ 0x00, /* 00000000 */
20705+ 0xec, /* 11101100 */
20706+ 0xfe, /* 11111110 */
20707+ 0xd6, /* 11010110 */
20708+ 0xd6, /* 11010110 */
20709+ 0xd6, /* 11010110 */
20710+ 0xd6, /* 11010110 */
20711+ 0xc6, /* 11000110 */
20712+ 0x00, /* 00000000 */
20713+ 0x00, /* 00000000 */
20714+ 0x00, /* 00000000 */
20715+ 0x00, /* 00000000 */
20716+
20717+ /* 110 0x6e 'n' */
20718+ 0x00, /* 00000000 */
20719+ 0x00, /* 00000000 */
20720+ 0x00, /* 00000000 */
20721+ 0x00, /* 00000000 */
20722+ 0x00, /* 00000000 */
20723+ 0xdc, /* 11011100 */
20724+ 0x66, /* 01100110 */
20725+ 0x66, /* 01100110 */
20726+ 0x66, /* 01100110 */
20727+ 0x66, /* 01100110 */
20728+ 0x66, /* 01100110 */
20729+ 0x66, /* 01100110 */
20730+ 0x00, /* 00000000 */
20731+ 0x00, /* 00000000 */
20732+ 0x00, /* 00000000 */
20733+ 0x00, /* 00000000 */
20734+
20735+ /* 111 0x6f 'o' */
20736+ 0x00, /* 00000000 */
20737+ 0x00, /* 00000000 */
20738+ 0x00, /* 00000000 */
20739+ 0x00, /* 00000000 */
20740+ 0x00, /* 00000000 */
20741+ 0x7c, /* 01111100 */
20742+ 0xc6, /* 11000110 */
20743+ 0xc6, /* 11000110 */
20744+ 0xc6, /* 11000110 */
20745+ 0xc6, /* 11000110 */
20746+ 0xc6, /* 11000110 */
20747+ 0x7c, /* 01111100 */
20748+ 0x00, /* 00000000 */
20749+ 0x00, /* 00000000 */
20750+ 0x00, /* 00000000 */
20751+ 0x00, /* 00000000 */
20752+
20753+ /* 112 0x70 'p' */
20754+ 0x00, /* 00000000 */
20755+ 0x00, /* 00000000 */
20756+ 0x00, /* 00000000 */
20757+ 0x00, /* 00000000 */
20758+ 0x00, /* 00000000 */
20759+ 0xdc, /* 11011100 */
20760+ 0x66, /* 01100110 */
20761+ 0x66, /* 01100110 */
20762+ 0x66, /* 01100110 */
20763+ 0x66, /* 01100110 */
20764+ 0x66, /* 01100110 */
20765+ 0x7c, /* 01111100 */
20766+ 0x60, /* 01100000 */
20767+ 0x60, /* 01100000 */
20768+ 0xf0, /* 11110000 */
20769+ 0x00, /* 00000000 */
20770+
20771+ /* 113 0x71 'q' */
20772+ 0x00, /* 00000000 */
20773+ 0x00, /* 00000000 */
20774+ 0x00, /* 00000000 */
20775+ 0x00, /* 00000000 */
20776+ 0x00, /* 00000000 */
20777+ 0x76, /* 01110110 */
20778+ 0xcc, /* 11001100 */
20779+ 0xcc, /* 11001100 */
20780+ 0xcc, /* 11001100 */
20781+ 0xcc, /* 11001100 */
20782+ 0xcc, /* 11001100 */
20783+ 0x7c, /* 01111100 */
20784+ 0x0c, /* 00001100 */
20785+ 0x0c, /* 00001100 */
20786+ 0x1e, /* 00011110 */
20787+ 0x00, /* 00000000 */
20788+
20789+ /* 114 0x72 'r' */
20790+ 0x00, /* 00000000 */
20791+ 0x00, /* 00000000 */
20792+ 0x00, /* 00000000 */
20793+ 0x00, /* 00000000 */
20794+ 0x00, /* 00000000 */
20795+ 0xdc, /* 11011100 */
20796+ 0x76, /* 01110110 */
20797+ 0x66, /* 01100110 */
20798+ 0x60, /* 01100000 */
20799+ 0x60, /* 01100000 */
20800+ 0x60, /* 01100000 */
20801+ 0xf0, /* 11110000 */
20802+ 0x00, /* 00000000 */
20803+ 0x00, /* 00000000 */
20804+ 0x00, /* 00000000 */
20805+ 0x00, /* 00000000 */
20806+
20807+ /* 115 0x73 's' */
20808+ 0x00, /* 00000000 */
20809+ 0x00, /* 00000000 */
20810+ 0x00, /* 00000000 */
20811+ 0x00, /* 00000000 */
20812+ 0x00, /* 00000000 */
20813+ 0x7c, /* 01111100 */
20814+ 0xc6, /* 11000110 */
20815+ 0x60, /* 01100000 */
20816+ 0x38, /* 00111000 */
20817+ 0x0c, /* 00001100 */
20818+ 0xc6, /* 11000110 */
20819+ 0x7c, /* 01111100 */
20820+ 0x00, /* 00000000 */
20821+ 0x00, /* 00000000 */
20822+ 0x00, /* 00000000 */
20823+ 0x00, /* 00000000 */
20824+
20825+ /* 116 0x74 't' */
20826+ 0x00, /* 00000000 */
20827+ 0x00, /* 00000000 */
20828+ 0x10, /* 00010000 */
20829+ 0x30, /* 00110000 */
20830+ 0x30, /* 00110000 */
20831+ 0xfc, /* 11111100 */
20832+ 0x30, /* 00110000 */
20833+ 0x30, /* 00110000 */
20834+ 0x30, /* 00110000 */
20835+ 0x30, /* 00110000 */
20836+ 0x36, /* 00110110 */
20837+ 0x1c, /* 00011100 */
20838+ 0x00, /* 00000000 */
20839+ 0x00, /* 00000000 */
20840+ 0x00, /* 00000000 */
20841+ 0x00, /* 00000000 */
20842+
20843+ /* 117 0x75 'u' */
20844+ 0x00, /* 00000000 */
20845+ 0x00, /* 00000000 */
20846+ 0x00, /* 00000000 */
20847+ 0x00, /* 00000000 */
20848+ 0x00, /* 00000000 */
20849+ 0xcc, /* 11001100 */
20850+ 0xcc, /* 11001100 */
20851+ 0xcc, /* 11001100 */
20852+ 0xcc, /* 11001100 */
20853+ 0xcc, /* 11001100 */
20854+ 0xcc, /* 11001100 */
20855+ 0x76, /* 01110110 */
20856+ 0x00, /* 00000000 */
20857+ 0x00, /* 00000000 */
20858+ 0x00, /* 00000000 */
20859+ 0x00, /* 00000000 */
20860+
20861+ /* 118 0x76 'v' */
20862+ 0x00, /* 00000000 */
20863+ 0x00, /* 00000000 */
20864+ 0x00, /* 00000000 */
20865+ 0x00, /* 00000000 */
20866+ 0x00, /* 00000000 */
20867+ 0xc6, /* 11000110 */
20868+ 0xc6, /* 11000110 */
20869+ 0xc6, /* 11000110 */
20870+ 0xc6, /* 11000110 */
20871+ 0xc6, /* 11000110 */
20872+ 0x6c, /* 01101100 */
20873+ 0x38, /* 00111000 */
20874+ 0x00, /* 00000000 */
20875+ 0x00, /* 00000000 */
20876+ 0x00, /* 00000000 */
20877+ 0x00, /* 00000000 */
20878+
20879+ /* 119 0x77 'w' */
20880+ 0x00, /* 00000000 */
20881+ 0x00, /* 00000000 */
20882+ 0x00, /* 00000000 */
20883+ 0x00, /* 00000000 */
20884+ 0x00, /* 00000000 */
20885+ 0xc6, /* 11000110 */
20886+ 0xc6, /* 11000110 */
20887+ 0xd6, /* 11010110 */
20888+ 0xd6, /* 11010110 */
20889+ 0xd6, /* 11010110 */
20890+ 0xfe, /* 11111110 */
20891+ 0x6c, /* 01101100 */
20892+ 0x00, /* 00000000 */
20893+ 0x00, /* 00000000 */
20894+ 0x00, /* 00000000 */
20895+ 0x00, /* 00000000 */
20896+
20897+ /* 120 0x78 'x' */
20898+ 0x00, /* 00000000 */
20899+ 0x00, /* 00000000 */
20900+ 0x00, /* 00000000 */
20901+ 0x00, /* 00000000 */
20902+ 0x00, /* 00000000 */
20903+ 0xc6, /* 11000110 */
20904+ 0x6c, /* 01101100 */
20905+ 0x38, /* 00111000 */
20906+ 0x38, /* 00111000 */
20907+ 0x38, /* 00111000 */
20908+ 0x6c, /* 01101100 */
20909+ 0xc6, /* 11000110 */
20910+ 0x00, /* 00000000 */
20911+ 0x00, /* 00000000 */
20912+ 0x00, /* 00000000 */
20913+ 0x00, /* 00000000 */
20914+
20915+ /* 121 0x79 'y' */
20916+ 0x00, /* 00000000 */
20917+ 0x00, /* 00000000 */
20918+ 0x00, /* 00000000 */
20919+ 0x00, /* 00000000 */
20920+ 0x00, /* 00000000 */
20921+ 0xc6, /* 11000110 */
20922+ 0xc6, /* 11000110 */
20923+ 0xc6, /* 11000110 */
20924+ 0xc6, /* 11000110 */
20925+ 0xc6, /* 11000110 */
20926+ 0xc6, /* 11000110 */
20927+ 0x7e, /* 01111110 */
20928+ 0x06, /* 00000110 */
20929+ 0x0c, /* 00001100 */
20930+ 0xf8, /* 11111000 */
20931+ 0x00, /* 00000000 */
20932+
20933+ /* 122 0x7a 'z' */
20934+ 0x00, /* 00000000 */
20935+ 0x00, /* 00000000 */
20936+ 0x00, /* 00000000 */
20937+ 0x00, /* 00000000 */
20938+ 0x00, /* 00000000 */
20939+ 0xfe, /* 11111110 */
20940+ 0xcc, /* 11001100 */
20941+ 0x18, /* 00011000 */
20942+ 0x30, /* 00110000 */
20943+ 0x60, /* 01100000 */
20944+ 0xc6, /* 11000110 */
20945+ 0xfe, /* 11111110 */
20946+ 0x00, /* 00000000 */
20947+ 0x00, /* 00000000 */
20948+ 0x00, /* 00000000 */
20949+ 0x00, /* 00000000 */
20950+
20951+ /* 123 0x7b '{' */
20952+ 0x00, /* 00000000 */
20953+ 0x00, /* 00000000 */
20954+ 0x0e, /* 00001110 */
20955+ 0x18, /* 00011000 */
20956+ 0x18, /* 00011000 */
20957+ 0x18, /* 00011000 */
20958+ 0x70, /* 01110000 */
20959+ 0x18, /* 00011000 */
20960+ 0x18, /* 00011000 */
20961+ 0x18, /* 00011000 */
20962+ 0x18, /* 00011000 */
20963+ 0x0e, /* 00001110 */
20964+ 0x00, /* 00000000 */
20965+ 0x00, /* 00000000 */
20966+ 0x00, /* 00000000 */
20967+ 0x00, /* 00000000 */
20968+
20969+ /* 124 0x7c '|' */
20970+ 0x00, /* 00000000 */
20971+ 0x00, /* 00000000 */
20972+ 0x18, /* 00011000 */
20973+ 0x18, /* 00011000 */
20974+ 0x18, /* 00011000 */
20975+ 0x18, /* 00011000 */
20976+ 0x18, /* 00011000 */
20977+ 0x18, /* 00011000 */
20978+ 0x18, /* 00011000 */
20979+ 0x18, /* 00011000 */
20980+ 0x18, /* 00011000 */
20981+ 0x18, /* 00011000 */
20982+ 0x00, /* 00000000 */
20983+ 0x00, /* 00000000 */
20984+ 0x00, /* 00000000 */
20985+ 0x00, /* 00000000 */
20986+
20987+ /* 125 0x7d '}' */
20988+ 0x00, /* 00000000 */
20989+ 0x00, /* 00000000 */
20990+ 0x70, /* 01110000 */
20991+ 0x18, /* 00011000 */
20992+ 0x18, /* 00011000 */
20993+ 0x18, /* 00011000 */
20994+ 0x0e, /* 00001110 */
20995+ 0x18, /* 00011000 */
20996+ 0x18, /* 00011000 */
20997+ 0x18, /* 00011000 */
20998+ 0x18, /* 00011000 */
20999+ 0x70, /* 01110000 */
21000+ 0x00, /* 00000000 */
21001+ 0x00, /* 00000000 */
21002+ 0x00, /* 00000000 */
21003+ 0x00, /* 00000000 */
21004+
21005+ /* 126 0x7e '~' */
21006+ 0x00, /* 00000000 */
21007+ 0x76, /* 01110110 */
21008+ 0xdc, /* 11011100 */
21009+ 0x00, /* 00000000 */
21010+ 0x00, /* 00000000 */
21011+ 0x00, /* 00000000 */
21012+ 0x00, /* 00000000 */
21013+ 0x00, /* 00000000 */
21014+ 0x00, /* 00000000 */
21015+ 0x00, /* 00000000 */
21016+ 0x00, /* 00000000 */
21017+ 0x00, /* 00000000 */
21018+ 0x00, /* 00000000 */
21019+ 0x00, /* 00000000 */
21020+ 0x00, /* 00000000 */
21021+ 0x00, /* 00000000 */
21022+
21023+ /* 127 0x7f '\7f' */
21024+ 0x00, /* 00000000 */
21025+ 0x00, /* 00000000 */
21026+ 0x00, /* 00000000 */
21027+ 0x00, /* 00000000 */
21028+ 0x10, /* 00010000 */
21029+ 0x38, /* 00111000 */
21030+ 0x6c, /* 01101100 */
21031+ 0xc6, /* 11000110 */
21032+ 0xc6, /* 11000110 */
21033+ 0xc6, /* 11000110 */
21034+ 0xfe, /* 11111110 */
21035+ 0x00, /* 00000000 */
21036+ 0x00, /* 00000000 */
21037+ 0x00, /* 00000000 */
21038+ 0x00, /* 00000000 */
21039+ 0x00, /* 00000000 */
21040+
21041