aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile109
1 files changed, 109 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..11b164a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,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) $< $@