Files

43 lines
1.3 KiB
Makefile

# Resume build — each variant is a src/*.tex, built to dist/*.pdf (pdflatex).
DIST := dist
VARIANTS := $(notdir $(basename $(wildcard src/*.tex)))
PDFS := $(addprefix $(DIST)/,$(addsuffix .pdf,$(VARIANTS)))
LATEXMK := latexmk -pdf -interaction=nonstopmode -halt-on-error -output-directory=$(DIST)
VIEWER := $(shell command -v xdg-open 2>/dev/null || command -v open 2>/dev/null)
.PHONY: all build watch clean distclean help $(VARIANTS)
all: build
## build: compile every variant in src/ into dist/
build: $(PDFS)
$(DIST)/%.pdf: src/%.tex
$(LATEXMK) $<
# Build a single variant by name, e.g. `make react-native`
$(VARIANTS): %: $(DIST)/%.pdf
## watch: rebuild + live-preview a variant, e.g. `make watch V=react-native`
watch:
$(LATEXMK) -pvc src/$(V).tex
## preview: build a variant and open it, e.g. `make preview V=react-native`
preview: $(DIST)/$(V).pdf
$(if $(VIEWER),$(VIEWER) $(DIST)/$(V).pdf,@echo "No PDF viewer found. PDF is at $(DIST)/$(V).pdf.")
## clean: remove LaTeX aux files, keep the PDFs
clean:
-$(foreach v,$(VARIANTS),latexmk -c -output-directory=$(DIST) src/$(v).tex;)
## distclean: remove dist/ entirely
distclean:
rm -rf $(DIST)
## help: list available targets and variants
help:
@grep -E '^## ' $(MAKEFILE_LIST) | sed 's/## //'
@echo "variants: $(VARIANTS)"