Mercurial > irccd
annotate GNUmakefile @ 1077:fbf02f5ef8e3
irccd: remove some puts
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 14 Jul 2021 21:13:03 +0200 |
parents | 99dccafade22 |
children | 8f26ee9cc6dd |
rev | line source |
---|---|
1037 | 1 # |
2 # GNUmakefile -- GNU make for irccd | |
3 # | |
4 # Copyright (c) 2013-2021 David Demelier <markand@malikania.fr> | |
5 # | |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 CC= cc | |
1076
99dccafade22
tests: resurrect test-jsapi-timer
David Demelier <markand@malikania.fr>
parents:
1075
diff
changeset
|
20 CFLAGS= -Wall -Wextra -std=c11 |
1037 | 21 |
22 PREFIX= /usr/local | |
23 BINDIR= ${PREFIX}/bin | |
24 ETCDIR= ${PREFIX}/etc | |
25 INCDIR= ${PREFIX}/include | |
26 LIBDIR= ${PREFIX}/lib | |
27 MANDIR= ${PREFIX}/share/man | |
28 SHAREDIR= ${PREFIX}/share | |
29 VARDIR= ${PREFIX}/var | |
1051
403a87c8d0b4
misc: add User/Group options in irccd.service
David Demelier <markand@malikania.fr>
parents:
1045
diff
changeset
|
30 USER= nobody |
403a87c8d0b4
misc: add User/Group options in irccd.service
David Demelier <markand@malikania.fr>
parents:
1045
diff
changeset
|
31 GROUP= nobody |
1037 | 32 |
33 SSL= 1 | |
34 JS= 1 | |
35 | |
36 MAJOR= 4 | |
37 MINOR= 0 | |
38 PATCH= 0 | |
39 | |
40 LIB_SRCS= lib/irccd/channel.c \ | |
41 lib/irccd/conn.c \ | |
42 lib/irccd/event.c \ | |
43 lib/irccd/hook.c \ | |
44 lib/irccd/irccd.c \ | |
45 lib/irccd/log.c \ | |
46 lib/irccd/plugin.c \ | |
47 lib/irccd/rule.c \ | |
48 lib/irccd/server.c \ | |
49 lib/irccd/subst.c \ | |
50 lib/irccd/util.c | |
51 LIB_OBJS= ${LIB_SRCS:.c=.o} | |
52 LIB_DEPS= ${LIB_SRCS:.c=.d} | |
53 | |
54 IRCCD_SRCS= irccd/conf.c \ | |
55 irccd/dl-plugin.c \ | |
56 irccd/lex.c \ | |
57 irccd/peer.c \ | |
58 irccd/transport.c \ | |
59 irccd/unicode.c | |
60 | |
61 ifeq (${JS},1) | |
62 IRCCD_SRCS+= extern/libduktape/duktape.c \ | |
63 irccd/js-plugin.c \ | |
64 irccd/jsapi-chrono.c \ | |
65 irccd/jsapi-directory.c \ | |
66 irccd/jsapi-file.c \ | |
67 irccd/jsapi-hook.c \ | |
68 irccd/jsapi-irccd.c \ | |
69 irccd/jsapi-logger.c \ | |
70 irccd/jsapi-plugin.c \ | |
71 irccd/jsapi-rule.c \ | |
72 irccd/jsapi-server.c \ | |
73 irccd/jsapi-system.c \ | |
74 irccd/jsapi-timer.c \ | |
75 irccd/jsapi-unicode.c \ | |
76 irccd/jsapi-util.c | |
77 endif | |
78 | |
79 IRCCD_OBJS= ${IRCCD_SRCS:.c=.o} | |
80 IRCCD_DEPS= ${IRCCD_SRCS:.c=.d} | |
81 | |
82 MAN1= man/irccd.1 \ | |
83 man/irccdctl.1 | |
84 | |
85 MAN3= man/irccd-api-chrono.3 \ | |
86 man/irccd-api-directory.3 \ | |
87 man/irccd-api-file.3 \ | |
88 man/irccd-api-hook.3 \ | |
89 man/irccd-api-logger.3 \ | |
90 man/irccd-api-plugin.3 \ | |
91 man/irccd-api-rule.3 \ | |
92 man/irccd-api-server.3 \ | |
93 man/irccd-api-system.3 \ | |
94 man/irccd-api-timer.3 \ | |
95 man/irccd-api-unicode.3 \ | |
96 man/irccd-api-util.3 \ | |
97 man/irccd-api.3 \ | |
98 man/libirccd-channel.3 \ | |
99 man/libirccd-event.3 \ | |
100 man/libirccd-hook.3 \ | |
101 man/libirccd-log.3 \ | |
102 man/libirccd-rule.3 \ | |
1057
049b8fe77535
man: add libirccd-server.3
David Demelier <markand@malikania.fr>
parents:
1053
diff
changeset
|
103 man/libirccd-server.3 \ |
1037 | 104 man/libirccd-subst.3 \ |
105 man/libirccd-util.3 \ | |
106 man/libirccd.3 | |
107 | |
108 MAN5= man/irccd.conf.5 | |
109 | |
110 MAN7= man/irccd-ipc.7 \ | |
111 man/irccd-templates.7 | |
112 | |
113 PLUGINS.js= ask auth hangman history joke logger plugin roulette tictactoe | |
114 PLUGINS.c= links | |
115 | |
116 TESTS= tests/test-bot.c \ | |
117 tests/test-channel.c \ | |
118 tests/test-dl-plugin.c \ | |
119 tests/test-event.c \ | |
120 tests/test-log.c \ | |
121 tests/test-rule.c \ | |
122 tests/test-subst.c \ | |
123 tests/test-util.c | |
124 | |
125 ifeq (${JS},1) | |
126 TESTS+= tests/test-jsapi-chrono.c \ | |
127 tests/test-jsapi-directory.c \ | |
128 tests/test-jsapi-file.c \ | |
129 tests/test-jsapi-irccd.c \ | |
130 tests/test-jsapi-timer.c \ | |
131 tests/test-jsapi-system.c \ | |
132 tests/test-jsapi-unicode.c \ | |
133 tests/test-jsapi-util.c \ | |
134 tests/test-plugin-ask.c \ | |
135 tests/test-plugin-auth.c \ | |
136 tests/test-plugin-hangman.c \ | |
137 tests/test-plugin-history.c \ | |
138 tests/test-plugin-joke.c \ | |
139 tests/test-plugin-logger.c \ | |
140 tests/test-plugin-plugin.c \ | |
141 tests/test-plugin-tictactoe.c | |
142 endif | |
143 | |
144 TESTS_OBJS= ${TESTS:.c=} | |
145 | |
1038
b7585f0c3934
make: add -lm, -ldl and -lpthread
David Demelier <markand@malikania.fr>
parents:
1037
diff
changeset
|
146 # Per system commands. |
b7585f0c3934
make: add -lm, -ldl and -lpthread
David Demelier <markand@malikania.fr>
parents:
1037
diff
changeset
|
147 OS:= $(shell uname -s) |
b7585f0c3934
make: add -lm, -ldl and -lpthread
David Demelier <markand@malikania.fr>
parents:
1037
diff
changeset
|
148 |
1075
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
149 ifeq (${OS},Darwin) |
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
150 LIB_SRCS+= extern/libbsd/reallocarray.c |
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
151 endif |
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
152 |
1037 | 153 # Compile flags. |
1063
65cd693f20ca
misc: fix build on FreeBSD
David Demelier <markand@malikania.fr>
parents:
1061
diff
changeset
|
154 DEFS= -D_BSD_SOURCE -DTOP=\"$(shell pwd)\" -fPIC |
1037 | 155 |
1045
13e374b9c522
make: add DEBUG option
David Demelier <markand@malikania.fr>
parents:
1038
diff
changeset
|
156 ifeq (${DEBUG},1) |
13e374b9c522
make: add DEBUG option
David Demelier <markand@malikania.fr>
parents:
1038
diff
changeset
|
157 CFLAGS+= -O0 -g |
13e374b9c522
make: add DEBUG option
David Demelier <markand@malikania.fr>
parents:
1038
diff
changeset
|
158 else |
1053
8d6651c3e36c
make: fix debug/release builds
David Demelier <markand@malikania.fr>
parents:
1051
diff
changeset
|
159 CFLAGS+= -DNDEBUG -O3 |
1045
13e374b9c522
make: add DEBUG option
David Demelier <markand@malikania.fr>
parents:
1038
diff
changeset
|
160 endif |
13e374b9c522
make: add DEBUG option
David Demelier <markand@malikania.fr>
parents:
1038
diff
changeset
|
161 |
1037 | 162 # Include directories. |
1061 | 163 INCS= -Ilib/ |
164 INCS+= -I./ | |
165 INCS+= -Iextern/libgreatest/ | |
166 INCS+= -Iextern/libketopt/ | |
1067
f8fc0d12853d
misc: remove usage of BSD sys/queue.h (peer)
David Demelier <markand@malikania.fr>
parents:
1063
diff
changeset
|
167 INCS+= -Iextern/libutlist/ |
1037 | 168 |
169 ifeq (${JS},1) | |
1061 | 170 INCS+= -Iextern/libduktape |
1037 | 171 endif |
172 | |
173 # Whole libraries for every binaries. | |
1061 | 174 LIBS+= -lpthread |
175 LIBS+= -lm | |
1038
b7585f0c3934
make: add -lm, -ldl and -lpthread
David Demelier <markand@malikania.fr>
parents:
1037
diff
changeset
|
176 |
b7585f0c3934
make: add -lm, -ldl and -lpthread
David Demelier <markand@malikania.fr>
parents:
1037
diff
changeset
|
177 ifeq (${OS},Linux) |
1061 | 178 LIBS+= -ldl |
1051
403a87c8d0b4
misc: add User/Group options in irccd.service
David Demelier <markand@malikania.fr>
parents:
1045
diff
changeset
|
179 CFLAGS+= -fPIC |
1038
b7585f0c3934
make: add -lm, -ldl and -lpthread
David Demelier <markand@malikania.fr>
parents:
1037
diff
changeset
|
180 endif |
b7585f0c3934
make: add -lm, -ldl and -lpthread
David Demelier <markand@malikania.fr>
parents:
1037
diff
changeset
|
181 |
1037 | 182 ifeq (${SSL},1) |
1075
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
183 INCS+= $(shell pkg-config --cflags libssl libcrypto) |
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
184 LIBS+= $(shell pkg-config --libs libssl libcrypto) |
1037 | 185 endif |
186 | |
187 # For config.h file. | |
188 ifeq (${SSL},1) | |
189 SED.ssl= s/@define WITH_SSL@/\#define IRCCD_WITH_SSL/ | |
190 else | |
191 SED.ssl= /@define WITH_SSL@/d | |
192 | |
193 endif | |
194 ifeq (${JS},1) | |
195 SED.js= s/@define WITH_JS@/\#define IRCCD_WITH_JS/ | |
196 else | |
197 SED.js= /@define WITH_JS@/d | |
198 endif | |
199 | |
200 ifeq (${OS},Darwin) | |
201 SHFLAGS= -undefined dynamic_lookup | |
1075
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
202 ALLFLAGS= -Wl,-all_load |
1037 | 203 else |
204 SHFLAGS= -shared | |
1075
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
205 ALLFLAGS= -Wl,--whole-archive |
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
206 NOALLFLAGS= -Wl,--no-whole-archive |
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
207 EXFLAGS= -Wl,-E |
1037 | 208 endif |
209 | |
210 CMD.cc= ${CC} ${DEFS} ${INCS} ${CFLAGS} -MMD -c $< -o $@ | |
211 CMD.ccld= ${CC} ${DEFS} ${INCS} ${CFLAGS} -o $@ $^ ${LIBS} ${LDFLAGS} | |
1075
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
212 CMD.cchost= ${CC} -o $@ ${DEFS} ${INCS} ${CFLAGS} ${EXFLAGS} ${ALLFLAGS} $^ ${NOALLFLAGS} ${LIBS} ${LDFLAGS} |
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
213 CMD.ccplg= ${CC} ${DEFS} ${INCS} ${CFLAGS} ${SHFLAGS} -o $@ $< ${LIBS} ${LDFLAGS} |
1037 | 214 |
215 .SUFFIXES: | |
216 .SUFFIXES: .c .o .js | |
217 | |
218 # Template for Javascript plugins. | |
219 define js-plugin = | |
220 PLUGINS.all+= plugin-${1} | |
221 PLUGINS.inst+= install-plugin-${1} | |
222 | |
223 .PHONY: plugin-${1} | |
224 plugin-${1}: | |
225 | |
226 .PHONY: install-plugin-${1} | |
227 install-plugin-${1}: | |
228 mkdir -p ${DESTDIR}${LIBDIR}/irccd | |
229 mkdir -p ${DESTDIR}${MANDIR}/man7 | |
230 cp plugins/${1}/${1}.js ${DESTDIR}${LIBDIR}/irccd | |
231 cp plugins/${1}/${1}.7 ${DESTDIR}${MANDIR}/man7/irccd-plugin-${1}.7 | |
232 endef | |
233 | |
234 # Template for C native plugins. | |
235 define c-plugin = | |
236 PLUGINS.all+= plugin-${1} | |
237 PLUGINS.objs+= plugins/${1}/${1}.so | |
238 PLUGINS.inst+= install-plugin-${1} | |
239 | |
240 .PHONY: plugin-${1} | |
241 plugin-${1}: plugins/${1}/${1}.so | |
242 | |
243 .PHONY: install-plugin-${1} | |
244 install-plugin-${1}: | |
245 mkdir -p ${DESTDIR}${LIBDIR}/irccd | |
246 mkdir -p ${DESTDIR}${MANDIR}/man7 | |
247 cp plugins/${1}/${1}.so ${DESTDIR}${LIBDIR}/irccd | |
248 cp plugins/${1}/${1}.7 ${DESTDIR}${MANDIR}/man7/irccd-plugin-${1}.7 | |
249 endef | |
250 | |
251 .c.o: | |
252 ${CMD.cc} | |
253 | |
254 .c: | |
255 ${CMD.ccld} | |
256 | |
257 all: irccd/irccd irccdctl/irccdctl | |
258 | |
259 -include ${LIB_DEPS} ${IRCCD_DEPS} | |
260 | |
261 lib/irccd/config.h: lib/irccd/config.h.in | |
262 sed -e "s,@ETCDIR@,${ETCDIR},g" \ | |
263 -e "s,@LIBDIR@,${LIBDIR},g" \ | |
264 -e "s,@SHAREDIR@,${SHAREDIR},g" \ | |
265 -e "s,@VARDIR@,${VARDIR},g" \ | |
266 -e "s,@MAJOR@,${MAJOR},g" \ | |
267 -e "s,@MINOR@,${MINOR},g" \ | |
268 -e "s,@PATCH@,${PATCH},g" \ | |
269 -e "${SED.ssl}" \ | |
270 -e "${SED.js}" \ | |
271 < $< > $@ | |
272 | |
273 ${LIB_OBJS} ${IRCCD_OBJS} irccd/main.o: lib/irccd/config.h | |
274 | |
275 irccd/conf.c: irccd/conf.y | |
276 bison -d -o $@ $< | |
277 | |
278 irccd/lex.c: irccd/lex.l | |
279 flex -o $@ $< | |
280 | |
281 irccd/irccd: irccd/main.o ${IRCCD_OBJS} ${LIB_OBJS} | |
282 ${CMD.cchost} | |
283 | |
284 irccdctl/irccdctl: ${LIB_OBJS} | |
285 | |
286 $(foreach p,${PLUGINS.js},$(eval $(call js-plugin,${p}))) | |
287 $(foreach p,${PLUGINS.c},$(eval $(call c-plugin,${p}))) | |
288 | |
289 install: | |
290 mkdir -p ${DESTDIR}${BINDIR} | |
291 cp irccd/irccd ${DESTDIR}${BINDIR} | |
292 chmod 755 ${DESTDIR}${BINDIR}/irccd | |
293 cp irccdctl/irccdctl ${DESTDIR}${BINDIR} | |
294 chmod 755 ${DESTDIR}${BINDIR}/irccdctl | |
295 mkdir -p ${DESTDIR}${MANDIR}/man1 | |
296 cp ${MAN1} ${DESTDIR}${MANDIR}/man1 | |
297 mkdir -p ${DESTDIR}${MANDIR}/man3 | |
298 cp ${MAN3} ${DESTDIR}${MANDIR}/man3 | |
299 mkdir -p ${DESTDIR}${MANDIR}/man5 | |
300 cp ${MAN5} ${DESTDIR}${MANDIR}/man5 | |
301 mkdir -p ${DESTDIR}${MANDIR}/man7 | |
302 cp ${MAN7} ${DESTDIR}${MANDIR}/man7 | |
303 mkdir -p ${DESTDIR}${ETCDIR} | |
304 cp irccd/irccd.conf ${DESTDIR}${ETCDIR}/irccd.conf.sample | |
305 mkdir -p ${DESTDIR}${LIBDIR}/pkgconfig | |
306 sed -e "s,@MAJOR@,${MAJOR}," \ | |
307 -e "s,@MINOR@,${MINOR}," \ | |
308 -e "s,@PATCH@,${PATCH}," \ | |
309 -e "s,@INCDIR@,${INCDIR}," \ | |
310 -e "s,@SHFLAGS@,${SHFLAGS}," \ | |
311 < lib/irccd.pc.in > ${DESTDIR}${LIBDIR}/pkgconfig/irccd.pc | |
312 | |
313 install-plugins: ${PLUGINS.inst} | |
314 | |
315 install-systemd: | |
316 mkdir -p ${DESTDIR}${LIBDIR}/systemd/system | |
317 sed -e "s,@PATH@,${BINDIR}/irccd," \ | |
1051
403a87c8d0b4
misc: add User/Group options in irccd.service
David Demelier <markand@malikania.fr>
parents:
1045
diff
changeset
|
318 -e "s,@USER@,${USER}," \ |
403a87c8d0b4
misc: add User/Group options in irccd.service
David Demelier <markand@malikania.fr>
parents:
1045
diff
changeset
|
319 -e "s,@GROUP@,${GROUP}," \ |
1037 | 320 < systemd/irccd.service \ |
321 > ${DESTDIR}${LIBDIR}/systemd/system/irccd.service | |
322 | |
323 tests/data/example-dl-plugin.so: tests/data/example-dl-plugin.c | |
324 ${CMD.ccplg} | |
325 | |
326 ${TESTS_OBJS}: ${IRCCD_OBJS} ${LIB_OBJS} | irccd/irccd tests/data/example-dl-plugin.so | |
327 | |
328 # Generic plugin build command. | |
1075
69b90a8d4d35
misc: fix build on macOS
David Demelier <markand@malikania.fr>
parents:
1074
diff
changeset
|
329 plugins/%.so: plugins/%.c ${IRCCD_OBJS} |
1037 | 330 ${CMD.ccplg} |
331 | |
332 # Plugin `links` require libcurl. | |
333 plugins/links/links.so: plugins/links/links.c ${LIB_OBJS} | |
334 ${CMD.ccplg} $(shell pkg-config --libs --cflags libcurl) | |
335 | |
336 plugins: ${PLUGINS.all} | |
337 | |
338 tests/%: tests/%.c | |
339 ${CMD.cchost} | |
340 | |
341 tests: ${TESTS_OBJS} | |
1072
a5eaf207ecc2
misc: remove usage of BSD sys/queue.h (server)
David Demelier <markand@malikania.fr>
parents:
1067
diff
changeset
|
342 for t in ${TESTS_OBJS}; do echo "==> $$t <=="; ./$$t -v || exit 1; done |
1037 | 343 |
344 clean: | |
345 rm -f lib/irccd/config.h ${LIB_OBJS} ${LIB_DEPS} | |
346 rm -f irccd/irccd irccd/main.o irccd/main.d \ | |
347 irccd/conf.c irccd/conf.h irccd/lex.c \ | |
348 ${IRCCD_OBJS} ${IRCCD_DEPS} | |
349 rm -f irccdctl/irccdctl | |
350 rm -f ${TESTS_OBJS} tests/data/example-dl-plugin.so | |
351 rm -f ${PLUGINS.objs} | |
352 | |
353 .PHONY: all clean install install-plugins install-systemd plugins tests |