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)"