fennel-ls/Makefile

98 lines
2.4 KiB
Makefile

LUA ?= lua
# If ./fennel is present, use `lua fennel` to run the locally vendored fennel
# otherwise
FENNEL=$(if $(wildcard fennel),$(LUA) fennel,fennel)
EXE=fennel-ls
SRC:=$(shell find src -name "*.fnl")
DESTDIR ?=
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
FENNELFLAGS=--add-package-path "deps/?.lua" --add-fennel-path "src/?.fnl;deps/?.fnl"
REQUIRE_AS_INCLUDE_SETTINGS=$(shell $(FENNEL) tools/require-flags.fnl)
ROCKSPEC_LATEST_SCM=rockspecs/fennel-ls-scm-$(shell ls rockspecs | \
grep -Eo 'scm-[0-9]+' | grep -Eo [0-9]+ | sort -n | tail -1).rockspec
.PHONY: all clean test repl install docs docs-love2d install-deps ci selflint \
deps rm-docs rm-deps count testall check-deps check-luarocks
all: $(EXE)
$(EXE): $(SRC)
echo "#!/usr/bin/env $(LUA)" > $@
$(FENNEL) $(FENNELFLAGS) $(REQUIRE_AS_INCLUDE_SETTINGS) --require-as-include \
--compile src/fennel-ls.fnl >> $@
chmod 755 $@
install: $(EXE)
mkdir -p $(DESTDIR)$(BINDIR) && cp $< $(DESTDIR)$(BINDIR)/
## Generating docs
docs: src/fennel-ls/docs/generated/lua51.fnl \
src/fennel-ls/docs/generated/lua52.fnl \
src/fennel-ls/docs/generated/lua53.fnl \
src/fennel-ls/docs/generated/lua54.fnl
src/fennel-ls/docs/generated/%.fnl:
mkdir -p build/
mkdir -p src/fennel-ls/docs/generated/
$(FENNEL) $(FENNELFLAGS) tools/generate-lua-docs.fnl ${*} > $@
docs-love2d:
@echo "This has moved to a separate source. Please see the wiki:"
@echo "https://wiki.fennel-lang.org/LanguageServer"
@exit 1
rm-docs:
rm -rf src/fennel-ls/docs/
deps:
$(FENNEL) $(FENNELFLAGS) tools/get-deps.fnl
rm-deps:
rm -rf fennel deps/
selflint:
$(FENNEL) $(FENNELFLAGS) src/fennel-ls.fnl --lint $(SRC)
count:
cloc $(shell find src -name "*.fnl" | grep -v "generated")
repl:
DEV=y $(FENNEL) $(FENNELFLAGS)
# to run one module: make test FAITH_TEST=test.lint
# to run one test: make test FAITH_TEST="test.lint test-unset-var"
test: $(EXE)
DEV=y XDG_DATA_HOME=test/data $(FENNEL) $(FENNELFLAGS) test/init.fnl
testall:
$(MAKE) test LUA=lua5.1
$(MAKE) test LUA=lua5.2
$(MAKE) test LUA=lua5.3
$(MAKE) test LUA=lua5.4
$(MAKE) test LUA=luajit
check-deps:
rm -rf old-deps old-fennel
mv deps old-deps
mv fennel old-fennel
$(MAKE) FENNEL=./old-fennel deps
diff -r deps old-deps
diff -r fennel old-fennel
rm -rf old-deps old-fennel
check-luarocks:
luarocks install $(ROCKSPEC_LATEST_SCM) --dev --local
eval "$$(luarocks path)"; \
fennel-ls --lint
ci: testall check-deps check-luarocks
clean:
rm -fr $(EXE) old-deps old-fennel build/