FLIT/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 '$*: $($*)'