forked from andmarti1424/sc-im
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
executable file
·216 lines (176 loc) · 6.26 KB
/
Makefile
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# Specify the name of the resulting executable file
name = sc-im
# The base directory where everything should be installed.
prefix = /usr/local
EXDIR = $(prefix)/bin
HELPDIR = $(prefix)/share/$(name)
LIBDIR = $(prefix)/share/doc/$(name)
# This is where the man page goes.
MANDIR = $(prefix)/share/man/man1
# Change these to your liking or use `make CC=gcc` etc
#CC = cc
#YACC = bison -y
#SED = sed
LDLIBS += -lm
CFLAGS += -Wall -g
CFLAGS += -DNCURSES
CFLAGS += -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE
CFLAGS += -DSNAME=\"$(name)\"
CFLAGS += -DHELP_PATH=\"$(HELPDIR)\"
CFLAGS += -DLIBDIR=\"$(LIBDIR)\"
# Sets default pager, e.g. 'less' or 'more'
CFLAGS += -DDFLT_PAGER=\"less\"
# Sets default editor. Its use in case EDITOR env variable is not set
CFLAGS += -DDFLT_EDITOR=\"vim\"
# Comment out to disable color support
CFLAGS += -DUSECOLORS
# Command history file, relative to home directory. Comment out to disable commandline history
CFLAGS += -DHISTORY_FILE=\".$(name)info\"
# Input mode history. Same as previous, but for insert mode commands
CFLAGS += -DINS_HISTORY_FILE=\".$(name)info\"
# Comment out to disable undo/redo support
CFLAGS += -DUNDO
# Maximum number of rows in spreadsheet. Up to 1048576
CFLAGS += -DMAXROWS=65536
# Used for date formatting with C-d shortcut using you local d_fmt
CFLAGS += -DUSELOCALE
# Clipboard support is OS dependent.
#
# Choose one of the following commands for copying to different clipboards:
# You can later change it at runtime.
#to copy to tmux clipboard:
CFLAGS += -DDEFAULT_COPY_TO_CLIPBOARD_CMD=\""tmux load-buffer"\"
#to copy to X clipboard:
#CFLAGS += -DDEFAULT_COPY_TO_CLIPBOARD_CMD=\""xclip -i -selection clipboard <"\"
#to copy to OSX clipboard:
#CFLAGS += -DDEFAULT_COPY_TO_CLIPBOARD_CMD=\""pbcopy <"\"
#
# Choose one of the proposed commands for pasting from different clipboards:
# You can later change it at runtime.
CFLAGS += -DDEFAULT_PASTE_FROM_CLIPBOARD_CMD=\""tmux show-buffer"\"
#CFLAGS += -DDEFAULT_PASTE_FROM_CLIPBOARD_CMD=\""xclip -o -selection clipboard"\"
#CFLAGS += -DDEFAULT_PASTE_FROM_CLIPBOARD_CMD=\""pbpaste"\"
# Uncomment for basic XLS import. Requires libxlsreader
#CFLAGS += -DXLS
#LDLIBS += -lxlsreader
# Autobackup. If you unset this, no backup check nor autobackup feature will be available.
CFLAGS += -DAUTOBACKUP
# Have threads? Set these two, if you want the autobackup feature to work with threads.
CFLAGS += -DHAVE_PTHREAD
ifneq ($(shell uname -s),Darwin)
LDLIBS += -pthread
endif
# NOTE: libxlsxwriter is required for xlsx file export support
ifneq (,$(wildcard /usr/include/xlsxwriter.h))
CFLAGS += -DXLSX_EXPORT
LDLIBS += -lxlsxwriter
endif
ifneq (,$(wildcard /usr/local/include/xlsxwriter.h))
CFLAGS += -DXLSX_EXPORT
LDLIBS += -lxlsxwriter
endif
# Check for gnuplot existance
ifneq (, $(shell which gnuplot))
CFLAGS += -DGNUPLOT
endif
# OpenBSD does not implement wordexp()
ifeq ($(shell uname -s),OpenBSD)
CFLAGS += -DNO_WORDEXP
endif
# dynamic linking (not available in BSD)
ifneq ($(shell uname -s | grep -o BSD),BSD)
LDLIBS += -ldl
endif
ifneq (, $(shell which pkg-config))
# Any system with pkg-config
# NOTE: ncursesw (required)
ifeq ($(shell uname -s),Darwin)
# macOS' ncurses is built with wide-char support
LDFLAGS += -lncurses
else ifneq ($(shell pkg-config --exists ncursesw || echo 'no'),no)
CFLAGS += $(shell pkg-config --cflags ncursesw)
LDLIBS += $(shell pkg-config --libs ncursesw)
else ifneq ($(shell pkg-config --exists ncurses || echo 'no'),no)
# hopefully this includes wide character support then
CFLAGS += $(shell pkg-config --cflags ncurses)
LDLIBS += $(shell pkg-config --libs ncurses)
else
LDLIBS += -lncursesw
endif
# NOTE: libxml and libzip are required for xlsx file import support
ifneq ($(shell pkg-config --exists libzip libxml-2.0 || echo 'no'),no)
CFLAGS += -DXLSX $(shell pkg-config --cflags libxml-2.0 libzip)
LDLIBS += $(shell pkg-config --libs libxml-2.0 libzip)
endif
# NOTE: lua support
ifneq ($(shell pkg-config --exists lua51 || echo 'no'),no)
CFLAGS += -DXLUA $(shell pkg-config --cflags lua51)
LDLIBS += $(shell pkg-config --libs lua51) -Wl,--export-dynamic
else ifneq ($(shell pkg-config --exists lua-5.1 || echo 'no'),no) # FreeBSD
CFLAGS += -DXLUA $(shell pkg-config --cflags lua-5.1)
ifneq ($(shell uname -s),Darwin)
LDLIBS += $(shell pkg-config --libs lua-5.1) -Wl,--export-dynamic
else
LDLIBS += $(shell pkg-config --libs lua-5.1) -rdynamic
endif
endif
else ifeq ($(shell uname -s),Darwin)
# macOS without pkg-config
# macOS' ncurses is built with wide-char support
LDFLAGS += -lncurses
else ifeq ($(shell uname -s),NetBSD)
# NetBSD without pkg-config
CFLAGS += -I/usr/pkg/include
CFLAGS += -I/usr/pkg/include/ncursesw
LDFLAGS += -L/usr/pkg/lib
LDFLAGS += -Wl,-R/usr/pkg/lib
LDLIBS += -lncursesw
else
LDFLAGS += -lncursesw
endif
OBJS = $(patsubst %.c, %.o, $(wildcard *.c) $(wildcard utils/*.c)) gram.o
.PHONY : all clean install docs man_install man_uninstall
all : $(name)
install :
install -d $(DESTDIR)$(prefix)/bin
install $(name) $(DESTDIR)$(prefix)/bin/$(name)
install -d $(DESTDIR)$(HELPDIR)
install doc $(DESTDIR)$(HELPDIR)/$(name)_help
install plot_* $(DESTDIR)$(HELPDIR)/
install -d $(DESTDIR)$(MANDIR)/
install -m 644 sc-im.1 $(DESTDIR)$(MANDIR)/$(name).1
uninstall :
-rm $(DESTDIR)$(prefix)/bin/$(name)
-rm $(DESTDIR)$(HELPDIR)/$(name)_help
-rm $(DESTDIR)$(HELPDIR)/plot*
-rm $(DESTDIR)$(MANDIR)/$(name).1
$(name) : $(OBJS)
$(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS)
$(name)qref: sc.h
$(CC) $(CFLAGS) $(LDFLAGS) -DQREF $(QREF_FMT) -DSCNAME=\"$(name)\" -o $(name)qref help.c $(LDLIBS)
$(OBJS) : y.tab.h experres.h statres.h
y.tab.h : gram.y gram.c
test -f y.tab.c && mv y.tab.c gram.c
gram.c : gram.y
$(YACC) -d $<
pvmtbl.o: sc.h pvmtbl.c
$(CC) ${CFLAGS} -c -DPSC pvmtbl.c
experres.h : gram.y
sed -f eres.sed < gram.y > experres.h
statres.h : gram.y
sed -f sres.sed < gram.y > statres.h
docs:
doxygen Doxyfile
man_install:
@cp -r ../docs/man/man3/ /usr/local/share/man/
mandb
# "sc-im" MUST match what is in Doxyfile `MAN_EXTENSION = .sc-im.3`
man_uninstall:
@rm -rf /usr/local/share/man/man3/*sc-im.3
@mandb
clean:
rm -f $(OBJS)
rm -f *res.h y.tab.h
rm -f core gram.c y.output pxmalloc.c pvmtbl.c tags $(name)qref
rm -f qhelp.c $(name)
rm -rf ../docs/