]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/dnsdistdist/Makefile.am
dnsdist: Refactor the exponential back-off timer code
[thirdparty/pdns.git] / pdns / dnsdistdist / Makefile.am
CommitLineData
87f46425
RG
1AM_CPPFLAGS += $(SYSTEMD_CFLAGS) \
2 $(LUA_CFLAGS) \
3 $(LIBEDIT_CFLAGS) \
4 $(LIBSODIUM_CFLAGS) \
5 $(FSTRM_CFLAGS) \
6 $(YAHTTP_CFLAGS) \
87f46425 7 $(NET_SNMP_CFLAGS) \
6e069889 8 $(NGHTTP2_CFLAGS) \
87f46425 9 $(LIBCAP_CFLAGS) \
565715ed 10 -I$(top_srcdir)/ext/protozero/include \
311f2683
PD
11 -DSYSCONFDIR=\"${sysconfdir}\" \
12 -DBOOST_CONTAINER_USE_STD_EXCEPTIONS
50bed881 13
91487eb9
PL
14ACLOCAL_AMFLAGS = -I m4
15
a0d8a0f0
OM
16SUBDIRS=ext/arc4random \
17 ext/ipcrypt \
496151cf 18 ext/yahttp
bbfefc98 19
50169e30 20CLEANFILES = \
50169e30
CH
21 htmlfiles.h.tmp \
22 htmlfiles.h \
87f46425 23 dnsdist-lua-ffi-interface.inc
37a2da85 24
a0b6aac5
RG
25sysconf_DATA = dnsdist.conf-dist
26
bbfefc98 27dnslabeltext.cc: dnslabeltext.rl
30bfe7f6 28 $(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc
4676400a 29
56872c22 30BUILT_SOURCES=htmlfiles.h \
0ed8f0fa 31 dnsdist-lua-ffi-interface.inc \
56872c22 32 dnslabeltext.cc
a1f81e3b 33
077201f2 34htmlfiles.h: $(srcdir)/html/* $(srcdir)/incfiles
38b86118
PL
35 $(AM_V_GEN)$(srcdir)/incfiles $(srcdir) > $@.tmp
36 @mv $@.tmp $@
bbfefc98 37
b4fbe20d 38dnsdist-lua-ffi-interface.inc: dnsdist-lua-ffi-interface.h dnsdist-lua-inspection-ffi.h
71411593 39 $(AM_V_GEN)echo 'R"FFIContent(' > $@
b4fbe20d 40 @cat $^ >> $@
71411593 41 @echo ')FFIContent"' >> $@
7cc65f8a
SH
42SRC_JS_FILES := $(wildcard src_js/*.js)
43MIN_JS_FILES := $(patsubst src_js/%.js,html/js/%.min.js,$(SRC_JS_FILES))
44
45html/js/%.min.js: src_js/%.js
46 uglifyjs $< > $@
47
48min_js: $(MIN_JS_FILES)
49
4ed8dfeb 50if HAVE_RE2
3b96145d 51# Some versions of pkg_config add -std=c11++, override that
4ed8dfeb 52AM_CPPFLAGS += $(RE2_CFLAGS)
3b96145d 53AM_CPPFLAGS += -std=c++17
4ed8dfeb 54endif
55
a227f47d
RG
56if HAVE_DNS_OVER_TLS
57if HAVE_LIBSSL
58AM_CPPFLAGS += $(LIBSSL_CFLAGS)
59endif
60
61if HAVE_GNUTLS
62AM_CPPFLAGS += $(GNUTLS_CFLAGS)
63endif
64endif
4ed8dfeb 65
c7d6edef
PD
66if HAVE_LIBCRYPTO
67AM_CPPFLAGS += $(LIBCRYPTO_INCLUDES)
68endif
69
c18cc5ac 70if HAVE_CDB
71AM_CPPFLAGS += $(CDB_CFLAGS)
72endif
73
f441962a
RG
74if HAVE_LMDB
75AM_CPPFLAGS += $(LMDB_CFLAGS)
76endif
77
fbf14b03
RG
78if HAVE_DNS_OVER_HTTPS
79if HAVE_LIBSSL
80AM_CPPFLAGS += $(LIBSSL_CFLAGS)
81endif
82
7e8a05fa
RG
83if HAVE_GNUTLS
84AM_CPPFLAGS += $(GNUTLS_CFLAGS)
85endif
86
fbf14b03
RG
87if HAVE_LIBH2OEVLOOP
88AM_CPPFLAGS += $(LIBH2OEVLOOP_CFLAGS)
89endif
90endif
91
190aaf91
PL
92EXTRA_DIST=COPYING \
93 dnslabeltext.rl \
a0b6aac5 94 dnsdist.conf-dist \
59c83cf6 95 dnsmessage.proto \
82a91ddf 96 dnstap.proto \
994c0ab3 97 README.md \
25553371 98 delaypipe.cc delaypipe.hh \
994c0ab3 99 html \
babc4bab 100 incfiles \
6ab65223 101 src_js \
65613131 102 dnsdist.service.in \
d45189b7
RG
103 lua_hpp.mk \
104 bpf-filter.main.ebpf \
105 bpf-filter.qname.ebpf \
9f4eb5cc 106 bpf-filter.ebpf.src \
0e663c3b
RG
107 DNSDIST-MIB.txt \
108 devpollmplexer.cc \
109 epollmplexer.cc \
110 kqueuemplexer.cc \
8670e40d 111 portsmplexer.cc \
4a53cb41 112 cdb.cc cdb.hh \
cabda036 113 standalone_fuzz_target_runner.cc \
4a53cb41 114 ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \
87f46425 115 ext/protozero/include/* \
8670e40d 116 builder-support/gen-version
bbfefc98 117
118bin_PROGRAMS = dnsdist
d2143283
PL
119
120if UNIT_TESTS
121noinst_PROGRAMS = testrunner
63117673 122TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message BOOST_TEST_RANDOM=1 SRCDIR='$(srcdir)'
3c2ea9e5
RG
123TESTS=testrunner
124else
125check-local:
126 @echo "Unit tests are not enabled"
127 @echo "Run ./configure --enable-unit-tests"
ca404e94
RG
128endif
129
ca9836cb 130dnsdist-web.$(OBJEXT): htmlfiles.h
71411593 131dnsdist-lua-ffi.$(OBJEXT): dnsdist-lua-ffi-interface.inc
ca9836cb 132
bbfefc98 133dnsdist_SOURCES = \
1489accc 134 base64.hh \
87b515ed 135 bpf-filter.cc bpf-filter.hh \
86c49d2b 136 burtle.hh \
05f4003d 137 cachecleaner.hh \
f12666f2 138 capabilities.cc capabilities.hh \
3fc6d61c 139 channel.cc channel.hh \
9f6a31ff 140 circular_buffer.hh \
5e40d2a5 141 connection-management.hh \
b3356965 142 coverage.cc coverage.hh \
cfe95ada 143 credentials.cc credentials.hh \
77f8ae1a 144 dns.cc dns.hh \
f573af85 145 dns_random.hh \
11e1e08b 146 dnscrypt.cc dnscrypt.hh \
0859e14a 147 dnsdist-async.cc dnsdist-async.hh \
b6e26895 148 dnsdist-backend.cc \
d629f5b0 149 dnsdist-backoff.hh \
886e2cf2 150 dnsdist-cache.cc dnsdist-cache.hh \
0b96a918 151 dnsdist-carbon.cc dnsdist-carbon.hh \
972d353a 152 dnsdist-concurrent-connections.hh \
b5521206 153 dnsdist-console.cc dnsdist-console.hh \
09708c45 154 dnsdist-discovery.cc dnsdist-discovery.hh \
11e1e08b 155 dnsdist-dnscrypt.cc \
a67613dd 156 dnsdist-dnsparser.cc dnsdist-dnsparser.hh \
9eb152c4 157 dnsdist-doh-common.cc dnsdist-doh-common.hh \
8a2dd7db 158 dnsdist-downstream-connection.hh \
838c2f00 159 dnsdist-dynblocks.cc dnsdist-dynblocks.hh \
1c81cda0 160 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
ca404e94 161 dnsdist-ecs.cc dnsdist-ecs.hh \
83dc6a38 162 dnsdist-edns.cc dnsdist-edns.hh \
dd9c8246 163 dnsdist-healthchecks.cc dnsdist-healthchecks.hh \
592b1d99 164 dnsdist-idstate.hh \
0859e14a 165 dnsdist-internal-queries.cc dnsdist-internal-queries.hh \
f441962a 166 dnsdist-kvs.hh dnsdist-kvs.cc \
b6e26895 167 dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \
6bb38cd6 168 dnsdist-lua-actions.cc \
4d4d5623 169 dnsdist-lua-bindings-dnscrypt.cc \
3669b961 170 dnsdist-lua-bindings-dnsparser.cc \
6bb38cd6 171 dnsdist-lua-bindings-dnsquestion.cc \
4d4d5623 172 dnsdist-lua-bindings-kvs.cc \
67ed7d3e 173 dnsdist-lua-bindings-network.cc \
4d4d5623
RG
174 dnsdist-lua-bindings-packetcache.cc \
175 dnsdist-lua-bindings-protobuf.cc \
b1bea54a 176 dnsdist-lua-bindings-rings.cc \
1c81cda0 177 dnsdist-lua-bindings.cc \
0ed8f0fa 178 dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \
1c81cda0 179 dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \
46de63a6 180 dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.h \
1c81cda0 181 dnsdist-lua-inspection.cc \
67ed7d3e 182 dnsdist-lua-network.cc dnsdist-lua-network.hh \
6bb38cd6
RG
183 dnsdist-lua-rules.cc \
184 dnsdist-lua-vars.cc \
88d4fe87 185 dnsdist-lua-web.cc \
f31a18a0 186 dnsdist-lua.cc dnsdist-lua.hh \
e8eb8a98 187 dnsdist-mac-address.cc dnsdist-mac-address.hh \
67cbba12 188 dnsdist-metrics.cc dnsdist-metrics.hh \
cf25b82b
RG
189 dnsdist-nghttp2-in.hh \
190 dnsdist-nghttp2.hh \
0d394f35 191 dnsdist-prometheus.hh \
ec469dd7 192 dnsdist-protobuf.cc dnsdist-protobuf.hh \
2c0e81bb 193 dnsdist-protocols.cc dnsdist-protocols.hh \
bde73d5b 194 dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \
f573af85 195 dnsdist-random.cc dnsdist-random.hh \
03b00917 196 dnsdist-rings.cc dnsdist-rings.hh \
79ac0575 197 dnsdist-rules.cc dnsdist-rules.hh \
5d4e1ef8 198 dnsdist-secpoll.cc dnsdist-secpoll.hh \
32a63bdb 199 dnsdist-session-cache.cc dnsdist-session-cache.hh \
9f4eb5cc 200 dnsdist-snmp.cc dnsdist-snmp.hh \
651f3a09 201 dnsdist-svc.cc dnsdist-svc.hh \
d2138f20 202 dnsdist-systemd.cc dnsdist-systemd.hh \
086a43eb
RG
203 dnsdist-tcp-downstream.cc dnsdist-tcp-downstream.hh \
204 dnsdist-tcp-upstream.hh \
2c0e81bb 205 dnsdist-tcp.cc dnsdist-tcp.hh \
1c90c6bd 206 dnsdist-web.cc dnsdist-web.hh \
53c57da7 207 dnsdist-xpf.cc dnsdist-xpf.hh \
1c81cda0 208 dnsdist.cc dnsdist.hh \
bbfefc98 209 dnslabeltext.cc \
210 dnsname.cc dnsname.hh \
ca404e94 211 dnsparser.hh dnsparser.cc \
1c81cda0 212 dnstap.cc dnstap.hh \
bbfefc98 213 dnswriter.cc dnswriter.hh \
df5a4ff1 214 doh.hh \
bbfefc98 215 dolog.hh \
2f8ef130 216 doq.hh \
ff73f02b 217 ednscookies.cc ednscookies.hh \
f18d8af3 218 ednsextendederror.cc ednsextendederror.hh \
1c81cda0 219 ednsoptions.cc ednsoptions.hh \
ca404e94 220 ednssubnet.cc ednssubnet.hh \
1c81cda0
PL
221 ext/json11/json11.cpp \
222 ext/json11/json11.hpp \
223 ext/libbpf/libbpf.h \
224 ext/luawrapper/include/LuaContext.hpp \
82a91ddf 225 fstrm_logger.cc fstrm_logger.hh \
85c7ca75 226 gettime.cc gettime.hh \
0e663c3b 227 htmlfiles.h \
bbfefc98 228 iputils.cc iputils.hh \
ede152ec 229 libssl.cc libssl.hh \
0e41337b 230 lock.hh \
43f91cad 231 logging.hh \
bbfefc98 232 misc.cc misc.hh \
0e663c3b 233 mplexer.hh \
bbfefc98 234 namespaces.hh \
32fbb2ab 235 noinitvector.hh \
fa980c59 236 packetcache.hh \
bbfefc98 237 pdnsexception.hh \
1c81cda0 238 pollmplexer.cc \
87f46425 239 protozero.cc protozero.hh \
bde73d5b 240 proxy-protocol.cc proxy-protocol.hh \
bbfefc98 241 qtype.cc qtype.hh \
ec469dd7 242 remote_logger.cc remote_logger.hh \
ecbe9133 243 sholder.hh \
9f4eb5cc 244 snmp-agent.cc snmp-agent.hh \
bbfefc98 245 sodcrypto.cc sodcrypto.hh \
f8204e9e 246 sstuff.hh \
070fa3bf 247 stat_t.hh \
e4068153 248 statnode.cc statnode.hh \
1c81cda0 249 svc-records.cc svc-records.hh \
086a43eb 250 tcpiohandler-mplexer.hh \
a227f47d 251 tcpiohandler.cc tcpiohandler.hh \
519f5484 252 threadname.hh threadname.cc \
d61aa945 253 uuid-utils.hh uuid-utils.cc \
1c81cda0 254 xpf.cc xpf.hh
bbfefc98 255
f441962a
RG
256testrunner_SOURCES = \
257 base64.hh \
fd51c832 258 bpf-filter.cc bpf-filter.hh \
f441962a 259 cachecleaner.hh \
3fc6d61c 260 channel.cc channel.hh \
f441962a 261 circular_buffer.hh \
6cf749d5 262 connection-management.hh \
fcf0f021 263 credentials.cc credentials.hh \
d372faa2 264 dns.cc dns.hh \
1c81cda0 265 dnscrypt.cc dnscrypt.hh \
0859e14a 266 dnsdist-async.cc dnsdist-async.hh \
b6e26895 267 dnsdist-backend.cc \
d629f5b0 268 dnsdist-backoff.hh \
f441962a 269 dnsdist-cache.cc dnsdist-cache.hh \
972d353a 270 dnsdist-concurrent-connections.hh \
a67613dd 271 dnsdist-dnsparser.cc dnsdist-dnsparser.hh \
9eb152c4 272 dnsdist-doh-common.cc dnsdist-doh-common.hh \
8a2dd7db 273 dnsdist-downstream-connection.hh \
838c2f00 274 dnsdist-dynblocks.cc dnsdist-dynblocks.hh \
fd51c832 275 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
f441962a 276 dnsdist-ecs.cc dnsdist-ecs.hh \
83dc6a38 277 dnsdist-edns.cc dnsdist-edns.hh \
592b1d99 278 dnsdist-idstate.hh \
aa4b6efa 279 dnsdist-kvs.cc dnsdist-kvs.hh \
b6e26895 280 dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \
fd51c832
RG
281 dnsdist-lua-bindings-dnsquestion.cc \
282 dnsdist-lua-bindings-kvs.cc \
1c81cda0 283 dnsdist-lua-bindings.cc \
a9599e73 284 dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \
1c81cda0 285 dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \
67ed7d3e 286 dnsdist-lua-network.cc dnsdist-lua-network.hh \
fd51c832 287 dnsdist-lua-vars.cc \
e8eb8a98 288 dnsdist-mac-address.cc dnsdist-mac-address.hh \
67cbba12 289 dnsdist-metrics.cc dnsdist-metrics.hh \
cf25b82b
RG
290 dnsdist-nghttp2-in.hh \
291 dnsdist-nghttp2.hh \
2c0e81bb 292 dnsdist-protocols.cc dnsdist-protocols.hh \
b7eb6b6e 293 dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \
f573af85 294 dnsdist-random.cc dnsdist-random.hh \
b3ccd3ea 295 dnsdist-rings.cc dnsdist-rings.hh \
79ac0575 296 dnsdist-rules.cc dnsdist-rules.hh \
32a63bdb 297 dnsdist-session-cache.cc dnsdist-session-cache.hh \
651f3a09 298 dnsdist-svc.cc dnsdist-svc.hh \
b7eb6b6e 299 dnsdist-tcp-downstream.cc \
2c0e81bb 300 dnsdist-tcp.cc dnsdist-tcp.hh \
f441962a 301 dnsdist-xpf.cc dnsdist-xpf.hh \
1c81cda0 302 dnsdist.hh \
f441962a
RG
303 dnslabeltext.cc \
304 dnsname.cc dnsname.hh \
305 dnsparser.hh dnsparser.cc \
306 dnswriter.cc dnswriter.hh \
307 dolog.hh \
f441962a 308 ednscookies.cc ednscookies.hh \
b341ebf9 309 ednsextendederror.cc ednsextendederror.hh \
1c81cda0 310 ednsoptions.cc ednsoptions.hh \
f441962a 311 ednssubnet.cc ednssubnet.hh \
1c81cda0 312 ext/luawrapper/include/LuaContext.hpp \
f441962a
RG
313 gettime.cc gettime.hh \
314 iputils.cc iputils.hh \
315 misc.cc misc.hh \
316 namespaces.hh \
32fbb2ab 317 noinitvector.hh \
f441962a
RG
318 pdnsexception.hh \
319 pollmplexer.cc \
9bf0554f 320 proxy-protocol.cc proxy-protocol.hh \
f441962a
RG
321 qtype.cc qtype.hh \
322 sholder.hh \
323 sodcrypto.cc \
324 sstuff.hh \
070fa3bf 325 stat_t.hh \
e4068153 326 statnode.cc statnode.hh \
373914dc 327 svc-records.cc svc-records.hh \
1c81cda0 328 test-base64_cc.cc \
cd93bea9 329 test-channel.cc \
6cf749d5 330 test-connectionmanagement_hh.cc \
fcf0f021 331 test-credentials_cc.cc \
1c81cda0
PL
332 test-delaypipe_hh.cc \
333 test-dnscrypt_cc.cc \
baa91396 334 test-dnsdist-connections-cache.cc \
f05fbb73 335 test-dnsdist-dnsparser.cc \
7e413c79 336 test-dnsdist-lua-ffi.cc \
1c81cda0 337 test-dnsdist_cc.cc \
0859e14a 338 test-dnsdistasync.cc \
c212e66e 339 test-dnsdistbackend_cc.cc \
d629f5b0 340 test-dnsdistbackoff.cc \
1c81cda0 341 test-dnsdistdynblocks_hh.cc \
b341ebf9 342 test-dnsdistedns.cc \
1c81cda0
PL
343 test-dnsdistkvs_cc.cc \
344 test-dnsdistlbpolicies_cc.cc \
67ed7d3e 345 test-dnsdistluanetwork.cc \
c02b7e13 346 test-dnsdistnghttp2_common.hh \
1c81cda0
PL
347 test-dnsdistpacketcache_cc.cc \
348 test-dnsdistrings_cc.cc \
349 test-dnsdistrules_cc.cc \
651f3a09 350 test-dnsdistsvc_cc.cc \
b7eb6b6e 351 test-dnsdisttcp_cc.cc \
1c81cda0
PL
352 test-dnsparser_cc.cc \
353 test-iputils_hh.cc \
a51b35e1 354 test-luawrapper.cc \
1c81cda0
PL
355 test-mplexer.cc \
356 test-proxy_protocol_cc.cc \
f441962a 357 testrunner.cc \
1c81cda0 358 threadname.hh threadname.cc \
b6e26895 359 uuid-utils.hh uuid-utils.cc \
1c81cda0 360 xpf.cc xpf.hh
f441962a 361
bbfefc98 362dnsdist_LDFLAGS = \
363 $(AM_LDFLAGS) \
bfb7cc84 364 $(PROGRAM_LDFLAGS) \
b2024afc 365 -pthread
bbfefc98 366
367dnsdist_LDADD = \
a6158e7a 368 $(LUA_LIBS) \
d9de8b61 369 $(LIBEDIT_LIBS) \
a6158e7a
RK
370 $(RT_LIBS) \
371 $(YAHTTP_LIBS) \
e85e4d88 372 $(LIBSODIUM_LIBS) \
82a91ddf 373 $(FSTRM_LIBS) \
9f4eb5cc 374 $(SYSTEMD_LIBS) \
fdc3ea42 375 $(NET_SNMP_LIBS) \
496151cf 376 $(LIBCAP_LIBS) \
a0d8a0f0
OM
377 $(IPCRYPT_LIBS) \
378 $(ARC4RANDOM_LIBS)
bbfefc98 379
f441962a
RG
380testrunner_LDFLAGS = \
381 $(AM_LDFLAGS) \
382 $(PROGRAM_LDFLAGS) \
383 $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
384 -pthread
385
386testrunner_LDADD = \
387 $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
f441962a 388 $(FSTRM_LIBS) \
a9599e73
RG
389 $(LIBSODIUM_LIBS) \
390 $(LUA_LIBS) \
f441962a 391 $(RT_LIBS) \
a0d8a0f0
OM
392 $(LIBCAP_LIBS) \
393 $(ARC4RANDOM_LIBS)
f441962a 394
90fe8ae6
RG
395if HAVE_CDB
396dnsdist_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
397testrunner_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
398dnsdist_SOURCES += cdb.cc cdb.hh
399testrunner_SOURCES += cdb.cc cdb.hh
400endif
401
4ed8dfeb 402if HAVE_RE2
403dnsdist_LDADD += $(RE2_LIBS)
404endif
405
529f261b
PD
406if HAVE_LIBSSL
407dnsdist_LDADD += $(LIBSSL_LIBS)
408endif
409
f4b1f1fd 410if HAVE_LIBCRYPTO
529f261b 411dnsdist_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS)
b2504b29 412testrunner_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS)
496151cf 413dnsdist_SOURCES += ipcipher.cc ipcipher.hh
f4b1f1fd
RG
414endif
415
f441962a
RG
416if HAVE_LMDB
417dnsdist_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
418testrunner_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
ae27ae09
RG
419dnsdist_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
420testrunner_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
f441962a
RG
421endif
422
a227f47d
RG
423if HAVE_DNS_OVER_TLS
424if HAVE_GNUTLS
425dnsdist_LDADD += -lgnutls
426endif
a227f47d
RG
427endif
428
fbf14b03 429if HAVE_DNS_OVER_HTTPS
fbf14b03 430
7e8a05fa
RG
431if HAVE_GNUTLS
432dnsdist_LDADD += -lgnutls
433endif
434
fbf14b03 435if HAVE_LIBH2OEVLOOP
df5a4ff1 436dnsdist_SOURCES += doh.cc
fbf14b03
RG
437dnsdist_LDADD += $(LIBH2OEVLOOP_LIBS)
438endif
439
cf25b82b
RG
440if HAVE_NGHTTP2
441dnsdist_SOURCES += dnsdist-nghttp2-in.cc
442dnsdist_SOURCES += dnsdist-nghttp2.cc
443testrunner_SOURCES += dnsdist-nghttp2-in.cc
444testrunner_SOURCES += dnsdist-nghttp2.cc
445testrunner_SOURCES += test-dnsdistnghttp2-in_cc.cc \
446 test-dnsdistnghttp2_cc.cc
447dnsdist_LDADD += $(NGHTTP2_LDFLAGS) $(NGHTTP2_LIBS)
448testrunner_LDADD += $(NGHTTP2_LDFLAGS) $(NGHTTP2_LIBS)
449endif
450
fbf14b03
RG
451endif
452
57a94421 453if HAVE_DNS_OVER_QUIC
57a94421 454dnsdist_SOURCES += doq.cc
faeb9fd6 455if HAVE_QUICHE
4af3e47d 456AM_CPPFLAGS += $(QUICHE_CFLAGS)
faeb9fd6
RG
457dnsdist_LDADD += $(QUICHE_LDFLAGS) $(QUICHE_LIBS)
458endif
57a94421
CHB
459endif
460
65613131
PL
461if !HAVE_LUA_HPP
462BUILT_SOURCES += lua.hpp
463nodist_dnsdist_SOURCES = lua.hpp
65613131 464endif
b2eccf5f 465
bbd6bca1
PD
466CLEANFILES += lua.hpp
467
9674edb2
RG
468if HAVE_FREEBSD
469dnsdist_SOURCES += kqueuemplexer.cc
51b5346a
O
470testrunner_SOURCES += kqueuemplexer.cc
471endif
472
473if HAVE_OPENBSD
474dnsdist_SOURCES += kqueuemplexer.cc
9674edb2
RG
475testrunner_SOURCES += kqueuemplexer.cc
476endif
477
478if HAVE_LINUX
479dnsdist_SOURCES += epollmplexer.cc
480testrunner_SOURCES += epollmplexer.cc
481endif
482
483if HAVE_SOLARIS
484dnsdist_SOURCES += \
b2024afc
FM
485 devpollmplexer.cc \
486 portsmplexer.cc
9674edb2 487testrunner_SOURCES += \
b2024afc
FM
488 devpollmplexer.cc \
489 portsmplexer.cc
9674edb2
RG
490endif
491
cabda036
RG
492if FUZZ_TARGETS
493
494LIB_FUZZING_ENGINE ?= standalone_fuzz_target_runner.o
495
496standalone_fuzz_target_runner.o: standalone_fuzz_target_runner.cc
497
498fuzz_targets_programs = \
499 fuzz_target_dnsdistcache
500
501fuzz_targets: $(ARC4RANDOM_LIBS) $(fuzz_targets_programs)
502
503bin_PROGRAMS += \
504 $(fuzz_targets_programs)
505
506fuzz_targets_libs = \
507 $(LIBCRYPTO_LIBS) \
4d1767d1 508 $(ARC4RANDOM_LIBS) \
cabda036
RG
509 $(LIB_FUZZING_ENGINE)
510
511fuzz_targets_ldflags = \
512 $(AM_LDFLAGS) \
513 $(DYNLINKFLAGS) \
514 $(LIBCRYPTO_LDFLAGS) \
515 $(FUZZING_LDFLAGS)
516
517# we need the mockup runner to be built, but not linked if a real fuzzing engine is used
518fuzz_targets_deps = standalone_fuzz_target_runner.o
519
520fuzz_target_dnsdistcache_SOURCES = \
521 channel.hh channel.cc \
522 dns.cc dns.hh \
523 dnsdist-cache.cc dnsdist-cache.hh \
90686725 524 dnsdist-dnsparser.cc dnsdist-dnsparser.hh \
cabda036
RG
525 dnsdist-ecs.cc dnsdist-ecs.hh \
526 dnsdist-idstate.hh \
527 dnsdist-protocols.cc dnsdist-protocols.hh \
528 dnslabeltext.cc \
529 dnsname.cc dnsname.hh \
530 dnsparser.cc dnsparser.hh \
531 dnswriter.cc dnswriter.hh \
532 doh.hh \
533 ednsoptions.cc ednsoptions.hh \
534 ednssubnet.cc ednssubnet.hh \
535 fuzz_dnsdistcache.cc \
536 iputils.cc iputils.hh \
537 misc.cc misc.hh \
538 packetcache.hh \
539 qtype.cc qtype.hh \
540 svc-records.cc svc-records.hh
541
542fuzz_target_dnsdistcache_DEPENDENCIES = $(fuzz_targets_deps)
543fuzz_target_dnsdistcache_LDFLAGS = $(fuzz_targets_ldflags)
544fuzz_target_dnsdistcache_LDADD = $(fuzz_targets_libs)
545
546endif
547
f68a9074
PL
548MANPAGES=dnsdist.1
549
550dist_man_MANS=$(MANPAGES)
551
98508251 552if HAVE_VENV
20d81666
PL
553if !HAVE_MANPAGES
554$(MANPAGES): %: docs/manpages/%.rst .venv
555 $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $<
556endif # if !HAVE_MANPAGES
557
558.venv: docs/requirements.txt
98508251
KF
559 $(PYTHON) -m venv .venv
560 .venv/bin/pip install -U pip setuptools setuptools-git wheel
20d81666
PL
561 .venv/bin/pip install -r $<
562
563latex/dnsdist.pdf: docs/** .venv
564 .venv/bin/python -msphinx -M latexpdf docs .
565
566dnsdist.pdf: latex/dnsdist.pdf
567 mv $< $@
568
569html-docs.tar.bz2: html-docs
570 tar cjf $@ $<
571
572html-docs: docs/** .venv
573 .venv/bin/python -msphinx -b html docs html-docs
574
575all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf
576
577upload-docs: all-docs
60c95446
PL
578 rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org
579 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org
580 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org
20d81666 581
98508251 582else # if HAVE_VENV
f68a9074 583$(MANPAGES):
98508251 584 @echo "You need Python 3 and the 'venv' module to generate the manpages"
20d81666
PL
585 exit 1
586
587html-docs: %: docs/manpages/%.rst .venv
98508251 588 @echo "You need Python 3 and the 'venv' module to generate the HTML docs"
20d81666
PL
589 exit 1
590
591dnsdist.pdf:
98508251 592 @echo "You need Python 3 and the 'venv' module to generate the PDF"
f68a9074 593 exit 1
f68a9074 594endif
6ab65223
PL
595
596if HAVE_SYSTEMD
597dnsdist.service: dnsdist.service.in
f40f664d 598 $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' -e 's![@]service_user[@]!$(service_user)!' -e 's![@]service_group[@]!$(service_group)!' < $< > $@
a3dfb540 599if !HAVE_SYSTEMD_LOCK_PERSONALITY
6992cb2d 600 $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
a3dfb540
RG
601endif
602if !HAVE_SYSTEMD_PRIVATE_DEVICES
6992cb2d 603 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
a3dfb540
RG
604endif
605if !HAVE_SYSTEMD_PRIVATE_TMP
6992cb2d 606 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@
a3dfb540 607endif
3d559c55
RG
608if !HAVE_SYSTEMD_PRIVATE_USERS
609 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateUsers/' $@
610endif
611if !HAVE_SYSTEMD_PROTECT_CLOCK
612 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectClock/' $@
613endif
a3dfb540 614if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS
6992cb2d 615 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@
a3dfb540
RG
616endif
617if !HAVE_SYSTEMD_PROTECT_HOME
6992cb2d 618 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@
a3dfb540 619endif
3d559c55
RG
620if !HAVE_SYSTEMD_PROTECT_HOSTNAME
621 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHostname/' $@
622endif
623if !HAVE_SYSTEMD_PROTECT_KERNEL_LOGS
624 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelLogs/' $@
625endif
a3dfb540 626if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES
6992cb2d 627 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@
a3dfb540
RG
628endif
629if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES
6992cb2d 630 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@
a3dfb540
RG
631endif
632if !HAVE_SYSTEMD_PROTECT_SYSTEM
6992cb2d 633 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@
a3dfb540
RG
634endif
635if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES
6992cb2d 636 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@
a3dfb540
RG
637endif
638if !HAVE_SYSTEMD_RESTRICT_NAMESPACES
6992cb2d 639 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@
a3dfb540
RG
640endif
641if !HAVE_SYSTEMD_RESTRICT_REALTIME
6992cb2d 642 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@
a3dfb540 643endif
3d559c55
RG
644if !HAVE_SYSTEMD_RESTRICT_SUIDSGID
645 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictSUIDSGID/' $@
646endif
a3dfb540 647if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES
6992cb2d 648 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@
a3dfb540
RG
649endif
650if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER
6992cb2d 651 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@
a3dfb540 652endif
3a0c3b68
PL
653if !HAVE_SYSTEMD_PROTECT_PROC
654 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectProc/' $@
655endif
77a8401f
PL
656if !HAVE_SYSTEMD_PRIVATE_IPC
657 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateIPC/' $@
658endif
659if !HAVE_SYSTEMD_REMOVE_IPC
660 $(AM_V_GEN)perl -ni -e 'print unless /^RemoveIPC/' $@
661endif
6ab65223 662
aa663221 663dnsdist@.service: dnsdist.service
fcbada45
PL
664 $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' \
665 -e 's!RuntimeDirectory=.*!&-%i!' \
54b562cb 666 -e 's!SyslogIdentifier=.*!&-%i!' \
fcbada45 667 < $< >$@
aa663221 668
6ab65223
PL
669systemdsystemunitdir = $(SYSTEMD_DIR)
670
671systemdsystemunit_DATA = \
aa663221
PL
672 dnsdist.service \
673 dnsdist@.service
50169e30
CH
674
675CLEANFILES += \
676 dnsdist.service \
677 dnsdist@.service
6ab65223 678endif
65613131
PL
679
680if !HAVE_LUA_HPP
681include lua_hpp.mk
682endif