diff --git a/docs/grub.texi b/docs/grub.texi index 027d7db94..84e149474 100644 --- a/docs/grub.texi +++ b/docs/grub.texi @@ -979,7 +979,11 @@ where to find Stage 2, and the Stage 2 has to know where to find its configuration file (if Stage 2 doesn't have a configuration file, it drops into the command-line interface and waits for a user command). -Here is the memory map of the various components: +Here is the memory map of the various components +@footnote{Currently GRUB does not use the extended memory for itself, +since it is used to load an operating system. But we are planning to use +it for GRUB itself in the future by @dfn{lazy loading}. Ask okuji for +more information.}: @table @asis @item 0 to 4K-1 @@ -1141,19 +1145,346 @@ which address range should be treated by operating systems. @node Query System Address Map @subsection INT 15H, AX=E820h interrupt call -mem64mb.html +Real mode only. + +This call returns a memory map of all the installed @sc{ram}, and of +physical memory ranges reserved by the BIOS. The address map is returned +by making successive calls to this API, each returning one "run" of +physical address information. Each run has a type which dictates how +this run of physical address range should be treated by the operating +system. + +If the information returned from INT 15h, AX=E820h in some way differs +from INT 15h, AX=E801h (@pxref{Get Large Memory Size}) or INT 15h AH=88h +(@pxref{Get Extended Memory Size}), then the information returned from +E820h supersedes what is returned from these older interfaces. This +allows the BIOS to return whatever information it wishes to for +compatibility reasons. + +Input: + +@multitable @columnfractions .15 .25 .6 +@item @code{EAX} @tab Function Code @tab E820h + +@item @code{EBX} @tab Continuation @tab Contains the @dfn{continuation +value} to get the next run of physical memory. This is the value +returned by a previous call to this routine. If this is the first call, +@code{EBX} must contain zero. + +@item @code{ES:DI} @tab Buffer Pointer @tab Pointer to an Address Range +Descriptor structure which the BIOS is to fill in. + +@item @code{ECX} @tab Buffer Size @tab The length in bytes of the +structure passed to the BIOS. The BIOS will fill in at most @code{ECX} +bytes of the structure or however much of the structure the BIOS +implements. The minimum size which must be supported by both the BIOS +and the caller is 20 bytes. Future implementations may extend this +structure. + +@item @code{EDX} @tab Signature @tab @samp{SMAP} - Used by the BIOS to +verify the caller is requesting the system map information to be +returned in @code{ES:DI}. +@end multitable + +Output: + +@multitable @columnfractions 0.15 0.25 0.6 +@item @code{CF} @tab Carry Flag @tab Non-Carry - indicates no error + +@item @code{EAX} @tab Signature @tab @samp{SMAP} - Signature to verify +correct BIOS revision. + +@item @code{ES:DI} @tab Buffer Pointer @tab Returned Address Range +Descriptor pointer. Same value as on input. + +@item @code{ECX} @tab Buffer Size @tab Number of bytes returned by the +BIOS in the address range descriptor. The minimum size structure +returned by the BIOS is 20 bytes. + +@item @code{EBX} @tab Continuation @tab Contains the continuation value +to get the next address descriptor. The actual significance of the +continuation value is up to the discretion of the BIOS. The caller must +pass the continuation value unchanged as input to the next iteration of +the E820h call in order to get the next Address Range Descriptor. A +return value of zero means that this is the last descriptor. Note that +the BIOS indicate that the last valid descriptor has been returned by +either returning a zero as the continuaition value, or by returning +carry. +@end multitable + +The Address Range Descriptor Structure is: + +@multitable @columnfractions 0.25 0.3 0.45 +@item Offset in Bytes @tab Name @tab Description + +@item 0 @tab @dfn{BaseAddrLow} @tab Low 32 Bits of Base Address + +@item 4 @tab @dfn{BaseAddrHigh} @tab High 32 Bits of Base Address + +@item 8 @tab @dfn{LengthLow} @tab Low 32 Bits of Length in Bytes + +@item 12 @tab @dfn{LengthHigh} @tab High 32 Bits of Length in Bytes + +@item 16 @tab @dfn{Type} @tab Address type of this range +@end multitable + +The @dfn{BaseAddrLow} and @dfn{BaseAddrHigh} together are the 64 bit +@dfn{BaseAddress} of this range. The @dfn{BaseAddress} is the physical +address of the start of the range being specified. + +The @dfn{LengthLow} and @dfn{LengthHigh} together are the 64 bit +@dfn{Length} of this range. The @dfn{Length} is the physical contiguous +length in bytes of a range being specified. + +The @dfn{Type} field describes the usage of the described address range +as defined in the table below: + +@multitable @columnfractions 0.1 0.35 0.55 +@item Value @tab Pneumonic @tab Description + +@item 1 @tab @dfn{AddressRangeMemory} @tab This run is available +@sc{ram} usable by the operating system. + +@item 2 @tab @dfn{AddressRangeReserved} @tab This run of addresses is in +use or reserved by the system, and must not be used by the operating +system. + +@item Other @tab @dfn{Undefined} @tab Undefined - Reserved for future +use. Any range of this type must be treated by the OS as if the type +returned was @dfn{AddressRangeReserved}. +@end multitable + +The BIOS can use the @dfn{AddressRangeReserved} address range type to +block out various addresses as @emph{not suitable} for use by a +programmable device. + +Some of the reasons a BIOS would do this are: + +@itemize @bullet +@item +The address range contains system @sc{rom}. + +@item +The address range contains @sc{ram} in use by the @sc{rom}. + +@item +The address range is in use by a memory mapped system device. + +@item +The address range is for whatever reason are unsuitable for a +standard device to use as a device memory space. +@end itemize + +Here is the list of assumptions and limitations: + +@enumerate +@item +The BIOS will return address ranges describing base board memory and ISA +or PCI memory that is contiguous with that base board memory. + +@item +The BIOS @emph{will not} return a range description for the memory +mapping of PCI devices. ISA Option @sc{rom}'s, and ISA plug & play +cards. This is because the OS has mechanisms available to detect them. + +@item +The BIOS will return chipset defined address holes that are not being +used by devices as reserved. + +@item +Address ranges defined for base board memory mapped I/O devices (for +example APICs) will be returned as reserved. + +@item +All occurrences of the system BIOS will be mapped as reserved. This +includes the area below 1 MB, at 16 MB (if present) and at end of the +address space (4 GB). + +@item +Standard PC address ranges will not be reported. Example video memory at +A0000 to BFFFF physical will not be described by this function. THe +range from E0000 to EFFFF is base board specific and will be reported as +suits the bas board. + +@item +All of lower memory is reported as normal memory. It is OS's +responsibility to handle standard @sc{ram} locations reserved for +specific uses, for example: the interrupt vector table (0:0) and the +BIOS data area (40:0). +@end enumerate + +Here we explain an example address map. This sample address map +describes a machine which has 128 MB @sc{ram}, 640K of base memory and +127 MB extended. The base memory has 639K available for the user and 1K +for an extended BIOS data area. There is a 4 MB Linear Frame Buffer +(LFB) based at 12 MB. The memory hole created by the chipset is from 8 +M to 16 M. There are memory mapped APIC devices in the system. The IO +Unit is at FEC00000 and the Local Unit is at FEE00000. The system BIOS +is remapped to 4G - 64K. + +Note that the 639K endpoint of the first memory range is also the base +memory size reported in the BIOS data segment at 40:13. + +Key to types: @dfn{ARM} is AddressRangeMemory, @dfn{ARR} is +AddressRangeReserved. + +@multitable @columnfractions 0.15 0.1 0.1 0.65 +@item Base (Hex) @tab Length @tab Type @tab Description + +@item 0000 0000 @tab 639K @tab ARM @tab Available Base memory - +typically the same value as is returned via the INT 12 function. + +@item 0009 FC00 @tab 1K @tab ARR @tab Memory reserved for use by the +BIOS(s). This area typically includes the Extended BIOS data area. + +@item 000F 0000 @tab 64K @tab ARR @tab System BIOS. + +@item 0010 0000 @tab 7M @tab ARM @tab Extended memory, this is not +limited to the 64MB address range. + +@item 0080 0000 @tab 8M @tab ARR @tab Chipset memory hole required to +support the LFB mapping at 12 MB. + +@item 0100 0000 @tab 120M @tab ARM @tab Base board @sc{ram} relocated +above a chipset memory hole. + +@item FE00 0000 @tab 4K @tab ARR @tab IO APIC memory mapped I/O at +FEC00000. Note the range of addresses required for an APIC device may +vary from base OEM to OEM. + +@item FEE0 0000 @tab 4K @tab ARR @tab Local APIC memory mapped I/O at +FEE00000. + +@item FFFF 0000 @tab 64K @tab ARR @tab Remapped System BIOS at end of +address space. +@end multitable + +The following code segment is intended to describe the algorithm needed +when calling the Query System Address Map function. It is an +implementation example and uses non standard mechanisms. + +@example +E820Present = FALSE; +Regs.ebx = 0; +do + @{ + Regs.eax = 0xE820; + Regs.es = SEGMENT (&Descriptor); + Regs.di = OFFSET (&Descriptor); + Regs.ecx = sizeof (Descriptor); + Regs.edx = 'SMAP'; + + _int (0x15, Regs); + + if ((Regs.eflags & EFLAGS_CARRY) || Regs.eax != 'SMAP') + @{ + break; + @} + + if (Regs.ecx < 20 || Regs.ecx > sizeof (Descriptor)) + @{ + /* bug in bios - all returned descriptors must be at + least 20 bytes long, and can not be larger than + the input buffer. */ + break; + @} + + E820Present = TRUE; + . + . + . + Add address range Descriptor.BaseAddress through + Descriptor.BaseAddress + Descriptor.Length + as type Descriptor.Type + . + . + . + @} +while (Regs.ebx != 0); + +if (! E820Present) + @{ + . + . + . + call INT 15H, AX E801h and/or INT 15H, AH=88h to obtain old style + memory information + . + . + . + @} +@end example @node Get Large Memory Size @subsection INT 15H, AX=E801h interrupt call -mem64mb.html +Real mode only. + +Originally defined for EISA servers, this interface is capable of +reporting up to 4 GB of @sc{ram}. While not nearly as flexible as +E820h, it is present in many more systems. + +Input: + +@multitable @columnfractions 0.15 0.25 0.6 +@item @code{AX} @tab Function Code @tab E801h +@end multitable + +Output: + +@multitable @columnfractions 0.15 0.25 0.6 +@item @code{CF} @tab Carry Flag @tab Non-Carry - indicates no error. + +@item @code{AX} @tab Extended 1 @tab Number of contiguous KB between 1 +and 16 MB, maximum 0x3C00 = 15 MB. + +@item @code{BX} @tab Extended 2 @tab Number of contiguous 64KB blocks +between 16 MB and 4GB. + +@item @code{CX} @tab Configured 1 @tab Number of contiguous KB between 1 +and 16 MB, maximum 0x3c00 = 15 MB. + +@item @code{DX} @tab Configured 2 @tab Number of contiguous 64KB blocks +between 16 MB and 4 GB. +@end multitable + +Not sure what this difference between the @dfn{Extended} and +@dfn{Configured} numbers are, but they appear to be identical, as +reported from the BIOS. + +It is possible for a machine using this interface to report a memory +hole just under 16 MB (Count 1 is less than 15 MB, but Count 2 is +non-zero). @node Get Extended Memory Size @subsection INT 15H, AX=88h interrupt call -mem64mb.html +Real mode only. + +This interface is quite primitive. It returns a single value for +contiguous memory above 1 MB. The biggest limitation is that the value +returned is a 16-bit value, in KB, so it has a maximum saturation of +just under 64 MB even presuming it returns as much as it can. On some +systems, it won't return anything above the 16 MB boundary. + +The one useful point is that it works on every PC available. + +Input: + +@multitable @columnfractions 0.15 0.25 0.6 +@item @code{AH} @tab Function Code @tab 88h +@end multitable + +Output: + +@multitable @columnfractions 0.15 0.25 0.6 +@item @code{CF} @tab Carry Flag @tab Non-Carry - indicates no error. + +@item @code{AX} @tab Memory Count @tab Number of contiguous KB above 1 +MB. +@end multitable @node Low-level disk I/O diff --git a/stage2/Makefile.in b/stage2/Makefile.in index 076663b0c..c3a3b1cf9 100644 --- a/stage2/Makefile.in +++ b/stage2/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.3 from Makefile.am +# Makefile.in generated automatically by automake 1.4a from Makefile.am -# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -10,8 +10,7 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. - -SHELL = /bin/sh +SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -32,7 +31,7 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DISTDIR = +DESTDIR = pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -47,6 +46,7 @@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_FLAG = transform = @program_transform_name@ NORMAL_INSTALL = : @@ -70,6 +70,7 @@ host_vendor = @host_vendor@ sbingrub = @sbingrub@ stage2debug = @stage2debug@ + pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) pkgdata_DATA = stage2 CLEANFILES = $(pkgdata_DATA) @@ -83,6 +84,7 @@ INCLUDES = -I$(top_srcdir)/shared_src stage2_exec_LDADD = asm.o boot.o common.o char_io.o cmdline.o disk_io.o \ gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o stage2.o bios.o + noinst_PROGRAMS = stage2.exec # FIXME: Automake hackery. @@ -103,21 +105,21 @@ stage2_exec_DEPENDENCIES = asm.o boot.o common.o char_io.o cmdline.o \ disk_io.o gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o stage2.o bios.o stage2_exec_LDFLAGS = CFLAGS = @CFLAGS@ -LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ DATA = $(pkgdata_DATA) -DIST_COMMON = Makefile.am Makefile.in +DIST_COMMON = $(pkgdata_DATA) Makefile.am Makefile.in -GZIP = --best +GZIP_ENV = --best SOURCES = $(stage2_exec_SOURCES) OBJECTS = $(stage2_exec_OBJECTS) -all: Makefile $(PROGRAMS) $(DATA) - +all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .o .s -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu stage2/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) @@ -154,26 +156,29 @@ install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) @list='$(pkgdata_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p; \ - fi; fi; \ + if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \ + $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) - list='$(pkgdata_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(pkgdatadir)/$$p; \ + @list='$(pkgdata_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \ + rm -f $(DESTDIR)$(pkgdatadir)/$$f; \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP) + && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ @@ -206,9 +211,13 @@ distdir: $(DISTFILES) && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu stage2/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file; \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ done DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) @@ -220,40 +229,53 @@ mostlyclean-depend: clean-depend: distclean-depend: + -rm -rf .deps maintainer-clean-depend: - -rm -rf .deps %.o: %.c @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).P -c $< + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp %.lo: %.c @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).p -c $< - @-sed -e 's/^\([^:]*\)\.o:/\1.lo \1.o:/' \ - < .deps/$(*F).p > .deps/$(*F).P - @-rm -f .deps/$(*F).p -info: -dvi: -check: all - $(MAKE) -installcheck: -install-exec: - @$(NORMAL_INSTALL) + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am -install-data: install-pkgdataDATA - @$(NORMAL_INSTALL) - -install: install-exec install-data all - @: - -uninstall: uninstall-pkgdataDATA +install-data-am: install-pkgdataDATA +install-data: install-data-am +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-pkgdataDATA +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) $(DATA) +all-redirect: all-am install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install + $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: - $(mkinstalldirs) $(DATADIR)$(pkgdatadir) + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) mostlyclean-generic: @@ -263,40 +285,46 @@ clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: - -rm -f Makefile $(DISTCLEANFILES) + -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean: mostlyclean-noinstPROGRAMS mostlyclean-compile \ +mostlyclean-am: mostlyclean-noinstPROGRAMS mostlyclean-compile \ mostlyclean-tags mostlyclean-depend mostlyclean-generic -clean: clean-noinstPROGRAMS clean-compile clean-tags clean-depend \ - clean-generic mostlyclean +mostlyclean: mostlyclean-am -distclean: distclean-noinstPROGRAMS distclean-compile distclean-tags \ - distclean-depend distclean-generic clean - -rm -f config.status +clean-am: clean-noinstPROGRAMS clean-compile clean-tags clean-depend \ + clean-generic mostlyclean-am -maintainer-clean: maintainer-clean-noinstPROGRAMS \ +clean: clean-am + +distclean-am: distclean-noinstPROGRAMS distclean-compile distclean-tags \ + distclean-depend distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-noinstPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-depend maintainer-clean-generic \ - distclean + distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." +maintainer-clean: maintainer-clean-am + .PHONY: mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile uninstall-pkgdataDATA install-pkgdataDATA tags \ mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \ distdir mostlyclean-depend distclean-depend clean-depend \ -maintainer-clean-depend info dvi installcheck install-exec install-data \ -install uninstall all installdirs mostlyclean-generic distclean-generic \ -clean-generic maintainer-clean-generic clean mostlyclean distclean \ -maintainer-clean +maintainer-clean-depend info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all install-strip installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean stage2.exec: $(stage2_exec_LDADD) diff --git a/stage2_debug/Makefile.in b/stage2_debug/Makefile.in index 3609675e8..dfa8822f6 100644 --- a/stage2_debug/Makefile.in +++ b/stage2_debug/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.3 from Makefile.am +# Makefile.in generated automatically by automake 1.4a from Makefile.am -# Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -10,8 +10,7 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. - -SHELL = /bin/sh +SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -32,7 +31,7 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DISTDIR = +DESTDIR = pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -47,6 +46,7 @@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_FLAG = transform = @program_transform_name@ NORMAL_INSTALL = : @@ -70,6 +70,7 @@ host_vendor = @host_vendor@ sbingrub = @sbingrub@ stage2debug = @stage2debug@ + pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) pkgdata_DATA = $(stage2debug) EXTRA_DATA = stage2_debug @@ -79,12 +80,14 @@ MOSTLYCLEANFILES = stage2_debug.exec # We can't use builtins or standard includes. COMPILE = $(CC) -fno-builtin -nostdinc -DDEBUG=1 $(DEFS) $(INCLUDES) \ $(CPPFLAGS) $(CFLAGS) + INCLUDES = -I$(top_srcdir)/shared_src # asm.o absolutely needs to come first! stage2_debug_exec_LDADD = asm.o boot.o common.o char_io.o cmdline.o disk_io.o \ gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o stage2.o bios.o + EXTRA_PROGRAMS = stage2_debug.exec # FIXME: Automake hackery. @@ -104,21 +107,21 @@ cmdline.o disk_io.o gunzip.o fsys_ffs.o fsys_ext2fs.o fsys_fat.o \ stage2.o bios.o stage2_debug_exec_LDFLAGS = CFLAGS = @CFLAGS@ -LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@ +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ DATA = $(pkgdata_DATA) -DIST_COMMON = Makefile.am Makefile.in +DIST_COMMON = $(EXTRA_DATA) $(pkgdata_DATA) Makefile.am Makefile.in -GZIP = --best +GZIP_ENV = --best SOURCES = $(stage2_debug_exec_SOURCES) OBJECTS = $(stage2_debug_exec_OBJECTS) -all: Makefile $(DATA) - +all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .o .s -$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu stage2_debug/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) @@ -146,26 +149,29 @@ install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) @list='$(pkgdata_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgdatadir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(pkgdatadir)/$$p; \ - fi; fi; \ + if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \ + $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) - list='$(pkgdata_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(pkgdatadir)/$$p; \ + @list='$(pkgdata_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \ + rm -f $(DESTDIR)$(pkgdatadir)/$$f; \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $(SOURCES) $(HEADERS) $(LISP) + && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ @@ -198,9 +204,13 @@ distdir: $(DISTFILES) && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu stage2_debug/Makefile @for file in $(DISTFILES); do \ d=$(srcdir); \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file; \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ done DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) @@ -212,40 +222,53 @@ mostlyclean-depend: clean-depend: distclean-depend: + -rm -rf .deps maintainer-clean-depend: - -rm -rf .deps %.o: %.c @echo '$(COMPILE) -c $<'; \ - $(COMPILE) -Wp,-MD,.deps/$(*F).P -c $< + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp %.lo: %.c @echo '$(LTCOMPILE) -c $<'; \ - $(LTCOMPILE) -Wp,-MD,.deps/$(*F).p -c $< - @-sed -e 's/^\([^:]*\)\.o:/\1.lo \1.o:/' \ - < .deps/$(*F).p > .deps/$(*F).P - @-rm -f .deps/$(*F).p -info: -dvi: -check: all - $(MAKE) -installcheck: -install-exec: - @$(NORMAL_INSTALL) + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am -install-data: install-pkgdataDATA - @$(NORMAL_INSTALL) - -install: install-exec install-data all - @: - -uninstall: uninstall-pkgdataDATA +install-data-am: install-pkgdataDATA +install-data: install-data-am +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-pkgdataDATA +uninstall: uninstall-am +all-am: Makefile $(DATA) +all-redirect: all-am install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install + $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: - $(mkinstalldirs) $(DATADIR)$(pkgdatadir) + $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) mostlyclean-generic: @@ -255,36 +278,43 @@ clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: - -rm -f Makefile $(DISTCLEANFILES) + -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean: mostlyclean-compile mostlyclean-tags mostlyclean-depend \ +mostlyclean-am: mostlyclean-compile mostlyclean-tags mostlyclean-depend \ mostlyclean-generic -clean: clean-compile clean-tags clean-depend clean-generic mostlyclean +mostlyclean: mostlyclean-am -distclean: distclean-compile distclean-tags distclean-depend \ - distclean-generic clean - -rm -f config.status +clean-am: clean-compile clean-tags clean-depend clean-generic \ + mostlyclean-am -maintainer-clean: maintainer-clean-compile maintainer-clean-tags \ +clean: clean-am + +distclean-am: distclean-compile distclean-tags distclean-depend \ + distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-depend maintainer-clean-generic \ - distclean + distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." +maintainer-clean: maintainer-clean-am + .PHONY: mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile uninstall-pkgdataDATA install-pkgdataDATA tags \ mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \ distdir mostlyclean-depend distclean-depend clean-depend \ -maintainer-clean-depend info dvi installcheck install-exec install-data \ -install uninstall all installdirs mostlyclean-generic distclean-generic \ -clean-generic maintainer-clean-generic clean mostlyclean distclean \ -maintainer-clean +maintainer-clean-depend info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all install-strip installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean stage2_debug.exec: $(stage2_debug_exec_LDADD)