aboutsummaryrefslogtreecommitdiff
path: root/latex/Makefile
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2021-03-28 12:07:51 +0200
committerFlorian Fischer <florian.fl.fischer@fau.de>2021-03-28 12:11:57 +0200
commit3d526b6514f2be6237ba130a8ef5fd0e2b6d814e (patch)
treeb2d8996bb041dbd924dde743752311266234791f /latex/Makefile
parent8276c7b32e1991cf4016cff9a9723bd41011743c (diff)
downloadmuhqs-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/Makefile79
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)