]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/dnsdistdist/Makefile.am
mplexer: Keep TTD ordered so we can scan for timeouts efficiently
[thirdparty/pdns.git] / pdns / dnsdistdist / Makefile.am
CommitLineData
fdc3ea42 1AM_CPPFLAGS += $(SYSTEMD_CFLAGS) $(LUA_CFLAGS) $(LIBEDIT_CFLAGS) $(LIBSODIUM_CFLAGS) $(FSTRM_CFLAGS) $(YAHTTP_CFLAGS) $(SANITIZER_FLAGS) $(NET_SNMP_CFLAGS) $(LIBCAP_CFLAGS) -DSYSCONFDIR=\"${sysconfdir}\"
50bed881 2
91487eb9
PL
3ACLOCAL_AMFLAGS = -I m4
4
496151cf
RG
5SUBDIRS=ext/ipcrypt \
6 ext/yahttp
bbfefc98 7
50169e30
CH
8CLEANFILES = \
9 dnsmessage.pb.cc \
10 dnsmessage.pb.h \
11 htmlfiles.h.tmp \
12 htmlfiles.h \
13 dnstap.pb.cc \
14 dnstap.pb.h
37a2da85 15
bbfefc98 16dnslabeltext.cc: dnslabeltext.rl
30bfe7f6 17 $(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc
4676400a 18
56872c22
PL
19BUILT_SOURCES=htmlfiles.h \
20 dnslabeltext.cc
a1f81e3b 21
38b86118
PL
22htmlfiles.h: $(srcdir)/html/*
23 $(AM_V_GEN)$(srcdir)/incfiles $(srcdir) > $@.tmp
24 @mv $@.tmp $@
bbfefc98 25
7cc65f8a
SH
26SRC_JS_FILES := $(wildcard src_js/*.js)
27MIN_JS_FILES := $(patsubst src_js/%.js,html/js/%.min.js,$(SRC_JS_FILES))
28
29html/js/%.min.js: src_js/%.js
30 uglifyjs $< > $@
31
32min_js: $(MIN_JS_FILES)
33
4ed8dfeb 34if HAVE_RE2
35AM_CPPFLAGS += $(RE2_CFLAGS)
36endif
37
a227f47d
RG
38if HAVE_DNS_OVER_TLS
39if HAVE_LIBSSL
40AM_CPPFLAGS += $(LIBSSL_CFLAGS)
41endif
42
43if HAVE_GNUTLS
44AM_CPPFLAGS += $(GNUTLS_CFLAGS)
45endif
46endif
4ed8dfeb 47
190aaf91
PL
48EXTRA_DIST=COPYING \
49 dnslabeltext.rl \
994c0ab3 50 dnsdistconf.lua \
59c83cf6 51 dnsmessage.proto \
82a91ddf 52 dnstap.proto \
994c0ab3 53 README.md \
25553371 54 delaypipe.cc delaypipe.hh \
994c0ab3 55 html \
b3bcfb63 56 contrib \
babc4bab
SH
57 ext/incbin/UNLICENSE \
58 incfiles \
6ab65223 59 src_js \
65613131 60 dnsdist.service.in \
d45189b7
RG
61 lua_hpp.mk \
62 bpf-filter.main.ebpf \
63 bpf-filter.qname.ebpf \
9f4eb5cc 64 bpf-filter.ebpf.src \
0e663c3b
RG
65 DNSDIST-MIB.txt \
66 devpollmplexer.cc \
67 epollmplexer.cc \
68 kqueuemplexer.cc \
8670e40d
PL
69 portsmplexer.cc \
70 builder-support/gen-version
bbfefc98 71
72bin_PROGRAMS = dnsdist
d2143283
PL
73
74if UNIT_TESTS
75noinst_PROGRAMS = testrunner
3c2ea9e5
RG
76TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message SRCDIR='$(srcdir)'
77TESTS=testrunner
78else
79check-local:
80 @echo "Unit tests are not enabled"
81 @echo "Run ./configure --enable-unit-tests"
ca404e94
RG
82endif
83
ca9836cb
PL
84dnsdist-web.$(OBJEXT): htmlfiles.h
85
bbfefc98 86dnsdist_SOURCES = \
6ee9a5a2 87 ascii.hh \
1489accc 88 base64.hh \
87b515ed 89 bpf-filter.cc bpf-filter.hh \
05f4003d 90 cachecleaner.hh \
f12666f2 91 capabilities.cc capabilities.hh \
77f8ae1a 92 dns.cc dns.hh \
11e1e08b 93 dnscrypt.cc dnscrypt.hh \
bbfefc98 94 dnsdist.cc dnsdist.hh \
87b515ed 95 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
886e2cf2 96 dnsdist-cache.cc dnsdist-cache.hh \
96b092a7 97 dnsdist-carbon.cc \
b5521206 98 dnsdist-console.cc dnsdist-console.hh \
11e1e08b 99 dnsdist-dnscrypt.cc \
dc2fd93a 100 dnsdist-dynblocks.hh \
ca404e94 101 dnsdist-ecs.cc dnsdist-ecs.hh \
d0ae6360 102 dnsdist-idstate.cc \
cf48b0ce 103 dnsdist-lua.hh dnsdist-lua.cc \
6bb38cd6
RG
104 dnsdist-lua-actions.cc \
105 dnsdist-lua-bindings.cc \
106 dnsdist-lua-bindings-dnsquestion.cc \
107 dnsdist-lua-inspection.cc \
861ce85b 108 dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.hh \
6bb38cd6
RG
109 dnsdist-lua-rules.cc \
110 dnsdist-lua-vars.cc \
ec469dd7 111 dnsdist-protobuf.cc dnsdist-protobuf.hh \
03b00917 112 dnsdist-rings.cc dnsdist-rings.hh \
5f2e235c 113 dnsdist-rules.hh \
5d4e1ef8 114 dnsdist-secpoll.cc dnsdist-secpoll.hh \
9f4eb5cc 115 dnsdist-snmp.cc dnsdist-snmp.hh \
8a5d5053 116 dnsdist-tcp.cc \
50bed881 117 dnsdist-web.cc \
53c57da7 118 dnsdist-xpf.cc dnsdist-xpf.hh \
bbfefc98 119 dnslabeltext.cc \
120 dnsname.cc dnsname.hh \
ca404e94 121 dnsparser.hh dnsparser.cc \
bbfefc98 122 dnswriter.cc dnswriter.hh \
123 dolog.hh \
5c3b5e7f 124 ednsoptions.cc ednsoptions.hh \
ff73f02b 125 ednscookies.cc ednscookies.hh \
ca404e94 126 ednssubnet.cc ednssubnet.hh \
82a91ddf 127 fstrm_logger.cc fstrm_logger.hh \
85c7ca75 128 gettime.cc gettime.hh \
0e663c3b 129 htmlfiles.h \
bbfefc98 130 iputils.cc iputils.hh \
0e41337b 131 lock.hh \
bbfefc98 132 misc.cc misc.hh \
0e663c3b 133 mplexer.hh \
bbfefc98 134 namespaces.hh \
135 pdnsexception.hh \
d9d3f9c1 136 protobuf.cc protobuf.hh \
82a91ddf 137 dnstap.cc dnstap.hh \
bbfefc98 138 qtype.cc qtype.hh \
ec469dd7 139 remote_logger.cc remote_logger.hh \
926444e2 140 pollmplexer.cc \
ecbe9133 141 sholder.hh \
9f4eb5cc 142 snmp-agent.cc snmp-agent.hh \
bbfefc98 143 sodcrypto.cc sodcrypto.hh \
f8204e9e 144 sstuff.hh \
71c94675 145 statnode.cc statnode.hh \
a227f47d 146 tcpiohandler.cc tcpiohandler.hh \
519f5484 147 threadname.hh threadname.cc \
d61aa945 148 uuid-utils.hh uuid-utils.cc \
5cc8371b 149 xpf.cc xpf.hh \
f8204e9e
PL
150 ext/luawrapper/include/LuaContext.hpp \
151 ext/json11/json11.cpp \
152 ext/json11/json11.hpp \
87b515ed
RG
153 ext/incbin/incbin.h \
154 ext/libbpf/libbpf.h
bbfefc98 155
156dnsdist_LDFLAGS = \
157 $(AM_LDFLAGS) \
bfb7cc84 158 $(PROGRAM_LDFLAGS) \
50bed881 159 -pthread
bbfefc98 160
161dnsdist_LDADD = \
a6158e7a 162 $(LUA_LIBS) \
d9de8b61 163 $(LIBEDIT_LIBS) \
a6158e7a
RK
164 $(RT_LIBS) \
165 $(YAHTTP_LIBS) \
e85e4d88 166 $(LIBSODIUM_LIBS) \
82a91ddf 167 $(FSTRM_LIBS) \
6ab65223 168 $(SANITIZER_FLAGS) \
9f4eb5cc 169 $(SYSTEMD_LIBS) \
fdc3ea42 170 $(NET_SNMP_LIBS) \
496151cf
RG
171 $(LIBCAP_LIBS) \
172 $(IPCRYPT_LIBS)
bbfefc98 173
4ed8dfeb 174if HAVE_RE2
175dnsdist_LDADD += $(RE2_LIBS)
176endif
177
f4b1f1fd
RG
178if HAVE_LIBCRYPTO
179dnsdist_LDADD += $(LIBCRYPTO_LIBS)
496151cf 180dnsdist_SOURCES += ipcipher.cc ipcipher.hh
f4b1f1fd
RG
181endif
182
a227f47d
RG
183if HAVE_DNS_OVER_TLS
184if HAVE_GNUTLS
185dnsdist_LDADD += -lgnutls
186endif
187
188if HAVE_LIBSSL
f4b1f1fd 189dnsdist_LDADD += $(LIBSSL_LIBS)
a227f47d
RG
190endif
191endif
192
65613131
PL
193if !HAVE_LUA_HPP
194BUILT_SOURCES += lua.hpp
195nodist_dnsdist_SOURCES = lua.hpp
196CLEANFILES += lua.hpp
197endif
b2eccf5f 198
37a2da85
PL
199if HAVE_PROTOBUF
200if HAVE_PROTOC
b2eccf5f 201dnsmessage.pb.cc: dnsmessage.proto
38b86118 202 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
b2eccf5f 203
82a91ddf
CH
204dnstap.pb.cc: dnstap.proto
205 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
206
207BUILT_SOURCES += dnsmessage.pb.cc dnstap.pb.cc
37a2da85 208
82a91ddf 209nodist_dnsdist_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc dnstap.pb.h
d8c19b98 210dnsdist_LDADD += $(PROTOBUF_LIBS)
37a2da85 211
82a91ddf 212dnsdist.$(OBJEXT): dnsmessage.pb.cc dnstap.pb.cc
37a2da85 213endif
d8c19b98 214endif
ca404e94 215
0e663c3b
RG
216if HAVE_FREEBSD
217dnsdist_SOURCES += kqueuemplexer.cc
218endif
219
220if HAVE_LINUX
221dnsdist_SOURCES += epollmplexer.cc
222endif
223
224if HAVE_SOLARIS
225dnsdist_SOURCES += \
226 devpollmplexer.cc \
227 portsmplexer.cc
228endif
229
ca404e94 230testrunner_SOURCES = \
11e1e08b
RG
231 base64.hh \
232 dns.hh \
e27e17c3 233 test-base64_cc.cc \
94e4d723 234 test-delaypipe_hh.cc \
47698274 235 test-dnscrypt_cc.cc \
11e1e08b 236 test-dnsdist_cc.cc \
1d3ba133 237 test-dnsdistdynblocks_hh.cc \
886e2cf2 238 test-dnsdistpacketcache_cc.cc \
cfe4b655 239 test-dnsdistrings_cc.cc \
05f4003d 240 test-dnsdistrules_cc.cc \
47698274 241 test-dnsparser_cc.cc \
0047d734 242 test-iputils_hh.cc \
05f4003d 243 cachecleaner.hh \
11e1e08b 244 dnsdist.hh \
886e2cf2 245 dnsdist-cache.cc dnsdist-cache.hh \
ca404e94 246 dnsdist-ecs.cc dnsdist-ecs.hh \
53c57da7 247 dnsdist-xpf.cc dnsdist-xpf.hh \
11e1e08b 248 dnscrypt.cc dnscrypt.hh \
ca404e94
RG
249 dnslabeltext.cc \
250 dnsname.cc dnsname.hh \
251 dnsparser.hh dnsparser.cc \
252 dnswriter.cc dnswriter.hh \
253 dolog.hh \
5c3b5e7f 254 ednsoptions.cc ednsoptions.hh \
ff73f02b 255 ednscookies.cc ednscookies.hh \
ca404e94 256 ednssubnet.cc ednssubnet.hh \
85c7ca75 257 gettime.cc gettime.hh \
ca404e94
RG
258 iputils.cc iputils.hh \
259 misc.cc misc.hh \
260 namespaces.hh \
261 pdnsexception.hh \
262 qtype.cc qtype.hh \
263 sholder.hh \
e27e17c3 264 sodcrypto.cc \
ca404e94 265 sstuff.hh \
23adffab 266 statnode.cc statnode.hh \
94e4d723 267 threadname.hh threadname.cc \
5cc8371b
RG
268 testrunner.cc \
269 xpf.cc xpf.hh
ca404e94
RG
270
271testrunner_LDFLAGS = \
272 $(AM_LDFLAGS) \
273 $(PROGRAM_LDFLAGS) \
274 $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
275 -pthread
276
277testrunner_LDADD = \
278 $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
11e1e08b 279 $(LIBSODIUM_LIBS) \
82a91ddf 280 $(FSTRM_LIBS) \
8d06661a 281 $(RT_LIBS) \
fdc3ea42
RG
282 $(SANITIZER_FLAGS) \
283 $(LIBCAP_LIBS)
ca404e94 284
f68a9074
PL
285MANPAGES=dnsdist.1
286
287dist_man_MANS=$(MANPAGES)
288
20d81666
PL
289if HAVE_VIRTUALENV
290if !HAVE_MANPAGES
291$(MANPAGES): %: docs/manpages/%.rst .venv
292 $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $<
293endif # if !HAVE_MANPAGES
294
295.venv: docs/requirements.txt
296 virtualenv .venv
29455e8a 297 .venv/bin/pip install -U pip setuptools setuptools-git
20d81666
PL
298 .venv/bin/pip install -r $<
299
300latex/dnsdist.pdf: docs/** .venv
301 .venv/bin/python -msphinx -M latexpdf docs .
302
303dnsdist.pdf: latex/dnsdist.pdf
304 mv $< $@
305
306html-docs.tar.bz2: html-docs
307 tar cjf $@ $<
308
309html-docs: docs/** .venv
310 .venv/bin/python -msphinx -b html docs html-docs
311
312all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf
313
314upload-docs: all-docs
60c95446
PL
315 rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org
316 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org
317 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org
20d81666
PL
318
319else # if HAVE_VIRTUALENV
f68a9074 320$(MANPAGES):
20d81666
PL
321 @echo "You need virtualenv to generate the manpages"
322 exit 1
323
324html-docs: %: docs/manpages/%.rst .venv
325 @echo "You need virtualenv to generate the HTML documentation"
326 exit 1
327
328dnsdist.pdf:
329 @echo "You need virtualenv to generate the pdf documentation"
f68a9074 330 exit 1
f68a9074 331endif
6ab65223
PL
332
333if HAVE_SYSTEMD
334dnsdist.service: dnsdist.service.in
335 $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' < $< > $@
a3dfb540 336if !HAVE_SYSTEMD_LOCK_PERSONALITY
6992cb2d 337 $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
a3dfb540
RG
338endif
339if !HAVE_SYSTEMD_PRIVATE_DEVICES
6992cb2d 340 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
a3dfb540
RG
341endif
342if !HAVE_SYSTEMD_PRIVATE_TMP
6992cb2d 343 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@
a3dfb540
RG
344endif
345if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS
6992cb2d 346 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@
a3dfb540
RG
347endif
348if !HAVE_SYSTEMD_PROTECT_HOME
6992cb2d 349 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@
a3dfb540
RG
350endif
351if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES
6992cb2d 352 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@
a3dfb540
RG
353endif
354if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES
6992cb2d 355 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@
a3dfb540
RG
356endif
357if !HAVE_SYSTEMD_PROTECT_SYSTEM
6992cb2d 358 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@
a3dfb540
RG
359endif
360if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES
6992cb2d 361 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@
a3dfb540
RG
362endif
363if !HAVE_SYSTEMD_RESTRICT_NAMESPACES
6992cb2d 364 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@
a3dfb540
RG
365endif
366if !HAVE_SYSTEMD_RESTRICT_REALTIME
6992cb2d 367 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@
a3dfb540
RG
368endif
369if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES
6992cb2d 370 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@
a3dfb540
RG
371endif
372if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER
6992cb2d 373 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@
a3dfb540 374endif
6ab65223 375
aa663221
PL
376dnsdist@.service: dnsdist.service
377 $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' < $< >$@
378
6ab65223
PL
379systemdsystemunitdir = $(SYSTEMD_DIR)
380
381systemdsystemunit_DATA = \
aa663221
PL
382 dnsdist.service \
383 dnsdist@.service
50169e30
CH
384
385CLEANFILES += \
386 dnsdist.service \
387 dnsdist@.service
6ab65223 388endif
65613131
PL
389
390if !HAVE_LUA_HPP
391include lua_hpp.mk
392endif