diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 113 |
1 files changed, 78 insertions, 35 deletions
@@ -1,51 +1,94 @@ .POSIX: -PREFIX = /usr/local -MANPREFIX = $(PREFIX)/share/man -DATE = 1970-01-01 -VERSION = 0.1.0 -NAME = gistatic +PREFIX = /usr/local +MANPREFIX = $(PREFIX)/usr/local +DATE = 1970-01-01 +VERSION = 0.1.0 +NAME = gistatic +MAILING_LIST = public-inbox +TRANSLATIONS = pt fr eo +CONTRIBLANGS = +DEFS = \ + -D_POSIX_C_SOURCE=200809L \ + -DVERSION='"$(VERSION)"' \ + -DDATE='"$(DATE)"' -manpages = \ - doc/$(NAME).1 \ +.SUFFIXES: .in .t -all: target/release/$(NAME) +.in: + sed -e 's:@VERSION@:$(VERSION):g' -e 's:@DATE@:$(DATE):g' < $< > $@ -target/release/$(NAME): - cargo build --release +.c: + $(CC) $(CFLAGS) $(DEFS) -o $@ $< -check: all - cargo test --release +.c.t: + $(CC) $(CFLAGS) $(DEFS) -DTEST -o $@ $< -dev-check: check - sh aux/assert-shellcheck.sh - sh aux/workflow/assert-todos.sh - sh aux/workflow/assert-changelog.sh $(NAME) -do_subst = sed \ - -e 's:[@]VERSION[@]:$(VERSION):g' \ - -e 's:[@]DATE[@]:$(DATE):g' +manpages.en.in = \ + doc/gistatic.en.1.in +manpages.in = $(manpages.en.in) \ + doc/gistatic.pt.1.in \ + doc/gistatic.fr.1.in \ + doc/gistatic.eo.1.in +manpages = $(manpages.in:.in=) + + +all: $(manpages) src/gistatic + +check: all src/gistatic.t + ./src/gistatic.t + +clean: + rm -rf public/ $(manpages) README.*.md CHANGELOG.*.md messages.mo \ + src/gistatic src/gistatic.t install: all - install -m 755 -D target/release/$(NAME) $(DESTDIR)$(PREFIX)/bin/$(NAME) - for m in $(manpages); do \ - n=$${m##*.}; \ - mkdir -p $(DESTDIR)$(MANPREFIX)/man$$n; \ - $(do_subst) < $$m > $(DESTDIR)$(MANPREFIX)/man$$n/`basename $${m%%.*}.$$n`.gz; \ - done + mkdir -p $(DESTDIR)$(PREFIX)/bin + cp src/gistatic $(DESTDIR)$(PREFIX)/bin + sh aux/workflow/manpages.sh -ip $(DESTDIR)$(MANPREFIX) $(manpages) uninstall: - rm -f $(DESTDIR)$(PREFIX)/bin/$(NAME) - for m in $(manpages); do rm -f $(DESTDIR)$(MANPREFIX)/man$${m##*.}/`basename $${m%%.*}`.$${m##*.}.gz; done + sh aux/workflow/manpages.sh -up $(DESTDIR)$(MANPREFIX) $(manpages) -clean: - rm -rf public/ - cargo clean + +# +# Personal workflow targets +# + +dev-check: check public + sh aux/assert-shellcheck.sh + sh aux/workflow/assert-todos.sh + sh aux/workflow/assert-changelog.sh -n $(NAME) + sh aux/workflow/assert-readme.sh -n $(NAME) -m $(MAILING_LIST) + sh aux/workflow/assert-manpages.sh -n $(NAME) -m $(MAILING_LIST) \ + -l '$(TRANSLATIONS) en' $(manpages.en.in) + . aux/lib.sh && $(MAKE) PREFIX=`mkdtemp` \ + install installcheck uninstall uninstallcheck + +installcheck: + sh aux/workflow/installcheck.sh -x1 -l1 -f5 -p $(PREFIX) + +uninstallcheck: + sh aux/workflow/installcheck.sh -up $(PREFIX) dist: - sh aux/workflow/dist.sh $(DATE) $(VERSION) $(NAME) + sh aux/workflow/dist.sh -d $(DATE) -V $(VERSION) \ + -n $(NAME) -m $(MAILING_LIST) + +README.en.md: README.md + ln -fs $? $@ + +CHANGELOG.en.md: CHANGELOG.md + ln -fs $? $@ + +l10n-gen: README.en.md CHANGELOG.en.md $(manpages.en.in) + sh aux/workflow/l10n.sh -l '$(TRANSLATIONS)' -L '$(CONTRIBLANGS)' $? -public: README.md TODOs.md CHANGELOG.md - sh aux/workflow/public.sh $(NAME) $(NAME) public-inbox - for m in $(manpages); do groff -m man -Thtml $$m > public/`basename $$m`.html; done +public: l10n-gen TODOs.md $(manpages) + sh aux/workflow/public.sh -l '$(TRANSLATIONS) $(CONTRIBLANGS) en' \ + -n $(NAME) -m $(MAILING_LIST) -o public + sh aux/workflow/manpages.sh -Ho public $(manpages) -.PHONY: all clean check dev-check dist install uninstall +spellcheck: public + sh aux/workflow/assert-spelling.sh -l '$(TRANSLATIONS) en' \ + $$(find public -type f -name '*.html') |