fennel-ls/Makefile
Michele Campeotto d54ccfd777 Create build directory when generating man page
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.
2025-03-13 20:11:17 -07:00

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/