2005-12-03 Marco Gerards <mgerards@xs4all.nl>

* conf/common.rmk (grub_modules_init.lst): Use `-printf "%P\n"'
	and `cd' to make sure the filename is not prefixed with a
	directory name.
	(pkgdata_MODULES): Add `gpt.mod'.
	(gpt_mod_SOURCES): New variable.
	(gpt_mod_CFLAGS): Likewise.
	(gpt_mod_LDFLAGS): Likewise.

	* conf/i386-pc.rmk (grub_emu_SOURCES): Add `partmap/gpt.c'.

	* include/grub/pc_partition.h (GRUB_PC_PARTITION_TYPE_GPT_DISK):
	New macro.

	* partmap/gpt.c: New file.

	* partmap/pc.c (pc_partition_map_iterate): Don't continue when a
	GPT partition map is detected.
This commit is contained in:
marco_g 2005-12-03 17:54:55 +00:00
parent 41730ed990
commit b04216abba
8 changed files with 327 additions and 13 deletions

View file

@ -6,7 +6,7 @@ grub_script.tab.c grub_script.tab.h: normal/parser.y
# For grub-emu.
grub_modules_init.lst: geninit.sh
(find $(srcdir) -name '*.c' | xargs grep GRUB_MOD_INIT) > $@
(cd $(srcdir); find . -name '*.c' -printf "%P\n" | xargs grep GRUB_MOD_INIT) > $@
grub_modules_init.h: $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninitheader.sh grub_modules_init.lst
sh $(srcdir)/geninitheader.sh > $@
@ -581,10 +581,9 @@ fs-sfs_mod-fs_sfs.lst: fs/sfs.c genfslist.sh
sfs_mod_CFLAGS = $(COMMON_CFLAGS)
sfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
# Partiton maps.
pkgdata_MODULES += amiga.mod apple.mod pc.mod sun.mod acorn.mod
# Partition maps.
pkgdata_MODULES += amiga.mod apple.mod pc.mod sun.mod acorn.mod gpt.mod
# For amiga.mod
amiga_mod_SOURCES = partmap/amiga.c
@ -841,6 +840,57 @@ fs-acorn_mod-partmap_acorn.lst: partmap/acorn.c genfslist.sh
acorn_mod_CFLAGS = $(COMMON_CFLAGS)
acorn_mod_LDFLAGS = $(COMMON_LDFLAGS)
# For gpt.mod
gpt_mod_SOURCES = partmap/gpt.c
CLEANFILES += gpt.mod mod-gpt.o mod-gpt.c pre-gpt.o gpt_mod-partmap_gpt.o def-gpt.lst und-gpt.lst
MOSTLYCLEANFILES += gpt_mod-partmap_gpt.d
DEFSYMFILES += def-gpt.lst
UNDSYMFILES += und-gpt.lst
gpt.mod: pre-gpt.o mod-gpt.o
-rm -f $@
$(LD) $(gpt_mod_LDFLAGS) $(LDFLAGS) -r -d -o $@ $^
$(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@
pre-gpt.o: gpt_mod-partmap_gpt.o
-rm -f $@
$(LD) $(gpt_mod_LDFLAGS) -r -d -o $@ $^
mod-gpt.o: mod-gpt.c
$(CC) $(CPPFLAGS) $(CFLAGS) $(gpt_mod_CFLAGS) -c -o $@ $<
mod-gpt.c: moddep.lst genmodsrc.sh
sh $(srcdir)/genmodsrc.sh 'gpt' $< > $@ || (rm -f $@; exit 1)
def-gpt.lst: pre-gpt.o
$(NM) -g --defined-only -P -p $< | sed 's/^\([^ ]*\).*/\1 gpt/' > $@
und-gpt.lst: pre-gpt.o
echo 'gpt' > $@
$(NM) -u -P -p $< | cut -f1 -d' ' >> $@
gpt_mod-partmap_gpt.o: partmap/gpt.c
$(CC) -Ipartmap -I$(srcdir)/partmap $(CPPFLAGS) $(CFLAGS) $(gpt_mod_CFLAGS) -c -o $@ $<
gpt_mod-partmap_gpt.d: partmap/gpt.c
set -e; $(CC) -Ipartmap -I$(srcdir)/partmap $(CPPFLAGS) $(CFLAGS) $(gpt_mod_CFLAGS) -M $< | sed 's,gpt\.o[ :]*,gpt_mod-partmap_gpt.o $@ : ,g' > $@; [ -s $@ ] || rm -f $@
-include gpt_mod-partmap_gpt.d
CLEANFILES += cmd-gpt_mod-partmap_gpt.lst fs-gpt_mod-partmap_gpt.lst
COMMANDFILES += cmd-gpt_mod-partmap_gpt.lst
FSFILES += fs-gpt_mod-partmap_gpt.lst
cmd-gpt_mod-partmap_gpt.lst: partmap/gpt.c gencmdlist.sh
set -e; $(CC) -Ipartmap -I$(srcdir)/partmap $(CPPFLAGS) $(CFLAGS) $(gpt_mod_CFLAGS) -E $< | sh $(srcdir)/gencmdlist.sh gpt > $@ || (rm -f $@; exit 1)
fs-gpt_mod-partmap_gpt.lst: partmap/gpt.c genfslist.sh
set -e; $(CC) -Ipartmap -I$(srcdir)/partmap $(CPPFLAGS) $(CFLAGS) $(gpt_mod_CFLAGS) -E $< | sh $(srcdir)/genfslist.sh gpt > $@ || (rm -f $@; exit 1)
gpt_mod_CFLAGS = $(COMMON_CFLAGS)
gpt_mod_LDFLAGS = $(COMMON_LDFLAGS)
# Commands.
pkgdata_MODULES += hello.mod boot.mod terminal.mod ls.mod \