]> git.proxmox.com Git - grub2.git/commitdiff
use preprocessing-marker technique for creating list files
authorBVK Chaitanya <bvk@dbook>
Sun, 29 Aug 2010 15:52:41 +0000 (21:22 +0530)
committerBVK Chaitanya <bvk@dbook>
Sun, 29 Aug 2010 15:52:41 +0000 (21:22 +0530)
conf/Makefile.common
gentpl.py
grub-core/Makefile.am

index 1cf5a4b72154a71df0db1293532c7017281e8640..f13cbdc547ff6c24b7e3a79343e925f7880e4956 100644 (file)
@@ -83,12 +83,26 @@ CPPFLAGS_POSIX = -I$(top_srcdir)/grub-core/lib/posix_wrap
 
 CPPFLAGS_EFIEMU = -I$(top_srcdir)/grub-core/efiemu/runtime
 
+# List file macros for recognizing /interesting/ modules
+CPPFLAGS_FS_LIST = -Dgrub_fs_register=FS_LIST_MARKER
+CPPFLAGS_VIDEO_LIST= -Dgrub_video_register=VIDEO_LIST_MARKER
+CPPFLAGS_PARTMAP_LIST = -Dgrub_partition_map_register=PARTMAP_LIST_MARKER
+CPPFLAGS_PARTTOOL_LIST = -Dgrub_parttool_register=PARTTOOL_LIST_MARKER
+CPPFLAGS_TERMINAL_LIST = '-Dgrub_term_register_input(...)=INPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
+CPPFLAGS_TERMINAL_LIST += '-Dgrub_term_register_output(...)=OUTPUT_TERMINAL_LIST_MARKER(__VA_ARGS__)'
+CPPFLAGS_COMMAND_LIST = '-Dgrub_register_command(...)=COMMAND_LIST_MARKER(__VA_ARGS__)'
+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_extcmd(...)=EXTCOMMAND_LIST_MARKER(__VA_ARGS__)'
+CPPFLAGS_COMMAND_LIST += '-Dgrub_register_command_p1(...)=P1COMMAND_LIST_MARKER(__VA_ARGS__)'
+CPPFLAGS_MARKER = $(CPPFLAGS_FS_LIST) $(CPPFLAGS_VIDEO_LIST) \
+       $(CPPFLAGS_PARTTOOL_LIST) $(CPPFLAGS_PARTMAP_LIST) \
+       $(CPPFLAGS_TERMINAL_LIST) $(CPPFLAGS_COMMAND_LIST)
+
 # Define these variables to calm down automake
 
-PP_FILES =
 IMG_FILES =
 MOD_FILES =
 MODULE_FILES =
+MARKER_FILES =
 KERNEL_HEADER_FILES =
 
 man_MANS =
index 81b44316b9c5273a88cdb3ee859b29e06960bf73..f520ebf99511ed1f56947f642d08b9a01d7d9b05 100644 (file)
--- a/gentpl.py
+++ b/gentpl.py
@@ -285,11 +285,12 @@ def module(platform):
     r += gvar_add("CLEANFILES", "$(nodist_" + cname() + "_SOURCES)")
 
     r += gvar_add("MOD_FILES", "[+ name +].mod")
-    r += gvar_add("PP_FILES", "[+ name +].pp")
-    r += gvar_add("CLEANFILES", "[+ name +].pp")
+    r += gvar_add("MARKER_FILES", "[+ name +].marker")
+    r += gvar_add("CLEANFILES", "[+ name +].marker")
     r += """
-[+ name +].pp: $(""" + cname() + """_SOURCES) $(nodist_""" + cname() + """_SOURCES)
-       $(TARGET_CPP) -DGRUB_LST_GENERATOR $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname() + """_CPPFLAGS) $(CPPFLAGS) $^ > $@ || (rm -f $@; exit 1)
+[+ name +].marker: $(""" + cname() + """_SOURCES) $(nodist_""" + cname() + """_SOURCES)
+       $(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname() + """_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)
+       grep 'MARKER' $@.new > $@; rm -f $@.new
 """
     return r
 
index c277cd47e6ad78164595b77f20ef0472a4aad093..3ee526ff8d5fbe264a4f6f045644a232708a02dd 100644 (file)
@@ -258,69 +258,60 @@ endif
 
 # List files
 
-fs.lst: $(PP_FILES)
+fs.lst: $(MARKER_FILES)
        (for pp in $^; do \
-         b=`basename $$pp .pp`; \
-         if grep -v "^#" $$pp | grep '^ *grub_fs_register' >/dev/null 2>&1; then \
+         b=`basename $$pp .marker`; \
+         if grep 'FS_LIST_MARKER' $$pp >/dev/null 2>&1; then \
            echo $$b; \
          fi; \
        done) | sort -u > $@
 platform_DATA += fs.lst
 CLEANFILES += fs.lst
 
-command.lst: $(PP_FILES)
+command.lst: $(MARKER_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;}"; \
+         b=`basename $$pp .marker`; \
+         sed -n \
+           -e "/COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" \
+           -e "/EXTCOMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" \
+           -e "/P1COMMAND_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/*\1: $$b/;p;}" $$pp; \
        done) | sort -u > $@
 platform_DATA += command.lst
 CLEANFILES += command.lst
 
-partmap.lst: $(PP_FILES)
+partmap.lst: $(MARKER_FILES)
        (for pp in $^; do \
-         b=`basename $$pp .pp`; \
-         if grep -v "^#" $$pp | grep '^ *grub_partition_map_register' >/dev/null 2>&1; then \
+         b=`basename $$pp .marker`; \
+         if grep 'PARTMAP_LIST_MARKER' $$pp >/dev/null 2>&1; then \
            echo $$b; \
          fi; \
        done) | sort -u > $@
 platform_DATA += partmap.lst
 CLEANFILES += partmap.lst
 
-handler.lst: $(PP_FILES)
+terminal.lst: $(MARKER_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;}"; \
+         b=`basename $$pp .marker`; \
+         sed -n \
+           -e "/INPUT_TERMINAL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/i\1: $$b/;p;}" \
+           -e "/OUTPUT_TERMINAL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/o\1: $$b/;p;}" $$pp; \
        done) | sort -u > $@
 platform_DATA += terminal.lst
 CLEANFILES += terminal.lst
 
-parttool.lst: $(PP_FILES)
+parttool.lst: $(MARKER_FILES)
        (for pp in $^; do \
-         b=`basename $$pp .pp`; \
-         grep -v "^#" $$pp | sed -n \
-           -e "/grub_parttool_register *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}"; \
+         b=`basename $$pp .marker`; \
+         sed -n \
+           -e "/PARTTOOL_LIST_MARKER *( *\"/{s/.*( *\"\([^\"]*\)\".*/\1: $$b/;p;}" $$pp; \
        done) | sort -u > $@
 platform_DATA += parttool.lst
 CLEANFILES += parttool.lst
 
-video.lst: $(PP_FILES)
+video.lst: $(MARKER_FILES)
        (for pp in $^; do \
-         b=`basename $$pp .pp`; \
-         if grep -v "^#" $$pp | grep '^ *grub_video_register' >/dev/null 2>&1; then \
+         b=`basename $$pp .marker`; \
+         if grep 'VIDEO_LIST_MARKER' $$pp >/dev/null 2>&1; then \
            echo $$b; \
          fi; \
        done) | sort -u > $@