48d18bf656463cc2f84f8939be9409e71f7c920d
[pcu.git] / Makefile
blob48d18bf656463cc2f84f8939be9409e71f7c920d
1 # default target
2 all::
4 prefix = $(HOME)
5 bindir = $(prefix)/bin
6 mandir = $(prefix)/share/man
7 INSTALL = install
8 PANDOC = pandoc
9 PANDOC_OPTS = -s -f markdown --email-obfuscation=none --sanitize-html
10 pandoc = $(PANDOC) $(PANDOC_OPTS)
11 pandoc_html = $(pandoc) --toc -t html --no-wrap
12 STRIP ?= strip
13 GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
14 @./GIT-VERSION-GEN
15 -include GIT-VERSION-FILE
17 DISTNAME = pcu-$(GIT_VERSION)
19 # overridable from command-line
20 CFLAGS = -g -O2 -Wall
21 LDFLAGS = -Wl,-O1
23 fadvise.c: compat-util.h
24 mincore.c: compat-util.h
26 pcu-mincore: mincore.c
27 pcu-fadvise: fadvise.c
29 PCU_BIN := pcu-fadvise pcu-mincore
31 $(PCU_BIN):
32 $(CC) $(CFLAGS) $(LDFLAGS) -o $@+ $<
33 mv $@+ $@
35 all:: $(PCU_BIN)
37 install: $(PCU_BIN)
38 $(INSTALL) -d -m 755 '$(DESTDIR)$(bindir)'
39 $(INSTALL) $^ '$(DESTDIR)$(bindir)'
41 strip: $(PCU_BIN)
42 $(STRIP) $(STRIP_OPTS) $(PCU_BIN)
44 install-strip: strip
45 $(MAKE) install
47 %.1: %.1.txt
48 $(pandoc) -t man < $< > $@+
49 mv $@+ $@
50 %.1.html: %.1.txt
51 $(pandoc_html) -T $(basename $@) < $< > $@+
52 mv $@+ $@
54 man1 := $(addsuffix .1,$(PCU_BIN))
55 html := index.html INSTALL.html $(addsuffix .html, $(man1))
56 html: $(html)
57 man: $(man1)
58 doc: html man
59 install-man: install-man1
60 install-man1: $(man1)
61 $(INSTALL) -d -m 755 '$(DESTDIR)$(mandir)/man1'
62 $(INSTALL) $^ '$(DESTDIR)$(mandir)/man1'
64 dist: GIT-VERSION-FILE
65 git archive --format=tar --prefix=$(DISTNAME)/ HEAD^{tree} \
66 | gzip -9 > $(DISTNAME).tar.gz+
67 mv $(DISTNAME).tar.gz+ $(DISTNAME).tar.gz
68 clean:
69 $(RM) $(PCU_BIN) $(DISTNAME).tar.gz* GIT-VERSION-FILE
70 $(RM) $(man1) $(html)
72 INSTALL.html index.html: title = $(shell sed -ne 1p < $<)
73 INSTALL.html: INSTALL
74 index.html: README
76 index.html INSTALL.html:
77 $(pandoc_html) -T "$(title)" < $< > $@+
78 mv $@+ $@
80 .PHONY: .FORCE-GIT-VERSION-FILE install install-man man