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
|
PROJ_ROOT:=$(shell git rev-parse --show-toplevel)
SCRIPTS_DIR:=$(PROJ_ROOT)/scripts
STATIC_DIR:=static
IMAGES_DIR:=$(STATIC_DIR)/media
VIDEOS_DIR:=$(STATIC_DIR)/media/videos
BUILD_DIR:=build
blog_dir = $(shell $(SCRIPTS_DIR)/org-get-slug.sh $(1))
POSTS_ORG_INPUT:=$(wildcard posts/*.org)
POSTS_ORG_SUM_XML_OUTPUT:=$(patsubst posts/%.org, posts/%.sum.xml, $(POSTS_ORG_INPUT))
POSTS_ORG_SUM_OUTPUT:=$(patsubst posts/%.org, posts/%.sum.html, $(POSTS_ORG_INPUT))
POSTS_ORG_HTML_OUTPUT:=$(foreach post,$(POSTS_ORG_INPUT),$(BUILD_DIR)$(call blog_dir,$(post))/index.html)
STATIC_FILES:=$(shell find $(STATIC_DIR) -type f)
STATIC_FILES_OUT:=$(patsubst $(STATIC_DIR)/%,$(BUILD_DIR)/%,$(STATIC_FILES))
.PHONY: all
all: $(BUILD_DIR)/index.html \
$(BUILD_DIR)/index.xml \
$(POSTS_ORG_HTML_OUTPUT) \
$(STATIC_FILES_OUT)
posts/%.preview.org: posts/%.org
$(SCRIPTS_DIR)/generate_post_preview.sh $< > $@
posts/%.sum.html: posts/%.org posts/%.preview.org
$(SCRIPTS_DIR)/generate_post_summary_html.sh $^ > $@
posts/%.sum.xml: posts/%.org posts/%.preview.org
$(SCRIPTS_DIR)/generate_post_summary_xml.sh $^ > $@
$(BUILD_DIR):
mkdir -p $@
$(BUILD_DIR)/index.html: $(POSTS_ORG_SUM_OUTPUT) | $(BUILD_DIR)
$(SCRIPTS_DIR)/generate_index_html.sh $^ > $@
$(BUILD_DIR)/index.xml: $(POSTS_ORG_SUM_XML_OUTPUT) | $(BUILD_DIR)
$(SCRIPTS_DIR)/generate_rss.sh $^ > $@
define BLOG_BUILD_DEF
$(BUILD_DIR)$(call blog_dir,$T):
mkdir -p $$@
$(BUILD_DIR)$(call blog_dir,$T)/index.html: $T | $(BUILD_DIR)$(call blog_dir,$T)
$(SCRIPTS_DIR)/generate_post_html.sh $$< > $$@
endef
$(foreach T,$(POSTS_ORG_INPUT),$(eval $(BLOG_BUILD_DEF)))
$(BUILD_DIR)/%: $(STATIC_DIR)/% | $(BUILD_DIR)
mkdir -p $(dir $@)
cp $< $@
.PHONY: clean
clean:
-rm -r $(BUILD_DIR)
|