[coreboot-gerrit] New patch to review for coreboot: Makefile.inc: Don't run submodule init every build
Martin Roth (martinroth@google.com)
gerrit at coreboot.org
Fri Apr 8 04:23:49 CEST 2016
Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14259
-gerrit
commit c8cdc6fbee38e5b3df657b04a71cc742b1d228c6
Author: Martin Roth <martinroth at google.com>
Date: Tue Apr 5 11:09:22 2016 -0600
Makefile.inc: Don't run submodule init every build
Currently the build tries to init the submodules with every build
which leads to a lot of overhead.
This turns the update into a target function which will only try to
init the submodules if the submodule directory doesn't exist.
Change-Id: I5c4a40d28f613b752751e3fc75bb55a60b6a802f
Signed-off-by: Martin Roth <martinroth at google.com>
---
Makefile.inc | 38 ++++++++++++++++++++++++++++----------
src/arch/arm64/Makefile.inc | 2 +-
src/commonlib/Makefile.inc | 8 ++++++++
util/cbfstool/Makefile.inc | 2 +-
util/nvidia/Makefile.inc | 4 ++--
util/nvramtool/Makefile.inc | 2 +-
6 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/Makefile.inc b/Makefile.inc
index 6be9d52..e3db0a8 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -174,14 +174,6 @@ ifeq ($(CONFIG_COVERAGE),y)
ramstage-c-ccopts += -fprofile-arcs -ftest-coverage
endif
-# try to fetch non-optional submodules if the source is under git
-forgetthis:=$(if $(GIT),$(shell git submodule update --init))
-ifeq ($(CONFIG_USE_BLOBS),y)
-# this is necessary because 3rdparty/blobs is update=none, and so is ignored
-# unless explicitly requested and enabled through --checkout
-forgetthis:=$(if $(GIT),$(shell git submodule update --init --checkout 3rdparty/blobs))
-endif
-
ramstage-c-deps:=$$(OPTION_TABLE_H)
romstage-c-deps:=$$(OPTION_TABLE_H)
libverstage-c-deps:=$$(OPTION_TABLE_H)
@@ -373,12 +365,38 @@ build-dirs:
mkdir -p $(objcbfs) $(objgenerated)
#######################################################################
+# try to fetch non-optional submodules if the source is under git
+
+SUBMODULES := \
+ 3rdparty/vboot/.git \
+ 3rdparty/arm-trusted-firmware/.git \
+ 3rdparty/chromeec/.git \
+ 3rdparty/blobs/.git \
+ util/nvidia/cbootimage/.git
+
+submodules: $(SUBMODULES)
+
+3rdparty/vboot/.git 3rdparty/arm-trusted-firmware/.git 3rdparty/chromeec/.git util/nvidia/cbootimage/.git:
+ifneq ($(GIT),)
+ git submodule update --init --checkout $(subst /.git,,$@)
+endif
+
+3rdparty/blobs/.git:
+ifeq ($(CONFIG_USE_BLOBS),y)
+ifneq ($(GIT),)
+ git submodule update --init --checkout $(subst /.git,,$@)
+endif
+endif
+
+.PHONY: submodules
+
+#######################################################################
# Build the tools
CBFSTOOL:=$(objutil)/cbfstool/cbfstool
FMAPTOOL:=$(objutil)/cbfstool/fmaptool
RMODTOOL:=$(objutil)/cbfstool/rmodtool
-$(obj)/cbfstool: $(CBFSTOOL)
+$(obj)/cbfstool: $(CBFSTOOL) | submodules
cp $< $@
$(obj)/fmaptool: $(FMAPTOOL)
@@ -541,7 +559,7 @@ $(objcbfs)/bootblock.raw.bin: $(objcbfs)/bootblock.elf
$(objcbfs)/%.bin: $(objcbfs)/%.raw.bin
cp $< $@
-$(objcbfs)/%.elf: $(objcbfs)/%.debug
+$(objcbfs)/%.elf: $(objcbfs)/%.debug | submodules
$(eval class := $(call find-class,$(@F)))
@printf " OBJCOPY $(subst $(obj)/,,$(@))\n"
cp $< $@.tmp
diff --git a/src/arch/arm64/Makefile.inc b/src/arch/arm64/Makefile.inc
index dffdd9c..32fbfa5 100644
--- a/src/arch/arm64/Makefile.inc
+++ b/src/arch/arm64/Makefile.inc
@@ -170,7 +170,7 @@ BL31_LDFLAGS := --emit-relocs
BL31 := $(obj)/bl31.elf
-$(BL31): $(obj)/build.h
+$(BL31): $(obj)/build.h | submodules
@printf " MAKE $(subst $(obj)/,,$(@))\n"
CROSS_COMPILE="$(CROSS_COMPILE_arm64)" \
CFLAGS="$(BL31_CFLAGS)" \
diff --git a/src/commonlib/Makefile.inc b/src/commonlib/Makefile.inc
index 7c14f7c..fec86d9 100644
--- a/src/commonlib/Makefile.inc
+++ b/src/commonlib/Makefile.inc
@@ -25,3 +25,11 @@ verstage-y += lz4_wrapper.c
romstage-y += lz4_wrapper.c
ramstage-y += lz4_wrapper.c
postcar-y += lz4_wrapper.c
+
+# cbfs.c needs the vboot submodule to be downloaded before it will compile
+$(call src-to-obj,bootblock,$(dir)/cbfs.c) : submodules
+$(call src-to-obj,romstage,$(dir)/cbfs.c) : submodules
+$(call src-to-obj,ramstage,$(dir)/cbfs.c) : submodules
+$(call src-to-obj,smm,$(dir)/cbfs.c) : submodules
+$(call src-to-obj,verstage,$(dir)/cbfs.c) : submodules
+$(call src-to-obj,postcar,$(dir)/cbfs.c) : submodules
diff --git a/util/cbfstool/Makefile.inc b/util/cbfstool/Makefile.inc
index f480616..e097d8e 100644
--- a/util/cbfstool/Makefile.inc
+++ b/util/cbfstool/Makefile.inc
@@ -109,7 +109,7 @@ $(objutil)/cbfstool/%.o: $(top)/util/cbfstool/lzma/C/%.c
printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
$(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
-$(objutil)/cbfstool/%.o: $(top)/3rdparty/vboot/firmware/2lib/%.c
+$(objutil)/cbfstool/%.o: $$(top)/3rdparty/vboot/firmware/2lib/%.c
printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
$(HOSTCC) $(TOOLCPPFLAGS) $(TOOLCFLAGS) $(HOSTCFLAGS) -c -o $@ $<
diff --git a/util/nvidia/Makefile.inc b/util/nvidia/Makefile.inc
index 133778f..db569d7 100644
--- a/util/nvidia/Makefile.inc
+++ b/util/nvidia/Makefile.inc
@@ -45,11 +45,11 @@ CBOOTIMAGE_FLAGS:=-Wall -std=c99 -O2
additional-dirs += $(sort $(dir $(CBOOTIMAGE_OBJS)))
-$(objutil)/nvidia/cbootimage/%.o: util/nvidia/cbootimage/src/%.c
+$(objutil)/nvidia/cbootimage/%.o: $$(top)/util/nvidia/cbootimage/src/%.c
printf " HOSTCC $(subst $(objutil)/,,$(@))\n"
$(HOSTCC) $(CBOOTIMAGE_FLAGS) -c -o $@ $<
-$(CBOOTIMAGE): $(CBOOTIMAGE_OBJS)
+$(CBOOTIMAGE): $(CBOOTIMAGE_OBJS) | submodules
printf " HOSTCC $(subst $(objutil)/,,$(@)) (link)\n"
$(HOSTCC) $(CBOOTIMAGE_FLAGS) -o $@.tmp $^ -lm
mv $@.tmp $@
diff --git a/util/nvramtool/Makefile.inc b/util/nvramtool/Makefile.inc
index 48f6d86..d78ec11 100644
--- a/util/nvramtool/Makefile.inc
+++ b/util/nvramtool/Makefile.inc
@@ -36,7 +36,7 @@ NVRAMTOOLLDFLAGS += -lregex -lwsock32
nvramtoolobj += win32mmap.o
endif
-$(objutil)/nvramtool $(objutil)/nvramtool/accessors $(objutil)/nvramtool/cli:
+$(objutil)/nvramtool $(objutil)/nvramtool/accessors $(objutil)/nvramtool/cli: submodules
mkdir -p $@
$(objutil)/nvramtool/%.o: $(top)/util/nvramtool/%.c
More information about the coreboot-gerrit
mailing list