]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsdistdist/Makefile.am
dnsdist: Implement parallel health checks
[thirdparty/pdns.git] / pdns / dnsdistdist / Makefile.am
1 AM_CPPFLAGS += $(SYSTEMD_CFLAGS) $(LUA_CFLAGS) $(LIBEDIT_CFLAGS) $(LIBSODIUM_CFLAGS) $(FSTRM_CFLAGS) $(YAHTTP_CFLAGS) $(SANITIZER_FLAGS) $(NET_SNMP_CFLAGS) $(LIBCAP_CFLAGS) -DSYSCONFDIR=\"${sysconfdir}\"
2
3 ACLOCAL_AMFLAGS = -I m4
4
5 SUBDIRS=ext/ipcrypt \
6 ext/yahttp
7
8 CLEANFILES = \
9 dnsmessage.pb.cc \
10 dnsmessage.pb.h \
11 htmlfiles.h.tmp \
12 htmlfiles.h \
13 dnstap.pb.cc \
14 dnstap.pb.h
15
16 dnslabeltext.cc: dnslabeltext.rl
17 $(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc
18
19 BUILT_SOURCES=htmlfiles.h \
20 dnslabeltext.cc
21
22 htmlfiles.h: $(srcdir)/html/*
23 $(AM_V_GEN)$(srcdir)/incfiles $(srcdir) > $@.tmp
24 @mv $@.tmp $@
25
26 SRC_JS_FILES := $(wildcard src_js/*.js)
27 MIN_JS_FILES := $(patsubst src_js/%.js,html/js/%.min.js,$(SRC_JS_FILES))
28
29 html/js/%.min.js: src_js/%.js
30 uglifyjs $< > $@
31
32 min_js: $(MIN_JS_FILES)
33
34 if HAVE_RE2
35 AM_CPPFLAGS += $(RE2_CFLAGS)
36 endif
37
38 if HAVE_DNS_OVER_TLS
39 if HAVE_LIBSSL
40 AM_CPPFLAGS += $(LIBSSL_CFLAGS)
41 endif
42
43 if HAVE_GNUTLS
44 AM_CPPFLAGS += $(GNUTLS_CFLAGS)
45 endif
46 endif
47
48 if HAVE_LIBCRYPTO
49 AM_CPPFLAGS += $(LIBCRYPTO_INCLUDES)
50 endif
51
52 if HAVE_CDB
53 AM_CPPFLAGS += $(CDB_CFLAGS)
54 endif
55
56 if HAVE_LMDB
57 AM_CPPFLAGS += $(LMDB_CFLAGS)
58 endif
59
60 if HAVE_DNS_OVER_HTTPS
61 if HAVE_LIBSSL
62 AM_CPPFLAGS += $(LIBSSL_CFLAGS)
63 endif
64
65 if HAVE_LIBH2OEVLOOP
66 AM_CPPFLAGS += $(LIBH2OEVLOOP_CFLAGS)
67 endif
68 endif
69
70 EXTRA_DIST=COPYING \
71 dnslabeltext.rl \
72 dnsdistconf.lua \
73 dnsmessage.proto \
74 dnstap.proto \
75 README.md \
76 delaypipe.cc delaypipe.hh \
77 html \
78 contrib \
79 ext/incbin/UNLICENSE \
80 incfiles \
81 src_js \
82 dnsdist.service.in \
83 lua_hpp.mk \
84 bpf-filter.main.ebpf \
85 bpf-filter.qname.ebpf \
86 bpf-filter.ebpf.src \
87 DNSDIST-MIB.txt \
88 devpollmplexer.cc \
89 epollmplexer.cc \
90 kqueuemplexer.cc \
91 portsmplexer.cc \
92 cdb.cc cdb.hh \
93 ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \
94 builder-support/gen-version
95
96 bin_PROGRAMS = dnsdist
97
98 if UNIT_TESTS
99 noinst_PROGRAMS = testrunner
100 TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message SRCDIR='$(srcdir)'
101 TESTS=testrunner
102 else
103 check-local:
104 @echo "Unit tests are not enabled"
105 @echo "Run ./configure --enable-unit-tests"
106 endif
107
108 dnsdist-web.$(OBJEXT): htmlfiles.h
109
110 dnsdist_SOURCES = \
111 ascii.hh \
112 base64.hh \
113 bpf-filter.cc bpf-filter.hh \
114 cachecleaner.hh \
115 capabilities.cc capabilities.hh \
116 circular_buffer.hh \
117 dns.cc dns.hh \
118 dnscrypt.cc dnscrypt.hh \
119 dnsdist.cc dnsdist.hh \
120 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
121 dnsdist-cache.cc dnsdist-cache.hh \
122 dnsdist-carbon.cc \
123 dnsdist-console.cc dnsdist-console.hh \
124 dnsdist-dnscrypt.cc \
125 dnsdist-dynblocks.hh \
126 dnsdist-ecs.cc dnsdist-ecs.hh \
127 dnsdist-healthchecks.cc dnsdist-healthchecks.hh \
128 dnsdist-idstate.cc \
129 dnsdist-kvs.hh dnsdist-kvs.cc \
130 dnsdist-lua.hh dnsdist-lua.cc \
131 dnsdist-lua-actions.cc \
132 dnsdist-lua-bindings.cc \
133 dnsdist-lua-bindings-dnscrypt.cc \
134 dnsdist-lua-bindings-dnsquestion.cc \
135 dnsdist-lua-bindings-kvs.cc \
136 dnsdist-lua-bindings-packetcache.cc \
137 dnsdist-lua-bindings-protobuf.cc \
138 dnsdist-lua-inspection.cc \
139 dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.hh \
140 dnsdist-lua-rules.cc \
141 dnsdist-lua-vars.cc \
142 dnsdist-protobuf.cc dnsdist-protobuf.hh \
143 dnsdist-rings.cc dnsdist-rings.hh \
144 dnsdist-rules.hh \
145 dnsdist-secpoll.cc dnsdist-secpoll.hh \
146 dnsdist-snmp.cc dnsdist-snmp.hh \
147 dnsdist-tcp.cc \
148 dnsdist-web.cc \
149 dnsdist-xpf.cc dnsdist-xpf.hh \
150 dnslabeltext.cc \
151 dnsname.cc dnsname.hh \
152 dnsparser.hh dnsparser.cc \
153 dnswriter.cc dnswriter.hh \
154 doh.hh doh.cc \
155 dolog.hh \
156 ednsoptions.cc ednsoptions.hh \
157 ednscookies.cc ednscookies.hh \
158 ednssubnet.cc ednssubnet.hh \
159 fstrm_logger.cc fstrm_logger.hh \
160 gettime.cc gettime.hh \
161 htmlfiles.h \
162 iputils.cc iputils.hh \
163 libssl.cc libssl.hh \
164 lock.hh \
165 misc.cc misc.hh \
166 mplexer.hh \
167 namespaces.hh \
168 pdnsexception.hh \
169 protobuf.cc protobuf.hh \
170 dnstap.cc dnstap.hh \
171 qtype.cc qtype.hh \
172 remote_logger.cc remote_logger.hh \
173 pollmplexer.cc \
174 sholder.hh \
175 snmp-agent.cc snmp-agent.hh \
176 sodcrypto.cc sodcrypto.hh \
177 sstuff.hh \
178 statnode.cc statnode.hh \
179 tcpiohandler.cc tcpiohandler.hh \
180 threadname.hh threadname.cc \
181 uuid-utils.hh uuid-utils.cc \
182 xpf.cc xpf.hh \
183 ext/luawrapper/include/LuaContext.hpp \
184 ext/json11/json11.cpp \
185 ext/json11/json11.hpp \
186 ext/incbin/incbin.h \
187 ext/libbpf/libbpf.h
188
189 testrunner_SOURCES = \
190 base64.hh \
191 dns.hh \
192 test-base64_cc.cc \
193 test-delaypipe_hh.cc \
194 test-dnscrypt_cc.cc \
195 test-dnsdist_cc.cc \
196 test-dnsdistdynblocks_hh.cc \
197 test-dnsdistkvs_cc.cc \
198 test-dnsdistpacketcache_cc.cc \
199 test-dnsdistrings_cc.cc \
200 test-dnsdistrules_cc.cc \
201 test-dnsparser_cc.cc \
202 test-iputils_hh.cc \
203 test-mplexer.cc \
204 cachecleaner.hh \
205 circular_buffer.hh \
206 dnsdist.hh \
207 dnsdist-cache.cc dnsdist-cache.hh \
208 dnsdist-ecs.cc dnsdist-ecs.hh \
209 dnsdist-kvs.cc dnsdist-kvs.hh \
210 dnsdist-rings.hh \
211 dnsdist-xpf.cc dnsdist-xpf.hh \
212 dnscrypt.cc dnscrypt.hh \
213 dnslabeltext.cc \
214 dnsname.cc dnsname.hh \
215 dnsparser.hh dnsparser.cc \
216 dnswriter.cc dnswriter.hh \
217 dolog.hh \
218 ednsoptions.cc ednsoptions.hh \
219 ednscookies.cc ednscookies.hh \
220 ednssubnet.cc ednssubnet.hh \
221 gettime.cc gettime.hh \
222 iputils.cc iputils.hh \
223 misc.cc misc.hh \
224 namespaces.hh \
225 pdnsexception.hh \
226 pollmplexer.cc \
227 qtype.cc qtype.hh \
228 sholder.hh \
229 sodcrypto.cc \
230 sstuff.hh \
231 statnode.cc statnode.hh \
232 threadname.hh threadname.cc \
233 testrunner.cc \
234 xpf.cc xpf.hh
235
236 dnsdist_LDFLAGS = \
237 $(AM_LDFLAGS) \
238 $(PROGRAM_LDFLAGS) \
239 -pthread
240
241 dnsdist_LDADD = \
242 $(LUA_LIBS) \
243 $(LIBEDIT_LIBS) \
244 $(RT_LIBS) \
245 $(YAHTTP_LIBS) \
246 $(LIBSODIUM_LIBS) \
247 $(FSTRM_LIBS) \
248 $(SANITIZER_FLAGS) \
249 $(SYSTEMD_LIBS) \
250 $(NET_SNMP_LIBS) \
251 $(LIBCAP_LIBS) \
252 $(IPCRYPT_LIBS)
253
254 testrunner_LDFLAGS = \
255 $(AM_LDFLAGS) \
256 $(PROGRAM_LDFLAGS) \
257 $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
258 -pthread
259
260 testrunner_LDADD = \
261 $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
262 $(LIBSODIUM_LIBS) \
263 $(FSTRM_LIBS) \
264 $(RT_LIBS) \
265 $(SANITIZER_FLAGS) \
266 $(LIBCAP_LIBS)
267
268 if HAVE_CDB
269 dnsdist_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
270 testrunner_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
271 dnsdist_SOURCES += cdb.cc cdb.hh
272 testrunner_SOURCES += cdb.cc cdb.hh
273 endif
274
275 if HAVE_RE2
276 dnsdist_LDADD += $(RE2_LIBS)
277 endif
278
279 if HAVE_LIBSSL
280 dnsdist_LDADD += $(LIBSSL_LIBS)
281 endif
282
283 if HAVE_LIBCRYPTO
284 dnsdist_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS)
285 dnsdist_SOURCES += ipcipher.cc ipcipher.hh
286 endif
287
288 if HAVE_LMDB
289 dnsdist_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
290 testrunner_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
291 dnsdist_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
292 testrunner_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
293 endif
294
295 if HAVE_DNS_OVER_TLS
296 if HAVE_GNUTLS
297 dnsdist_LDADD += -lgnutls
298 endif
299 endif
300
301 if HAVE_DNS_OVER_HTTPS
302
303 if HAVE_LIBH2OEVLOOP
304 dnsdist_LDADD += $(LIBH2OEVLOOP_LIBS)
305 endif
306
307 endif
308
309 if !HAVE_LUA_HPP
310 BUILT_SOURCES += lua.hpp
311 nodist_dnsdist_SOURCES = lua.hpp
312 CLEANFILES += lua.hpp
313 endif
314
315 if HAVE_PROTOBUF
316 if HAVE_PROTOC
317 dnsmessage.pb.cc: dnsmessage.proto
318 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
319
320 dnstap.pb.cc: dnstap.proto
321 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
322
323 BUILT_SOURCES += dnsmessage.pb.cc dnstap.pb.cc
324
325 nodist_dnsdist_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc dnstap.pb.h
326 dnsdist_LDADD += $(PROTOBUF_LIBS)
327
328 dnsdist.$(OBJEXT): dnsmessage.pb.cc dnstap.pb.cc
329 endif
330 endif
331
332 if HAVE_FREEBSD
333 dnsdist_SOURCES += kqueuemplexer.cc
334 testrunner_SOURCES += kqueuemplexer.cc
335 endif
336
337 if HAVE_LINUX
338 dnsdist_SOURCES += epollmplexer.cc
339 testrunner_SOURCES += epollmplexer.cc
340 endif
341
342 if HAVE_SOLARIS
343 dnsdist_SOURCES += \
344 devpollmplexer.cc \
345 portsmplexer.cc
346 testrunner_SOURCES += \
347 devpollmplexer.cc \
348 portsmplexer.cc
349 endif
350
351 MANPAGES=dnsdist.1
352
353 dist_man_MANS=$(MANPAGES)
354
355 if HAVE_VIRTUALENV
356 if !HAVE_MANPAGES
357 $(MANPAGES): %: docs/manpages/%.rst .venv
358 $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $<
359 endif # if !HAVE_MANPAGES
360
361 .venv: docs/requirements.txt
362 virtualenv .venv
363 .venv/bin/pip install -U pip setuptools setuptools-git
364 .venv/bin/pip install -r $<
365
366 latex/dnsdist.pdf: docs/** .venv
367 .venv/bin/python -msphinx -M latexpdf docs .
368
369 dnsdist.pdf: latex/dnsdist.pdf
370 mv $< $@
371
372 html-docs.tar.bz2: html-docs
373 tar cjf $@ $<
374
375 html-docs: docs/** .venv
376 .venv/bin/python -msphinx -b html docs html-docs
377
378 all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf
379
380 upload-docs: all-docs
381 rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org
382 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org
383 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org
384
385 else # if HAVE_VIRTUALENV
386 $(MANPAGES):
387 @echo "You need virtualenv to generate the manpages"
388 exit 1
389
390 html-docs: %: docs/manpages/%.rst .venv
391 @echo "You need virtualenv to generate the HTML documentation"
392 exit 1
393
394 dnsdist.pdf:
395 @echo "You need virtualenv to generate the pdf documentation"
396 exit 1
397 endif
398
399 if HAVE_SYSTEMD
400 dnsdist.service: dnsdist.service.in
401 $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' < $< > $@
402 if !HAVE_SYSTEMD_LOCK_PERSONALITY
403 $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
404 endif
405 if !HAVE_SYSTEMD_PRIVATE_DEVICES
406 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
407 endif
408 if !HAVE_SYSTEMD_PRIVATE_TMP
409 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@
410 endif
411 if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS
412 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@
413 endif
414 if !HAVE_SYSTEMD_PROTECT_HOME
415 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@
416 endif
417 if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES
418 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@
419 endif
420 if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES
421 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@
422 endif
423 if !HAVE_SYSTEMD_PROTECT_SYSTEM
424 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@
425 endif
426 if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES
427 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@
428 endif
429 if !HAVE_SYSTEMD_RESTRICT_NAMESPACES
430 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@
431 endif
432 if !HAVE_SYSTEMD_RESTRICT_REALTIME
433 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@
434 endif
435 if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES
436 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@
437 endif
438 if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER
439 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@
440 endif
441
442 dnsdist@.service: dnsdist.service
443 $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' < $< >$@
444
445 systemdsystemunitdir = $(SYSTEMD_DIR)
446
447 systemdsystemunit_DATA = \
448 dnsdist.service \
449 dnsdist@.service
450
451 CLEANFILES += \
452 dnsdist.service \
453 dnsdist@.service
454 endif
455
456 if !HAVE_LUA_HPP
457 include lua_hpp.mk
458 endif