summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2014-12-28 18:40:37 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2014-12-28 18:40:37 -0500
commit1ed6fe4326b46d0693bffbea34d6850a046a939c (patch)
tree64d6aae10588cfbe64209741c5b4805bc4eed60f
parent8fe05997a4ffe4d193a4ba763edc2a25e49dafc5 (diff)
Make timestamp files for builddeps rules to avoid extra work
-rw-r--r--Makefile8
-rw-r--r--buildrom-withgrub.mk2
-rw-r--r--grub-mkstandalone.mk2
-rw-r--r--modules.mk78
4 files changed, 68 insertions, 22 deletions
diff --git a/Makefile b/Makefile
index e9501fe..5822815 100644
--- a/Makefile
+++ b/Makefile
@@ -12,7 +12,7 @@ romtypes = txtmode vesafb
i945boards = x60 x60t t60
-build: \
+build: PHONY \
$(foreach board,$(boards),\
$(foreach keymap,$(keymaps),\
$(foreach romtype,$(romtypes),\
@@ -53,3 +53,9 @@ include modules.mk
include build.mk
include grub-mkstandalone.mk
include buildrom-withgrub.mk
+
+
+
+.DELETE_ON_ERROR:
+PHONY:
+.PHONY: PHONY
diff --git a/buildrom-withgrub.mk b/buildrom-withgrub.mk
index 1bfa553..3a054be 100644
--- a/buildrom-withgrub.mk
+++ b/buildrom-withgrub.mk
@@ -3,7 +3,7 @@ resources/libreboot/config/%_vesafb_config: resources/libreboot/config/%_txtmode
sed 's/# CONFIG_FRAMEBUFFER_KEEP_VESA_MODE is not set/CONFIG_FRAMEBUFFER_KEEP_VESA_MODE=y/' < $< > $@
define rule_rom_nokeyboard
-tmp/$(board)_nokeyboard_$(romtype).rom: builddeps-coreboot \
+tmp/$(board)_nokeyboard_$(romtype).rom: tmp/builddeps-coreboot.stamp \
tmp/grub_$(romtype).elf \
resources/libreboot/config/$(board)_$(romtype)_config
rm -f src/coreboot/.config src/coreboot/grub.elf
diff --git a/grub-mkstandalone.mk b/grub-mkstandalone.mk
index 62bd3cb..ef03eb1 100644
--- a/grub-mkstandalone.mk
+++ b/grub-mkstandalone.mk
@@ -9,7 +9,7 @@ grub_vesafb_memdisk_deps = resources/grub/background/backgroun
# A rule-variable is used here to avoid needing .SECONDEXPANSION
define rule_grub_elf
tmp/grub_$(romtype).elf: \
- builddeps-grub \
+ tmp/builddeps-grub.stamp \
$(keymapdir)/list.mk resources/utilities/grub-assemble/modules.conf \
resources/grub/config/grub_memdisk.cfg \
$(grub_$(romtype)_memdisk_deps) \
diff --git a/modules.mk b/modules.mk
index 00c506e..acc045d 100644
--- a/modules.mk
+++ b/modules.mk
@@ -11,60 +11,100 @@ modules = \
# powertop only needs to be used when running './powertop.trisquel6'
all_modules = $(modules) powertop
+# Easy names for src/% and tmp/builddeps-%.stamp
+$(addprefix get,$(all_modules)): get%: PHONY src/%
+$(addprefix builddeps-,$(all_modules)): builddeps-%: PHONY tmp/builddeps-%.stamp
+
+# The "all" rules
getall: $(addprefix src/,$(modules))
builddeps: $(addprefix builddeps-,$(modules))
cleandeps: $(addprefix cleandeps-,$(all_modules))
- rm -rf bin/*
+ rm -rf bin/* tmp/*
-# The generic rules
+# If we depend on a file in src/*/*, we should generate it by calling
+# the builddep rule.
+$(foreach module,$(all_modules),$(eval src/$(module)/%: | tmp/builddeps-$(module).stamp; test -e $$@))
-$(foreach module,$(all_modules),$(eval src/$(module)/%: builddeps-$(module); test -e $$@))
+
+# The generic rules
+# "get" rules
+$(addprefix src/,$(all_modules)): \
src/%: get source-locations.sh
./get $*
-builddeps-%: src/%
+ test -e $@
+ touch $@
+
+# "builddeps" rules
+tmp/builddeps-%.stamp: src/%
$(MAKE) -C $<
-cleandeps-%:
+ touch $@
+
+# "cleandeps" rules
+$(addprefix cleandeps-,$(all_modules)): \
+cleandeps-%: PHONY cleandeps-%-custom
+ rm -f tmp/builddeps-%.stamp
+cleandeps-%-custom: PHONY
test ! -f src/$*/Makefile || $(MAKE) -C src/$* clean
+
# The overrides
-builddeps-coreboot:: src/coreboot
- $(MAKE) -C $</util/cbfstool
- $(MAKE) -C $</util/nvramtool
- $(MAKE) -C $< crossgcc-i386
-cleandeps-coreboot::
+$(addprefix src/coreboot/util/,cbfstool nvramtool crossgcc): \
+src/coreboot/util/%: | src/coreboot
+ test -d $@
+tmp/builddeps-coreboot.stamp:: \
+ tmp/builddeps-coreboot-cbfstool.stamp \
+ tmp/builddeps-coreboot-nvramtool.stamp \
+ tmp/builddeps-coreboot-crossgcc.stamp
+ touch $@
+tmp/builddeps-coreboot-cbfstool.stamp:: src/coreboot/util/cbfstool
+ $(MAKE) -C $<
+ touch $@
+tmp/builddeps-coreboot-nvramtool.stamp:: src/coreboot/util/nvramtool
+ $(MAKE) -C $<
+ touch $@
+tmp/builddeps-coreboot-crossgcc.stamp:: src/coreboot/util/crossgcc
+ $(MAKE) -C src/coreboot crossgcc-i386
+ touch $@
+cleandeps-coreboot-custom:: PHONY
test ! -f src/coreboot/Makefile || $(MAKE) -C src/coreboot clean
test ! -f src/coreboot/Makefile || $(MAKE) -C src/coreboot/util/cbfstool clean
test ! -f src/coreboot/Makefile || $(MAKE) -C src/coreboot/util/nvramtool clean
test ! -f src/coreboot/Makefile || $(MAKE) -C src/coreboot crossgcc-clean
+ rm -f tmp/builddeps-coreboot-*.stamp
-builddeps-flashrom:: src/flashrom
+tmp/builddeps-flashrom.stamp:: src/flashrom
$(MAKE) -C $< patchname=_normal PROGRAM=flashrom
$(MAKE) -C $< patchname=_lenovobios_macronix
$(MAKE) -C $< patchname=_sst
+ touch $@
-builddeps-grub:: src/grub
+tmp/builddeps-grub.stamp:: src/grub
cd $< && { test -x ./configure || ./autogen.sh; }
cd $< && { test -f ./Makefile || ./configure --with-platform=coreboot; }
$(MAKE) -C $<
+ touch $@
-builddeps-powertop:: src/powertop
+tmp/builddeps-powertop.stamp:: src/powertop
cd $< && { text -x ./configure || ./autogen.sh; }
cd $< && { test -f ./Makefile || ./configure; }
$(MAKE) -C $<
+ touch $@
-builddeps-grubinvaders:: src/grubinvaders
+tmp/builddeps-grubinvaders.stamp:: src/grubinvaders
cd $< && ./compile.sh
-cleandeps-grubinvaders::
+ touch $@
+cleandeps-grubinvaders-custom:: PHONY
test ! -d src/grubinvaders || { cd src/grubinvaders && ./clean.sh; }
-builddeps-seabios:: src/seabios resources/seabios/config/config
+tmp/builddeps-seabios.stamp:: src/seabios resources/seabios/config/config
cp resources/seabios/config/config $</.config
$(MAKE) -C $<
+ touch $@
-builddeps-dejavu:: src/dejavu ;
-cleandeps-dejavu:: ;
+tmp/builddeps-dejavu.stamp:: src/dejavu ; touch $@
+cleandeps-dejavu-custom:: PHONY ;
-cleandeps-i945pwm::
+cleandeps-i945pwm-custom:: PHONY
rm -f src/i945pwm/i945-pwm