2007-06-27 Robert Millan * geninitheader.sh: Process file specified in first parameter rather than hardcoding grub_modules_init.lst. * geninit.sh: Likewise. Also, construct header name dynamicaly rather than hardcoding grub_modules_init.h. * conf/common.rmk: Rename grub_modules_init.[ch] files associated with grub-emu to grub_emu_init.[ch]. Add rules to build analogous grub_probe_init.[ch] and grub_setup_init.[ch]. * conf/powerpc-ieee1275.rmk (grub_emu_DEPENDENCIES): Replace grub_modules_init.h with grub_emu_init.h. (grub_probe_*): Add new grub_probe_init.[ch] files. * conf/i386-efi.rmk: Likewise. * conf/i386-pc.rmk: Likewise. (grub_setup_*): Add new grub_setup_init.[ch] files. * util/grub-emu.c: Replace grub_modules_init.h with grub_emu_init.h. * util/grub-probe.c: Include grub_probe_init.h. Use grub_init_all() to initialize modules rather than a list of hardcoded functions. * util/i386/pc/grub-setup.c: Include grub_setup_init.h. Use grub_init_all() to initialize modules rather than a list of hardcoded functions. diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/common.rmk grub2-1.95+20070626/conf/common.rmk --- grub2-1.95+20070626.old/conf/common.rmk 2007-05-20 11:10:06.000000000 +0200 +++ grub2-1.95+20070626/conf/common.rmk 2007-06-27 21:49:57.000000000 +0200 @@ -6,18 +6,44 @@ DISTCLEANFILES += grub_script.tab.c grub_script.tab.h # For grub-emu. -grub_modules_init.lst: geninit.sh $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) +grub_emu_init.lst: geninit.sh $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@ -DISTCLEANFILES += grub_modules_init.lst +DISTCLEANFILES += grub_emu_init.lst -grub_modules_init.h: $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninitheader.sh grub_modules_init.lst - rm -f $@; sh $(srcdir)/geninitheader.sh > $@ -DISTCLEANFILES += grub_modules_init.h +grub_emu_init.h: grub_emu_init.lst $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninitheader.sh + rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@ +DISTCLEANFILES += grub_emu_init.h -grub_emu_init.c: $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninit.sh grub_modules_init.lst grub_modules_init.h - rm -f $@; sh $(srcdir)/geninit.sh $(filter %.c,$^) > $@ +grub_emu_init.c: grub_emu_init.lst $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninit.sh grub_emu_init.h + rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@ DISTCLEANFILES += grub_emu_init.c +# For grub-probe. +grub_probe_init.lst: geninit.sh $(filter-out grub_probe_init.c,$(grub_probe_SOURCES)) + rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@ +DISTCLEANFILES += grub_probe_init.lst + +grub_probe_init.h: grub_probe_init.lst $(filter-out grub_probe_init.c,$(grub_probe_SOURCES)) geninitheader.sh + rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@ +DISTCLEANFILES += grub_probe_init.h + +grub_probe_init.c: grub_probe_init.lst $(filter-out grub_probe_init.c,$(grub_probe_SOURCES)) geninit.sh grub_probe_init.h + rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@ +DISTCLEANFILES += grub_probe_init.c + +# For grub-setup. +grub_setup_init.lst: geninit.sh $(filter-out grub_setup_init.c,$(grub_setup_SOURCES)) + rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@ +DISTCLEANFILES += grub_setup_init.lst + +grub_setup_init.h: grub_setup_init.lst $(filter-out grub_setup_init.c,$(grub_setup_SOURCES)) geninitheader.sh + rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@ +DISTCLEANFILES += grub_setup_init.h + +grub_setup_init.c: grub_setup_init.lst $(filter-out grub_setup_init.c,$(grub_setup_SOURCES)) geninit.sh grub_setup_init.h + rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@ +DISTCLEANFILES += grub_setup_init.c + # For update-grub update-grub: util/update-grub.in config.status ./config.status --file=$@:$< diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/i386-efi.rmk grub2-1.95+20070626/conf/i386-efi.rmk --- grub2-1.95+20070626.old/conf/i386-efi.rmk 2007-06-26 08:54:53.000000000 +0200 +++ grub2-1.95+20070626/conf/i386-efi.rmk 2007-06-27 21:36:59.000000000 +0200 @@ -27,6 +27,7 @@ grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c # For grub-probe. +grub_probe_DEPENDENCIES = grub_probe_init.h grub_probe_SOURCES = util/grub-probe.c \ util/biosdisk.c util/misc.c util/getroot.c \ kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ @@ -34,11 +35,11 @@ partmap/pc.c partmap/apple.c partmap/gpt.c \ fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c \ kern/env.c fs/fshelp.c fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \ - disk/lvm.c disk/raid.c + disk/lvm.c disk/raid.c grub_probe_init.c # For grub-emu. grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \ - grub_modules_init.h + grub_emu_init.h grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \ commands/configfile.c commands/help.c \ commands/terminal.c commands/ls.c commands/test.c \ diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/i386-pc.rmk grub2-1.95+20070626/conf/i386-pc.rmk --- grub2-1.95+20070626.old/conf/i386-pc.rmk 2007-06-26 08:54:53.000000000 +0200 +++ grub2-1.95+20070626/conf/i386-pc.rmk 2007-06-27 21:36:52.000000000 +0200 @@ -62,18 +62,20 @@ grub_mkimage_LDFLAGS = $(LIBLZO) # For grub-setup. +grub_setup_DEPENDENCIES = grub_setup_init.h grub_setup_SOURCES = util/i386/pc/grub-setup.c util/biosdisk.c \ util/misc.c util/getroot.c kern/device.c kern/disk.c \ kern/err.c kern/misc.c fs/fat.c fs/ext2.c fs/xfs.c fs/affs.c \ fs/sfs.c kern/parser.c kern/partition.c partmap/pc.c \ partmap/gpt.c fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c \ fs/hfsplus.c kern/file.c kern/fs.c kern/env.c fs/fshelp.c \ - util/raid.c util/lvm.c + util/raid.c util/lvm.c grub_setup_init.c # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c # For grub-probe. +grub_probe_DEPENDENCIES = grub_probe_init.h grub_probe_SOURCES = util/grub-probe.c \ util/biosdisk.c util/misc.c util/getroot.c \ kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ @@ -81,11 +83,11 @@ partmap/pc.c partmap/apple.c partmap/gpt.c \ fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c \ kern/env.c fs/fshelp.c fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \ - disk/lvm.c disk/raid.c + disk/lvm.c disk/raid.c grub_probe_init.c # For grub-emu. grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \ - grub_modules_init.h + grub_emu_init.h grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \ commands/configfile.c commands/echo.c commands/help.c \ commands/terminal.c commands/ls.c commands/test.c \ diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/conf/powerpc-ieee1275.rmk grub2-1.95+20070626/conf/powerpc-ieee1275.rmk --- grub2-1.95+20070626.old/conf/powerpc-ieee1275.rmk 2007-06-26 08:54:53.000000000 +0200 +++ grub2-1.95+20070626/conf/powerpc-ieee1275.rmk 2007-06-27 21:36:39.000000000 +0200 @@ -39,6 +39,7 @@ grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c # For grub-probe. +grub_probe_DEPENDENCIES = grub_probe_init.h grub_probe_SOURCES = util/grub-probe.c \ util/biosdisk.c util/misc.c util/getroot.c \ kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ @@ -46,11 +47,11 @@ partmap/pc.c partmap/apple.c partmap/gpt.c \ fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c \ kern/env.c fs/fshelp.c fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c \ - disk/lvm.c disk/raid.c + disk/lvm.c disk/raid.c grub_probe_init.c # For grub-emu grub_emu_DEPENDENCIES = grub_script.tab.c grub_script.tab.h \ - grub_modules_init.h + grub_emu_init.h grub_emu_SOURCES = commands/boot.c commands/cat.c commands/cmp.c \ commands/configfile.c commands/help.c \ commands/search.c commands/terminal.c commands/test.c \ diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/geninitheader.sh grub2-1.95+20070626/geninitheader.sh --- grub2-1.95+20070626.old/geninitheader.sh 2005-11-13 16:47:08.000000000 +0100 +++ grub2-1.95+20070626/geninitheader.sh 2007-06-27 21:52:55.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # -# Copyright (C) 2005 Free Software Foundation, Inc. +# Copyright (C) 2005, 2007 Free Software Foundation, Inc. # # This gensymlist.sh is free software; the author # gives unlimited permission to copy and/or distribute it, @@ -11,11 +11,14 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +lst="$1" +shift + cat < +#include <$header> EOF @@ -47,7 +52,7 @@ if echo $@ | grep $file >/dev/null; then echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_init ();/' fi -done < grub_modules_init.lst +done < ${lst} cat </dev/null; then echo $line | sed -e 's/.*GRUB_MOD_INIT *(\([a-zA-Z0-9_]*\)).*/ grub_\1_fini ();/' fi -done < grub_modules_init.lst +done < ${lst} cat < #include -#include +#include /* Used for going back to the main function. */ jmp_buf main_env; diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/util/grub-probe.c grub2-1.95+20070626/util/grub-probe.c --- grub2-1.95+20070626.old/util/grub-probe.c 2007-06-26 08:54:53.000000000 +0200 +++ grub2-1.95+20070626/util/grub-probe.c 2007-06-27 22:01:06.000000000 +0200 @@ -30,6 +30,8 @@ #include #include +#include + #include #include #include @@ -244,36 +246,15 @@ /* Initialize the emulated biosdisk driver. */ grub_util_biosdisk_init (dev_map ? : DEFAULT_DEVICE_MAP); - grub_pc_partition_map_init (); - grub_gpt_partition_map_init (); - grub_apple_partition_map_init (); - grub_raid_init (); - grub_lvm_init (); - - /* Initialize filesystems. */ - grub_fat_init (); - grub_ext2_init (); - grub_ufs_init (); - grub_minix_init (); - grub_jfs_init (); - grub_xfs_init (); + + /* Initialize all modules. */ + grub_init_all (); /* Do it. */ probe (path); /* Free resources. */ - grub_ext2_fini (); - grub_fat_fini (); - grub_ufs_fini (); - grub_minix_fini (); - grub_jfs_fini (); - grub_xfs_fini (); - - grub_lvm_fini (); - grub_raid_fini (); - grub_gpt_partition_map_fini (); - grub_apple_partition_map_fini (); - grub_pc_partition_map_fini (); + grub_fini_all (); grub_util_biosdisk_fini (); free (dev_map); diff -ur -x common.mk -x i386-pc.mk -x i386-efi.mk -x powerpc-ieee1275.mk grub2-1.95+20070626.old/util/i386/pc/grub-setup.c grub2-1.95+20070626/util/i386/pc/grub-setup.c --- grub2-1.95+20070626.old/util/i386/pc/grub-setup.c 2007-06-13 18:53:54.000000000 +0200 +++ grub2-1.95+20070626/util/i386/pc/grub-setup.c 2007-06-27 22:01:20.000000000 +0200 @@ -35,6 +35,8 @@ #include #include +#include + #include #include #include @@ -653,9 +655,10 @@ /* Initialize the emulated biosdisk driver. */ grub_util_biosdisk_init (dev_map ? : DEFAULT_DEVICE_MAP); - grub_pc_partition_map_init (); - grub_gpt_partition_map_init (); + /* Initialize all modules. */ + grub_init_all (); + dest_dev = get_device_name (argv[optind]); if (! dest_dev) { @@ -673,14 +676,6 @@ prefix = grub_get_prefix (dir ? : DEFAULT_DIRECTORY); - /* Initialize filesystems. */ - grub_fat_init (); - grub_ext2_init (); - grub_ufs_init (); - grub_minix_init (); - grub_hfs_init (); - grub_jfs_init (); - if (root_dev) { char *tmp = get_device_name (root_dev); @@ -749,15 +744,7 @@ root_dev, dest_dev, must_embed); /* Free resources. */ - grub_ext2_fini (); - grub_fat_fini (); - grub_ufs_fini (); - grub_minix_fini (); - grub_hfs_fini (); - grub_jfs_fini (); - - grub_gpt_partition_map_fini (); - grub_pc_partition_map_fini (); + grub_fini_all (); grub_util_biosdisk_fini (); free (boot_file);