-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
91 lines (70 loc) · 2.3 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
VERSION=$(shell grep "version =" djot.lua | sed -e 's/.*"\([^"]*\).*"/\1/')
REVISION=1
ROCKSPEC=djot-$(VERSION)-$(REVISION).rockspec
MODULES=djot/match.lua djot/attributes.lua djot/inline.lua djot/block.lua djot/ast.lua djot/emoji.lua djot/html.lua djot/filter.lua djot.lua
SOURCES=$(MODULES) bin/main.lua
TESTSOURCES=test.lua pathological_tests.lua
BUNDLE=djot
VIMDIR?=~/.vim
TIMEOUT=perl -e 'alarm shift; exec @ARGV'
TEMPFILE := $(shell mktemp)
all: test doc/syntax.html
test: $(ROCKSPEC)
luarocks test
.PHONY: test
testall: test pathological fuzz
.PHONY: testall
fuzz:
LUA_PATH="./?.lua;$$LUA_PATH" $(TIMEOUT) 90 lua fuzz.lua 500000
.PHONY: fuzz
pathological:
LUA_PATH="./?.lua;$$LUA_PATH" \
$(TIMEOUT) 10 lua pathological_tests.lua
.PHONY: pathological
bench: bench-lua bench-luajit
.PHONY: bench
bench-lua: m.dj
du -h m.dj
LUA_PATH="./?.lua" hyperfine --warmup 2 "lua bin/main.lua m.dj"
LUA_PATH="./?.lua" hyperfine --warmup 2 "lua bin/main.lua -m m.dj"
LUA_PATH="./?.lua" hyperfine --warmup 2 "lua bin/main.lua -p m.dj"
.PHONY: bench-lua
bench-luajit: m.dj
du -h m.dj
LUA_PATH="./?.lua" hyperfine --warmup 2 "luajit bin/main.lua m.dj"
LUA_PATH="./?.lua" hyperfine --warmup 2 "luajit bin/main.lua -m m.dj"
LUA_PATH="./?.lua" hyperfine --warmup 2 "luajit bin/main.lua -p m.dj"
.PHONY: bench-luajit
m.dj:
pandoc -t djot-writer.lua https://raw.githubusercontent.com/jgm/pandoc/2.18/MANUAL.txt -o m.dj
linecount:
wc -l $(SOURCES)
.PHONY: linecount
check:
luacheck $(SOURCES) $(TESTSOURCES)
.PHONY: check
doc/syntax.html: doc/syntax.md
pandoc --lua-filter doc/code-examples.lua $< -t html -o $@ -s --css doc/syntax.css --self-contained --wrap=preserve --toc --section-divs -Vpagetitle="Djot syntax reference"
# luarocks packaging
install: $(ROCKSPEC)
luarocks make $(ROCKSPEC)
.PHONY: install
rock: $(ROCKSPEC)
luarocks --local make $(ROCKSPEC)
.PHONY: rock
vim:
cp editors/vim/syntax/djot.vim $(VIMDIR)/syntax/
cp editors/vim/ftdetect/djot.vim $(VIMDIR)/ftdetect/
.PHONY: vim
## start up nix env with lua 5.1
lua51:
nix-shell --pure lua51.nix
rm ~/.luarocks/default-lua-version.lua
.PHONY: lua51
## start up nix env with luajiit
luajit:
nix-shell --pure luajit.nix
rm ~/.luarocks/default-lua-version.lua
.PHONY: luajit
$(ROCKSPEC): rockspec.in
sed -e "s/_VERSION/$(VERSION)/g; s/_REVISION/$(REVISION)/g" $< > $@