|
1 | | -CC = xelatex |
2 | | -BIB = biber |
3 | | -EXAMPLES_DIR = examples |
4 | | -DRAFT_DIR = examples/draft |
| 1 | +# =========================== |
| 2 | +# Configuration |
| 3 | +# =========================== |
| 4 | +CC := xelatex |
| 5 | +BIB := biber |
5 | 6 |
|
6 | | -# Find all CV source files |
7 | | -CV_SRCS = $(shell find $(EXAMPLES_DIR)/cv* -name '*.tex') |
| 7 | +EXAMPLES_DIR := examples |
| 8 | +DRAFT_DIR := examples/draft |
8 | 9 |
|
9 | | -# Output PDFs |
10 | | -CV_PDFS = cv.pdf cv-jp.pdf |
11 | | -COVER_LETTER_PDFS = coverletter.pdf coverletter-jp.pdf |
12 | | -ALL_PDFS = $(CV_PDFS) $(COVER_LETTER_PDFS) |
| 10 | +# =========================== |
| 11 | +# File lists (derived from base names) |
| 12 | +# =========================== |
| 13 | +# CV base names - each has: name.tex, name/ folder, name.pdf (output) |
| 14 | +CV_NAMES := cv cv-jp |
13 | 15 |
|
| 16 | +# Cover letter base names |
| 17 | +COVER_NAMES := coverletter coverletter-jp |
| 18 | + |
| 19 | +# Temporary file extensions to clean |
| 20 | +TEMP_EXTS := aux bbl bcf blg log out run.xml |
| 21 | + |
| 22 | +# Derived file lists |
| 23 | +CV_PDFS := $(addsuffix .pdf, $(CV_NAMES)) |
| 24 | +COVER_PDFS := $(addsuffix .pdf, $(COVER_NAMES)) |
| 25 | +ALL_PDFS := $(CV_PDFS) $(COVER_PDFS) |
| 26 | + |
| 27 | +# =========================== |
| 28 | +# Phony targets |
| 29 | +# =========================== |
14 | 30 | .PHONY: all examples clean draft draft-clean |
15 | 31 |
|
16 | | -# Build both examples and draft (if present) |
| 32 | +# =========================== |
| 33 | +# Default target |
| 34 | +# =========================== |
17 | 35 | all: examples draft clean draft-clean |
18 | 36 |
|
19 | 37 | examples: $(ALL_PDFS) |
20 | 38 |
|
21 | | -# CV documents (need bibliography compilation) |
22 | | -$(CV_PDFS): %.pdf: $(EXAMPLES_DIR)/%.tex $(CV_SRCS) |
| 39 | +# =========================== |
| 40 | +# Build rules |
| 41 | +# =========================== |
| 42 | +# CV PDFs require biber for bibliography processing |
| 43 | +# Each CV only depends on files in its own directory |
| 44 | +$(CV_PDFS): %.pdf: $(EXAMPLES_DIR)/%.tex |
23 | 45 | $(CC) -output-directory=$(EXAMPLES_DIR) $< |
24 | 46 | $(BIB) $(EXAMPLES_DIR)/$* |
25 | 47 | $(CC) -output-directory=$(EXAMPLES_DIR) $< |
26 | 48 | $(CC) -output-directory=$(EXAMPLES_DIR) $< |
27 | 49 |
|
28 | | -# Cover letters (simple compilation) |
29 | | -$(COVER_LETTER_PDFS): %.pdf: $(EXAMPLES_DIR)/%.tex |
| 50 | +# Cover letters are simpler - single pass |
| 51 | +$(COVER_PDFS): %.pdf: $(EXAMPLES_DIR)/%.tex |
30 | 52 | $(CC) -output-directory=$(EXAMPLES_DIR) $< |
31 | 53 |
|
| 54 | +# =========================== |
| 55 | +# Cleanup |
| 56 | +# =========================== |
32 | 57 | clean: |
33 | | - @for ext in aux bbl bcf blg log out run.xml; do \ |
34 | | - rm -f $(EXAMPLES_DIR)/*.$${ext}; \ |
35 | | - done |
| 58 | + @rm -f $(addprefix $(EXAMPLES_DIR)/*., $(TEMP_EXTS)) |
36 | 59 |
|
| 60 | +# =========================== |
37 | 61 | # Draft targets (only if draft directory exists) |
| 62 | +# =========================== |
38 | 63 | draft: |
39 | 64 | @if [ -d $(DRAFT_DIR) ] && [ -f $(DRAFT_DIR)/Makefile ]; then \ |
40 | 65 | $(MAKE) -C $(DRAFT_DIR); \ |
|
0 commit comments