--- /dev/null
- kern/misc.c kern/mm.c kern/reader.c kern/term.c \
+
+# -*- makefile -*-
+
+COMMON_ASFLAGS += -nostdinc
+COMMON_CFLAGS += -ffreestanding -mexplicit-relocs -mflush-func=grub_cpu_flush_cache
+COMMON_LDFLAGS += -nostdlib
+
+# Used by various components. These rules need to precede them.
+script/lexer.c_DEPENDENCIES = grub_script.tab.h
+
+# Images.
+
+MOSTLYCLEANFILES += symlist.c kernel_syms.lst
+DEFSYMFILES += kernel_syms.lst
+
+kernel_img_HEADERS = boot.h cache.h device.h disk.h dl.h elf.h elfload.h \
+ env.h err.h file.h fs.h kernel.h misc.h mm.h net.h parser.h reader.h \
+ symbol.h term.h time.h types.h loader.h partition.h \
+ msdos_partition.h machine/kernel.h handler.h list.h \
+ command.h machine/memory.h cpu/libgcc.h cpu/cache.h i18n.h
+
+symlist.c: $(addprefix include/grub/,$(kernel_img_HEADERS)) config.h gensymlist.sh
+ /bin/sh gensymlist.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
+
+kernel_syms.lst: $(addprefix include/grub/,$(kernel_img_HEADERS)) config.h genkernsyms.sh
+ /bin/sh genkernsyms.sh $(filter %.h,$^) > $@ || (rm -f $@; exit 1)
+
+# Programs
+pkglib_IMAGES = kernel.img
+kernel_img_SOURCES = kern/$(target_cpu)/startup.S \
+ kern/main.c kern/device.c kern/$(target_cpu)/init.c \
+ kern/$(target_cpu)/$(target_machine)/init.c \
+ kern/disk.c kern/dl.c kern/err.c kern/file.c kern/fs.c \
++ kern/misc.c kern/mm.c kern/term.c \
+ kern/rescue_parser.c kern/rescue_reader.c \
+ kern/list.c kern/handler.c kern/command.c kern/corecmd.c \
+ kern/parser.c kern/partition.c kern/env.c kern/$(target_cpu)/dl.c \
+ kern/generic/millisleep.c kern/generic/rtc_get_time_ms.c kern/time.c \
+ symlist.c kern/$(target_cpu)/cache.S
+kernel_img_CFLAGS = $(COMMON_CFLAGS)
+kernel_img_ASFLAGS = $(COMMON_ASFLAGS)
+kernel_img_LDFLAGS = $(COMMON_LDFLAGS) -static-libgcc -lgcc \
+ -Wl,-N,-S,-Ttext,$(LINK_BASE),-Bstatic
+kernel_img_FORMAT = binary
+
+# Scripts.
+sbin_SCRIPTS =
+bin_SCRIPTS =
+
+# For grub-mkimage.
+bin_UTILITIES += grub-mkimage
+grub_mkimage_SOURCES = gnulib/progname.c util/grub-mkrawimage.c util/misc.c \
+ util/resolve.c lib/LzmaEnc.c lib/LzFind.c
+grub_mkimage_CFLAGS = -DGRUB_KERNEL_MACHINE_LINK_ADDR=$(LINK_BASE)
+util/grub-mkrawimage.c_DEPENDENCIES = Makefile
+
+# Modules.
+pkglib_MODULES = memdisk.mod \
+ lsmmap.mod
+
+# For boot.mod.
+pkglib_MODULES += boot.mod
+boot_mod_SOURCES = commands/boot.c lib/i386/pc/biosnum.c
+boot_mod_CFLAGS = $(COMMON_CFLAGS)
+boot_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For memdisk.mod.
+memdisk_mod_SOURCES = disk/memdisk.c
+memdisk_mod_CFLAGS = $(COMMON_CFLAGS)
+memdisk_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For lsmmap.mod
+lsmmap_mod_SOURCES = commands/lsmmap.c
+lsmmap_mod_CFLAGS = $(COMMON_CFLAGS)
+lsmmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For serial.mod.
+pkglib_MODULES += serial.mod
+serial_mod_SOURCES = term/serial.c
+serial_mod_CFLAGS = $(COMMON_CFLAGS)
+serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+# For relocator.mod.
+pkglib_MODULES += relocator.mod
+relocator_mod_SOURCES = lib/$(target_cpu)/relocator.c lib/$(target_cpu)/relocator_asm.S
+relocator_mod_CFLAGS = $(COMMON_CFLAGS)
+relocator_mod_ASFLAGS = $(COMMON_ASFLAGS)
+relocator_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+pkglib_MODULES += linux.mod
+linux_mod_SOURCES = loader/$(target_cpu)/linux.c
+linux_mod_CFLAGS = $(COMMON_CFLAGS)
+linux_mod_ASFLAGS = $(COMMON_ASFLAGS)
+linux_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+include $(srcdir)/conf/common.mk
boot_path = grub_util_get_path (dir, "diskboot.img");
boot_size = grub_util_get_image_size (boot_path);
if (boot_size != GRUB_DISK_SECTOR_SIZE)
- grub_util_error (_("diskboot.img size must be %u bytes"), GRUB_DISK_SECTOR_SIZE);
-
+ grub_util_error (_("diskboot.img size must be %u bytes"),
+ GRUB_DISK_SECTOR_SIZE);
+
boot_img = grub_util_read_image (boot_path);
-
+
- *((grub_uint16_t *) (boot_img + GRUB_DISK_SECTOR_SIZE
- - GRUB_BOOT_MACHINE_LIST_SIZE + 8))
- = grub_host_to_target16 (num);
+ {
+ struct grub_boot_blocklist *block;
+ block = (struct grub_boot_blocklist *) (boot_img
- + GRUB_DISK_SECTOR_SIZE
- - sizeof (*block));
++ + GRUB_DISK_SECTOR_SIZE
++ - sizeof (*block));
+ block->len = grub_host_to_target16 (num);
+
+ /* This is filled elsewhere. Verify it just in case. */
- assert (block->segment == grub_host_to_target16 (GRUB_BOOT_MACHINE_KERNEL_SEG
- + (GRUB_DISK_SECTOR_SIZE >> 4)));
++ assert (block->segment
++ == grub_host_to_target16 (GRUB_BOOT_MACHINE_KERNEL_SEG
++ + (GRUB_DISK_SECTOR_SIZE >> 4)));
+ }
-
+
grub_util_write_image (boot_img, boot_size, out);
free (boot_img);
free (boot_path);
char *dir = NULL;
char *prefix = NULL;
char *memdisk = NULL;
+ char *font = NULL;
char *config = NULL;
FILE *fp = stdout;
-
- set_program_name (argv[0]);
+#ifdef GRUB_PLATFORM_IMAGE_DEFAULT
+ grub_platform_image_format_t format = GRUB_PLATFORM_IMAGE_DEFAULT;
+#endif
- set_program_name (argv[0]);
- setlocale (LC_ALL, "");
- bindtextdomain (PACKAGE, LOCALEDIR);
- textdomain (PACKAGE);
+ grub_util_init_nls ();
while (1)
{