38 lines
1.1 KiB
Makefile
38 lines
1.1 KiB
Makefile
.PHONY: default docs clean
|
|
|
|
# Adapted from https://dev.to/eugenebabichenko/generating-pretty-version-strings-including-nightly-with-git-and-makefiles-48p3
|
|
DIRTY=$(shell git status --porcelain | head -1 | sed 's/.*/-dirty/g')
|
|
COMMIT=$(shell git rev-parse --short HEAD)
|
|
DATE=$(shell git log -1 --format=%cd --date=format:"%Y%m%d")
|
|
LAST_TAGGED_COMMIT=$(shell git rev-list --abbrev-commit --tags --max-count=1)
|
|
LAST_TAG=$(shell git describe --abbrev=0 --tags $(LAST_TAGGED_COMMIT) 2>/dev/null || true)
|
|
PATCH=$(patsubst %,-%-$(DATE),$(filter-out $(COMMIT),$(LAST_TAGGED_COMMIT)))
|
|
VERSION=$(LAST_TAG:v%=%)$(PATCH)$(DIRTY)
|
|
|
|
default: all
|
|
|
|
# List of documents to produce from markdown
|
|
DOCUMENTS=README
|
|
|
|
HTML_DOCS=$(patsubst %,%.html,$(DOCUMENTS))
|
|
PDF_DOCS=$(patsubst %,%.pdf,$(DOCUMENTS))
|
|
|
|
all: docs
|
|
|
|
docs: $(HTML_DOCS) $(PDF_DOCS)
|
|
|
|
%.html: %.md
|
|
sed 's/%VERSION%/$(VERSION)/g' $^ | multimarkdown -t html > $@
|
|
|
|
%.pdf: %.md
|
|
sed 's/%VERSION%/$(VERSION)/g' $^ | multimarkdown -t latex > $*.tex
|
|
pdflatex $*.tex
|
|
pdflatex $*.tex
|
|
-rm $*.aux $*.toc $*.log $*.tex $*.out
|
|
|
|
clean:
|
|
-rm $(HTML_DOCS) $(PDF_DOCS)
|
|
|
|
print-%:
|
|
@echo '$*: $($*)'
|