blob: d85fce33af191bf21f0a1c8535db0af4b3b7467d (
plain) (
tree)
|
|
.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
.SUFFIXES: .gz
.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 \
dynamic-contents = \
$(sources.html) \
$(feeds.xml) \
static-contents = \
$(sources.extras) \
$(images.svg) \
src/content/style.css \
dynamic-contents.gz = $(dynamic-contents:=.gz)
static-contents.gz = \
$(images.svg:=.gz) \
src/content/style.css.gz \
contents.gz = \
$(dynamic-contents.gz) \
$(static-contents.gz) \
contents = \
$(dynamic-contents) \
$(static-contents) \
all-contents = \
$(contents) \
$(contents.gz) \
derived-assets = \
$(dynamic-contents) \
$(contents.gz) \
$(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 > $@
$(contents.gz):
gzip -9fk $*
touch $@
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 $(all-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:
|