@@ -20,15 +20,16 @@ endif
20
20
sources := $(wildcard * .cc)
21
21
objects := $(addprefix ., $(sources:.cc=$(suffix ) .o ) )
22
22
deps := $(addprefix ., $(sources:.cc=$(suffix ) .d ) )
23
- docs := commands \
24
- execeval \
25
- expansions \
26
- faces \
27
- highlighters \
28
- hooks \
29
- options \
30
- registers \
31
- shortcuts \
23
+ docs := ../doc/manpages/commands \
24
+ ../doc/manpages/execeval \
25
+ ../doc/manpages/expansions \
26
+ ../doc/manpages/faces \
27
+ ../doc/manpages/highlighters \
28
+ ../doc/manpages/hooks \
29
+ ../doc/manpages/options \
30
+ ../doc/manpages/registers \
31
+ ../doc/manpages/shortcuts
32
+ mandocs := $(addsuffix .gz,$(docs ) )
32
33
33
34
PREFIX ?= /usr/local
34
35
DESTDIR ?= # root dir
@@ -38,12 +39,13 @@ NCURSESW_INCLUDE ?= /usr/include/ncursesw
38
39
bindir := $(DESTDIR )$(PREFIX ) /bin
39
40
sharedir := $(DESTDIR )$(PREFIX ) /share/kak
40
41
docdir := $(DESTDIR )$(PREFIX ) /share/doc/kak
41
- mandir := $(DESTDIR )$(PREFIX ) /man/man1
42
+ mandir := $(DESTDIR )$(PREFIX ) /share/ man/man1
42
43
43
44
os := $(shell uname)
44
45
45
46
ifeq ($(os ) ,Darwin)
46
47
LIBS += -lncurses -lboost_regex-mt
48
+ A2X ?= a2x.py
47
49
else ifeq ($(os),FreeBSD)
48
50
LIBS += -ltinfow -lncursesw -lboost_regex
49
51
CPPFLAGS += -I/usr/local/include
62
64
LDFLAGS += -rdynamic
63
65
endif
64
66
67
+ # The `a2x` tool is used as-is (`a2x.py`) in some distributions, or as a symlink in others (`a2x` → `a2x.py`)
68
+ # Picking the right name is done in the system detection switch above
69
+ A2X ?= a2x
70
+
65
71
CXXFLAGS += -std=gnu++11 -g -Wall -Wno-reorder -Wno-sign-compare
66
72
67
73
kak : $(objects )
@@ -72,27 +78,31 @@ kak : $(objects)
72
78
.% $(suffix ) .o : % .cc
73
79
$(CXX ) $(CPPFLAGS ) $(CXXFLAGS ) -MD -MP -MF $(addprefix ., $(<:.cc=$(suffix ) .d ) ) -c -o $@ $<
74
80
75
- % .1 : %
76
- a2x -f manpage $<
77
- % .1.gz : % .1.txt
78
- a2x -f manpage $<
81
+ # Generate the man page
82
+ ../doc/kak.1.gz : ../doc/kak.1.txt
83
+ $(A2X ) -f manpage $<
79
84
gzip -f $(basename $< )
80
85
81
- test :
82
- cd ../test && ./run
83
- tags :
84
- ctags -R
85
-
86
- man : ../doc/kakoune.1.gz
87
- doc : $(addsuffix .1,$(addprefix ../doc/manpages/,$(docs ) ) )
86
+ # Generate the editor's documentation pages
87
+ # Since `a2x` won't generate man pages if some sections are missing (which we don't need),
88
+ # we generate the pages, patch them and then compress them
89
+ $(mandocs ) : $(docs )
88
90
@for f in $^ ; do \
89
91
pagename=" $$ {f##*/}" ; pagename=" $$ {pagename%.*}" ; \
92
+ $(A2X ) -f manpage " $$ f" ; \
90
93
sed -i -r -e " s,^\.TH .+,.TH KAKOUNE 1 \"\" \"\" \" $$ {pagename^^}\" ," \
91
- -e " /^\.SH \" NAME\" /,+1d" $$ f ; \
92
- gzip -f " $$ f " ; \
93
- mv " $$ {f}.gz" " $$ {f/.1/}.gz" ; \
94
+ -e " /^\.SH \" NAME\" /,+1d" " $$ {f}.1 " ; \
95
+ gzip -f " $$ {f}.1 " ; \
96
+ mv " $$ {f}.1. gz" " $$ {f/.1/}.gz" ; \
94
97
done
95
98
99
+ test :
100
+ cd ../test && ./run
101
+ tags :
102
+ ctags -R
103
+ man : ../doc/kak.1.gz
104
+ doc : $(mandocs )
105
+
96
106
clean :
97
107
rm -f .* .o .* .d kak tags
98
108
@@ -112,8 +122,9 @@ install: kak man doc
112
122
mkdir -p $(sharedir ) /colors
113
123
install -m 0644 ../colors/* $(sharedir ) /colors
114
124
mkdir -p $(docdir ) /manpages
125
+ mkdir -p $(mandir )
115
126
install -m 0644 ../README.asciidoc $(docdir )
116
127
install -m 0644 ../doc/manpages/* .gz $(docdir ) /manpages
117
- install -m 0644 ../doc/kakoune .1.gz $(mandir )
128
+ install -m 0644 ../doc/kak .1.gz $(mandir )
118
129
119
130
.PHONY : tags install
0 commit comments