1 AM_CPPFLAGS += $(SYSTEMD_CFLAGS) $(LUA_CFLAGS) $(LIBEDIT_CFLAGS) $(LIBSODIUM_CFLAGS) $(FSTRM_CFLAGS) $(YAHTTP_CFLAGS) $(SANITIZER_FLAGS) $(NET_SNMP_CFLAGS) $(LIBCAP_CFLAGS) -DSYSCONFDIR=\"${sysconfdir}\"
3 ACLOCAL_AMFLAGS = -I m4
13 dnsdist-lua-ffi-interface.inc \
17 dnslabeltext.cc: dnslabeltext.rl
18 $(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc
20 BUILT_SOURCES=htmlfiles.h \
21 dnsdist-lua-ffi-interface.inc \
24 htmlfiles.h: $(srcdir)/html/*
25 $(AM_V_GEN)$(srcdir)/incfiles $(srcdir) > $@.tmp
28 dnsdist-lua-ffi-interface.inc: dnsdist-lua-ffi-interface.h
29 echo 'R"FFIContent(' > $@
31 echo ')FFIContent"' >> $@
33 SRC_JS_FILES := $(wildcard src_js/*.js)
34 MIN_JS_FILES := $(patsubst src_js/%.js,html/js/%.min.js,$(SRC_JS_FILES))
36 html/js/%.min.js: src_js/%.js
39 min_js: $(MIN_JS_FILES)
42 AM_CPPFLAGS += $(RE2_CFLAGS)
47 AM_CPPFLAGS += $(LIBSSL_CFLAGS)
51 AM_CPPFLAGS += $(GNUTLS_CFLAGS)
56 AM_CPPFLAGS += $(LIBCRYPTO_INCLUDES)
60 AM_CPPFLAGS += $(CDB_CFLAGS)
64 AM_CPPFLAGS += $(LMDB_CFLAGS)
67 if HAVE_DNS_OVER_HTTPS
69 AM_CPPFLAGS += $(LIBSSL_CFLAGS)
73 AM_CPPFLAGS += $(LIBH2OEVLOOP_CFLAGS)
83 delaypipe.cc delaypipe.hh \
86 ext/incbin/UNLICENSE \
91 bpf-filter.main.ebpf \
92 bpf-filter.qname.ebpf \
100 ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \
101 builder-support/gen-version
103 bin_PROGRAMS = dnsdist
106 noinst_PROGRAMS = testrunner
107 TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message SRCDIR='$(srcdir)'
111 @echo "Unit tests are not enabled"
112 @echo "Run ./configure --enable-unit-tests"
115 dnsdist-web.$(OBJEXT): htmlfiles.h
120 bpf-filter.cc bpf-filter.hh \
122 capabilities.cc capabilities.hh \
125 dnscrypt.cc dnscrypt.hh \
126 dnsdist.cc dnsdist.hh \
128 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
129 dnsdist-cache.cc dnsdist-cache.hh \
131 dnsdist-console.cc dnsdist-console.hh \
132 dnsdist-dnscrypt.cc \
133 dnsdist-dynblocks.cc dnsdist-dynblocks.hh \
134 dnsdist-ecs.cc dnsdist-ecs.hh \
135 dnsdist-healthchecks.cc dnsdist-healthchecks.hh \
137 dnsdist-kvs.hh dnsdist-kvs.cc \
138 dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \
139 dnsdist-lua.hh dnsdist-lua.cc \
140 dnsdist-lua-actions.cc \
141 dnsdist-lua-bindings.cc \
142 dnsdist-lua-bindings-dnscrypt.cc \
143 dnsdist-lua-bindings-dnsquestion.cc \
144 dnsdist-lua-bindings-kvs.cc \
145 dnsdist-lua-bindings-packetcache.cc \
146 dnsdist-lua-bindings-protobuf.cc \
147 dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \
148 dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \
149 dnsdist-lua-inspection.cc \
150 dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.hh \
151 dnsdist-lua-rules.cc \
152 dnsdist-lua-vars.cc \
153 dnsdist-prometheus.hh \
154 dnsdist-protobuf.cc dnsdist-protobuf.hh \
155 dnsdist-proxy-protocol.cc dnsdist-proxy-protocol.hh \
156 dnsdist-rings.cc dnsdist-rings.hh \
158 dnsdist-secpoll.cc dnsdist-secpoll.hh \
159 dnsdist-snmp.cc dnsdist-snmp.hh \
160 dnsdist-systemd.cc dnsdist-systemd.hh \
163 dnsdist-xpf.cc dnsdist-xpf.hh \
165 dnsname.cc dnsname.hh \
166 dnsparser.hh dnsparser.cc \
167 dnswriter.cc dnswriter.hh \
170 ednsoptions.cc ednsoptions.hh \
171 ednscookies.cc ednscookies.hh \
172 ednssubnet.cc ednssubnet.hh \
173 fstrm_logger.cc fstrm_logger.hh \
174 gettime.cc gettime.hh \
176 iputils.cc iputils.hh \
177 libssl.cc libssl.hh \
183 protobuf.cc protobuf.hh \
184 proxy-protocol.cc proxy-protocol.hh \
185 dnstap.cc dnstap.hh \
187 remote_logger.cc remote_logger.hh \
190 snmp-agent.cc snmp-agent.hh \
191 sodcrypto.cc sodcrypto.hh \
193 statnode.cc statnode.hh \
194 tcpiohandler.cc tcpiohandler.hh \
195 threadname.hh threadname.cc \
196 uuid-utils.hh uuid-utils.cc \
199 ext/luawrapper/include/LuaContext.hpp \
200 ext/json11/json11.cpp \
201 ext/json11/json11.hpp \
202 ext/incbin/incbin.h \
205 testrunner_SOURCES = \
209 test-delaypipe_hh.cc \
210 test-dnscrypt_cc.cc \
212 test-dnsdistdynblocks_hh.cc \
213 test-dnsdistkvs_cc.cc \
214 test-dnsdistlbpolicies_cc.cc \
215 test-dnsdistpacketcache_cc.cc \
216 test-dnsdistrings_cc.cc \
217 test-dnsdistrules_cc.cc \
218 test-dnsparser_cc.cc \
221 test-proxy_protocol_cc.cc \
226 dnsdist-cache.cc dnsdist-cache.hh \
227 dnsdist-dynblocks.cc dnsdist-dynblocks.hh \
228 dnsdist-ecs.cc dnsdist-ecs.hh \
229 dnsdist-kvs.cc dnsdist-kvs.hh \
230 dnsdist-lbpolicies.cc dnsdist-lbpolicies.hh \
231 dnsdist-lua-ffi.cc dnsdist-lua-ffi.hh \
232 dnsdist-lua-ffi-interface.h dnsdist-lua-ffi-interface.inc \
234 dnsdist-xpf.cc dnsdist-xpf.hh \
235 dnscrypt.cc dnscrypt.hh \
237 dnsname.cc dnsname.hh \
238 dnsparser.hh dnsparser.cc \
239 dnswriter.cc dnswriter.hh \
241 ednsoptions.cc ednsoptions.hh \
242 ednscookies.cc ednscookies.hh \
243 ednssubnet.cc ednssubnet.hh \
244 gettime.cc gettime.hh \
245 iputils.cc iputils.hh \
250 proxy-protocol.cc proxy-protocol.hh \
255 statnode.cc statnode.hh \
256 threadname.hh threadname.cc \
258 uuid-utils.hh uuid-utils.cc \
260 ext/luawrapper/include/LuaContext.hpp
280 testrunner_LDFLAGS = \
283 $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
287 $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
296 dnsdist_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
297 testrunner_LDADD += $(CDB_LDFLAGS) $(CDB_LIBS)
298 dnsdist_SOURCES += cdb.cc cdb.hh
299 testrunner_SOURCES += cdb.cc cdb.hh
303 dnsdist_LDADD += $(RE2_LIBS)
307 dnsdist_LDADD += $(LIBSSL_LIBS)
311 dnsdist_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS)
312 dnsdist_SOURCES += ipcipher.cc ipcipher.hh
316 dnsdist_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
317 testrunner_LDADD += $(LMDB_LDFLAGS) $(LMDB_LIBS)
318 dnsdist_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
319 testrunner_SOURCES += ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh
324 dnsdist_LDADD += -lgnutls
328 if HAVE_DNS_OVER_HTTPS
331 dnsdist_LDADD += $(LIBH2OEVLOOP_LIBS)
337 BUILT_SOURCES += lua.hpp
338 nodist_dnsdist_SOURCES = lua.hpp
341 CLEANFILES += lua.hpp
345 dnsmessage.pb.cc: dnsmessage.proto
346 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
348 dnstap.pb.cc: dnstap.proto
349 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
351 BUILT_SOURCES += dnsmessage.pb.cc dnstap.pb.cc
353 nodist_dnsdist_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc dnstap.pb.h
354 dnsdist_LDADD += $(PROTOBUF_LIBS)
356 dnsdist.$(OBJEXT): dnsmessage.pb.cc dnstap.pb.cc
361 dnsdist_SOURCES += kqueuemplexer.cc
362 testrunner_SOURCES += kqueuemplexer.cc
366 dnsdist_SOURCES += epollmplexer.cc
367 testrunner_SOURCES += epollmplexer.cc
374 testrunner_SOURCES += \
381 dist_man_MANS=$(MANPAGES)
385 $(MANPAGES): %: docs/manpages/%.rst .venv
386 $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $<
387 endif # if !HAVE_MANPAGES
389 .venv: docs/requirements.txt
391 .venv/bin/pip install -U pip setuptools setuptools-git
392 .venv/bin/pip install -r $<
394 latex/dnsdist.pdf: docs/** .venv
395 .venv/bin/python -msphinx -M latexpdf docs .
397 dnsdist.pdf: latex/dnsdist.pdf
400 html-docs.tar.bz2: html-docs
403 html-docs: docs/** .venv
404 .venv/bin/python -msphinx -b html docs html-docs
406 all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf
408 upload-docs: all-docs
409 rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org
410 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org
411 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org
413 else # if HAVE_VIRTUALENV
415 @echo "You need virtualenv to generate the manpages"
418 html-docs: %: docs/manpages/%.rst .venv
419 @echo "You need virtualenv to generate the HTML documentation"
423 @echo "You need virtualenv to generate the pdf documentation"
428 dnsdist.service: dnsdist.service.in
429 $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' -e 's![@]service_user[@]!$(service_user)!' -e 's![@]service_group[@]!$(service_group)!' < $< > $@
430 if !HAVE_SYSTEMD_LOCK_PERSONALITY
431 $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
433 if !HAVE_SYSTEMD_PRIVATE_DEVICES
434 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
436 if !HAVE_SYSTEMD_PRIVATE_TMP
437 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@
439 if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS
440 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@
442 if !HAVE_SYSTEMD_PROTECT_HOME
443 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@
445 if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES
446 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@
448 if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES
449 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@
451 if !HAVE_SYSTEMD_PROTECT_SYSTEM
452 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@
454 if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES
455 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@
457 if !HAVE_SYSTEMD_RESTRICT_NAMESPACES
458 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@
460 if !HAVE_SYSTEMD_RESTRICT_REALTIME
461 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@
463 if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES
464 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@
466 if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER
467 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@
470 dnsdist@.service: dnsdist.service
471 $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' < $< >$@
473 systemdsystemunitdir = $(SYSTEMD_DIR)
475 systemdsystemunit_DATA = \