IKIWIKI_OPTIONS ?= \
	--set srcdir='$(CURDIR)/content' \
	--set destdir='$(CURDIR)/build/html' \
	$(IKIWIKI_SHARED_OPTIONS) $(IKIWIKI_CONFIG_OPTIONS)

cssprojects ?= $(wildcard shared/themes/goab styling)

all: build

-include shared/include.mk
-include config/include.mk
-include shared/themes/include.mk

always-make = $(filter -B,$(MAKEFLAGS))
avoid-broken-git = $(shell cd content && git symbolic-ref -q HEAD > /dev/null || echo " --no-rcs")

init: submodules content
	$(MAKE) -B config

submodules:
	git submodule init
	git submodule update --init --recursive

config: setupfiles = $(wildcard $@/*.setup)
config: submodules
	$(if $(setupfiles),,mkdir -p '$@')
	$(if $(setupfiles),,ikiwiki $(IKIWIKI_OPTIONS) --dumpsetup '$@/ikiwiki.setup')

content: submodules
	mkdir -p '$@'
	[ -e '$@/index.mdwn' ] || printf '# Hello world!\n\nHello world!\n' > '$@/index.mdwn'

build:
	$(if $(cssprojects),$(MAKE) $(cssprojects))
	$(foreach config,$(shell find config -name '*.setup'),ikiwiki --setup $(config)$(avoid-broken-git)$(if $(always-make), --rebuild);)

.PHONY: all build submodules content