]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/dnsdistdist/Makefile.am
dnsdist: Simplify the handling of rule chains
[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 \
44850d6e 154 dnsdist-crypto.cc dnsdist-crypto.hh \
09708c45 155 dnsdist-discovery.cc dnsdist-discovery.hh \
11e1e08b 156 dnsdist-dnscrypt.cc \
a67613dd 157 dnsdist-dnsparser.cc dnsdist-dnsparser.hh \
9eb152c4 158 dnsdist-doh-common.cc dnsdist-doh-common.hh \
8a2dd7db 159 dnsdist-downstream-connection.hh \
838c2f00 160 dnsdist-dynblocks.cc dnsdist-dynblocks.hh \
1c81cda0 161 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
ca404e94 162 dnsdist-ecs.cc dnsdist-ecs.hh \
83dc6a38 163 dnsdist-edns.cc dnsdist-edns.hh \
dd9c8246 164 dnsdist-healthchecks.cc dnsdist-healthchecks.hh \
592b1d99 165 dnsdist-idstate.hh \
0859e14a 166 dnsdist-internal-queries.cc dnsdist-internal-queries.hh \
f441962a 167 dnsdist-kvs.hh dnsdist-kvs.cc \
b6e26895 168 dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \
6bb38cd6 169 dnsdist-lua-actions.cc \
4d4d5623 170 dnsdist-lua-bindings-dnscrypt.cc \
3669b961 171 dnsdist-lua-bindings-dnsparser.cc \
6bb38cd6 172 dnsdist-lua-bindings-dnsquestion.cc \
4d4d5623 173 dnsdist-lua-bindings-kvs.cc \
67ed7d3e 174 dnsdist-lua-bindings-network.cc \
4d4d5623
RG
175 dnsdist-lua-bindings-packetcache.cc \
176 dnsdist-lua-bindings-protobuf.cc \
b1bea54a 177 dnsdist-lua-bindings-rings.cc \
1c81cda0 178 dnsdist-lua-bindings.cc \
0ed8f0fa 179 dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \
1c81cda0 180 dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \
5798dc9b 181 dnsdist-lua-hooks.cc dnsdist-lua-hooks.hh \
46de63a6 182 dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.h \
1c81cda0 183 dnsdist-lua-inspection.cc \
67ed7d3e 184 dnsdist-lua-network.cc dnsdist-lua-network.hh \
6bb38cd6
RG
185 dnsdist-lua-rules.cc \
186 dnsdist-lua-vars.cc \
88d4fe87 187 dnsdist-lua-web.cc \
f31a18a0 188 dnsdist-lua.cc dnsdist-lua.hh \
e8eb8a98 189 dnsdist-mac-address.cc dnsdist-mac-address.hh \
67cbba12 190 dnsdist-metrics.cc dnsdist-metrics.hh \
cf25b82b
RG
191 dnsdist-nghttp2-in.hh \
192 dnsdist-nghttp2.hh \
0d394f35 193 dnsdist-prometheus.hh \
ec469dd7 194 dnsdist-protobuf.cc dnsdist-protobuf.hh \
2c0e81bb 195 dnsdist-protocols.cc dnsdist-protocols.hh \
bde73d5b 196 dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \
f573af85 197 dnsdist-random.cc dnsdist-random.hh \
b8df8675 198 dnsdist-resolver.cc dnsdist-resolver.hh \
03b00917 199 dnsdist-rings.cc dnsdist-rings.hh \
3fc92d67 200 dnsdist-rule-chains.cc dnsdist-rule-chains.hh \
79ac0575 201 dnsdist-rules.cc dnsdist-rules.hh \
5d4e1ef8 202 dnsdist-secpoll.cc dnsdist-secpoll.hh \
32a63bdb 203 dnsdist-session-cache.cc dnsdist-session-cache.hh \
9f4eb5cc 204 dnsdist-snmp.cc dnsdist-snmp.hh \
651f3a09 205 dnsdist-svc.cc dnsdist-svc.hh \
d2138f20 206 dnsdist-systemd.cc dnsdist-systemd.hh \
086a43eb
RG
207 dnsdist-tcp-downstream.cc dnsdist-tcp-downstream.hh \
208 dnsdist-tcp-upstream.hh \
2c0e81bb 209 dnsdist-tcp.cc dnsdist-tcp.hh \
1c90c6bd 210 dnsdist-web.cc dnsdist-web.hh \
53c57da7 211 dnsdist-xpf.cc dnsdist-xpf.hh \
2a5e9760 212 dnsdist-xsk.cc dnsdist-xsk.hh \
1c81cda0 213 dnsdist.cc dnsdist.hh \
bbfefc98 214 dnslabeltext.cc \
215 dnsname.cc dnsname.hh \
ca404e94 216 dnsparser.hh dnsparser.cc \
1c81cda0 217 dnstap.cc dnstap.hh \
bbfefc98 218 dnswriter.cc dnswriter.hh \
df5a4ff1 219 doh.hh \
d1f77ae6 220 doh3.hh \
86e28d2d 221 dolog.cc dolog.hh \
ed16c81f 222 doq-common.hh \
d0439b42 223 doq.hh \
ff73f02b 224 ednscookies.cc ednscookies.hh \
f18d8af3 225 ednsextendederror.cc ednsextendederror.hh \
1c81cda0 226 ednsoptions.cc ednsoptions.hh \
ca404e94 227 ednssubnet.cc ednssubnet.hh \
1c81cda0
PL
228 ext/json11/json11.cpp \
229 ext/json11/json11.hpp \
230 ext/libbpf/libbpf.h \
231 ext/luawrapper/include/LuaContext.hpp \
82a91ddf 232 fstrm_logger.cc fstrm_logger.hh \
85c7ca75 233 gettime.cc gettime.hh \
0e663c3b 234 htmlfiles.h \
bbfefc98 235 iputils.cc iputils.hh \
ede152ec 236 libssl.cc libssl.hh \
0e41337b 237 lock.hh \
43f91cad 238 logging.hh \
bbfefc98 239 misc.cc misc.hh \
0e663c3b 240 mplexer.hh \
bbfefc98 241 namespaces.hh \
32fbb2ab 242 noinitvector.hh \
fa980c59 243 packetcache.hh \
bbfefc98 244 pdnsexception.hh \
1c81cda0 245 pollmplexer.cc \
87f46425 246 protozero.cc protozero.hh \
bde73d5b 247 proxy-protocol.cc proxy-protocol.hh \
bbfefc98 248 qtype.cc qtype.hh \
ec469dd7 249 remote_logger.cc remote_logger.hh \
ecbe9133 250 sholder.hh \
9f4eb5cc 251 snmp-agent.cc snmp-agent.hh \
f8204e9e 252 sstuff.hh \
070fa3bf 253 stat_t.hh \
e4068153 254 statnode.cc statnode.hh \
1c81cda0 255 svc-records.cc svc-records.hh \
086a43eb 256 tcpiohandler-mplexer.hh \
a227f47d 257 tcpiohandler.cc tcpiohandler.hh \
519f5484 258 threadname.hh threadname.cc \
d61aa945 259 uuid-utils.hh uuid-utils.cc \
d4cd065a 260 views.hh \
a61dd3f3
Y
261 xpf.cc xpf.hh \
262 xsk.cc xsk.hh
bbfefc98 263
f441962a
RG
264testrunner_SOURCES = \
265 base64.hh \
fd51c832 266 bpf-filter.cc bpf-filter.hh \
f441962a 267 cachecleaner.hh \
3fc6d61c 268 channel.cc channel.hh \
f441962a 269 circular_buffer.hh \
6cf749d5 270 connection-management.hh \
fcf0f021 271 credentials.cc credentials.hh \
d372faa2 272 dns.cc dns.hh \
1c81cda0 273 dnscrypt.cc dnscrypt.hh \
0859e14a 274 dnsdist-async.cc dnsdist-async.hh \
b6e26895 275 dnsdist-backend.cc \
d629f5b0 276 dnsdist-backoff.hh \
f441962a 277 dnsdist-cache.cc dnsdist-cache.hh \
972d353a 278 dnsdist-concurrent-connections.hh \
44850d6e 279 dnsdist-crypto.cc dnsdist-crypto.hh \
a67613dd 280 dnsdist-dnsparser.cc dnsdist-dnsparser.hh \
9eb152c4 281 dnsdist-doh-common.cc dnsdist-doh-common.hh \
8a2dd7db 282 dnsdist-downstream-connection.hh \
838c2f00 283 dnsdist-dynblocks.cc dnsdist-dynblocks.hh \
fd51c832 284 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
f441962a 285 dnsdist-ecs.cc dnsdist-ecs.hh \
83dc6a38 286 dnsdist-edns.cc dnsdist-edns.hh \
592b1d99 287 dnsdist-idstate.hh \
aa4b6efa 288 dnsdist-kvs.cc dnsdist-kvs.hh \
b6e26895 289 dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \
fd51c832
RG
290 dnsdist-lua-bindings-dnsquestion.cc \
291 dnsdist-lua-bindings-kvs.cc \
1c81cda0 292 dnsdist-lua-bindings.cc \
a9599e73 293 dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \
1c81cda0 294 dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \
67ed7d3e 295 dnsdist-lua-network.cc dnsdist-lua-network.hh \
fd51c832 296 dnsdist-lua-vars.cc \
e8eb8a98 297 dnsdist-mac-address.cc dnsdist-mac-address.hh \
67cbba12 298 dnsdist-metrics.cc dnsdist-metrics.hh \
cf25b82b
RG
299 dnsdist-nghttp2-in.hh \
300 dnsdist-nghttp2.hh \
2c0e81bb 301 dnsdist-protocols.cc dnsdist-protocols.hh \
b7eb6b6e 302 dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \
f573af85 303 dnsdist-random.cc dnsdist-random.hh \
b8df8675 304 dnsdist-resolver.cc dnsdist-resolver.hh \
b3ccd3ea 305 dnsdist-rings.cc dnsdist-rings.hh \
3fc92d67 306 dnsdist-rule-chains.cc dnsdist-rule-chains.hh \
79ac0575 307 dnsdist-rules.cc dnsdist-rules.hh \
32a63bdb 308 dnsdist-session-cache.cc dnsdist-session-cache.hh \
651f3a09 309 dnsdist-svc.cc dnsdist-svc.hh \
b7eb6b6e 310 dnsdist-tcp-downstream.cc \
2c0e81bb 311 dnsdist-tcp.cc dnsdist-tcp.hh \
f441962a 312 dnsdist-xpf.cc dnsdist-xpf.hh \
2a5e9760 313 dnsdist-xsk.cc dnsdist-xsk.hh \
1c81cda0 314 dnsdist.hh \
f441962a
RG
315 dnslabeltext.cc \
316 dnsname.cc dnsname.hh \
317 dnsparser.hh dnsparser.cc \
318 dnswriter.cc dnswriter.hh \
86e28d2d 319 dolog.cc dolog.hh \
f441962a 320 ednscookies.cc ednscookies.hh \
b341ebf9 321 ednsextendederror.cc ednsextendederror.hh \
1c81cda0 322 ednsoptions.cc ednsoptions.hh \
f441962a 323 ednssubnet.cc ednssubnet.hh \
1c81cda0 324 ext/luawrapper/include/LuaContext.hpp \
f441962a
RG
325 gettime.cc gettime.hh \
326 iputils.cc iputils.hh \
327 misc.cc misc.hh \
328 namespaces.hh \
32fbb2ab 329 noinitvector.hh \
f441962a
RG
330 pdnsexception.hh \
331 pollmplexer.cc \
9bf0554f 332 proxy-protocol.cc proxy-protocol.hh \
f441962a
RG
333 qtype.cc qtype.hh \
334 sholder.hh \
f441962a 335 sstuff.hh \
070fa3bf 336 stat_t.hh \
e4068153 337 statnode.cc statnode.hh \
373914dc 338 svc-records.cc svc-records.hh \
1c81cda0 339 test-base64_cc.cc \
cd93bea9 340 test-channel.cc \
6cf749d5 341 test-connectionmanagement_hh.cc \
fcf0f021 342 test-credentials_cc.cc \
1c81cda0
PL
343 test-delaypipe_hh.cc \
344 test-dnscrypt_cc.cc \
baa91396 345 test-dnsdist-connections-cache.cc \
f05fbb73 346 test-dnsdist-dnsparser.cc \
7e413c79 347 test-dnsdist-lua-ffi.cc \
1c81cda0 348 test-dnsdist_cc.cc \
0859e14a 349 test-dnsdistasync.cc \
c212e66e 350 test-dnsdistbackend_cc.cc \
d629f5b0 351 test-dnsdistbackoff.cc \
1c81cda0 352 test-dnsdistdynblocks_hh.cc \
b341ebf9 353 test-dnsdistedns.cc \
1c81cda0
PL
354 test-dnsdistkvs_cc.cc \
355 test-dnsdistlbpolicies_cc.cc \
67ed7d3e 356 test-dnsdistluanetwork.cc \
c02b7e13 357 test-dnsdistnghttp2_common.hh \
1c81cda0
PL
358 test-dnsdistpacketcache_cc.cc \
359 test-dnsdistrings_cc.cc \
360 test-dnsdistrules_cc.cc \
651f3a09 361 test-dnsdistsvc_cc.cc \
b7eb6b6e 362 test-dnsdisttcp_cc.cc \
1c81cda0
PL
363 test-dnsparser_cc.cc \
364 test-iputils_hh.cc \
a51b35e1 365 test-luawrapper.cc \
1c81cda0
PL
366 test-mplexer.cc \
367 test-proxy_protocol_cc.cc \
f441962a 368 testrunner.cc \
1c81cda0 369 threadname.hh threadname.cc \
b6e26895 370 uuid-utils.hh uuid-utils.cc \
a61dd3f3
Y
371 xpf.cc xpf.hh \
372 xsk.cc xsk.hh
f441962a 373
bbfefc98 374dnsdist_LDFLAGS = \
375 $(AM_LDFLAGS) \
bfb7cc84 376 $(PROGRAM_LDFLAGS) \
b2024afc 377 -pthread
bbfefc98 378
379dnsdist_LDADD = \
a6158e7a 380 $(LUA_LIBS) \
d9de8b61 381 $(LIBEDIT_LIBS) \
a6158e7a
RK
382 $(RT_LIBS) \
383 $(YAHTTP_LIBS) \
e85e4d88 384 $(LIBSODIUM_LIBS) \
82a91ddf 385 $(FSTRM_LIBS) \
9f4eb5cc 386 $(SYSTEMD_LIBS) \
fdc3ea42 387 $(NET_SNMP_LIBS) \
496151cf 388 $(LIBCAP_LIBS) \
a0d8a0f0
OM
389 $(IPCRYPT_LIBS) \
390 $(ARC4RANDOM_LIBS)
bbfefc98 391
f441962a
RG
392testrunner_LDFLAGS = \
393 $(AM_LDFLAGS) \
394 $(PROGRAM_LDFLAGS) \
395 $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
396 -pthread
397
398testrunner_LDADD = \
399 $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
f441962a 400 $(FSTRM_LIBS) \
a9599e73
RG
401 $(LIBSODIUM_LIBS) \
402 $(LUA_LIBS) \
f441962a 403 $(RT_LIBS) \
a0d8a0f0
OM
404 $(LIBCAP_LIBS) \
405 $(ARC4RANDOM_LIBS)
f441962a 406
90fe8ae6
RG
407if HAVE_CDB
408dnsdist_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
409testrunner_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
410dnsdist_SOURCES += cdb.cc cdb.hh
411testrunner_SOURCES += cdb.cc cdb.hh
412endif
413
4ed8dfeb 414if HAVE_RE2
415dnsdist_LDADD += $(RE2_LIBS)
416endif
417
529f261b
PD
418if HAVE_LIBSSL
419dnsdist_LDADD += $(LIBSSL_LIBS)
420endif
421
a61dd3f3
Y
422if HAVE_XSK
423dnsdist_LDADD += -lbpf
424dnsdist_LDADD += -lxdp
425testrunner_LDADD += -lbpf
426testrunner_LDADD += -lxdp
427endif
428
f4b1f1fd 429if HAVE_LIBCRYPTO
529f261b 430dnsdist_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS)
b2504b29 431testrunner_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS)
496151cf 432dnsdist_SOURCES += ipcipher.cc ipcipher.hh
f4b1f1fd
RG
433endif
434
f441962a
RG
435if HAVE_LMDB
436dnsdist_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
437testrunner_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
ae27ae09
RG
438dnsdist_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
439testrunner_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
f441962a
RG
440endif
441
a227f47d
RG
442if HAVE_DNS_OVER_TLS
443if HAVE_GNUTLS
444dnsdist_LDADD += -lgnutls
445endif
a227f47d
RG
446endif
447
fbf14b03 448if HAVE_DNS_OVER_HTTPS
fbf14b03 449
7e8a05fa
RG
450if HAVE_GNUTLS
451dnsdist_LDADD += -lgnutls
452endif
453
fbf14b03 454if HAVE_LIBH2OEVLOOP
df5a4ff1 455dnsdist_SOURCES += doh.cc
fbf14b03
RG
456dnsdist_LDADD += $(LIBH2OEVLOOP_LIBS)
457endif
458
cf25b82b
RG
459if HAVE_NGHTTP2
460dnsdist_SOURCES += dnsdist-nghttp2-in.cc
461dnsdist_SOURCES += dnsdist-nghttp2.cc
462testrunner_SOURCES += dnsdist-nghttp2-in.cc
463testrunner_SOURCES += dnsdist-nghttp2.cc
464testrunner_SOURCES += test-dnsdistnghttp2-in_cc.cc \
465 test-dnsdistnghttp2_cc.cc
466dnsdist_LDADD += $(NGHTTP2_LDFLAGS) $(NGHTTP2_LIBS)
467testrunner_LDADD += $(NGHTTP2_LDFLAGS) $(NGHTTP2_LIBS)
468endif
469
fbf14b03
RG
470endif
471
57a94421 472if HAVE_DNS_OVER_QUIC
57a94421 473dnsdist_SOURCES += doq.cc
e891e0b9
CHB
474endif
475
476if HAVE_DNS_OVER_HTTP3
477dnsdist_SOURCES += doh3.cc
478endif
479
faeb9fd6 480if HAVE_QUICHE
4af3e47d 481AM_CPPFLAGS += $(QUICHE_CFLAGS)
faeb9fd6 482dnsdist_LDADD += $(QUICHE_LDFLAGS) $(QUICHE_LIBS)
ed16c81f 483dnsdist_SOURCES += doq-common.cc
faeb9fd6 484endif
57a94421 485
65613131
PL
486if !HAVE_LUA_HPP
487BUILT_SOURCES += lua.hpp
488nodist_dnsdist_SOURCES = lua.hpp
65613131 489endif
b2eccf5f 490
bbd6bca1
PD
491CLEANFILES += lua.hpp
492
9674edb2
RG
493if HAVE_FREEBSD
494dnsdist_SOURCES += kqueuemplexer.cc
51b5346a
O
495testrunner_SOURCES += kqueuemplexer.cc
496endif
497
498if HAVE_OPENBSD
499dnsdist_SOURCES += kqueuemplexer.cc
9674edb2
RG
500testrunner_SOURCES += kqueuemplexer.cc
501endif
502
503if HAVE_LINUX
504dnsdist_SOURCES += epollmplexer.cc
505testrunner_SOURCES += epollmplexer.cc
506endif
507
508if HAVE_SOLARIS
509dnsdist_SOURCES += \
b2024afc
FM
510 devpollmplexer.cc \
511 portsmplexer.cc
9674edb2 512testrunner_SOURCES += \
b2024afc
FM
513 devpollmplexer.cc \
514 portsmplexer.cc
9674edb2
RG
515endif
516
cabda036
RG
517if FUZZ_TARGETS
518
519LIB_FUZZING_ENGINE ?= standalone_fuzz_target_runner.o
520
521standalone_fuzz_target_runner.o: standalone_fuzz_target_runner.cc
522
523fuzz_targets_programs = \
524 fuzz_target_dnsdistcache
525
a8c3569c
RG
526if HAVE_XSK
527fuzz_targets_programs += \
528 fuzz_target_xsk
529endif
530
cabda036
RG
531fuzz_targets: $(ARC4RANDOM_LIBS) $(fuzz_targets_programs)
532
533bin_PROGRAMS += \
534 $(fuzz_targets_programs)
535
536fuzz_targets_libs = \
537 $(LIBCRYPTO_LIBS) \
4d1767d1 538 $(ARC4RANDOM_LIBS) \
cabda036
RG
539 $(LIB_FUZZING_ENGINE)
540
541fuzz_targets_ldflags = \
542 $(AM_LDFLAGS) \
543 $(DYNLINKFLAGS) \
544 $(LIBCRYPTO_LDFLAGS) \
545 $(FUZZING_LDFLAGS)
546
547# we need the mockup runner to be built, but not linked if a real fuzzing engine is used
548fuzz_targets_deps = standalone_fuzz_target_runner.o
549
550fuzz_target_dnsdistcache_SOURCES = \
551 channel.hh channel.cc \
552 dns.cc dns.hh \
553 dnsdist-cache.cc dnsdist-cache.hh \
90686725 554 dnsdist-dnsparser.cc dnsdist-dnsparser.hh \
cabda036
RG
555 dnsdist-ecs.cc dnsdist-ecs.hh \
556 dnsdist-idstate.hh \
557 dnsdist-protocols.cc dnsdist-protocols.hh \
558 dnslabeltext.cc \
559 dnsname.cc dnsname.hh \
560 dnsparser.cc dnsparser.hh \
561 dnswriter.cc dnswriter.hh \
562 doh.hh \
563 ednsoptions.cc ednsoptions.hh \
564 ednssubnet.cc ednssubnet.hh \
565 fuzz_dnsdistcache.cc \
566 iputils.cc iputils.hh \
567 misc.cc misc.hh \
568 packetcache.hh \
569 qtype.cc qtype.hh \
570 svc-records.cc svc-records.hh
571
572fuzz_target_dnsdistcache_DEPENDENCIES = $(fuzz_targets_deps)
573fuzz_target_dnsdistcache_LDFLAGS = $(fuzz_targets_ldflags)
574fuzz_target_dnsdistcache_LDADD = $(fuzz_targets_libs)
575
a8c3569c
RG
576if HAVE_XSK
577fuzz_target_xsk_SOURCES = \
578 dnslabeltext.cc \
579 dnsname.cc dnsname.hh \
580 fuzz_xsk.cc \
581 gettime.cc gettime.hh \
582 iputils.cc iputils.hh \
583 misc.cc misc.hh \
584 xsk.cc xsk.hh
585fuzz_target_xsk_DEPENDENCIES = $(fuzz_targets_deps)
586fuzz_target_xsk_LDFLAGS = $(fuzz_targets_ldflags)
587fuzz_target_xsk_LDADD = $(fuzz_targets_libs) -lbpf -lxdp
588endif # HAVE_XSK
589
590endif # FUZZ_TARGETS
cabda036 591
f68a9074
PL
592MANPAGES=dnsdist.1
593
594dist_man_MANS=$(MANPAGES)
595
98508251 596if HAVE_VENV
20d81666
PL
597if !HAVE_MANPAGES
598$(MANPAGES): %: docs/manpages/%.rst .venv
599 $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $<
600endif # if !HAVE_MANPAGES
601
602.venv: docs/requirements.txt
98508251
KF
603 $(PYTHON) -m venv .venv
604 .venv/bin/pip install -U pip setuptools setuptools-git wheel
20d81666
PL
605 .venv/bin/pip install -r $<
606
607latex/dnsdist.pdf: docs/** .venv
608 .venv/bin/python -msphinx -M latexpdf docs .
609
610dnsdist.pdf: latex/dnsdist.pdf
611 mv $< $@
612
613html-docs.tar.bz2: html-docs
614 tar cjf $@ $<
615
616html-docs: docs/** .venv
617 .venv/bin/python -msphinx -b html docs html-docs
618
619all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf
620
621upload-docs: all-docs
60c95446
PL
622 rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org
623 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org
624 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org
20d81666 625
98508251 626else # if HAVE_VENV
f68a9074 627$(MANPAGES):
98508251 628 @echo "You need Python 3 and the 'venv' module to generate the manpages"
20d81666
PL
629 exit 1
630
631html-docs: %: docs/manpages/%.rst .venv
98508251 632 @echo "You need Python 3 and the 'venv' module to generate the HTML docs"
20d81666
PL
633 exit 1
634
635dnsdist.pdf:
98508251 636 @echo "You need Python 3 and the 'venv' module to generate the PDF"
f68a9074 637 exit 1
f68a9074 638endif
6ab65223
PL
639
640if HAVE_SYSTEMD
641dnsdist.service: dnsdist.service.in
f40f664d 642 $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' -e 's![@]service_user[@]!$(service_user)!' -e 's![@]service_group[@]!$(service_group)!' < $< > $@
a3dfb540 643if !HAVE_SYSTEMD_LOCK_PERSONALITY
6992cb2d 644 $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
a3dfb540
RG
645endif
646if !HAVE_SYSTEMD_PRIVATE_DEVICES
6992cb2d 647 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
a3dfb540
RG
648endif
649if !HAVE_SYSTEMD_PRIVATE_TMP
6992cb2d 650 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@
a3dfb540 651endif
3d559c55
RG
652if !HAVE_SYSTEMD_PRIVATE_USERS
653 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateUsers/' $@
654endif
655if !HAVE_SYSTEMD_PROTECT_CLOCK
656 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectClock/' $@
657endif
a3dfb540 658if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS
6992cb2d 659 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@
a3dfb540
RG
660endif
661if !HAVE_SYSTEMD_PROTECT_HOME
6992cb2d 662 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@
a3dfb540 663endif
3d559c55
RG
664if !HAVE_SYSTEMD_PROTECT_HOSTNAME
665 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHostname/' $@
666endif
667if !HAVE_SYSTEMD_PROTECT_KERNEL_LOGS
668 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelLogs/' $@
669endif
a3dfb540 670if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES
6992cb2d 671 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@
a3dfb540
RG
672endif
673if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES
6992cb2d 674 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@
a3dfb540
RG
675endif
676if !HAVE_SYSTEMD_PROTECT_SYSTEM
6992cb2d 677 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@
a3dfb540
RG
678endif
679if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES
6992cb2d 680 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@
a3dfb540
RG
681endif
682if !HAVE_SYSTEMD_RESTRICT_NAMESPACES
6992cb2d 683 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@
a3dfb540
RG
684endif
685if !HAVE_SYSTEMD_RESTRICT_REALTIME
6992cb2d 686 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@
a3dfb540 687endif
3d559c55
RG
688if !HAVE_SYSTEMD_RESTRICT_SUIDSGID
689 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictSUIDSGID/' $@
690endif
a3dfb540 691if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES
6992cb2d 692 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@
a3dfb540
RG
693endif
694if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER
6992cb2d 695 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@
a3dfb540 696endif
3a0c3b68
PL
697if !HAVE_SYSTEMD_PROTECT_PROC
698 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectProc/' $@
699endif
77a8401f
PL
700if !HAVE_SYSTEMD_PRIVATE_IPC
701 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateIPC/' $@
702endif
703if !HAVE_SYSTEMD_REMOVE_IPC
704 $(AM_V_GEN)perl -ni -e 'print unless /^RemoveIPC/' $@
705endif
6ab65223 706
aa663221 707dnsdist@.service: dnsdist.service
fcbada45
PL
708 $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' \
709 -e 's!RuntimeDirectory=.*!&-%i!' \
54b562cb 710 -e 's!SyslogIdentifier=.*!&-%i!' \
fcbada45 711 < $< >$@
aa663221 712
6ab65223
PL
713systemdsystemunitdir = $(SYSTEMD_DIR)
714
715systemdsystemunit_DATA = \
aa663221
PL
716 dnsdist.service \
717 dnsdist@.service
50169e30
CH
718
719CLEANFILES += \
720 dnsdist.service \
721 dnsdist@.service
6ab65223 722endif
65613131
PL
723
724if !HAVE_LUA_HPP
725include lua_hpp.mk
726endif