]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsdistdist/Makefile.am
dnsdist: Add support for the processing of X-Forwarded-For headers
[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 dnsdist-lua-ffi-interface.inc \
14 dnstap.pb.cc \
15 dnstap.pb.h
16
17 dnslabeltext.cc: dnslabeltext.rl
18 $(AM_V_GEN)$(RAGEL) $< -o dnslabeltext.cc
19
20 BUILT_SOURCES=htmlfiles.h \
21 dnsdist-lua-ffi-interface.inc \
22 dnslabeltext.cc
23
24 htmlfiles.h: $(srcdir)/html/*
25 $(AM_V_GEN)$(srcdir)/incfiles $(srcdir) > $@.tmp
26 @mv $@.tmp $@
27
28 dnsdist-lua-ffi-interface.inc: dnsdist-lua-ffi-interface.h
29 echo 'R"FFIContent(' > $@
30 cat $< >> $@
31 echo ')FFIContent"' >> $@
32
33 SRC_JS_FILES := $(wildcard src_js/*.js)
34 MIN_JS_FILES := $(patsubst src_js/%.js,html/js/%.min.js,$(SRC_JS_FILES))
35
36 html/js/%.min.js: src_js/%.js
37 uglifyjs $< > $@
38
39 min_js: $(MIN_JS_FILES)
40
41 if HAVE_RE2
42 AM_CPPFLAGS += $(RE2_CFLAGS)
43 endif
44
45 if HAVE_DNS_OVER_TLS
46 if HAVE_LIBSSL
47 AM_CPPFLAGS += $(LIBSSL_CFLAGS)
48 endif
49
50 if HAVE_GNUTLS
51 AM_CPPFLAGS += $(GNUTLS_CFLAGS)
52 endif
53 endif
54
55 if HAVE_LIBCRYPTO
56 AM_CPPFLAGS += $(LIBCRYPTO_INCLUDES)
57 endif
58
59 if HAVE_CDB
60 AM_CPPFLAGS += $(CDB_CFLAGS)
61 endif
62
63 if HAVE_LMDB
64 AM_CPPFLAGS += $(LMDB_CFLAGS)
65 endif
66
67 if HAVE_DNS_OVER_HTTPS
68 if HAVE_LIBSSL
69 AM_CPPFLAGS += $(LIBSSL_CFLAGS)
70 endif
71
72 if HAVE_LIBH2OEVLOOP
73 AM_CPPFLAGS += $(LIBH2OEVLOOP_CFLAGS)
74 endif
75 endif
76
77 EXTRA_DIST=COPYING \
78 dnslabeltext.rl \
79 dnsdistconf.lua \
80 dnsmessage.proto \
81 dnstap.proto \
82 README.md \
83 delaypipe.cc delaypipe.hh \
84 html \
85 contrib \
86 ext/incbin/UNLICENSE \
87 incfiles \
88 src_js \
89 dnsdist.service.in \
90 lua_hpp.mk \
91 bpf-filter.main.ebpf \
92 bpf-filter.qname.ebpf \
93 bpf-filter.ebpf.src \
94 DNSDIST-MIB.txt \
95 devpollmplexer.cc \
96 epollmplexer.cc \
97 kqueuemplexer.cc \
98 portsmplexer.cc \
99 cdb.cc cdb.hh \
100 ext/lmdb-safe/lmdb-safe.cc ext/lmdb-safe/lmdb-safe.hh \
101 builder-support/gen-version
102
103 bin_PROGRAMS = dnsdist
104
105 if UNIT_TESTS
106 noinst_PROGRAMS = testrunner
107 TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message SRCDIR='$(srcdir)'
108 TESTS=testrunner
109 else
110 check-local:
111 @echo "Unit tests are not enabled"
112 @echo "Run ./configure --enable-unit-tests"
113 endif
114
115 dnsdist-web.$(OBJEXT): htmlfiles.h
116
117 dnsdist_SOURCES = \
118 ascii.hh \
119 base64.hh \
120 bpf-filter.cc bpf-filter.hh \
121 cachecleaner.hh \
122 capabilities.cc capabilities.hh \
123 circular_buffer.hh \
124 dns.cc dns.hh \
125 dnscrypt.cc dnscrypt.hh \
126 dnsdist.cc dnsdist.hh \
127 dnsdist-backend.cc \
128 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
129 dnsdist-cache.cc dnsdist-cache.hh \
130 dnsdist-carbon.cc \
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 \
136 dnsdist-idstate.cc \
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 \
157 dnsdist-rules.hh \
158 dnsdist-secpoll.cc dnsdist-secpoll.hh \
159 dnsdist-snmp.cc dnsdist-snmp.hh \
160 dnsdist-systemd.cc dnsdist-systemd.hh \
161 dnsdist-tcp.cc \
162 dnsdist-web.cc \
163 dnsdist-xpf.cc dnsdist-xpf.hh \
164 dnslabeltext.cc \
165 dnsname.cc dnsname.hh \
166 dnsparser.hh dnsparser.cc \
167 dnswriter.cc dnswriter.hh \
168 doh.hh doh.cc \
169 dolog.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 \
175 htmlfiles.h \
176 iputils.cc iputils.hh \
177 libssl.cc libssl.hh \
178 lock.hh \
179 misc.cc misc.hh \
180 mplexer.hh \
181 namespaces.hh \
182 pdnsexception.hh \
183 protobuf.cc protobuf.hh \
184 proxy-protocol.cc proxy-protocol.hh \
185 dnstap.cc dnstap.hh \
186 qtype.cc qtype.hh \
187 remote_logger.cc remote_logger.hh \
188 pollmplexer.cc \
189 sholder.hh \
190 snmp-agent.cc snmp-agent.hh \
191 sodcrypto.cc sodcrypto.hh \
192 sstuff.hh \
193 statnode.cc statnode.hh \
194 tcpiohandler.cc tcpiohandler.hh \
195 threadname.hh threadname.cc \
196 uuid-utils.hh uuid-utils.cc \
197 views.hh \
198 xpf.cc xpf.hh \
199 ext/luawrapper/include/LuaContext.hpp \
200 ext/json11/json11.cpp \
201 ext/json11/json11.hpp \
202 ext/incbin/incbin.h \
203 ext/libbpf/libbpf.h
204
205 testrunner_SOURCES = \
206 base64.hh \
207 dns.hh \
208 test-base64_cc.cc \
209 test-delaypipe_hh.cc \
210 test-dnscrypt_cc.cc \
211 test-dnsdist_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 \
219 test-iputils_hh.cc \
220 test-mplexer.cc \
221 test-proxy_protocol_cc.cc \
222 cachecleaner.hh \
223 circular_buffer.hh \
224 dnsdist.hh \
225 dnsdist-backend.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 \
233 dnsdist-rings.hh \
234 dnsdist-xpf.cc dnsdist-xpf.hh \
235 dnscrypt.cc dnscrypt.hh \
236 dnslabeltext.cc \
237 dnsname.cc dnsname.hh \
238 dnsparser.hh dnsparser.cc \
239 dnswriter.cc dnswriter.hh \
240 dolog.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 \
246 misc.cc misc.hh \
247 namespaces.hh \
248 pdnsexception.hh \
249 pollmplexer.cc \
250 proxy-protocol.cc proxy-protocol.hh \
251 qtype.cc qtype.hh \
252 sholder.hh \
253 sodcrypto.cc \
254 sstuff.hh \
255 statnode.cc statnode.hh \
256 threadname.hh threadname.cc \
257 testrunner.cc \
258 uuid-utils.hh uuid-utils.cc \
259 xpf.cc xpf.hh \
260 ext/luawrapper/include/LuaContext.hpp
261
262 dnsdist_LDFLAGS = \
263 $(AM_LDFLAGS) \
264 $(PROGRAM_LDFLAGS) \
265 -pthread
266
267 dnsdist_LDADD = \
268 $(LUA_LIBS) \
269 $(LIBEDIT_LIBS) \
270 $(RT_LIBS) \
271 $(YAHTTP_LIBS) \
272 $(LIBSODIUM_LIBS) \
273 $(FSTRM_LIBS) \
274 $(SANITIZER_FLAGS) \
275 $(SYSTEMD_LIBS) \
276 $(NET_SNMP_LIBS) \
277 $(LIBCAP_LIBS) \
278 $(IPCRYPT_LIBS)
279
280 testrunner_LDFLAGS = \
281 $(AM_LDFLAGS) \
282 $(PROGRAM_LDFLAGS) \
283 $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
284 -pthread
285
286 testrunner_LDADD = \
287 $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
288 $(FSTRM_LIBS) \
289 $(LIBSODIUM_LIBS) \
290 $(LUA_LIBS) \
291 $(RT_LIBS) \
292 $(SANITIZER_FLAGS) \
293 $(LIBCAP_LIBS)
294
295 if HAVE_CDB
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
300 endif
301
302 if HAVE_RE2
303 dnsdist_LDADD += $(RE2_LIBS)
304 endif
305
306 if HAVE_LIBSSL
307 dnsdist_LDADD += $(LIBSSL_LIBS)
308 endif
309
310 if HAVE_LIBCRYPTO
311 dnsdist_LDADD += $(LIBCRYPTO_LDFLAGS) $(LIBCRYPTO_LIBS)
312 dnsdist_SOURCES += ipcipher.cc ipcipher.hh
313 endif
314
315 if HAVE_LMDB
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
320 endif
321
322 if HAVE_DNS_OVER_TLS
323 if HAVE_GNUTLS
324 dnsdist_LDADD += -lgnutls
325 endif
326 endif
327
328 if HAVE_DNS_OVER_HTTPS
329
330 if HAVE_LIBH2OEVLOOP
331 dnsdist_LDADD += $(LIBH2OEVLOOP_LIBS)
332 endif
333
334 endif
335
336 if !HAVE_LUA_HPP
337 BUILT_SOURCES += lua.hpp
338 nodist_dnsdist_SOURCES = lua.hpp
339 endif
340
341 CLEANFILES += lua.hpp
342
343 if HAVE_PROTOBUF
344 if HAVE_PROTOC
345 dnsmessage.pb.cc: dnsmessage.proto
346 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
347
348 dnstap.pb.cc: dnstap.proto
349 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
350
351 BUILT_SOURCES += dnsmessage.pb.cc dnstap.pb.cc
352
353 nodist_dnsdist_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc dnstap.pb.h
354 dnsdist_LDADD += $(PROTOBUF_LIBS)
355
356 dnsdist.$(OBJEXT): dnsmessage.pb.cc dnstap.pb.cc
357 endif
358 endif
359
360 if HAVE_FREEBSD
361 dnsdist_SOURCES += kqueuemplexer.cc
362 testrunner_SOURCES += kqueuemplexer.cc
363 endif
364
365 if HAVE_LINUX
366 dnsdist_SOURCES += epollmplexer.cc
367 testrunner_SOURCES += epollmplexer.cc
368 endif
369
370 if HAVE_SOLARIS
371 dnsdist_SOURCES += \
372 devpollmplexer.cc \
373 portsmplexer.cc
374 testrunner_SOURCES += \
375 devpollmplexer.cc \
376 portsmplexer.cc
377 endif
378
379 MANPAGES=dnsdist.1
380
381 dist_man_MANS=$(MANPAGES)
382
383 if HAVE_VIRTUALENV
384 if !HAVE_MANPAGES
385 $(MANPAGES): %: docs/manpages/%.rst .venv
386 $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $<
387 endif # if !HAVE_MANPAGES
388
389 .venv: docs/requirements.txt
390 virtualenv .venv
391 .venv/bin/pip install -U pip setuptools setuptools-git
392 .venv/bin/pip install -r $<
393
394 latex/dnsdist.pdf: docs/** .venv
395 .venv/bin/python -msphinx -M latexpdf docs .
396
397 dnsdist.pdf: latex/dnsdist.pdf
398 mv $< $@
399
400 html-docs.tar.bz2: html-docs
401 tar cjf $@ $<
402
403 html-docs: docs/** .venv
404 .venv/bin/python -msphinx -b html docs html-docs
405
406 all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf
407
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
412
413 else # if HAVE_VIRTUALENV
414 $(MANPAGES):
415 @echo "You need virtualenv to generate the manpages"
416 exit 1
417
418 html-docs: %: docs/manpages/%.rst .venv
419 @echo "You need virtualenv to generate the HTML documentation"
420 exit 1
421
422 dnsdist.pdf:
423 @echo "You need virtualenv to generate the pdf documentation"
424 exit 1
425 endif
426
427 if HAVE_SYSTEMD
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/' $@
432 endif
433 if !HAVE_SYSTEMD_PRIVATE_DEVICES
434 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
435 endif
436 if !HAVE_SYSTEMD_PRIVATE_TMP
437 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@
438 endif
439 if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS
440 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@
441 endif
442 if !HAVE_SYSTEMD_PROTECT_HOME
443 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@
444 endif
445 if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES
446 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@
447 endif
448 if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES
449 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@
450 endif
451 if !HAVE_SYSTEMD_PROTECT_SYSTEM
452 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@
453 endif
454 if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES
455 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@
456 endif
457 if !HAVE_SYSTEMD_RESTRICT_NAMESPACES
458 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@
459 endif
460 if !HAVE_SYSTEMD_RESTRICT_REALTIME
461 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@
462 endif
463 if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES
464 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@
465 endif
466 if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER
467 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@
468 endif
469
470 dnsdist@.service: dnsdist.service
471 $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' < $< >$@
472
473 systemdsystemunitdir = $(SYSTEMD_DIR)
474
475 systemdsystemunit_DATA = \
476 dnsdist.service \
477 dnsdist@.service
478
479 CLEANFILES += \
480 dnsdist.service \
481 dnsdist@.service
482 endif
483
484 if !HAVE_LUA_HPP
485 include lua_hpp.mk
486 endif