diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 54 |
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 |
