TOP_DIR = ../.. OUT_DIR = $(TOP_DIR)/public TEXT_FILES = md org dirname = $(patsubst %/,%,$(dir $(1))) text_patterns = $(foreach ext,$(TEXT_FILES),'$(TOP_DIR)/**.$(ext)') text_folders = $(sort $(call dirname,$(shell git ls-files $(text_patterns)))) page_folders = $(patsubst $(TOP_DIR)%,$(OUT_DIR)%,$(text_folders)) all: site dependencies = deps.mk include $(dependencies) $(dependencies): make-deps.py $(text_folders) python3 $< "$(TEXT_FILES)" $(OUT_DIR) site: $(pages) $(indices) $(autoindices) $(page_folders): mkdir -p $@ $(pages) $(indices): pandoc -s $< -o $@ # ⚠ When tweaking this rule, check whether it still works for the # top-level index.html, i.e. when there is no top-level README. $(autoindices): $(OUT_DIR)%/index.html: $(TOP_DIR)% make-index.py | $(OUT_DIR)% python3 make-index.py "$(TEXT_FILES)" "$(*:/%=%)" $(OUT_DIR) clean: -rm $(dependencies) -rm -r $(OUT_DIR)