aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile54
1 files changed, 54 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..fb6d964
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,54 @@
+# clectio -- tiny, fast, suckless daily readings
+# Configure by editing config.h (copied from config.def.h on first build).
+
+CC = cc
+CFLAGS = -std=c99 -Os -Wall -Wextra
+LDFLAGS = -s
+PREFIX = /usr/local
+
+# The form to build is read from config.h so there is one source of truth.
+FORM := $(shell grep -Eq '^[[:space:]]*\#[[:space:]]*define[[:space:]]+FORM_EF' config.h 2>/dev/null && echo ef || echo of)
+# Bring your own Bible: `make CORPUS=/path/to/mybible.tsv` (same 6-column TSV
+# format as gen/, Vulgate-numbered). Empty = use the shipped Vulgate text.
+CORPUS ?=
+
+.PHONY: all clean size install uninstall
+
+all: clectio
+
+config.h:
+ cp config.def.h config.h
+
+mktext: mktext.c lz.h
+ $(CC) $(CFLAGS) -o $@ mktext.c
+
+bin2h: bin2h.c
+ $(CC) $(CFLAGS) -o $@ bin2h.c
+
+# With CORPUS set, repack the text for the chosen form from that corpus;
+# otherwise the shipped text_<form>.lz (default Vulgate) is used as-is. The
+# verse keys ship gzipped (they are only needed here), so unpack them first.
+ifneq ($(CORPUS),)
+gen/verses_$(FORM).keys: gen/verses_$(FORM).keys.gz
+ gzip -dc $< > $@
+text_$(FORM).lz: mktext gen/verses_$(FORM).keys $(CORPUS)
+ ./mktext gen/verses_$(FORM).keys $(CORPUS) $@
+endif
+
+text.lz.h: bin2h text_$(FORM).lz
+ ./bin2h text_$(FORM).lz > $@
+
+clectio: clectio.c config.h text.lz.h gen/liturgy_$(FORM).h lz.h
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ clectio.c
+
+size: clectio
+ @ls -l clectio | awk '{printf "clectio (%s): %d bytes = %.0f KB\n","$(FORM)",$$5,$$5/1024}'
+
+install: clectio
+ install -Dm755 clectio $(DESTDIR)$(PREFIX)/bin/clectio
+
+uninstall:
+ rm -f $(DESTDIR)$(PREFIX)/bin/clectio
+
+clean:
+ rm -f clectio mktext bin2h text.lz.h gen/verses_of.keys gen/verses_ef.keys