1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
debug ?= yes
static ?= no
ifeq ($(debug),yes)
CPPFLAGS += -DKAK_DEBUG
suffix := .debug
else
ifeq ($(debug),no)
CXXFLAGS += -O3
suffix := .opt
else
$(error debug should be either yes or no)
endif
endif
sources := $(wildcard *.cc)
objects := $(addprefix ., $(sources:.cc=$(suffix).o))
deps := $(addprefix ., $(sources:.cc=$(suffix).d))
docs := $(wildcard ../doc/manpages/*.asciidoc)
mandocs := $(docs:.asciidoc=.gz)
PREFIX ?= /usr/local
DESTDIR ?= # root dir
NCURSESW_INCLUDE ?= /usr/include/ncursesw
bindir := $(DESTDIR)$(PREFIX)/bin
sharedir := $(DESTDIR)$(PREFIX)/share/kak
docdir := $(DESTDIR)$(PREFIX)/share/doc/kak
mandir := $(DESTDIR)$(PREFIX)/share/man/man1
os := $(shell uname)
ifeq ($(os),Darwin)
LIBS += -lncurses -lboost_regex-mt
CPPFLAGS += -I$(PREFIX)/opt/ncurses/include -I$(PREFIX)/opt/boost/include
LDFLAGS += -L$(PREFIX)/opt/ncurses/lib -L$(PREFIX)/opt/boost/lib
else ifeq ($(os),FreeBSD)
LIBS += -ltinfow -lncursesw -lboost_regex
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
else ifeq ($(os),Haiku)
LIBS += -lncursesw -lboost_regex -lnetwork -lbe
else ifeq ($(os),DragonFly)
LIBS += -lncursesw -lboost_regex
CPPFLAGS += -I/usr/local/include
LDFLAGS += -L/usr/local/lib
else ifneq (,$(findstring CYGWIN,$(os)))
CPPFLAGS += -D_XOPEN_SOURCE=700
LIBS += -lncursesw -lboost_regex -ldbghelp
else
LIBS += -lncursesw -lboost_regex
CPPFLAGS += -I$(NCURSESW_INCLUDE)
LDFLAGS += -rdynamic
endif
ifeq ($(static),yes)
LIBS += -ltinfo -lgpm
LDFLAGS += -static -pthread
endif
CXXFLAGS += -pedantic -std=gnu++11 -g -Wall -Wno-reorder -Wno-sign-compare -Wno-address
all : kak
kak : $(objects)
$(CXX) $(LDFLAGS) $(CXXFLAGS) $(objects) $(LIBS) -o $@
-include $(deps)
.%$(suffix).o: %.cc
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -MP -MF $(addprefix ., $(<:.cc=$(suffix).d)) -c -o $@ $<
# Generate the man page
../doc/kak.1.gz: ../doc/kak.1.txt
a2x --no-xmllint -f manpage $<
gzip -f $(basename $<)
# Generate the editor's documentation pages
# Since `a2x` won't generate man pages if some sections are missing (which we don't need),
# we generate the pages, patch them and then compress them
../doc/manpages/%.gz: ../doc/manpages/%.asciidoc
a2x --no-xmllint -f manpage $<
sed -i -r -e "s,^\.TH .+,.TH KAKOUNE 1 \"\" \"\" \"$(basename $(notdir $<))\"," \
-e "/^\.SH \"NAME\"/{N;d;}" $(@:.gz=.1)
gzip -f $(@:.gz=.1)
mv -f $(@:.gz=.1.gz) $@
check: test
test:
cd ../test && ./run
TAGS: tags
tags:
ctags -R
man: ../doc/kak.1.gz
doc: $(mandocs)
clean:
rm -f .*.o .*.d
distclean: clean
rm -f kak
installdirs:
install -d $(bindir) \
$(sharedir)/rc/base \
$(sharedir)/rc/core \
$(sharedir)/rc/extra \
$(sharedir)/colors \
$(docdir)/manpages \
$(mandir)
install: kak man doc installdirs
install -m 0755 kak $(bindir)
install -m 0644 ../share/kak/kakrc $(sharedir)
install -m 0644 ../rc/base/* $(sharedir)/rc/base
install -m 0644 ../rc/core/* $(sharedir)/rc/core
install -m 0644 ../rc/extra/* $(sharedir)/rc/extra
[ -e $(sharedir)/autoload ] || ln -s rc $(sharedir)/autoload
install -m 0644 ../colors/* $(sharedir)/colors
install -m 0644 ../README.asciidoc $(docdir)
install -m 0644 ../doc/manpages/*.gz $(docdir)/manpages
install -m 0644 ../doc/kak.1.gz $(mandir)
install-strip: install
strip -s $(bindir)/kak
uninstall:
rm -rf $(bindir)/kak \
$(sharedir) \
$(docdir) \
$(mandir)/kak.1.gz
.PHONY: check TAGS clean distclean installdirs install install-strip uninstall
.PHONY: tags test man doc
|