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