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