summaryrefslogtreecommitdiff
path: root/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* build: add `make dist` source-tarball target + .gitattributes export-ignoreLukasz Kasprzak2026-07-291-2/+10
| | | | | | | | | | | | - `make dist` runs git archive to write clectio-$(VERSION).tar.gz: a snapshot of the committed tree only -- no .git history, and no build artifacts (they are untracked, so git archive can't include them). VERSION defaults to 1.0, overridable (make dist VERSION=x). `clean` removes the tarball; it is gitignored. - .gitattributes marks .gitignore and .gitattributes export-ignore, so they stay out of the shipped source tarball. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* feat: man page (clectio.1), installed by make installLukasz Kasprzak2026-07-291-1/+4
| | | | | | | | | | Add a manual page covering usage, the -a/-g and --month options, the compile- time config.h settings (FORM/SIGLA/COLOR/GOSPEL_ONLY/WRAP), and both the bring-your-own-Bible and bring-your-own-calendar workflows, matching the README. Install it via make (MANPREFIX = $PREFIX/share/man); uninstall removes it too. Renders clean under man --warnings. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* feat: standalone calendar overrides (calendar.h) + document customizationLukasz Kasprzak2026-07-291-1/+4
| | | | | | | | | | | | | | | | | | | | Add a compile-time override table for MINOR local calendar changes, standalone (no lectio, no toolchain): edit calendar.h (copied from calendar.def.h), add a { month, day, colour, "name" } row, make. It replaces a fixed date's name and colour, every year, in both single-day and --month output. Limits (no engine): fixed dates only; name/colour only, not readings or rank/precedence; an override wins unconditionally. README gains a "Customize the calendar" section documenting both tiers with their limits: the standalone override above, and -- for readings, ranks and movable feasts -- regenerating gen/ from a lectio calendar layer via clectio-gen (-caldir/-use), then rebuilding with CORPUS= to repack any newly cited verses, with a git-checkout revert note. Both forms build clean under -Wall -Wextra; binary unchanged at 666 KB; default (empty override table) output is unchanged. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* perf: DEFLATE (puff) + -no-pie -> OF binary 879 KB -> 662 KB (-25%)Lukasz Kasprzak2026-07-291-4/+8
| | | | | | | | | | | | | | | | | | | | | Two size wins: - Replace the home-grown LZSS (2.0x) with DEFLATE: mktext gzips the text and strips the gzip container to a raw DEFLATE stream; clectio decompresses it with puff, Mark Adler's public-domain reference inflate (~200 lines, verified byte-identical to gunzip on the OF/EF text, repetitive, random and empty inputs). Text blob 671 KB -> 492 KB (OF), 164 KB -> 132 KB (EF), 2.7x. - Build with -no-pie: clectio is a local CLI reading static embedded data with no attack surface, so it needs no PIE/ASLR. The linker then bakes the string- table pointers in at link time instead of emitting ~57 KB of runtime relocations. Net: OF 879 -> 662 KB, EF 266 -> 214 KB. Verified byte-identical to lectio. The default build still needs only a compiler + libc; a CORPUS= rebuild now also needs gzip. lz.h removed. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* make: honor $CC (CC ?= cc) so a gcc environment builds with plain `make`Lukasz Kasprzak2026-07-281-1/+1
| | | | | | | | Change the hard `CC = cc` to `CC ?= cc` so an exported CC (e.g. CC=gcc) is respected. Keeps the suckless default of cc for clones while letting a system whose `cc` is shadowed use plain `make` without passing CC= each time. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* clectio: tiny suckless C daily readings, all readings compiled inlectio2026-07-281-0/+54
clectio prints the Catholic liturgical day and its Mass readings for a date with a single table lookup -- no computation, config file, network, or deps beyond libc. The calendar, reading citations and scripture text are all compiled in; the whole shipped package fits on a 1.44 MB floppy (~1.29 MiB) and the binary is ~0.9 MB (OF) / ~0.3 MB (EF). - suckless config.h: FORM_OF/FORM_EF, SIGLA_ENGLISH/SIGLA_LATIN, COLOR. - Bring your own Bible: `make CORPUS=mybible.tsv` recompiles with any Vulgate-numbered 6-column TSV; only the ~12k cited verses are embedded. - The hard liturgical logic stays in lectio (Go, oracle-validated); its clectio-gen emits the corpus-independent tables in gen/. The scripture text is LZSS-packed (lz.h) to fit; mktext/bin2h resolve+embed it at build time. - Verified byte-identical to lectio's readings; day names match 157/157 over a 3-year sample. Default text: public-domain Latin Vulgate. ISC-licensed. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a