summaryrefslogtreecommitdiff
path: root/Makefile
blob: ca01374b8044cf15a3ffb69fdf1b7fb858754a2b (plain)
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#################### Variables.

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_src = feed.xml $(foreach l,$(languages),  \
$(l)/feed.xml)
feeds = $(foreach f,$(feeds_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))

fonts = $(foreach font,$(shell find fonts -type f),$(OUTDIR)/$(font))
fonts_folders = $(call dirnames,$(fonts))

scripts = $(foreach img,$(shell find scripts -type f),$(OUTDIR)/$(img))
scripts_folders = $(call dirnames,$(scripts))

#################### Top-level targets.

# Building:
.PHONY: all clean site

# Maintenance:
.PHONY: feeds upload

#################### Recipes.

all: site

feeds:
	./admin/feeds/build-feeds.sh $(feeds_src)

upload: site
	./upload.sh $(OUTDIR)

clean:
	-rm -r $(OUTDIR)

site: $(pages) $(members_pages) $(feeds) $(images) $(stylesheets) $(fonts) $(scripts)

$(images) $(stylesheets) $(fonts) $(scripts) $(feeds): $(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 settings.sh
	./build.sh $< $*.sh $(langdir)/template.html $(OUTDIR) $*.html

$(members_pages): $(OUTDIR)/%.html: %.membre.in build-member.sh $$(langdir)/template.html settings.sh
	./build-member.sh $< $(langdir)/template.html $(OUTDIR) $*.html

$(OUTDIR)/quatuor.html: quatuor.md
$(OUTDIR)/programmes.html: programs.in
$(OUTDIR)/concerts.html: concerts.in
$(OUTDIR)/légal.html: légal.md
$(OUTDIR)/plan.html: plan.md
$(OUTDIR)/en/quartet.html: en/quartet.md
$(OUTDIR)/en/programs.html: en/programs.in
$(OUTDIR)/en/concerts.html: en/concerts.in
$(OUTDIR)/en/legal.html: en/legal.md
$(OUTDIR)/en/sitemap.html: en/sitemap.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) $(fonts_folders) $(scripts_folders):
	mkdir -p $@

$(feeds) $(images) $(stylesheets) $(fonts) $(scripts) $(pages) $(members_pages): | $$(@D)