VERBOSE ?= @ PANDOC_FLAGS := -f markdown -s --template=./template.html # The full path to the Makefile MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) # The path to the directory of the Makefile MAKEFILE_DIR := $(dir $(MAKEFILE_PATH)) HTML_ROOT := $(MAKEFILE_DIR) GAME_ROOT := $(MAKEFILE_DIR)/../ RULES_ROOT := $(GAME_ROOT)/rules MAPS_ROOT := $(GAME_ROOT)/maps DATA_ROOT := $(GAME_ROOT)/data CARDS_YML_DIR := $(DATA_ROOT)/cards LATEX_ROOT := $(GAME_ROOT)/latex CARDS_PDF_DIR := $(LATEX_ROOT)/build GENERATE_CARD := $(GAME_ROOT)scripts/generate_card.py GENERATE_CARD_ARGS := --format markdown SETS := $(shell find $(CARDS_YML_DIR) -mindepth 1 -type d -printf "%f\n") SETS_SOURCEDIRS := $(foreach set, $(SETS), $(addprefix $(CARDS_YML_DIR)/, $(set))) BUILDDIR := $(MAKEFILE_DIR)/build RULE_FILES := rules.md tiles.md ai.md DE_RULES := $(addprefix $(RULES_ROOT)/de/,$(RULE_FILES)) EN_RULES := $(addprefix $(RULES_ROOT)/en/,$(RULE_FILES)) RULES := $(DE_RULES) $(EN_RULES) RULES_HTML := $(subst $(RULES_ROOT), $(BUILDDIR)/rules, $(RULES:.md=.html)) SITES := index.md rules.md cards.md maps.md HTML := $(addprefix $(BUILDDIR)/,$(SITES:.md=.html)) VPATH := $(RULES_ROOT) # Create a list of yaml card definitions CARDS_YAML := $(foreach dir,$(SETS_SOURCEDIRS),$(wildcard $(dir)/*.yml)) MAKEFILE_LIST := Makefile .PHONY: all clean maps all: $(HTML) $(RULES_HTML) maps clean: rm -rf $(BUILDDIR) maps: @echo "building $@" $(VERBOSE) ln -sf $(MAPS_ROOT) $(BUILDDIR)/maps $(VERBOSE) make -C $(MAPS_ROOT) define generateHtml $(1)/%.html: %.md $(MAKEFILE_LIST) @echo "building $$@" @if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi $(VERBOSE) if [[ $$$$(cat $$< | wc -l) -gt 80 ]]; \ then pandoc --toc $(PANDOC_FLAGS) $$< -o $$@; \ else pandoc $(PANDOC_FLAGS) $$< -o $$@; fi endef $(eval $(call generateHtml, $(BUILDDIR))) $(eval $(call generateHtml, $(BUILDDIR)/rules)) cards.md: $(CARDS_YAML) $(GENERATE_CARD) $(MAKEFILE_LIST) @echo "render cards $@" $(VERBOSE) ln -sf $(DATA_ROOT)/cards $(BUILDDIR)/cards-data $(VERBOSE) ln -sf $(CARDS_PDF_DIR) $(BUILDDIR)/cards $(VERBOSE) make -C $(LATEX_ROOT) @echo "building $@" $(VERBOSE) echo -e "% Cards" > $@ $(VERBOSE) for set in $(SETS); \ do echo -e "\n##" $$set >> $@; \ for card in $(CARDS_YML_DIR)/$$set/*.yml; \ do echo "" >> $@; \ $(GENERATE_CARD) $(GENERATE_CARD_ARGS) $$card >> $@; \ done; \ done