aboutsummaryrefslogtreecommitdiff
.POSIX:
DATE         = 1970-01-01
VERSION      = 0.1.0
NAME         = euandre.org
NAME_UC      = $(NAME)
LANGUAGES    = en
## Installation prefix.  Defaults to "/usr".
PREFIX       = /usr
BINDIR       = $(PREFIX)/bin
LIBDIR       = $(PREFIX)/lib
INCLUDEDIR   = $(PREFIX)/include
SRCDIR       = $(PREFIX)/src/$(NAME)
SHAREDIR     = $(PREFIX)/share
LOCALEDIR    = $(SHAREDIR)/locale
MANDIR       = $(SHAREDIR)/man
DOCDIR       = $(SHAREDIR)/doc/$(NAME)
HTMLDIR      = $(SHAREDIR)/html/$(NAME)
EXEC         = ./
## Where to store the installation.  Empty by default.
DESTDIR      =
LDLIBS       =



.SUFFIXES:
.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml .xmldeps
.SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html

.adoc.conf:
	mkwb conf src/global.conf $< > $@

.adoc.htmlbody:
	mkwb htmlbody   $< > $@

.htmlbody.html:
	mkwb html       $< > $@

.conf.htmlheader:
	mkwb html -H    $< > $@

.conf.htmlfooter:
	mkwb html -F    $< > $@

.conf.htmllisting:
	mkwb indexbody  $< > $@

.adoc.snippets:
	mkwb snippets   $< > $@

.conf.indexentry:
	mkwb indexentry $< > $@

.htmlbody.feedentry:
	mkwb feedentry  $< > $@

.conf.sortdata:
	mkwb sortdata   $< > $@



all:
include deps.mk


sources.adoc         = $(articles.adoc) $(listings.adoc) $(pages.adoc)
sources.htmlbody     = $(sources.adoc:.adoc=.htmlbody)
sources.html         = $(sources.adoc:.adoc=.html)
sources.snippets     = $(sources.adoc:.adoc=.snippets)
sources.conf         = $(sources.adoc:.adoc=.conf)
articles.indexentry  = $(articles.adoc:.adoc=.indexentry)
articles.feedentry   = $(articles.adoc:.adoc=.feedentry)
articles.sortdata    = $(articles.adoc:.adoc=.sortdata)
listings.htmlheader  = $(listings.adoc:.adoc=.htmlheader)
listings.htmlfooter  = $(listings.adoc:.adoc=.htmlfooter)
listings.htmllisting = $(listings.adoc:.adoc=.htmllisting)
listings.htmldeps    = $(listings.adoc:.adoc=.htmldeps)
listings.html        = $(listings.adoc:.adoc=.html)
feeds.xmldeps        = $(feeds.xml:.xml=.xmldeps)

sources = \
	$(sources.adoc)                          \
	$(images.svg)                            \
	src/content/style.css                    \

contents = \
	$(sources.html)                          \
	$(feeds.xml)                             \

static-contents = \
	$(sources.extras)                        \
	$(images.svg)                            \
	src/content/style.css                    \


derived-assets = \
	$(contents)                              \
	$(sources.htmlbody)                      \
	$(sources.snippets)                      \
	$(sources.conf)                          \
	src/global.conf                          \
	$(listings.htmlheader)                   \
	$(listings.htmlfooter)                   \
	$(listings.htmllisting)                  \
	$(listings.htmldeps)                     \
	$(feeds.xmldeps)                         \
	$(articles.indexentry)                   \
	$(articles.feedentry)                    \
	$(articles.sortdata)                     \

side-assets = \
	src/collections/*/*/*/*/*.html.*.txt     \
	src/collections/*/index.html.*.txt       \
	src/collections/*/*.sortdata             \
	src/pages/*/*.html.*.txt                 \



## Default target.  Builds all artifacts required for testing
## and installation.
all: $(derived-assets)


$(derived-assets): Makefile deps.mk
$(sources.conf): src/global.conf src/headers.txt


src/global.conf: src/base.conf
	mkwb conf -G src/base.conf > $@

$(listings.html):
	cat $*.htmlheader $*.htmllisting $*.htmlbody $*.htmlfooter > $@

$(feeds.xml):
	mkwb feed src/global.conf $*.xmldeps > $@



check-unit:


integration-tests = \

.PRECIOUS: $(integration-tests)
$(integration-tests): ALWAYS
	sh $@

check-integration: $(integration-tests)


## Run all tests.  Each test suite is isolated, so that a parallel
## build can run tests at the same time.  The required artifacts
## are created if missing.
check: check-unit check-integration



## Remove *all* derived artifacts produced during the build.
## A dedicated test asserts that this is always true.
clean:
	rm -rf $(derived-assets) $(side-assets)


## Installs into $(DESTDIR)$(PREFIX).  Its dependency target
## ensures that all installable artifacts are crafted beforehand.
install: all
	mkdir -p \
		'$(DESTDIR)$(SRCDIR)'     \

	for f in $(contents) $(static-contents) `cat $(sources.snippets)`; do \
		dir='$(DESTDIR)$(HTMLDIR)'/"`dirname "$${f#src/content/}"`"; \
		mkdir -p "$$dir"; \
		cp -P "$$f" "$$dir"; \
	done
	for f in $(sources); do \
		dir='$(DESTDIR)$(SRCDIR)'/"`dirname "$${f#src/content/}"`"; \
		mkdir -p "$$dir"; \
		cp -P "$$f" "$$dir"; \
	done

## Uninstalls from $(DESTDIR)$(PREFIX).  This is a perfect mirror
## of the "install" target, and removes *all* that was installed.
## A dedicated test asserts that this is always true.
uninstall:
	rm -rf \
		'$(DESTDIR)$(SRCDIR)'                 \
		'$(DESTDIR)$(HTMLDIR)'                \



PORT = 3333
## Run file server for local installed static files.
run:
	serve -n -p $(PORT) -d '$(DESTDIR)$(HTMLDIR)'


ALWAYS: