build: Track explicit module dependencies in Makefile.core.def
Add a new keyword, "depends", to the module definition syntax used in Makefile.core.def. This allows specifying explicit module dependencies together with the module definition. Do not track the "extra_deps.lst" file in the repository anymore, it is now auto-generated. Make use of this new keyword in the bli module definition. Signed-off-by: Oliver Steffen <osteffen@redhat.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
8719cc2040
commit
6744840b17
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,7 +11,6 @@
|
|||||||
*.img
|
*.img
|
||||||
*.log
|
*.log
|
||||||
*.lst
|
*.lst
|
||||||
!/grub-core/extra_deps.lst
|
|
||||||
*.marker
|
*.marker
|
||||||
*.mod
|
*.mod
|
||||||
*.o
|
*.o
|
||||||
|
|||||||
@ -111,6 +111,7 @@ MOD_FILES =
|
|||||||
MODULE_FILES =
|
MODULE_FILES =
|
||||||
MARKER_FILES =
|
MARKER_FILES =
|
||||||
KERNEL_HEADER_FILES =
|
KERNEL_HEADER_FILES =
|
||||||
|
EXTRA_DEPS =
|
||||||
|
|
||||||
bin_SCRIPTS =
|
bin_SCRIPTS =
|
||||||
bin_PROGRAMS =
|
bin_PROGRAMS =
|
||||||
|
|||||||
@ -631,6 +631,9 @@ def platform_values(defn, platform, suffix):
|
|||||||
def extra_dist(defn):
|
def extra_dist(defn):
|
||||||
return foreach_value(defn, "extra_dist", lambda value: value + " ")
|
return foreach_value(defn, "extra_dist", lambda value: value + " ")
|
||||||
|
|
||||||
|
def extra_dep(defn):
|
||||||
|
return foreach_value(defn, "depends", lambda value: value + " ")
|
||||||
|
|
||||||
def platform_sources(defn, p): return platform_values(defn, p, "")
|
def platform_sources(defn, p): return platform_values(defn, p, "")
|
||||||
def platform_nodist_sources(defn, p): return platform_values(defn, p, "_nodist")
|
def platform_nodist_sources(defn, p): return platform_values(defn, p, "_nodist")
|
||||||
|
|
||||||
@ -699,6 +702,10 @@ def module(defn, platform):
|
|||||||
gvar_add("MOD_FILES", name + ".mod")
|
gvar_add("MOD_FILES", name + ".mod")
|
||||||
gvar_add("MARKER_FILES", name + ".marker")
|
gvar_add("MARKER_FILES", name + ".marker")
|
||||||
gvar_add("CLEANFILES", name + ".marker")
|
gvar_add("CLEANFILES", name + ".marker")
|
||||||
|
|
||||||
|
for dep in defn.find_all("depends"):
|
||||||
|
gvar_add("EXTRA_DEPS", "depends " + name + " " + dep + ":")
|
||||||
|
|
||||||
output("""
|
output("""
|
||||||
""" + name + """.marker: $(""" + cname(defn) + """_SOURCES) $(nodist_""" + cname(defn) + """_SOURCES)
|
""" + name + """.marker: $(""" + cname(defn) + """_SOURCES) $(nodist_""" + cname(defn) + """_SOURCES)
|
||||||
$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname(defn) + """_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)
|
$(TARGET_CPP) -DGRUB_LST_GENERATOR $(CPPFLAGS_MARKER) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(""" + cname(defn) + """_CPPFLAGS) $(CPPFLAGS) $^ > $@.new || (rm -f $@; exit 1)
|
||||||
|
|||||||
@ -454,8 +454,11 @@ crypto.lst: $(srcdir)/lib/libgcrypt-grub/cipher/crypto.lst
|
|||||||
platform_DATA += crypto.lst
|
platform_DATA += crypto.lst
|
||||||
CLEANFILES += crypto.lst
|
CLEANFILES += crypto.lst
|
||||||
|
|
||||||
syminfo.lst: gensyminfo.sh kernel_syms.lst $(top_srcdir)/grub-core/extra_deps.lst $(MODULE_FILES)
|
extra_deps.lst:
|
||||||
cat kernel_syms.lst $(top_srcdir)/grub-core/extra_deps.lst > $@.new
|
@echo $(EXTRA_DEPS) | sed "s/\s*:\s*/\n/g" > $@
|
||||||
|
|
||||||
|
syminfo.lst: gensyminfo.sh kernel_syms.lst extra_deps.lst $(MODULE_FILES)
|
||||||
|
cat kernel_syms.lst extra_deps.lst > $@.new
|
||||||
for m in $(MODULE_FILES); do \
|
for m in $(MODULE_FILES); do \
|
||||||
sh $< $$m >> $@.new || exit 1; \
|
sh $< $$m >> $@.new || exit 1; \
|
||||||
done
|
done
|
||||||
@ -465,7 +468,7 @@ syminfo.lst: gensyminfo.sh kernel_syms.lst $(top_srcdir)/grub-core/extra_deps.ls
|
|||||||
moddep.lst: syminfo.lst genmoddep.awk video.lst
|
moddep.lst: syminfo.lst genmoddep.awk video.lst
|
||||||
cat $< | sort | $(AWK) -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1)
|
cat $< | sort | $(AWK) -f $(srcdir)/genmoddep.awk > $@ || (rm -f $@; exit 1)
|
||||||
platform_DATA += moddep.lst
|
platform_DATA += moddep.lst
|
||||||
CLEANFILES += config.log syminfo.lst moddep.lst
|
CLEANFILES += config.log syminfo.lst moddep.lst extra_deps.lst
|
||||||
|
|
||||||
$(MOD_FILES): %.mod : genmod.sh moddep.lst %.module$(EXEEXT) build-grub-module-verifier$(BUILD_EXEEXT)
|
$(MOD_FILES): %.mod : genmod.sh moddep.lst %.module$(EXEEXT) build-grub-module-verifier$(BUILD_EXEEXT)
|
||||||
TARGET_OBJ2ELF=@TARGET_OBJ2ELF@ sh $^ $@
|
TARGET_OBJ2ELF=@TARGET_OBJ2ELF@ sh $^ $@
|
||||||
|
|||||||
@ -2598,4 +2598,5 @@ module = {
|
|||||||
name = bli;
|
name = bli;
|
||||||
efi = commands/bli.c;
|
efi = commands/bli.c;
|
||||||
enable = efi;
|
enable = efi;
|
||||||
|
depends = part_gpt;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
depends bli part_gpt
|
|
||||||
@ -35,7 +35,7 @@ BEGIN {
|
|||||||
for (i = 3; i <= NF; i++) {
|
for (i = 3; i <= NF; i++) {
|
||||||
modtab[$2] = modtab[$2] " " $i;
|
modtab[$2] = modtab[$2] " " $i;
|
||||||
}
|
}
|
||||||
}
|
} else if ($1 == "") {} #Skip empty lines
|
||||||
else {
|
else {
|
||||||
printf "error: %u: unrecognized input format\n", NR >"/dev/stderr";
|
printf "error: %u: unrecognized input format\n", NR >"/dev/stderr";
|
||||||
error++;
|
error++;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user