aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile113
1 files changed, 78 insertions, 35 deletions
diff --git a/Makefile b/Makefile
index 4edd7b6..ffbdf40 100644
--- a/Makefile
+++ b/Makefile
@@ -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')