diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/fontspec/Makefile')
-rw-r--r-- | Master/texmf-dist/source/latex/fontspec/Makefile | 220 |
1 files changed, 213 insertions, 7 deletions
diff --git a/Master/texmf-dist/source/latex/fontspec/Makefile b/Master/texmf-dist/source/latex/fontspec/Makefile index 69be2e2721d..4d260dba41e 100644 --- a/Master/texmf-dist/source/latex/fontspec/Makefile +++ b/Master/texmf-dist/source/latex/fontspec/Makefile @@ -1,20 +1,55 @@ # Makefile for fontspec. +#### MAKEFILE CONFIG #### + +SHELL = /bin/sh +.SUFFIXES: + +#### BEGIN #### + +help: + echo 'FONTSPEC makefile targets:' + echo ' ' + echo ' help - (this message)' + echo ' unpack - extracts all files' + echo ' doc - compile documentation' + echo ' gendoc - compile documentation including external examples' + echo ' ctan - generate archive for CTAN' + echo ' all - unpack & doc' + echo ' world - all & ctan' + echo ' clean - remove all generated and built files' + echo ' ' + echo ' install - install the package into your home texmf tree' + echo ' install TEXMFROOT=<texmf> - install the package into the path <texmf>' + echo ' ' + echo ' check - run the test suite' + echo ' initest - initialise any new tests' + echo ' <testname> - run only this test' + echo ' ' + echo 'I recommend `make -j4 check` or thereabouts to parallelise' + echo 'the testing.' + + NAME = fontspec DOC = $(NAME).pdf DTX = $(NAME).dtx # Files grouped by generation mode -COMPILED = $(DOC) -UNPACKED = fontspec.sty fontspec-patches.sty fontspec.lua fontspec.cfg fontspec-luatex.tex fontspec-xetex.tex +COMPILED = $(DOC) fontspec-testsuite.pdf +EXAMPLES = fontspec-luatex.tex fontspec-xetex.tex +UNPACKED = fontspec.sty fontspec-patches.sty fontspec.lua fontspec.cfg $(EXAMPLES) SOURCE = $(DTX) Makefile README GENERATED = $(COMPILED) $(UNPACKED) +TESTS = $(shell ls testsuite/*.cls testsuite/*.tex testsuite/*.ltx) + +CTAN_FILES = $(SOURCE) $(COMPILED) $(EXAMPLES) $(TESTS) + # Files grouped by installation location UNPACKED_DOC = fontspec-luatex.tex fontspec-xetex.tex RUNFILES = $(filter-out $(UNPACKED_DOC), $(UNPACKED)) -DOCFILES = $(DOC) README $(UNPACKED_DOC) +DOCFILES = $(COMPILED) README $(UNPACKED_DOC) SRCFILES = $(DTX) Makefile ALL_FILES = $(RUNFILES) $(DOCFILES) $(SRCFILES) @@ -31,26 +66,30 @@ TDS_ZIP = $(NAME).tds.zip ZIPS = $(CTAN_ZIP) $(TDS_ZIP) DO_PDFLATEX = pdflatex --interaction=batchmode $< >/dev/null +DO_PDFLATEX_WRITE18 = pdflatex --shell-escape --interaction=batchmode $< >/dev/null DO_TEX = tex --interaction=batchmode $< >/dev/null DO_MAKEINDEX = makeindex -s gind.ist $(subst .dtx,,$<) >/dev/null 2>&1 all: $(GENERATED) doc: $(COMPILED) unpack: $(UNPACKED) -ctan: $(CTAN_ZIP) +ctan: check $(CTAN_ZIP) tds: $(TDS_ZIP) world: all ctan -$(COMPILED): $(DTX) +gendoc: $(DTX) + $(DO_PDFLATEX_WRITE18) + +$(DOC): $(DTX) $(DO_PDFLATEX) $(DO_MAKEINDEX) $(DO_PDFLATEX) $(DO_PDFLATEX) $(UNPACKED): $(DTX) - $(DO_TEX) + @$(DO_TEX) -$(CTAN_ZIP): $(SOURCE) $(COMPILED) $(TDS_ZIP) +$(CTAN_ZIP): $(CTAN_FILES) $(TDS_ZIP) @echo "Making $@ for CTAN upload." @$(RM) -- $@ @zip -9 $@ $^ >/dev/null @@ -59,6 +98,7 @@ define run-install @mkdir -p $(RUNDIR) && cp $(RUNFILES) $(RUNDIR) @mkdir -p $(DOCDIR) && cp $(DOCFILES) $(DOCDIR) @mkdir -p $(SRCDIR) && cp $(SRCFILES) $(SRCDIR) +@mkdir -p $(SRCDIR)/testsuite/ && cp $(TESTS) $(SRCDIR)/testsuite/ endef $(TDS_ZIP): TEXMFROOT=./tmp-texmf @@ -73,6 +113,12 @@ $(TDS_ZIP): $(ALL_FILES) README: README.markdown cp $< $@ +# lazy: +fontspec-testsuite.pdf: $(DTX) check + @echo 'Compiling test suite.' + $(DO_PDFLATEX) + xelatex --interaction=batchmode fontspec-testsuite.tex + .PHONY: install manifest clean mrproper install: $(ALL_FILES) @@ -95,3 +141,163 @@ clean: @$(RM) -- $(GENERATED) $(ZIPS) +############# +# TESTSUITE # +############# + +#### Needed to compile and make stuff #### + +builddir=build +testdir=testsuite +lprefix=L +xprefix=X +both=F + +COPY = cp -a +MOVE = mv -f +COMPARE_OPTS = -density 300x300 -metric ae -fuzz 35% + +LTXSOURCE = $(NAME).sty $(NAME).cfg $(NAME)-patches.sty + +TESTLIST = testsuite-listing.tex + +SUITESOURCE = \ + $(testdir)/testsuite.cls \ + $(testdir)/$(TESTLIST) + +TESTOUT = $(shell ls $(testdir)/*.safe.pdf) +BUILDTESTSRC = $(subst $(testdir)/,$(builddir)/,$(subst .safe.pdf,.ltx,$(TESTOUT))) +BUILDTESTTARGET = $(subst $(testdir)/,$(builddir)/,$(subst .safe.pdf,.diff.pdf,$(TESTOUT))) + +BUILDSOURCE = $(addprefix $(builddir)/,$(LTXSOURCE)) +BUILDSUITE = $(subst $(testdir)/,$(builddir)/,$(SUITESOURCE)) +BUILDFILES = $(BUILDSOURCE) $(BUILDSUITE) $(BUILDTESTSRC) + +#### All tests #### + +check: $(TESTLIST) + +$(TESTLIST): $(BUILDFILES) $(BUILDTESTTARGET) + @cd $(testdir); \ + ls *.ltx | sed -e 's/\(.*\).ltx/\\TEST{\1}/g' > $(TESTLIST) + +$(builddir)/%: $(testdir)/% + @mkdir -p $(builddir); \ + $(COPY) $< $@ + +$(builddir)/%: % + @mkdir -p $(builddir); \ + $(COPY) -f $< $@ + + +#### Generating new tests #### + +lonelystub = $(shell cd $(testdir); ls | egrep '($(xprefix)|$(lprefix))(.*\.ltx)|(.*\.safe.pdf)' | cut -d . -f 1 | uniq -u) +lonelyfile = $(addsuffix .safe.pdf,$(lonelystub)) +lonelypath = $(addprefix $(testdir)/,$(lonelyfile)) +lonelytest = $(addprefix $(builddir)/,$(addsuffix .pdf,$(lonelystub))) + +bothlonelystub = $(shell cd $(testdir); ls | egrep '($(both).*\.ltx)|($(both).*\.safe.pdf)' | cut -d . -f 1 | uniq -u) +bothlonelyfile = $(addsuffix .safe.pdf,$(bothlonelystub)) +bothlonelypath = $(addprefix $(testdir)/,$(bothlonelyfile)) +bothlonelytest = $(addprefix $(builddir)/,$(addsuffix .pdf,$(bothlonelystub))) + +initest: $(lonelypath) $(bothlonelypath) + +$(lonelypath): $(lonelytest) + @$(COPY) `echo $@ | sed -e s/$(testdir)/$(builddir)/ -e s/.safe.pdf/.pdf/` $@ + +$(bothlonelypath): $(bothlonelytest) + @$(COPY) `echo $@ | sed -e s/$(testdir)/$(builddir)/ -e s/.safe.pdf/.pdf/` $@ + +#### REFERENCE OUTPUT GENERATION #### + +$(builddir)/$(both)%.gendiff.pdf: $(builddir)/$(both)%-$(lprefix).pdf $(builddir)/$(both)%-$(xprefix).pdf + @echo '$(both)$*: Comparing PDF from LuaLaTeX with PDF from XeLaTeX.' + @if test $(shell compare \ + $(COMPARE_OPTS) \ + $(builddir)/$(both)$*-$(lprefix).pdf \ + $(builddir)/$(both)$*-$(xprefix).pdf \ + $(builddir)/$(both)$*.gendiff.pdf 2>&1) -lt 1 ; then \ + echo '$(both)$*: Test generation successed.' ; \ + else \ + echo '$(both)$*: Test generation failed; XeLaTeX and LuaLaTeX gave different output.' ; \ + false ; \ + fi + +$(builddir)/$(both)%.pdf: $(builddir)/$(both)%.gendiff.pdf + $(MOVE) $(builddir)/$(both)$*-$(xprefix).pdf $(builddir)/$(both)$*.pdf + +#### TESTS FOR BOTH ENGINES #### + +$(builddir)/$(both)%.diff.pdf: $(builddir)/$(both)%-$(lprefix).pdf $(builddir)/$(both)%-$(xprefix).pdf + @echo '$(both)$*: Comparing PDF from LuaLaTeX against reference output.' + @if test $(shell compare \ + $(COMPARE_OPTS) \ + $(builddir)/$(both)$*-$(lprefix).pdf \ + $(testdir)/$(both)$*.safe.pdf \ + $(builddir)/$(both)$*.diff.pdf 2>&1) -le 1 ; then \ + echo '$(both)$*: Test passed.' ; \ + else \ + echo '$(both)$*: Test failed.' ; \ + false ; \ + fi + @echo '$(both)$*: Comparing PDF from XeLaTeX against reference output.' + @if test $(shell compare \ + $(COMPARE_OPTS) \ + $(builddir)/$(both)$*-$(xprefix).pdf \ + $(testdir)/$(both)$*.safe.pdf \ + $(builddir)/$(both)$*.diff.pdf 2>&1) -le 1 ; then \ + echo '$(both)$*: Test passed.' ; \ + else \ + echo '$(both)$*: Test failed.' ; \ + false ; \ + fi + +$(builddir)/$(both)%-$(lprefix).pdf: $(BUILDSOURCE) $(BUILDSUITE) $(builddir)/$(both)%.ltx + @echo '$(both)$*: Generating PDF output with LuaLaTeX.' + @cd $(builddir); lualatex -jobname=$(both)$*-$(lprefix) -interaction=batchmode $(both)$*.ltx > /dev/null + +$(builddir)/$(both)%-$(xprefix).pdf: $(BUILDSOURCE) $(BUILDSUITE) $(builddir)/$(both)%.ltx + @echo '$(both)$*: Generating PDF output with XeLaTeX.' + @cd $(builddir); xelatex -jobname=$(both)$*-$(xprefix) -interaction=batchmode $(both)$*.ltx > /dev/null + + +#### TEST FOR EACH ENGINE INDIVIDUALLY #### + +$(builddir)/$(lprefix)%.diff.pdf: $(builddir)/$(lprefix)%.pdf + @echo '$(lprefix)$*: Comparing PDF against reference output.' + @if test $(shell compare $(COMPARE_OPTS) \ + $(builddir)/$(lprefix)$*.pdf $(testdir)/$(lprefix)$*.safe.pdf \ + $(builddir)/$(lprefix)$*.diff.pdf 2>&1) -le 1 ; then \ + echo '$(lprefix)$*: Test passed.' ; \ + else \ + echo '$(lprefix)$*: Test failed.' ; \ + false ; \ + fi + +$(builddir)/$(xprefix)%.diff.pdf: $(builddir)/$(xprefix)%.pdf + @echo '$(xprefix)$*: Comparing PDF against reference output.' + @if test $(shell compare \ + $(COMPARE_OPTS) \ + $(builddir)/$(xprefix)$*.pdf \ + $(testdir)/$(xprefix)$*.safe.pdf \ + $(builddir)/$(xprefix)$*.diff.pdf 2>&1) -le 1 ; then \ + echo '$(xprefix)$*: Test passed.' ; \ + else \ + echo '$(xprefix)$*: Test failed.' ; \ + false ; \ + fi + +$(builddir)/$(xprefix)%.pdf: $(BUILDSOURCE) $(BUILDSUITE) $(builddir)/$(xprefix)%.ltx + @echo '$(xprefix)$*: Generating PDF output with XeLaTeX.' + @cd $(builddir); xelatex -interaction=batchmode $(xprefix)$*.ltx > /dev/null + +$(builddir)/$(lprefix)%.pdf: $(BUILDSOURCE) $(BUILDSUITE) $(builddir)/$(lprefix)%.ltx + @echo '$(lprefix)$*: Generating PDF output with LuaLaTeX.' + @cd $(builddir); lualatex -interaction=batchmode $(lprefix)$*.ltx > /dev/null + +#### HACK: allow `make <foobar>` run that test. + +%: build/%.ltx + make build/$*.diff.pdf
\ No newline at end of file |