diff options
| author | Florian Fischer <florian.fl.fischer@fau.de> | 2021-03-28 12:07:51 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fl.fischer@fau.de> | 2021-03-28 12:11:57 +0200 |
| commit | 3d526b6514f2be6237ba130a8ef5fd0e2b6d814e (patch) | |
| tree | b2d8996bb041dbd924dde743752311266234791f /latex/Makefile | |
| parent | 8276c7b32e1991cf4016cff9a9723bd41011743c (diff) | |
| download | muhqs-game-3d526b6514f2be6237ba130a8ef5fd0e2b6d814e.tar.gz muhqs-game-3d526b6514f2be6237ba130a8ef5fd0e2b6d814e.zip | |
build sets again
Sets are generated from all tex card files in the Makefile.
Sets tex now uses \includestandalone instead of input.
The Makefiles language support is simplified. It now has a default language
variable which propagates to all other relevant variables so we have to only
pass one make argument to change the build language.
Diffstat (limited to 'latex/Makefile')
| -rw-r--r-- | latex/Makefile | 79 |
1 files changed, 59 insertions, 20 deletions
diff --git a/latex/Makefile b/latex/Makefile index cef69dcc..a3739ff3 100644 --- a/latex/Makefile +++ b/latex/Makefile @@ -19,67 +19,106 @@ GAME_ROOT := $(MAKEFILE_DIR)/../ DATA_ROOT := $(GAME_ROOT)/data CARDS_YML_DIR := $(DATA_ROOT)/cards -CARDS_TEX_DIR ?= $(LATEX_ROOT)/cards +# the default language +LANGUAGE ?= en -BUILDDIR ?= $(LATEX_ROOT)/build +CARDS_TEX_DIR := $(LATEX_ROOT)/cards/$(LANGUAGE) + +BUILDDIR := $(LATEX_ROOT)/build/$(LANGUAGE) ASSETS_PATH := $(GAME_ROOT)/assets PDFLATEX_ENV := TEXINPUTS=".:$(ASSETS_PATH):" GENERATE_CARD := $(GAME_ROOT)scripts/generate_card.py -GENERATE_CARD_FLAGS ?= +GENERATE_CARD_FLAGS := --language=$(LANGUAGE) SETS := $(shell find $(CARDS_YML_DIR) -mindepth 1 -type d -printf "%f\n") SETS_SOURCEDIRS := $(foreach set, $(SETS), $(addprefix $(CARDS_YML_DIR)/, $(set))) + SETS_TEXDIRS := $(foreach set, $(SETS), $(addprefix $(CARDS_TEX_DIR)/, $(set))) SETS_BUILDDIRS := $(foreach set, $(SETS), $(addprefix $(BUILDDIR)/, $(set))) +# tex directory for sets collection tex +SETS_TEX_DIR := $(LATEX_ROOT)/sets/$(LANGUAGE) +SETS_TEX := $(foreach set, $(SETS), $(addprefix $(SETS_TEX_DIR)/, $(set).tex)) +SETS_PDF_DIR := $(BUILDDIR) +SETS_PDF := $(foreach set, $(SETS), $(addprefix $(SETS_PDF_DIR)/, $(set).pdf)) + # Add yml dirs to VPATH, the place make will look for the source files -VPATH = $(SETS_SOURCEDIRS) $(SETS_TEXDIRS) +VPATH = $(SETS_SOURCEDIRS) $(SETS_TEXDIRS) $(SETS_TEX_DIR) # Create a list of yaml card definitions -CARDS_YAML := $(foreach dir,$(SETS_SOURCEDIRS),$(wildcard $(dir)/*.yml)) -CARDS_TEX := $(subst $(CARDS_YML_DIR),$(CARDS_TEX_DIR),$(CARDS_YAML:.yml=.tex)) -CARDS_PDF := $(subst $(CARDS_YML_DIR),$(BUILDDIR),$(CARDS_YAML:.yml=.pdf)) +CARDS_YML := $(foreach dir,$(SETS_SOURCEDIRS),$(wildcard $(dir)/*.yml)) +CARDS_TEX := $(subst $(CARDS_YML_DIR),$(CARDS_TEX_DIR),$(CARDS_YML:.yml=.tex)) +CARDS_PDF := $(subst $(CARDS_YML_DIR),$(BUILDDIR),$(CARDS_YML:.yml=.pdf)) CARDS_PNG = $(CARDS_PDF:.pdf=.png) VERBOSE ?= @ MAKEFILE_LIST = Makefile -# Define the functions that will generate each rule -define generatePdfRules -$(1)/%.pdf: %.tex $(COMMON_TEX_FILES) $(MAKEFILE_LIST) - @echo building $$@ +define generateSetTexRules +$(SETS_TEX_DIR)/$(1).tex: $(wildcard $(CARDS_TEX_DIR)/$(1)/*.tex) $(MAKEFILE_LIST) + @echo "generating $(1) tex" @if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi - $(VERBOSE)$(PDFLATEX_ENV) $(PDFLATEX) --output-directory $$(@D) $$< + $(VERBOSE) echo "\documentclass[a4paper,landscape]{article}" > $$@ + $(VERBOSE) echo "\usepackage[margin=6mm,top=5mm]{geometry}" >> $$@ + $(VERBOSE) echo "\input{libs.tex}" >> $$@ + $(VERBOSE) echo "\input{colors.tex}" >> $$@ + $(VERBOSE) echo "\input{tikzcards.tex}" >> $$@ + $(VERBOSE) echo "\usepackage{standalone}" >> $$@ + $(VERBOSE) echo "\begin{document}" >> $$@ + $(VERBOSE) echo "\begin{center}" >> $$@ + $(VERBOSE) echo "\pagestyle{empty}" >> $$@ + $(VERBOSE)for card in $(wildcard $(CARDS_TEX_DIR)/$(1)/*.tex); do \ + echo "\includestandalone{$$$${card%.tex}}" >> $$@; done + $(VERBOSE) echo "\end{center}" >> $$@ + $(VERBOSE) echo "\end{document}" >> $$@ endef -define generateTexRules +# Generate set tex rules +$(foreach set, $(SETS), $(eval $(call generateSetTexRules,$(set)))) + +define generateCardTexRules $(1)/%.tex: %.yml $(GENERATE_CARD) @echo building $$@ @if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi $(VERBOSE)$(GENERATE_CARD) $(GENERATE_CARD_FLAGS) $$< > $$@ endef -# Generate tex rules -$(foreach texdir, $(SETS_TEXDIRS), $(eval $(call generateTexRules, $(texdir)))) +# Generate cards tex rules +$(foreach texdir, $(SETS_TEXDIRS), $(eval $(call generateCardTexRules, $(texdir)))) + +define generatePdfRules +$(1)/%.pdf: %.tex $(COMMON_TEX_FILES) $(MAKEFILE_LIST) + @echo building $$@ + @if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi + $(VERBOSE)$(PDFLATEX_ENV) $(PDFLATEX) --output-directory $$(@D) $$< +endef -# Generate pdf rules +# Generate cards pdf rules $(foreach pdfdir, $(SETS_BUILDDIRS), $(eval $(call generatePdfRules, $(pdfdir)))) +# Generate sets pdf rule +$(eval $(call generatePdfRules, $(SETS_PDF_DIR))) + .PHONY: all de en all: de en de: - @echo "building german cards" - $(MAKE) cards-all CARDS_TEX_DIR=$(CARDS_TEX_DIR)/de BUILDDIR=$(BUILDDIR)/de GENERATE_CARD_FLAGS="--language=de" + $(MAKE) cards-all sets LANGUAGE=de en: - @echo "building englisch cards" - $(MAKE) cards-all CARDS_TEX_DIR=$(CARDS_TEX_DIR)/en BUILDDIR=$(BUILDDIR)/en GENERATE_CARD_FLAGS="--language=en" + $(MAKE) cards-all sets + +.PHONY: sets sets-tex sets-pdf +sets: sets-tex sets-pdf +sets-tex: $(SETS_TEX) +sets-pdf: $(SETS_PDF) .PHONY: cards-all cards-tex cards-pdf cards-png cards-all: cards-tex cards-pdf cards-png + @echo "building $(LANGUAGE) cards" + cards-tex: $(CARDS_TEX) cards-pdf: $(CARDS_PDF) cards-png: $(CARDS_PNG) |
