LUAV ?= 5.4
LUA_SHARE ?= /usr/share/lua/$(LUAV)
STATIC_LUA_LIB ?= /usr/lib/liblua-$(LUAV).so.0.0.0
LUA_INCLUDE_DIR ?= /usr/include/lua$(LUAV)
LUA_ROCKS ?= /usr/bin/luarocks-$(LUAV)
DESTDIR ?= /usr/bin

fetch-libraries:
	$(LUA_ROCKS) install lume --local
	$(LUA_ROCKS) install lsqlite3 --local
	$(LUA_ROCKS) install lyaml --local
	$(LUA_ROCKS) install inspect --local

fetch-check-libraries:
	$(LUA_ROCKS) install luacheck --local
	$(LUA_ROCKS) install busted --local
	$(LUA_ROCKS) install posix --local

compile-lua:
	fennel --compile --require-as-include src/tkts.fnl > src/tkts.lua
	sed -i '1 i\-- Author: Will Sinatra <tkts@lambdacreate.com> | License: GPLv3' src/tkts.lua
	sed -i '1 i\#!/usr/bin/$(LUA)' src/tkts.lua

install-lua:
	install ./src/tkts.lua -D $(DESTDIR)/tkts

compile-bin:
	CC_OPTS="-L/usr/lib/lua/$(LUAV)/ -llsqlite3 -static" cd ./src/ && fennel$(LUAV) --compile-binary tkts.fnl tkts-bin $(STATIC_LUA_LIB) $(LUA_INCLUDE_DIR) --native-library /usr/lib/lua/$(LUAV)/lsqlite3.so

install-bin:
	install ./src/tkts-bin -D $(DESTDIR)/tkts

check:
	if [ ! -f ./src/tkts.lua ]; then $(MAKE) compile-lua; fi
	luacheck ./src/tkts.lua

test:
	busted-$(LUAV) -v --lua=lua$(LUAV) spec/blackbox

clean:
	if [ -f ./src/tkts-bin ]; then rm ./src/tkts-bin; fi
	if [ -f ./src/tkts.lua ]; then rm ./src/tkts.lua; fi
