aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile150
1 files changed, 150 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a3a0627
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,150 @@
+.POSIX:
+DATE = 1970-01-01
+VERSION = 0.1.0
+NAME = td
+MAILING_LIST = public-inbox
+TRANSLATIONS = pt fr eo es
+CONTRIBLANGS =
+PREFIX = /usr/local
+BINDIR = $(PREFIX)/bin
+LIBEXECDIR = $(PREFIX)/libexec
+SHAREDIR = $(PREFIX)/share
+LOCALEDIR = $(SHAREDIR)/locale
+MANDIR = $(SHAREDIR)/man
+
+
+.SUFFIXES:
+.SUFFIXES: .in
+
+.in:
+ sed \
+ -e 's:@VERSION@:$(VERSION):g' \
+ -e 's:@DATE@:$(DATE):g' \
+ -e 's:@NAME@:$(NAME):g' \
+ -e 's:@LIBEXECDIR@:$(LIBEXECDIR):g' \
+ -e 's:@LOCALEDIR@:$(LOCALEDIR):g' \
+ < $< > $@
+ if [ -x $< ]; then chmod +x $@; fi
+
+
+manpages.en.in = \
+ doc/td.en.1.in \
+ doc/tdrc.en.5.in \
+ doc/td.tutorial.en.7.in \
+ doc/td.recipes.en.7.in \
+ doc/td.why.en.7.in
+manpages.in = $(manpages.en.in) \
+ doc/td.pt.1.in \
+ doc/td.fr.1.in \
+ doc/td.eo.1.in \
+ doc/td.es.1.in \
+ doc/tdrc.pt.5.in \
+ doc/tdrc.fr.5.in \
+ doc/tdrc.eo.5.in \
+ doc/tdrc.es.5.in \
+ doc/td.tutorial.pt.7.in \
+ doc/td.tutorial.fr.7.in \
+ doc/td.tutorial.eo.7.in \
+ doc/td.tutorial.es.7.in \
+ doc/td.recipes.pt.7.in \
+ doc/td.recipes.fr.7.in \
+ doc/td.recipes.eo.7.in \
+ doc/td.recipes.es.7.in \
+ doc/td.why.pt.7.in \
+ doc/td.why.fr.7.in \
+ doc/td.why.eo.7.in \
+ doc/td.why.es.7.in
+manpages = $(manpages.in:.in=)
+
+locale-files.sh = \
+ src/locale/en.sh \
+ src/locale/pt.sh \
+ src/locale/fr.sh \
+ src/locale/eo.sh \
+ src/locale/es.sh
+
+
+all: src/td src/locale/load-messages.sh $(locale-files.sh) $(manpages)
+
+
+src/locale/template.sh: src/td
+ env TD_DUMP_TRANSLATABLE_STRINGS=1 ./src/td > $@
+
+$(locale-files.sh): src/locale/template.sh
+ sed "s/@LANG@/`basename $@ .sh`/g" < src/locale/template.sh > $@
+
+
+check: all
+ sh tests/cli-opts.sh
+ sh tests/config.sh
+ sh tests/workflow.sh
+
+clean:
+ rm -rf \
+ public/ $(manpages) README.*.md CHANGELOG.*.md messages.mo \
+ src/td src/locale/load-messages.sh \
+ src/locale/template.sh $(locale-files.sh)
+
+
+install: all
+ mkdir -p \
+ $(DESTDIR)$(BINDIR) \
+ $(DESTDIR)$(LIBEXECDIR)/$(NAME) \
+ $(DESTDIR)$(LOCALEDIR)
+ cp src/$(NAME) $(DESTDIR)$(BINDIR)
+ cp src/locale/load-messages.sh $(DESTDIR)$(LIBEXECDIR)/$(NAME)
+ for l in $(TRANSLATIONS) en $(CONTRIBLANGS); do \
+ mkdir -p $(DESTDIR)$(LOCALEDIR)/$$l/LC_MESSAGES/$(NAME); \
+ cp \
+ src/locale/$$l.sh src/locale/*.$$l.txt \
+ $(DESTDIR)$(LOCALEDIR)/$$l/LC_MESSAGES/$(NAME); \
+ done
+ sh doc/manpages.sh -ip $(DESTDIR)$(MANDIR) $(manpages)
+
+uninstall:
+ rm -f \
+ $(DESTDIR)$(BINDIR)/$(NAME) \
+ $(DESTDIR)$(LIBEXECDIR)/$(NAME)/load-messages.sh
+ for l in $(TRANSLATIONS) en $(CONTRIBLANGS); do \
+ rm -f $(DESTDIR)$(LOCALEDIR)/$$l/LC_MESSAGES/$(NAME)/*; \
+ done
+ sh doc/manpages.sh -up $(DESTDIR)$(MANDIR) $(manpages)
+
+
+#
+# Personal workflow targets
+#
+
+dev-check: check public
+ echo FIXME shellcheck
+ sh aux/assert-shellcheck.sh
+ sh aux/workflow/assert-todos.sh
+ sh aux/workflow/assert-changelog.sh -n '$(NAME)' $(EXTRA_VERSION)
+ sh aux/workflow/assert-readme.sh -n '$(NAME)' -m '$(MAILING_LIST)' \
+ $(EXTRA_VERSION)
+ sh aux/workflow/assert-manpages.sh -n '$(NAME)' -m '$(MAILING_LIST)' \
+ -l '$(TRANSLATIONS) en' $(manpages.en.in)
+ env ASSERT_NO_MISSING_TRANSLATIONS=1 sh aux/workflow/repocheck.sh
+
+dist:
+ 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)' $? \
+ src/locale/*.en.txt
+
+public: l10n-gen TODOs.md $(manpages)
+ sh aux/workflow/public.sh -l '$(TRANSLATIONS) $(CONTRIBLANGS) en' \
+ -n '$(NAME)' -m '$(MAILING_LIST)' -o public
+ sh doc/manpages.sh -Ho public $(manpages)
+
+spellcheck: public
+ sh aux/workflow/assert-spelling.sh -l '$(TRANSLATIONS) en' \
+ $$(find public -type f -name '*.html')