jw-pkg/make/cache.mk

39 lines
1.1 KiB
Makefile
Raw Normal View History

# ----- define these variables
# CACHED_FILES = $(TOPDIR)/VERSION
# CACHED_VARS = VERSION
.PHONY: cache clean-cache clean-cache-projects
CACHE_PROJECT_MK ?= .cache-project.mk
CACHE_PROJECTS_MK ?= .cache-projects.mk
CACHE_FILES_MK = $(CACHE_PROJECT_MK) $(CACHE_PROJECTS_MK)
CACHED_VARS_ONLY_PROJECT ?= \
PROJECT \
PREREQ \
VERSION \
HEX_VERSION \
FULL_NAME \
JW_PKG_LD_LIBRARY_PATH \
JW_PKG_EXE_PATH \
JW_PKG_PYTHON_PATH
all: cache
clean: clean-cache
clean-cache:
rm -f $(CACHE_PROJECT_MK)
cache: $(CACHE_PROJECT_MK)
$(CACHE_PROJECT_MK): $(CACHED_FILES) $(JWBDIR)/make/cache.mk
@echo $(foreach v,$(CACHED_VARS),$v = $(value $(v))EOL) | \
$(SED) 's/EOL */\n/g;' | \
$(SED) 's|$(realpath $(TOPDIR))|$$(TOPDIR)|g' | \
$(SED) 's|$(realpath $(PROJECTS_DIR))|$$(PROJECTS_DIR)|g' | \
$(GREP) . | \
tee $@.tmp
mv $@.tmp $@
# -- Only used in jw-pkg
cache-projects: $(CACHE_PROJECTS_MK)
clean-cache-projects:
rm -f $(CACHE_PROJECTS_MK)
$(CACHE_PROJECTS_MK): $(CACHE_PROJECT_MK)
sed '/\($(subst $(space),\|,$(CACHED_VARS_ONLY_PROJECT))\)\s*[:?]\?=/ d' $< > $@.tmp
mv $@.tmp $@