1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
OUTDIR = public
dirname = $(patsubst %/,%,$(dir $(1)))
dirnames = $(sort $(call dirname,$(1)))
languages = en
languages_folders = $(foreach l,$(languages),$(OUTDIR)/$(l))
pages_src = $(filter-out template.html,$(wildcard *.html)) \
$(foreach l,$(languages), \
$(filter-out $(l)/template.html,$(wildcard $(l)/*.html)))
pages = $(foreach p,$(pages_src),$(OUTDIR)/$(p))
members_src = $(wildcard *.membre.in \
$(foreach l,$(languages),$(l))/*.membre.in)
members_pages = $(patsubst %.membre.in,$(OUTDIR)/%.html,$(members_src))
feeds = $(wildcard *.xml)
resources_src = $(feeds)
resources = $(foreach f,$(resources_src),$(OUTDIR)/$(f))
images = $(foreach img,$(shell find images -type f),$(OUTDIR)/$(img))
images_folders = $(call dirnames,$(images))
stylesheets = $(foreach img,$(shell find stylesheets -type f),$(OUTDIR)/$(img))
stylesheets_folders = $(call dirnames,$(stylesheets))
scripts = $(foreach img,$(shell find scripts -type f),$(OUTDIR)/$(img))
scripts_folders = $(call dirnames,$(scripts))
.PHONY: all clean site
all: site
clean:
-rm -r $(OUTDIR)
site: $(pages) $(members_pages) $(resources) $(images) $(stylesheets) $(scripts)
$(resources) $(images) $(stylesheets) $(scripts): $(OUTDIR)/%: %
cp $< $@
.SECONDEXPANSION:
# 🔪 HACK ATTACK 🔪
# Ideally I'd like to just stick $$(<D)/template.html in the
# prerequisite list, but unlike $$(@D), $$(<D) seems to expand to
# nothing. No idea if that's a bug or if I'm just Doing It Wrong.
langdir = .
$(OUTDIR)/en/%: langdir = en
$(pages): $(OUTDIR)/%.html: %.html %.sh $$(langdir)/template.html
./build.sh $< $*.sh $(langdir)/template.html $@
$(members_pages): $(OUTDIR)/%.html: %.membre.in build-member.sh $$(langdir)/template.html
./build-member.sh $< $(langdir)/template.html $@
$(OUTDIR)/quatuor.html: quatuor.md
$(OUTDIR)/programmes.html: programs.in
$(OUTDIR)/légal.html: légal.md
$(OUTDIR)/en/quartet.html: en/quartet.md
$(OUTDIR)/en/programs.html: en/programs.in
$(OUTDIR)/en/legal.html: en/legal.md
# Rules for automatic, incremental folder creation.
# Our lists of target directories are created from the lists of leaf
# resources; some intermediate directories that only hold subdirs do
# not appear in these lists. Work around that with -p.
$(OUTDIR) $(languages_folders) $(images_folders) $(stylesheets_folders) $(scripts_folders):
mkdir -p $@
$(resources) $(images) $(stylesheets) $(scripts) $(pages) $(members_pages): | $$(@D)
|