summaryrefslogtreecommitdiffstats
path: root/src/Makefile.housekeeping
diff options
context:
space:
mode:
authorMichael Brown2014-08-26 16:05:48 +0200
committerMichael Brown2014-08-26 16:08:46 +0200
commitbfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4 (patch)
tree05efc3da6a5a42ed27d7a78bdd9799008575d6a2 /src/Makefile.housekeeping
parent[build] Avoid using embedded script in VirtualBox named configuration (diff)
downloadipxe-bfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4.tar.gz
ipxe-bfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4.tar.xz
ipxe-bfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4.zip
[build] Avoid deleting config header files if build is interrupted
With extremely unlucky timing, it is possible to interrupt a build and cause make to delete config/named.h (and possibly any local configuration headers). Mark config/named.h and all local configuration headers as .PRECIOUS to prevent make from ever deleting them. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/Makefile.housekeeping')
-rw-r--r--src/Makefile.housekeeping17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
index 0e490f61..b2c69594 100644
--- a/src/Makefile.housekeeping
+++ b/src/Makefile.housekeeping
@@ -717,6 +717,8 @@ endif
config/named.h : $(CONFIG_LIST)
$(Q)$(TOUCH) $@
+.PRECIOUS : config/named.h
+
# These files use .incbin inline assembly to include a binary file.
# Unfortunately ccache does not detect this dependency and caches
# builds even when the binary file has changed.
@@ -1289,14 +1291,25 @@ CLEANUP += $(EINFO)
# Local configs
#
CONFIG_HEADERS := $(patsubst config/%,%,$(wildcard config/*.h))
+CONFIG_LOCAL_HEADERS := $(foreach HEADER,$(CONFIG_HEADERS),\
+ config/local/$(HEADER))
-$(foreach HEADER,$(CONFIG_HEADERS),config/local/$(HEADER)) :
+$(CONFIG_LOCAL_HEADERS) :
$(Q)$(TOUCH) $@
+.PRECIOUS : $(CONFIG_LOCAL_HEADERS)
+
ifneq ($(CONFIG),)
-$(foreach HEADER,$(CONFIG_HEADERS),config/local/$(CONFIG)/$(HEADER)) :
+
+CONFIG_LOCAL_NAMED_HEADERS := $(foreach HEADER,$(CONFIG_HEADERS),\
+ config/local/$(CONFIG)/$(HEADER))
+
+$(CONFIG_LOCAL_NAMED_HEADERS) :
$(Q)$(MKDIR) -p $(dir $@)
$(Q)$(TOUCH) $@
+
+.PRECIOUS : $(CONFIG_LOCAL_NAMED_HEADERS)
+
endif
###############################################################################