aboutsummaryrefslogtreecommitdiff
path: root/latex/Makefile
diff options
context:
space:
mode:
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)