Hi,
Attached patch has few more improvements for automake build system: 1. It removes the need to create def-* and und-* list files for creating moddep.lst 2. It removes gencmdlist.sh, genfslist.sh etc. scripts and creates commands.lst files only using make rules. 3. It uses objcopy command to add .modname and .moddeps sections to modules, and removes the need to create mod-* files. With these improvements, number of files created in grub build is brought down to 1500+ from earlier 3000+. -- bvk.chaitanya
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: b...@dbook-20100829112843-lk3o77348uld06kg # target_branch: ../mainline/ # testament_sha1: ca215b856a9f29c2fd30f660799fe36adfbd97bf # timestamp: 2010-08-29 17:32:48 +0530 # base_revision_id: b...@dbook-20100829040313-1x00reilaestorob # # Begin patch === modified file 'conf/Makefile.common' --- conf/Makefile.common 2010-08-23 07:53:56 +0000 +++ conf/Makefile.common 2010-08-29 05:47:30 +0000 @@ -85,18 +85,10 @@ # Define these variables to calm down automake -FS_FILES = -DEF_FILES = -UND_FILES = +PP_FILES = IMG_FILES = MOD_FILES = -VIDEO_FILES = MODULE_FILES = -HANDLER_FILES = -PARTMAP_FILES = -COMMAND_FILES = -PARTTOOL_FILES = -TERMINAL_FILES = KERNEL_HEADER_FILES = man_MANS = === modified file 'conf/Makefile.extra-dist' --- conf/Makefile.extra-dist 2010-08-21 04:18:27 +0000 +++ conf/Makefile.extra-dist 2010-08-29 11:28:43 +0000 @@ -14,20 +14,13 @@ EXTRA_DIST += grub-core/Makefile.gcry.def EXTRA_DIST += grub-core/genmoddep.awk -EXTRA_DIST += grub-core/genmodsrc.sh -EXTRA_DIST += grub-core/genfslist.sh -EXTRA_DIST += grub-core/gencmdlist.sh +EXTRA_DIST += grub-core/genmod.sh.in +EXTRA_DIST += grub-core/gensyminfo.sh.in EXTRA_DIST += grub-core/gensymlist.sh EXTRA_DIST += grub-core/genemuinit.sh -EXTRA_DIST += grub-core/genvideolist.sh -EXTRA_DIST += grub-core/genhandlerlist.sh -EXTRA_DIST += grub-core/genpartmaplist.sh -EXTRA_DIST += grub-core/genterminallist.sh -EXTRA_DIST += grub-core/genparttoollist.sh EXTRA_DIST += grub-core/genemuinitheader.sh EXTRA_DIST += $(shell find $(top_srcdir)/include -name '*.h') +EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/lib -name '*.h') EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/gnulib -name '*.h') EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/efiemu -name '*.h') -EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/lib/posix_wrap -name '*.h') -EXTRA_DIST += $(shell find $(top_srcdir)/grub-core/lib/libgcrypt_wrap -name '*.h') === modified file 'gentpl.py' --- gentpl.py 2010-08-23 08:37:29 +0000 +++ gentpl.py 2010-08-29 11:13:07 +0000 @@ -284,75 +284,12 @@ r += gvar_add("BUILT_SOURCES", "$(nodist_" + cname() + "_SOURCES)") r += gvar_add("CLEANFILES", "$(nodist_" + cname() + "_SOURCES)") - r += gvar_add("DEF_FILES", "def-[+ name +].lst") - r += gvar_add("UND_FILES", "und-[+ name +].lst") r += gvar_add("MOD_FILES", "[+ name +].mod") - r += gvar_add("platform_DATA", "[+ name +].mod") - r += gvar_add("CLEANFILES", "def-[+ name +].lst und-[+ name +].lst mod-[+ name +].c mod-[+ name +].o [+ name +].mod") - - r += gvar_add("COMMAND_FILES", "command-[+ name +].lst") - r += gvar_add("FS_FILES", "fs-[+ name +].lst") - r += gvar_add("VIDEO_FILES", "video-[+ name +].lst") - r += gvar_add("PARTMAP_FILES", "partmap-[+ name +].lst") - r += gvar_add("HANDLER_FILES", "handler-[+ name +].lst") - r += gvar_add("PARTTOOL_FILES", "parttool-[+ name +].lst") - r += gvar_add("TERMINAL_FILES", "terminal-[+ name +].lst") - r += gvar_add("CLEANFILES", "command-[+ name +].lst fs-[+ name +].lst") - r += gvar_add("CLEANFILES", "handler-[+ name +].lst terminal-[+ name +].lst") - r += gvar_add("CLEANFILES", "video-[+ name +].lst partmap-[+ name +].lst parttool-[+ name +].lst") - + r += gvar_add("PP_FILES", "[+ name +].pp") r += gvar_add("CLEANFILES", "[+ name +].pp") r += """ [+ name +].pp: $(""" + cname() + """_SOURCES) $(nodist_""" + cname() + """_SOURCES) $(TARGET_CPP) -DGRUB_LST_GENERATOR $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname() + """_CPPFLAGS) $(CPPFLAGS) $^ > $@ || (rm -f $@; exit 1) - -def-[+ name +].lst: [+ name +].module$(EXEEXT) - if test x$(USE_APPLE_CC_FIXES) = xyes; then \ - $(NM) -g -P -p $< | grep -E '^[a-zA-Z0-9_]* [TDS]' | sed "s/^\\([^ ]*\\).*/\\1 [+ name +]/" >> $@; \ - else \ - $(NM) -g --defined-only -P -p $< | sed "s/^\\([^ ]*\\).*/\\1 [+ name +]/" >> $@; \ - fi - -und-[+ name +].lst: [+ name +].module$(EXEEXT) - $(NM) -u -P -p $< | sed "s/^\\([^ ]*\\).*/\\1 [+ name +]/" >> $@ - -mod-[+ name +].c: [+ name +].module$(EXEEXT) moddep.lst genmodsrc.sh - sh $(srcdir)/genmodsrc.sh [+ name +] moddep.lst > $@ || (rm -f $@; exit 1) - -mod-[+ name +].o: mod-[+ name +].c - $(TARGET_CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname() + """_CPPFLAGS) $(CPPFLAGS) $(""" + cname() + """_CFLAGS) $(CFLAGS) -c -o $@ $< - -[+ name +].mod: [+ name +].module$(EXEEXT) mod-[+ name +].o - if test x$(USE_APPLE_CC_FIXES) = xyes; then \ - $(CCLD) $(""" + cname() + """_LDFLAGS) $(LDFLAGS) -o $...@.bin $^; \ - $(OBJCONV) -f$(TARGET_MODULE_FORMAT) -nr:_grub_mod_init:grub_mod_init -nr:_grub_mod_fini:grub_mod_fini -wd1106 -nu -nd $...@.bin $@; \ - rm -f $...@.bin; \ - else \ - $(CCLD) -o $@ $(""" + cname() + """_LDFLAGS) $(LDFLAGS) $^; \ - if test ! -z '$(TARGET_OBJ2ELF)'; then $(TARGET_OBJ2ELF) $@ || (rm -f $@; exit 1); fi; \ - $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@; \ - fi - -command-[+ name +].lst: [+ name +].pp $(srcdir)/gencmdlist.sh - cat $< | sh $(srcdir)/gencmdlist.sh [+ name +] > $@ || (rm -f $@; exit 1) - -fs-[+ name +].lst: [+ name +].pp $(srcdir)/genfslist.sh - cat $< | sh $(srcdir)/genfslist.sh [+ name +] > $@ || (rm -f $@; exit 1) - -video-[+ name +].lst: [+ name +].pp $(srcdir)/genvideolist.sh - cat $< | sh $(srcdir)/genvideolist.sh [+ name +] > $@ || (rm -f $@; exit 1) - -partmap-[+ name +].lst: [+ name +].pp $(srcdir)/genpartmaplist.sh - cat $< | sh $(srcdir)/genpartmaplist.sh [+ name +] > $@ || (rm -f $@; exit 1) - -parttool-[+ name +].lst: [+ name +].pp $(srcdir)/genparttoollist.sh - cat $< | sh $(srcdir)/genparttoollist.sh [+ name +] > $@ || (rm -f $@; exit 1) - -handler-[+ name +].lst: [+ name +].pp $(srcdir)/genhandlerlist.sh - cat $< | sh $(srcdir)/genhandlerlist.sh [+ name +] > $@ || (rm -f $@; exit 1) - -terminal-[+ name +].lst: [+ name +].pp $(srcdir)/genterminallist.sh - cat $< | sh $(srcdir)/genterminallist.sh [+ name +] > $@ || (rm -f $@; exit 1) """ return r @@ -479,9 +416,8 @@ r += "[+ IF mansection +]" + manpage() + "[+ ENDIF +]" r += "[+ ENDIF +]" - r += rule("[+ name +]", "$(top_builddir)/config.status " + platform_sources(platform), """ -$(top_builddir)/config.status --file=-:""" + platform_sources(platform) + """ \ - | sed -e 's,@pkglib_DATA@,$(pkglib_DATA),g' > $@ + r += rule("[+ name +]", platform_sources(platform) + " $(top_builddir)/config.status", """ +$(top_builddir)/config.status --file=-:$< | sed -e 's,@pkglib_DATA@,$(pkglib_DATA),g' > $@ chmod a+x [+ name +] """) === modified file 'grub-core/Makefile.am' --- grub-core/Makefile.am 2010-08-22 15:30:22 +0000 +++ grub-core/Makefile.am 2010-08-29 11:13:07 +0000 @@ -235,8 +235,8 @@ $(TARGET_CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_KERNEL) $(CPPFLAGS) $(CFLAGS) -DGRUB_SYMBOL_GENERATOR=1 $^ >kernel_syms.input if grep "^#define HAVE_ASM_USCORE" $(top_builddir)/config.h; then u="_"; else u=""; fi; \ cat kernel_syms.input | grep -v '^#' | sed -n \ - -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/'"$$u"'\1 kernel/;p;}' \ - -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/'"$$u"'\1 kernel/;p;}' \ + -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/defined '"$$u"'kernel \1/;p;}' \ + -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/defined '"$$u"' kernel \1/;p;}' \ | sort -u >$@ rm -f kernel_syms.input CLEANFILES += kernel_syms.lst @@ -256,61 +256,100 @@ CLEANFILES += grub_emu_init.c endif -# .lst files -platform_DATA += moddep.lst +# List files + +fs.lst: $(PP_FILES) + (for pp in $^; do \ + b=`basename $$pp .pp`; \ + if grep -v "^#" $$pp | grep '^ *grub_fs_register' >/dev/null 2>&1; then \ + echo $$b; \ + fi; \ + done) | sort -u > $@ platform_DATA += fs.lst +CLEANFILES += fs.lst + +command.lst: $(PP_FILES) + (for pp in $^; do \ + b=`basename $$pp .pp`; \ + grep -v "^#" $$pp | sed -n \ + -e "/grub_register_command *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" \ + -e "/grub_register_extcmd *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \ + -e "/grub_register_command_p1 *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}"; \ + done) | sort -u > $@ platform_DATA += command.lst +CLEANFILES += command.lst + +partmap.lst: $(PP_FILES) + (for pp in $^; do \ + b=`basename $$pp .pp`; \ + if grep -v "^#" $$pp | grep '^ *grub_partition_map_register' >/dev/null 2>&1; then \ + echo $$b; \ + fi; \ + done) | sort -u > $@ platform_DATA += partmap.lst +CLEANFILES += partmap.lst + +handler.lst: $(PP_FILES) + (for pp in $^; do \ + b=`basename $$pp .pp`; \ + grep -v "^#" $$pp | sed -n \ + -e "/grub_parser_register *( *\"/{s/.*( *\"\([^\"]*\)\".*/parser.\1: $$b/;p;}"; \ + done) | sort -u > $@ platform_DATA += handler.lst +CLEANFILES += handler.lst + +terminal.lst: $(PP_FILES) + (for pp in $^; do \ + b=`basename $$pp .pp`; \ + grep -v "^#" $$pp | sed -n \ + -e "/grub_term_register_input *( *\"/{s/.*( *\"\([^\"]*\)\".*/i\1: $$b/;p;}" \ + -e "/grub_term_register_output *( *\"/{s/.*( *\"\([^\"]*\)\".*/o\1: $$b/;p;}"; \ + done) | sort -u > $@ platform_DATA += terminal.lst +CLEANFILES += terminal.lst + +parttool.lst: $(PP_FILES) + (for pp in $^; do \ + b=`basename $$pp .pp`; \ + grep -v "^#" $$pp | sed -n \ + -e "/grub_parttool_register *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}"; \ + done) | sort -u > $@ platform_DATA += parttool.lst +CLEANFILES += parttool.lst + +video.lst: $(PP_FILES) + (for pp in $^; do \ + b=`basename $$pp .pp`; \ + if grep -v "^#" $$pp | grep '^ *grub_video_register' >/dev/null 2>&1; then \ + echo $$b; \ + fi; \ + done) | sort -u > $@ platform_DATA += video.lst -platform_DATA += crypto.lst -CLEANFILES += moddep.lst -CLEANFILES += handler.lst -CLEANFILES += terminal.lst -CLEANFILES += parttool.lst -CLEANFILES += video.lst -CLEANFILES += crypto.lst - -fs.lst: $(FS_FILES) - cat $^ /dev/null | sort | uniq > $@ -CLEANFILES += fs.lst - -command.lst: $(COMMAND_FILES) - cat $^ /dev/null | sort | uniq > $@ -CLEANFILES += command.lst - -partmap.lst: $(PARTMAP_FILES) - cat $^ /dev/null | sort | uniq > $@ -CLEANFILES += partmap.lst - -handler.lst: $(HANDLER_FILES) - cat $^ /dev/null | sort | uniq > $@ -CLEANFILES += handler.lst - -terminal.lst: $(TERMINAL_FILES) - cat $^ /dev/null | sort | uniq > $@ -CLEANFILES += terminal.lst - -parttool.lst: $(PARTTOOL_FILES) - cat $^ /dev/null | sort | uniq > $@ -CLEANFILES += parttool.lst - -video.lst: $(VIDEO_FILES) - cat $^ /dev/null | sort | uniq > $@ CLEANFILES += video.lst # but, crypto.lst is simply copied crypto.lst: $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst cp $^ $@ +platform_DATA += crypto.lst CLEANFILES += crypto.lst +syminfo.lst: gensyminfo.sh kernel_syms.lst $(MODULE_FILES) + cat kernel_syms.lst > $...@.new + for m in $(MODULE_FILES); do \ + sh $< $$m >> $...@.new || exit 1; \ + done + mv $...@.new $@ + # generate global module dependencies list -moddep.lst: kernel_syms.lst genmoddep.awk $(DEF_FILES) $(UND_FILES) - cat $(DEF_FILES) kernel_syms.lst /dev/null \ - | $(AWK) -f $(srcdir)/genmoddep.awk $(UND_FILES) > $@ \ - || (rm -f $@; exit 1) +moddep.lst: syminfo.lst genmoddep.awk + cat $< | sort | awk -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1) +platform_DATA += moddep.lst +CLEANFILES += config.log syminfo.lst moddep.lst + +$(MOD_FILES): %.mod : genmod.sh moddep.lst %.module$(EXEEXT) + sh $^ $@ +platform_DATA += $(MOD_FILES) +CLEANFILES += $(MOD_FILES) if COND_i386_pc if COND_ENABLE_EFIEMU === modified file 'grub-core/Makefile.core.def' --- grub-core/Makefile.core.def 2010-08-23 07:53:56 +0000 +++ grub-core/Makefile.core.def 2010-08-29 11:13:07 +0000 @@ -1403,3 +1403,13 @@ name = datehook; common = hook/datehook.c; }; + +script = { + name = gensyminfo.sh; + common = gensyminfo.sh.in; +}; + +script = { + name = genmod.sh; + common = genmod.sh.in; +}; === removed file 'grub-core/gencmdlist.sh' --- grub-core/gencmdlist.sh 2010-05-06 06:04:04 +0000 +++ grub-core/gencmdlist.sh 1970-01-01 00:00:00 +0000 @@ -1,22 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2005,2009 Free Software Foundation, Inc. -# -# This gensymlist.sh is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Read source code from stdin and detect command names. - -module=$1 - -grep -v "^#" | sed -n \ - -e "/grub_register_command *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $module/;p;}" \ - -e "/grub_register_extcmd *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $module/;p;}" \ - -e "/grub_register_command_p1 *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $module/;p;}" - === removed file 'grub-core/genfslist.sh' --- grub-core/genfslist.sh 2010-05-06 06:04:04 +0000 +++ grub-core/genfslist.sh 1970-01-01 00:00:00 +0000 @@ -1,26 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2005,2008 Free Software Foundation, Inc. -# -# This gensymlist.sh is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Read source code from stdin and detect fs names. - -module=$1 - -# Ignore kernel.mod. -if test $module = kernel; then - exit -fi - -# For now, this emits only a module name, if the module registers a filesystem. -if grep -v "^#" | grep '^ *grub_fs_register' >/dev/null 2>&1; then - echo $module -fi === removed file 'grub-core/genhandlerlist.sh' --- grub-core/genhandlerlist.sh 2010-05-06 06:04:04 +0000 +++ grub-core/genhandlerlist.sh 1970-01-01 00:00:00 +0000 @@ -1,19 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2009 Free Software Foundation, Inc. -# -# This script is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Read source code from stdin and detect command names. - -module=$1 - -grep -v "^#" | sed -n \ - -e "/grub_parser_register *( *\"/{s/.*( *\"\([^\"]*\)\".*/parser.\1: $module/;p;}" === added file 'grub-core/genmod.sh.in' --- grub-core/genmod.sh.in 1970-01-01 00:00:00 +0000 +++ grub-core/genmod.sh.in 2010-08-29 11:13:07 +0000 @@ -0,0 +1,73 @@ +#! /bin/sh -e +# +# Copyright (C) 2010 Free Software Foundation, Inc. +# +# This gensymlist.sh is free software; the author +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# +# Example: +# +# genmod.sh moddep.lst normal.module echo.module +# + +moddep=$1 +infile=$2 +outfile=$3 + +tmpfile=${outfile}.tmp +modname=`echo $infile | sed -e 's...@\.module.*$@@'` + +if ! grep ^$modname: $moddep >/dev/null; then + echo "warning: moddep.lst has no dependencies for $modname" >&2 + exit 0 +fi + +deps=`grep ^$modname: $moddep | sed s...@^.*:@@` + +# remove old files if any +rm -f $tmpfile $outfile + +# stripout .modname and .moddeps sections from input module +objcopy -R .modname -R .moddeps $infile $tmpfile + +# Attach .modname and .moddeps sections +t1=`mktemp` +printf "$modname\0" >$t1 + +t2=`mktemp` +for dep in $deps; do printf "$dep\0" >> $t2; done + +if test -n "$deps"; then + objcopy --add-section .modname=$t1 --add-section .moddeps=$t2 $tmpfile +else + objcopy --add-section .modname=$t1 $tmpfile +fi +rm -f $t1 $t2 + +if test x...@target_apple_cc@ != x1; then + if ! test -z "@TARGET_OBJ2ELF@"; then + ./@TARGET_OBJ2ELF@ $tmpfile || exit 1 + fi + if test x...@platform@ != xemu; then + @STRIP@ --strip-unneeded \ + -K grub_mod_init -K grub_mod_fini \ + -K _grub_mod_init -K _grub_mod_fini \ + -R .note -R .comment $tmpfile || exit 1 + fi +else +# XXX Test these Apple CC fixes + cp $tmpfile $tmpfile.bin + @OBJCONV@ -...@target_module_format@ \ + -nr:_grub_mod_init:grub_mod_init \ + -nr:_grub_mod_fini:grub_mod_fini \ + -wd1106 -ew2030 -ew2050 -nu -nd $tmpfile.bin $tmpfile || exit 1 + rm -f $name.bin +fi +mv $tmpfile $outfile === modified file 'grub-core/genmoddep.awk' --- grub-core/genmoddep.awk 2010-06-03 06:22:33 +0000 +++ grub-core/genmoddep.awk 2010-08-29 11:13:07 +0000 @@ -11,23 +11,28 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -# Read defined symbols from stdin. +# Read symbols' info from stdin. BEGIN { + error = 0 + lineno = 0; while (getline <"/dev/stdin") { - symtab[$1] = $2 - } -} - -# The rest is undefined symbols. -{ - module = $2 - - if ($1 in symtab) { - modtab[module] = modtab[module] " " symtab[$1]; - } - else if ($1 != "__gnu_local_gp") { - printf "%s in %s is not defined\n", $1, module >"/dev/stderr"; - error++; + lineno++; + if ($1 == "defined") { + symtab[$3] = $2; + modtab[$2] = "" modtab[$2] + } else if ($1 == "undefined") { + if ($3 in symtab) + modtab[$2] = modtab[$2] " " symtab[$3]; + else if ($3 != "__gnu_local_gp") { + printf "%s in %s is not defined\n", $3, $2 >"/dev/stderr"; + error++; + } + } + else { + printf "error: %u: unrecognized input format\n", lineno; + error++; + break; + } } } === removed file 'grub-core/genmodsrc.sh' --- grub-core/genmodsrc.sh 2010-05-06 06:04:04 +0000 +++ grub-core/genmodsrc.sh 1970-01-01 00:00:00 +0000 @@ -1,47 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2002,2007 Free Software Foundation, Inc. -# -# This genmodsrc.sh is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -set -e - -mod_name="$1" -deps="$2" - -cat <<EOF -/* This file is automatically generated by genmodsrc.sh. DO NOT EDIT! */ -/* - * GRUB -- GRand Unified Bootloader - * Copyright (C) 2002,2007 Free Software Foundation, Inc. - * - * GRUB is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * GRUB is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GRUB. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <grub/dl.h> - -EOF - -echo "GRUB_MOD_NAME(${mod_name});" - -for mod in `grep "^${mod_name}:" ${deps} | sed 's/^[^:]*://'`; do - echo "GRUB_MOD_DEP(${mod});" -done === removed file 'grub-core/genpartmaplist.sh' --- grub-core/genpartmaplist.sh 2010-05-06 06:04:04 +0000 +++ grub-core/genpartmaplist.sh 1970-01-01 00:00:00 +0000 @@ -1,26 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2005, 2008 Free Software Foundation, Inc. -# -# This script is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Read source code from stdin and detect partmap names. - -module=$1 - -# Ignore kernel.mod. -if test $module = kernel; then - exit -fi - -# For now, this emits only a module name, if the module registers a partition map. -if grep -v "^#" | grep '^ *grub_partition_map_register' >/dev/null 2>&1; then - echo $module -fi === removed file 'grub-core/genparttoollist.sh' --- grub-core/genparttoollist.sh 2010-05-06 06:04:04 +0000 +++ grub-core/genparttoollist.sh 1970-01-01 00:00:00 +0000 @@ -1,19 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2009 Free Software Foundation, Inc. -# -# This gensymlist.sh is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Read source code from stdin and detect parttool names. - -module=$1 - -grep -v "^#" | sed -n \ - -e "/grub_parttool_register *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $module/;p;}" === added file 'grub-core/gensyminfo.sh.in' --- grub-core/gensyminfo.sh.in 1970-01-01 00:00:00 +0000 +++ grub-core/gensyminfo.sh.in 2010-08-29 05:47:30 +0000 @@ -0,0 +1,34 @@ +#! /bin/sh -e +# +# Copyright (C) 2010 Free Software Foundation, Inc. +# +# This gensymlist.sh is free software; the author +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# +# Example: +# +# gensyms.sh normal.module +# + +module=$1 +modname=`echo $module | sed -e 's...@\.module.*$@@'` + +# Print all symbols defined by module +if test x...@target_apple_cc@ = x1; then + @NM@ -g -P -p $module | \ + grep -E '^[a-zA-Z0-9_]* [TDS]' | \ + sed "s...@^\([^ ]*\)....@defined $modname \...@g" +else + @NM@ -g --defined-only -P -p $module | \ + sed "s...@^\([^ ]*\)....@defined $modname \...@g" +fi + +# Print all undefined symbols used by module +...@nm@ -u -P -p $module | sed "s...@^\([^ ]*\)....@undefined $modname \...@g" === removed file 'grub-core/genterminallist.sh' --- grub-core/genterminallist.sh 2010-05-06 06:04:04 +0000 +++ grub-core/genterminallist.sh 1970-01-01 00:00:00 +0000 @@ -1,20 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2009,2010 Free Software Foundation, Inc. -# -# This script is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Read source code from stdin and detect command names. - -module=$1 - -grep -v "^#" | sed -n \ - -e "/grub_term_register_input *( *\"/{s/.*( *\"\([^\"]*\)\".*/i\1: $module/;p;}" \ - -e "/grub_term_register_output *( *\"/{s/.*( *\"\([^\"]*\)\".*/o\1: $module/;p;}" \ === removed file 'grub-core/genvideolist.sh' --- grub-core/genvideolist.sh 2010-05-06 06:04:04 +0000 +++ grub-core/genvideolist.sh 1970-01-01 00:00:00 +0000 @@ -1,26 +0,0 @@ -#! /bin/sh -# -# Copyright (C) 2005,2008,2009 Free Software Foundation, Inc. -# -# This script is free software; the author -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Read source code from stdin and detect partmap names. - -module=$1 - -# Ignore video.mod. -if test $module = video; then - exit -fi - -# For now, this emits only a module name, if the module registers a partition map. -if grep -v "^#" | grep '^ *grub_video_register' >/dev/null 2>&1; then - echo $module -fi # Begin bundle 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 EnIL
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel