diff options
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) |
