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