makefile (1350B)
.SILENT:
EXPLAIN_MODEL ?= openai/gpt-5.4-mini-fast
EXPLAIN_CMD ?= opencode run --model "$(EXPLAIN_MODEL)"
EXPLAIN_PROMPT ?= Explain (do not edit code) this Ada compiler error in concise English. Files are in src/. Include the likely cause and a concise fix. Error:
EXPLAIN_TITLE ?= AI explanation for Ada error:
EXPLAIN_MARKER ?= : error:
EXPLAIN_TMP ?= $${TMPDIR:-/tmp}/nightshade-explain.XXXXXX
BUILD_COMMAND ?= gnatmake -gnat2022 -o bin/nightshade src/nightshade.adb && ./bin/nightshade test.mty
define run_with_explain
@tmp="$$(mktemp "$(EXPLAIN_TMP)")"; \
{ $(1); } >"$$tmp" 2>&1; \
status=$$?; \
cat "$$tmp"; \
if [ $$status -ne 0 ]; then \
line=$$(grep -m 1 -F "$(EXPLAIN_MARKER)" "$$tmp" 2>/dev/null || true); \
if [ -n "$$line" ]; then \
printf '\n%s\n' "$(EXPLAIN_TITLE)"; \
$(EXPLAIN_CMD) "$(EXPLAIN_PROMPT) $$line" || true; \
fi; \
fi; \
rm -f "$$tmp"; \
exit $$status
endef
default:
$(BUILD_COMMAND)
clean:
rm -rf ./bin/*
rm -rf *.o *.ali b~*
mkdir -p ./bin/
rm -rf ./tmp/*
pedantic: clean
gnatmake -gnat2022 -gnatwa -o bin/nightshade src/nightshade.adb
fmt:
# 90
gnatformat -w 110 src/*.adb src/*.ads
err: clean
make 2>&1 | grep -w --color=always 'error'
release: clean
gnatmake -gnat2022 -O2 -gnatp -gnatn -q -o bin/nightshade_release src/nightshade.adb
huh: clean
$(call run_with_explain,$(BUILD_COMMAND))