# ----- define these variables # CACHED_FILES = $(TOPDIR)/VERSION # CACHED_VARS = VERSION .PHONY: cache CACHE_FILE_MK ?= .cache.mk # if not checked against MAKECMDGOALS, a standard rule kicks in from rules.mk, # and $(CACHE_FILE_MK) is remade with the clean target all: cache ifneq ($(foreach g,all cache,$(findstring $(g),$(MAKECMDGOALS))),) cache: $(CACHE_FILE_MK) $(CACHE_FILE_MK): $(CACHED_FILES) $(JWBDIR)/make/cache.mk ifeq ($(wildcard $(CACHE_FILE_MK)),) @echo $(foreach v,$(CACHED_VARS),$v := $(value $(v))EOL) | $(SED) 's/EOL */\n/g;' | $(GREP) . | tee $@.tmp mv $@.tmp $@ else rm $@ make $@ endif endif clean: clean-cache clean-cache: $(RM) -f $(CACHE_FILE_MK)