main
Makefile
1SHELL = /bin/sh
2
3SITE ?= example.com
4PORT ?= 8000
5SRC_DIR = sites/$(SITE)
6OUT_DIR = out/$(SITE)
7
8all: build
9
10include $(SRC_DIR)/manifest.mk
11
12SITE_TITLE ?= $(SITE)
13SITE_SUBTITLE ?=
14
15RAW_HTML_TARGETS = $(HTML_TARGETS:.html=.raw.html)
16BODY_HTML_TARGETS = $(HTML_TARGETS:.html=.body.html)
17HELPER = ./bin/helper
18
19.PHONY: all build serve clean dirs
20
21build: dirs $(HTML_TARGETS) $(STATIC_TARGETS) $(OUT_DIR)/mandoc.css $(OUT_DIR)/pub/style.css
22 @echo "mite: built $(SRC_DIR) -> $(OUT_DIR)"
23
24dirs:
25 @mkdir -p $(DIRS)
26
27$(OUT_DIR)/%.raw.html: $(HELPER)
28 @mkdir -p "$(dir $@)"
29 $(HELPER) raw "$(SRC_DIR)" "$*" "$@"
30
31$(OUT_DIR)/%.body.html: $(OUT_DIR)/%.raw.html $(HELPER)
32 @mkdir -p "$(dir $@)"
33 $(HELPER) body "$<" "$@"
34
35$(OUT_DIR)/sidebar.html: $(SRC_DIR)/manifest.mk $(HELPER)
36 @mkdir -p "$(dir $@)"
37 $(HELPER) sidebar "$@" "$(SRC_DIR)"
38
39$(OUT_DIR)/%.html: $(OUT_DIR)/%.body.html $(OUT_DIR)/sidebar.html $(OUT_DIR)/mandoc.css $(OUT_DIR)/pub/style.css $(HELPER)
40 @mkdir -p "$(dir $@)"
41 $(HELPER) page "$@" "$*" "$(TITLE.$*)" "$(OS.$*)" "$(URL.$*)" "" "$(OUT_DIR)" "$(SITE_TITLE)" "$(SITE_SUBTITLE)" "$(URL.index)" "$(SRC_DIR)"
42
43$(STATIC_TARGETS):
44 @mkdir -p "$(dir $@)"
45 cp "$(SRC_DIR)/$(@:$(OUT_DIR)/%=%)" "$@"
46
47$(OUT_DIR)/pub/style.css: pub/style.css
48 @mkdir -p "$(dir $@)"
49 @cat "$<" > "$@"
50 @if [ -f "$(SRC_DIR)/_mite/style.css" ]; then printf '\n' >> "$@"; cat "$(SRC_DIR)/_mite/style.css" >> "$@"; fi
51
52$(OUT_DIR)/mandoc.css: pub/mandoc.css
53 @mkdir -p "$(dir $@)"
54 @if [ -f "$(SRC_DIR)/_mite/mandoc.css" ]; then cp "$(SRC_DIR)/_mite/mandoc.css" "$@"; else cp pub/mandoc.css "$@"; fi
55
56serve: build
57 $(HELPER) serve "$(OUT_DIR)" "$(PORT)"
58
59clean:
60 rm -rf "$(OUT_DIR)"