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