blob: 839128a3c9b899ce042882a848c635b4c9999ed7 [file] [edit]
# Configuration
NAME = spectec
EXE = $(PWD)/../$(NAME)
EXT = $(NAME)
LOG = _log
OWNDIR = $(PWD)
SPECDIR = ../../specification
SPECCLONE = ../_specification
SPECS = $(shell cd $(SPECDIR) && ls -d wasm-*)
SPECFILES = $(shell ls $(SPECS:%=$(SPECDIR)/%/*.$(EXT)))
# Main targets
.PHONY: all
all: test
# Test
.PHONY: test
test: test-latex test-sphinx
# Latex splicing
LATEXINNAME = spec-latex.in
LATEXOUTNAME = spec-latex
.PHONY: test-latex
test-latex: $(SPECS:%=$(LATEXOUTNAME)-%.pdf)
$(LATEXOUTNAME)-%.tex: $(LATEXINNAME).tex $(SPECCLONE) $(EXE)
cp $< $@
(cd $(SPECCLONE)/$* && $(EXE) -l *.$(EXT) --splice-latex -i -p $(OWNDIR)/$@)
$(LATEXOUTNAME)-%.pdf: $(LATEXOUTNAME)-%.tex
pdflatex $<
# Sphinx splicing
SPHINXINNAME = spec-sphinx.in
SPHINXOUTNAME = spec-sphinx
SPHINXDIR = _sphinx
.PHONY: test-sphinx
test-sphinx: $(SPECS:%=sphinx-splice-%)
$(SPHINXOUTNAME)-%.rst: $(SPHINXINNAME).rst $(SPECFILES) $(EXE)
cp $< $@
(cd $(SPECDIR)/$* && $(EXE) -l *.$(EXT) --splice-sphinx -i -p $(OWNDIR)/$@)
sphinx-splice-%: sphinx-html-% sphinx-pdf-%
#
sphinx-html-%: $(SPHINXOUTNAME)-%.rst conf.py
mkdir -p $(SPHINXDIR)/_build
cp $(SPHINXOUTNAME)-$*.rst $(SPHINXDIR)/$(SPHINXOUTNAME).rst
cp conf.py $(SPHINXDIR)
sphinx-build -W -b html $(SPHINXDIR) $(SPHINXDIR)/_build
sed "s/textsc{/mathrm{/g" $(SPHINXDIR)/_build/$(SPHINXOUTNAME).html >$(SPHINXOUTNAME).html.tmp
mv -f $(SPHINXOUTNAME).html.tmp $(SPHINXDIR)/_build/$(SPHINXOUTNAME)-$*.html
sphinx-pdf-%: $(SPHINXOUTNAME)-%.rst conf.py
mkdir -p $(SPHINXDIR)/_build
cp $(SPHINXOUTNAME)-$*.rst $(SPHINXDIR)/$(SPHINXOUTNAME).rst
cp conf.py $(SPHINXDIR)
sphinx-build -W -b latex $(SPHINXDIR) $(SPHINXDIR)/_build
(cd $(SPHINXDIR)/_build && ln -f $(SPHINXOUTNAME).tex $(SPHINXOUTNAME)-$*.tex && pdflatex $(SPHINXOUTNAME)-$*.tex)
# Executable
$(EXE): exe
exe:
@(cd ..; make exe)
# Cleanup
.PHONY: clean distclean
clean:
dune clean
rm -f *.aux *.log
rm -rf $(SPHINXDIR) $(LOG)
distclean: clean
rm -f $(LATEXOUTNAME)-*.tex $(SPHINXOUTNAME)-*.rst
rm -f *.pdf