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) $< $@