aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorGuilhem Moulin <guilhem@fripost.org>2020-07-01 22:41:28 +0200
committerGuilhem Moulin <guilhem@fripost.org>2020-07-02 00:14:39 +0200
commita1c089b997ebf705a9023b4f0f97327e5bd2814e (patch)
tree5bbc5a441626b26bbebd61ecb220714f99f92bb5 /Makefile
parentbb7790c7e6e4a2ab4f1658222c19978f6601b35b (diff)
Makefile: Major refactoring, add install and uninstall targets.
Honor BUILD_DOCDIR and DESTDIR variables. Also, remove the `use lib` statement from our executables.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile52
1 files changed, 37 insertions, 15 deletions
diff --git a/Makefile b/Makefile
index b232602..35f1334 100644
--- a/Makefile
+++ b/Makefile
@@ -1,24 +1,25 @@
+DESTDIR ?= /usr/local
+BUILD_DOCDIR ?= ./doc
+CSS ?= /usr/share/javascript/bootstrap4/css/bootstrap.css
+HTML_TEMPLATE ?= ./doc/template.html
+
+HTML_FILES = $(addprefix $(BUILD_DOCDIR)/,$(patsubst ./doc/%.md,%.html,$(wildcard ./doc/*.md)))
+MANUAL_FILES = $(addprefix $(BUILD_DOCDIR)/,$(patsubst ./doc/%.md,%,$(wildcard ./doc/*.[1-9].md)))
+
all: manual
-MANUALS = $(patsubst %.md,%,$(wildcard ./doc/*.[1-9].md))
-manual: $(MANUALS)
+manual: $(MANUAL_FILES)
+html: $(HTML_FILES)
# upper case the headers and remove the links
-$(MANUALS): %: %.md
+$(MANUAL_FILES): $(BUILD_DOCDIR)/%: ./doc/%.md
pandoc -f markdown -t json -- "$<" | ./pandoc2man.jq | pandoc -s -f json -t man+smart -o "$@"
test:
@./tests/run-all
-HTML_ROOTDIR ?= ./doc
-CSS ?= /usr/share/javascript/bootstrap/css/bootstrap.min.css
-HTML_TEMPLATE ?= ./doc/template.html
-
-HTML_FILES = $(addprefix $(HTML_ROOTDIR)/,$(patsubst ./doc/%.md,%.html,$(wildcard ./doc/*.md)))
-html: $(HTML_FILES)
-
-## CSS="https://guilhem.org/static/css/bootstrap.min.css" HTML_ROOTDIR="$XDG_RUNTIME_DIR/Downloads" make html
-$(HTML_ROOTDIR)/%.html: ./doc/%.md $(HTML_TEMPLATE)
+## make html CSS="https://guilhem.org/static/css/bootstrap.min.css" BUILD_DOCDIR="$XDG_RUNTIME_DIR/Downloads"
+$(HTML_FILES): $(BUILD_DOCDIR)/%.html: ./doc/%.md $(HTML_TEMPLATE)
mtime="$$(git --no-pager log -1 --pretty="format:%ct" -- "$<" 2>/dev/null)"; \
[ -n "$$mtime" ] || mtime="$$(date +%s -r "$<")"; \
[ "$<" = "doc/index.md" ] && parent="" || parent="./index.html"; \
@@ -31,9 +32,30 @@ $(HTML_ROOTDIR)/%.html: ./doc/%.md $(HTML_TEMPLATE)
doc: manual html
-install:
+prefix ?= $(DESTDIR)
+exec_prefix ?= $(prefix)
+bindir ?= $(exec_prefix)/bin
+libdir ?= $(exec_prefix)/lib
+datarootdir ?= $(DESTDIR)/share
+mandir ?= $(datarootdir)/man
+man1dir ?= $(mandir)/man1
+
+install: all
+ install -m0755 -vDt $(bindir) ./interimap ./pullimap
+ install -m0644 -vDT ./lib/Net/IMAP/InterIMAP.pm $(datarootdir)/perl5/Net/IMAP/InterIMAP.pm
+ install -m0644 -vDt $(man1dir) $(BUILD_DOCDIR)/interimap.1 $(BUILD_DOCDIR)/pullimap.1
+ install -m0644 -vDt $(datarootdir)/doc/pullimap ./pullimap.sample
+ install -m0644 -vDt $(datarootdir)/doc/interimap ./interimap.sample ./doc/getting-started.md ./doc/multi-account.md README
+ install -m0644 -vDt $(libdir)/systemd/user ./*.service
+
+uninstall:
+ rm -vf -- $(bindir)/interimap $(man1dir)/interimap.1 $(libdir)/systemd/user/interimap*.service
+ rm -vf -- $(bindir)/pullimap $(man1dir)/pullimap.1 $(libdir)/systemd/user/pullimap*.service
+ rm -vf -- $(datarootdir)/perl5/Net/IMAP/InterIMAP.pm
+ rm -rvf -- $(datarootdir)/doc/interimap $(datarootdir)/doc/pullimap
+ rm -vf -- $(BUILD_DOCDIR)/interimap.1 $(BUILD_DOCDIR)/pullimap.1
clean:
- rm -f $(MANUALS) $(HTML_FILES)
+ rm -vf -- $(MANUAL_FILES) $(HTML_FILES)
-.PHONY: all manual html doc test install clean
+.PHONY: all manual html doc test install uninstall clean