The clean target deletes the build directory, but it's only created by the docs generation target, which is not normally invoked by a build.
98 lines
2.5 KiB
Makefile
98 lines
2.5 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
|
|
MANDIR ?= $(PREFIX)/share/man/man1
|
|
|
|
FENNELFLAGS=--add-package-path "deps/?.lua" --add-fennel-path "src/?.fnl;deps/?.fnl"
|
|
REQUIRE_AS_INCLUDE_SETTINGS=$(shell $(FENNEL) tools/require-flags.fnl)
|
|
|
|
.PHONY: all clean test repl install docs docs-love2d install-deps ci selflint \
|
|
deps rm-docs rm-deps count testall check-deps
|
|
|
|
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) build/fennel-ls.1
|
|
mkdir -p $(DESTDIR)$(BINDIR) && cp $< $(DESTDIR)$(BINDIR)/
|
|
mkdir -p $(DESTDIR)$(MANDIR) && cp build/fennel-ls.1 $(DESTDIR)$(MANDIR)
|
|
|
|
## 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/
|
|
|
|
build/fennel-ls.1:
|
|
mkdir -p build/
|
|
echo ".TH FENNEL-LS 1" > $@
|
|
pandoc --title-prefix=fennel-ls -t man docs/manual.md >> $@
|
|
echo ".SH LICENSE\nCopyright © 2023-2025, Released under the MIT/X11 license" >> $@
|
|
|
|
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
|
|
|
|
ci: selflint testall
|
|
|
|
clean:
|
|
rm -fr $(EXE) old-deps old-fennel build/
|