.POSIX: CC = c99 CFLAGS = -std=c99 -Wall -Wextra -Wpedantic -fPIC -g -DVERSION='"$(VERSION)"' -DDATE='"$(DATE)"' LDFLAGS = LDLIBS = PREFIX = @PREFIX@ MANPREFIX = $(PREFIX)/share/man VERSION = @VERSION@ DATE = @DATE@ sources = src/remembering.c manpages = \ doc/remembering.1 \ doc/remembering.5 all: remembering remembering-c run-tests remembering: src/remembering.in $(do_subst) < $? > $@-t chmod +x $@-t mv $@-t $@ remembering-c: $(sources) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(sources) $(LDLIBS) run-tests: $(sources) $(CC) $(CFLAGS) $(LDFLAGS) -DTEST -o $@ $(sources) $(LDLIBS) fallible-tests: $(sources) $(CC) $(CFLAGS) $(LDFLAGS) -DTEST -DFALLIBLE -o $@ $(sources) $(LDLIBS) check: all ./run-tests sh tests/cli-opts.sh sh tests/ranking.sh sh tests/signals.sh if [ -d .git ]; then \ echo 'Assuming Git repository, running development checks.'; \ $(MAKE) dev-check; \ fi VALGRIND_FLAGS= \ --show-error-list=yes \ --show-leak-kinds=all \ --leak-check=full \ --track-origins=yes \ --error-exitcode=1 dev-check: all fallible-tests valgrind $(VALGRIND_FLAGS) ./run-tests fallible-check ./fallible-tests sh aux/assert-clang-format.sh sh aux/assert-shellcheck.sh sh aux/workflow/assert-todos.sh dist: sh aux/workflow/dist.sh $(DATE) $(VERSION) clean: rm -rf public/ tests/test-profiles/ remembering remembering-c run-tests fallible* vgcore* 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 NAME_UC = Remembering NAME = remembering MAILING_LIST = public-inbox public: README.md TODOs.md CHANGELOG.md $(manpages) sh aux/workflow/TODOs.sh $(NAME_UC) $(NAME) $(MAILING_LIST) sh aux/workflow/README.sh $(NAME_UC) $(NAME) sh aux/workflow/commonmark.sh $(NAME_UC) CHANGELOG.md sh aux/ci/report.sh $(NAME) for m in $(manpages); do groff -m man -Thtml $$m > public/`basename $$m`.html; done .PHONY: all clean check dev-check dist install uninstall