size: 2 KiB
| 1 | VERSION=$(shell grep "version = \"" djot.lua | sed -e 's/.*"\([^"]*\).*"/\1/') |
| 2 | REVISION=1 |
| 3 | ROCKSPEC=djot-$(VERSION)-$(REVISION).rockspec |
| 4 | MODULES=djot.lua djot/attributes.lua djot/inline.lua djot/block.lua djot/ast.lua djot/html.lua djot/filter.lua |
| 5 | SOURCES=$(MODULES) bin/main.lua |
| 6 | TESTSOURCES=test.lua pathological_tests.lua |
| 7 | BUNDLE=djot |
| 8 | VIMDIR?=~/.vim |
| 9 | TIMEOUT=perl -e 'alarm shift; exec @ARGV' |
| 10 | TEMPFILE := $(shell mktemp) |
| 11 | |
| 12 | all: test doc/djot.1 doc/api/index.html |
| 13 | |
| 14 | test: $(ROCKSPEC) |
| 15 | luarocks test |
| 16 | .PHONY: test |
| 17 | |
| 18 | testall: test pathological fuzz |
| 19 | .PHONY: testall |
| 20 | |
| 21 | ci: testall install |
| 22 | make -C clib |
| 23 | pandoc --print-default-data-file MANUAL.txt > m.txt |
| 24 | pandoc -t djot-writer.lua m.txt -o m.dj |
| 25 | pandoc -f djot-reader.lua m.dj -o m.html |
| 26 | rm m.dj m.html |
| 27 | .PHONY: ci |
| 28 | |
| 29 | fuzz: |
| 30 | LUA_PATH="./?.lua;$$LUA_PATH" $(TIMEOUT) 90 lua fuzz.lua 500000 |
| 31 | .PHONY: fuzz |
| 32 | |
| 33 | pathological: |
| 34 | LUA_PATH="./?.lua;$$LUA_PATH" \ |
| 35 | $(TIMEOUT) 10 lua pathological_tests.lua |
| 36 | .PHONY: pathological |
| 37 | |
| 38 | bench: bench-lua bench-luajit |
| 39 | .PHONY: bench |
| 40 | |
| 41 | bench-lua: m.dj |
| 42 | du -h m.dj |
| 43 | LUA_PATH="./?.lua" hyperfine --warmup 2 "lua bin/main.lua m.dj" |
| 44 | LUA_PATH="./?.lua" hyperfine --warmup 2 "lua bin/main.lua -m m.dj" |
| 45 | LUA_PATH="./?.lua" hyperfine --warmup 2 "lua bin/main.lua -p m.dj" |
| 46 | .PHONY: bench-lua |
| 47 | |
| 48 | bench-luajit: m.dj |
| 49 | du -h m.dj |
| 50 | LUA_PATH="./?.lua" hyperfine --warmup 2 "luajit bin/main.lua m.dj" |
| 51 | LUA_PATH="./?.lua" hyperfine --warmup 2 "luajit bin/main.lua -m m.dj" |
| 52 | LUA_PATH="./?.lua" hyperfine --warmup 2 "luajit bin/main.lua -p m.dj" |
| 53 | .PHONY: bench-luajit |
| 54 | |
| 55 | |
| 56 | m.dj: |
| 57 | pandoc -t djot-writer.lua https://raw.githubusercontent.com/jgm/pandoc/2.18/MANUAL.txt -o m.dj |
| 58 | |
| 59 | djot-reader.amalg.lua: djot-reader.lua $(MODULES) |
| 60 | LUA_PATH="./?.lua;" amalg.lua djot djot.ast djot.block djot.filter djot.inline djot.attributes djot.html djot.json -s $< -o $@ |
| 61 | |
| 62 | djot-writer.amalg.lua: djot-writer.lua $(MODULES) |
| 63 | LUA_PATH="./?.lua;" amalg.lua djot djot.ast djot.block djot.filter djot.inline djot.attributes djot.html djot.json -s $< -o $@ |
| 64 | |
| 65 | linecount: |
| 66 | wc -l $(SOURCES) |
| 67 | .PHONY: linecount |
| 68 | |
| 69 | check: |
| 70 | luacheck $(SOURCES) $(TESTSOURCES) |
| 71 | .PHONY: check |
| 72 | |
| 73 | doc/djot.1: doc/djot.md |
| 74 | pandoc \ |
| 75 | --metadata title="DJOT(1)" \ |
| 76 | --metadata author="" \ |
| 77 | --variable footer="djot $(VERSION)" \ |
| 78 | $< -s -o $@ |
| 79 | |
| 80 | # luarocks packaging |
| 81 | |
| 82 | install: $(ROCKSPEC) |
| 83 | luarocks make $(ROCKSPEC) |
| 84 | .PHONY: install |
| 85 | |
| 86 | rock: $(ROCKSPEC) |
| 87 | luarocks --local make $(ROCKSPEC) |
| 88 | .PHONY: rock |
| 89 | |
| 90 | doc/api: |
| 91 | -mkdir $@ |
| 92 | |
| 93 | doc/api/index.html: djot.lua djot/ast.lua djot/filter.lua doc/api |
| 94 | ldoc . |
| 95 | |
| 96 | vim: |
| 97 | cp editors/vim/syntax/djot.vim $(VIMDIR)/syntax/ |
| 98 | cp editors/vim/ftdetect/djot.vim $(VIMDIR)/ftdetect/ |
| 99 | .PHONY: vim |
| 100 | |
| 101 | ## start up nix env with lua 5.1 |
| 102 | lua51: |
| 103 | nix-shell --pure lua51.nix |
| 104 | rm ~/.luarocks/default-lua-version.lua |
| 105 | .PHONY: lua51 |
| 106 | |
| 107 | ## start up nix env with luajiit |
| 108 | luajit: |
| 109 | nix-shell --pure luajit.nix |
| 110 | rm ~/.luarocks/default-lua-version.lua |
| 111 | .PHONY: luajit |
| 112 | |
| 113 | $(ROCKSPEC): rockspec.in |
| 114 | sed -e "s/_VERSION/$(VERSION)/g; s/_REVISION/$(REVISION)/g" $< > $@ |
| 115 |