aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2014-08-26 15:05:48 +0100
committerMichael Brown <mcb30@ipxe.org>2014-08-26 15:08:46 +0100
commitbfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4 (patch)
tree05efc3da6a5a42ed27d7a78bdd9799008575d6a2 /src
parentdf202b3f4d9d9a0894bed3b0a47850b7987c13c6 (diff)
downloadipxe-bfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4.zip
ipxe-bfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4.tar.gz
ipxe-bfe9f06f9b1b9296feb46f4a6d64d1da8ce2a1f4.tar.bz2
[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')
-rw-r--r--src/Makefile.housekeeping17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
index 0e490f6..b2c6959 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
###############################################################################