.PHONY: all clean mrproper bin lib MOONC = moonc AMALG = amalg.lua RM = rm -f -- LUA = lua5.3 LIB_SRC = $(wildcard moonbuild/*.moon) $(wildcard moonbuild/*/*.moon) $(wildcard moonbuild/*/*/*.moon) BIN_SRC = $(wildcard bin/*.moon) LIB_LUA = $(foreach moon, $(LIB_SRC), $(patsubst %.moon, %.lua, $(moon))) BIN_LUA = $(foreach moon, $(BIN_SRC), $(patsubst %.moon, %.lua, $(moon))) BIN = $(foreach lua, $(BIN_LUA), $(patsubst bin/%.lua, out/%, $(lua))) MODULES = $(shell echo $(foreach lib, $(LIB_LUA), $(patsubst %.lua, %, $(lib))) | sed 's|/|.|g') all: bin lib clean: $(RM) $(LIB_LUA) $(RM) $(BIN_LUA) mrproper: clean $(RM) $(BIN) out/moonbuild.lua bin: $(BIN) lib: $(LIB_LUA) out/moonbuild.lua out/%: bin/%.lua $(LIB_LUA) @mkdir -p `dirname $@` @printf '#!/usr/bin/env %s\n' $(LUA) > $@.headline @cat $@.headline $< > $@ @rm $@.headline chmod +x $@ out/moonbuild.lua: moonbuild/init.lua $(LIB_LUA) @mkdir -p `dirname $@` $(AMALG) -o $@ -s $< $(MODULES) %.lua: %.moon moonc $^