aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 11b164a37291bc5b95c9eb91af4cf2f17c06ce6a (plain)
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
LUA?="$(shell where lua | head -n 1)"
MOONC?="$(shell where moonc | head -n 1)"
BUSTED?="$(shell where busted | head -n 1)"
AMULET?="$(shell where amulet | head -n 1)"
MAGICK?="$(shell where magick | head -n 1)" -script
PYTHON?=python
PYTEST?=$(PYTHON) -m pytest
# Works on windows and  linux (and mac?)
CP?=cp
RM?=rm
CD?=cd
UNZIP?=7z x -y

.PHONY: all clean test test-integration test-integration-headless test1

# Recursive wildcard
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))

# Source code
src_moon=$(call rwildcard,src,*.moon)
built_moon=$(src_moon:src/%.moon=data/%.lua)
dbg_moon=$(src_moon:src/%.moon=data/%.lua.X)

src_lua=$(call rwildcard,src,*.lua)
built_lua=$(src_lua:src/%.lua=data/%.lua)

src_js=$(call rwildcard,src,*.js)
built_js=$(src_js:src/%.js=data/%.lua)

src_vert=$(call rwildcard,src,*.vert)
built_vert=$(src_vert:src/%.vert=data/%.vert)

src_frag=$(call rwildcard,src,*.frag)
built_frag=$(src_frag:src/%.frag=data/%.frag)

src_imagemagick=$(call rwildcard,assets_src,*.imagemagick)
built_imagemagick=$(src_imagemagick:assets_src/%.imagemagick=data/assets/%.png)
src_png=$(call rwildcard,assets_src,*.png)
built_png=$(src_png:assets_src/%.png=data/assets/%.png)
sprites=$(built_imagemagick) $(built_png)

built=$(built_moon) $(built_lua) $(built_js) $(built_vert) $(built_frag) $(built_imagemagick) data/sprites.lua data/sprites.png
built_dbg=$(built) $(dbg_moon)

all: ggj26/amulet.js ggj26/amulet.wasm ggj26/data.pak ggj26/index.html
	echo "Done"
	$(AMULET) export -r -html -a data
	#scp ggj26-0.0.0-html.zip alex@cogarr.net:
	$(UNZIP) *.zip
	$(CD) ggj26 && python3 -m http.server -b 0.0.0.0 8000
	

ggj26/index.html ggj26/amulet.js ggj26/amulet.wasm ggj26/data.pak: ggj26-0.0.0-html.zip
	$(UNZIP) *.zip

data/sprites.lua data/sprites.png : $(sprites)
	$(AMULET) pack -png data/sprites.png -lua data/sprites.lua yataghan.ttf@64 yataghan.ttf@32 $^
	# $(RM) -rf data/assets
	sed -i 's|data/sprites\.png|sprites.png|g; s|data/assets/|assets/|g' data/sprites.lua

ggj26-0.0.0-html.zip : $(built_dbg)
	$(AMULET) export -r -html -a data

clean:
	$(RM) $(built)

test: $(built_dbg)
	$(BUSTED) -m "./data/?.lua" -o utfTerminal -v spec

test-integration:
	$(PYTEST) -v

test-integration-headless:
	@set HEADLESS=1 && $(PYTEST) -v

test1: test test-integration

$(built_lua) : data/%.lua : src/%.lua
	$(CP) $< $@

$(built_moon) : data/%.lua : src/%.moon
	# $(MOONC) -l $< # Linter isn't good enough yet
	$(MOONC) -p $< > $@

$(dbg_moon) : data/%.lua.X : src/%.moon
	# $(MOONC) -l $< # Linter isn't good enough yet
	$(MOONC) -X $< > $@

$(built_js) : data/%.lua : src/%.js
	$(if $(findstring party/,$<),@echo Skipping jshint for third-party library: $<,npx jshint $<)
	echo "return [=====[" > $@
	cat $< >> $@
	echo "]=====]" >> $@

$(built_imagemagick) : data/assets/%.png : assets_src/%.imagemagick
	@mkdir -p $(dir $@)
	$(MAGICK) $< > $@

$(built_png) : data/assets/%.png : assets_src/%.png
	@mkdir -p $(dir $@)
	$(CP) $< $@

$(built_vert) : data/%.vert : src/%.vert
	@mkdir -p $(dir $@)
	$(CP) $< $@

$(built_frag) : data/%.frag : src/%.frag
	@mkdir -p $(dir $@)
	$(CP) $< $@