.POSIX: CC = c99 CFLAGS = -std=c99 -Wall -Wextra -Wpedantic -fPIC -g -O3 LDFLAGS = -Wl,-rpath,$$LIBRARY_PATH LDLIBS = PREFIX = /usr/local MANPREFIX = $(PREFIX)/share/man VERSION = 0.2.1 DATE = 2021-02-23 DEFS = -DVERSION='"$(VERSION)"' -DDATE='"$(DATE)"' NAME = remembering MAILING_LIST = public-inbox sources = src/remembering.c manpages = \ doc/remembering.1 \ doc/remembering.5 all: remembering run-tests remembering: remembering-sh cp $? $@ remembering-sh: src/remembering.sh $(do_subst) < $? > $@-t chmod +x $@-t mv $@-t $@ remembering-c: $(sources) $(CC) $(CFLAGS) $(DEFS) $(LDFLAGS) -o $@ $(sources) $(LDLIBS) run-tests: $(sources) $(CC) $(CFLAGS) $(DEFS) $(LDFLAGS) -DTEST -o $@ $(sources) $(LDLIBS) fallible-tests: $(sources) $(CC) $(CFLAGS) $(DEFS) $(LDFLAGS) -DTEST -DFALLIBLE -o $@ $(sources) $(LDLIBS) -lfallible check: all ./run-tests sh tests/cli-opts.sh sh tests/ranking.sh sh tests/signals.sh dev-check: check fallible-tests valgrind `fallible-check --valgrind-flags` ./run-tests fallible-check ./fallible-tests sh aux/assert-shellcheck.sh sh aux/workflow/assert-todos.sh sh aux/workflow/assert-changelog.sh $(NAME) sh aux/workflow/assert-readme.sh $(NAME) $(MAILING_LIST) sh aux/workflow/assert-manpages.sh $(NAME) $(MAILING_LIST) clean: rm -rf public/ tests/test-profiles/ remembering remembering-sh remembering-c run-tests fallible* vgcore* remembering-test.* do_subst = sed \ -e 's:[@]VERSION[@]:$(VERSION):g' \ -e 's:[@]DATE[@]:$(DATE):g' install: all install -m 755 -D remembering $(DESTDIR)$(PREFIX)/bin/remembering for m in $(manpages); do \ n=$${m##*.}; \ mkdir -p $(DESTDIR)$(MANPREFIX)/man$$n; \ $(do_subst) < $$m | gzip > $(DESTDIR)$(MANPREFIX)/man$$n/`basename $$m`.gz; \ done uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/remembering for m in $(manpages); do rm -f $(DESTDIR)$(MANPREFIX)/man$${##*.}/`basename $$m`.gz; done dist: clean public dev-check sh aux/workflow/dist.sh $(DATE) $(VERSION) $(NAME) public: README.md TODOs.md CHANGELOG.md $(manpages) sh aux/workflow/public.sh Remembering $(NAME) $(MAILING_LIST) for m in $(manpages); do groff -m man -Thtml $$m > public/`basename $$m`.html; done .PHONY: all clean check dev-check dist install uninstall