]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsdistdist/Makefile.am
Merge pull request #7671 from Habbie/epel-python3
[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 EXTRA_DIST=COPYING \
49 dnslabeltext.rl \
50 dnsdistconf.lua \
51 dnsmessage.proto \
52 dnstap.proto \
53 README.md \
54 delaypipe.cc delaypipe.hh \
55 html \
56 contrib \
57 ext/incbin/UNLICENSE \
58 incfiles \
59 src_js \
60 dnsdist.service.in \
61 lua_hpp.mk \
62 bpf-filter.main.ebpf \
63 bpf-filter.qname.ebpf \
64 bpf-filter.ebpf.src \
65 DNSDIST-MIB.txt \
66 devpollmplexer.cc \
67 epollmplexer.cc \
68 kqueuemplexer.cc \
69 portsmplexer.cc \
70 builder-support/gen-version
71
72 bin_PROGRAMS = dnsdist
73
74 if UNIT_TESTS
75 noinst_PROGRAMS = testrunner
76 TESTS_ENVIRONMENT = env BOOST_TEST_LOG_LEVEL=message SRCDIR='$(srcdir)'
77 TESTS=testrunner
78 else
79 check-local:
80 @echo "Unit tests are not enabled"
81 @echo "Run ./configure --enable-unit-tests"
82 endif
83
84 dnsdist-web.$(OBJEXT): htmlfiles.h
85
86 dnsdist_SOURCES = \
87 ascii.hh \
88 base64.hh \
89 bpf-filter.cc bpf-filter.hh \
90 cachecleaner.hh \
91 capabilities.cc capabilities.hh \
92 dns.cc dns.hh \
93 dnscrypt.cc dnscrypt.hh \
94 dnsdist.cc dnsdist.hh \
95 dnsdist-dynbpf.cc dnsdist-dynbpf.hh \
96 dnsdist-cache.cc dnsdist-cache.hh \
97 dnsdist-carbon.cc \
98 dnsdist-console.cc dnsdist-console.hh \
99 dnsdist-dnscrypt.cc \
100 dnsdist-dynblocks.hh \
101 dnsdist-ecs.cc dnsdist-ecs.hh \
102 dnsdist-idstate.cc \
103 dnsdist-lua.hh dnsdist-lua.cc \
104 dnsdist-lua-actions.cc \
105 dnsdist-lua-bindings.cc \
106 dnsdist-lua-bindings-dnsquestion.cc \
107 dnsdist-lua-inspection.cc \
108 dnsdist-lua-inspection-ffi.cc dnsdist-lua-inspection-ffi.hh \
109 dnsdist-lua-rules.cc \
110 dnsdist-lua-vars.cc \
111 dnsdist-protobuf.cc dnsdist-protobuf.hh \
112 dnsdist-rings.cc dnsdist-rings.hh \
113 dnsdist-rules.hh \
114 dnsdist-secpoll.cc dnsdist-secpoll.hh \
115 dnsdist-snmp.cc dnsdist-snmp.hh \
116 dnsdist-tcp.cc \
117 dnsdist-web.cc \
118 dnsdist-xpf.cc dnsdist-xpf.hh \
119 dnslabeltext.cc \
120 dnsname.cc dnsname.hh \
121 dnsparser.hh dnsparser.cc \
122 dnswriter.cc dnswriter.hh \
123 dolog.hh \
124 ednsoptions.cc ednsoptions.hh \
125 ednscookies.cc ednscookies.hh \
126 ednssubnet.cc ednssubnet.hh \
127 fstrm_logger.cc fstrm_logger.hh \
128 gettime.cc gettime.hh \
129 htmlfiles.h \
130 iputils.cc iputils.hh \
131 lock.hh \
132 misc.cc misc.hh \
133 mplexer.hh \
134 namespaces.hh \
135 pdnsexception.hh \
136 protobuf.cc protobuf.hh \
137 dnstap.cc dnstap.hh \
138 qtype.cc qtype.hh \
139 remote_logger.cc remote_logger.hh \
140 pollmplexer.cc \
141 sholder.hh \
142 snmp-agent.cc snmp-agent.hh \
143 sodcrypto.cc sodcrypto.hh \
144 sstuff.hh \
145 statnode.cc statnode.hh \
146 tcpiohandler.cc tcpiohandler.hh \
147 threadname.hh threadname.cc \
148 uuid-utils.hh uuid-utils.cc \
149 xpf.cc xpf.hh \
150 ext/luawrapper/include/LuaContext.hpp \
151 ext/json11/json11.cpp \
152 ext/json11/json11.hpp \
153 ext/incbin/incbin.h \
154 ext/libbpf/libbpf.h
155
156 dnsdist_LDFLAGS = \
157 $(AM_LDFLAGS) \
158 $(PROGRAM_LDFLAGS) \
159 -pthread
160
161 dnsdist_LDADD = \
162 $(LUA_LIBS) \
163 $(LIBEDIT_LIBS) \
164 $(RT_LIBS) \
165 $(YAHTTP_LIBS) \
166 $(LIBSODIUM_LIBS) \
167 $(FSTRM_LIBS) \
168 $(SANITIZER_FLAGS) \
169 $(SYSTEMD_LIBS) \
170 $(NET_SNMP_LIBS) \
171 $(LIBCAP_LIBS) \
172 $(IPCRYPT_LIBS)
173
174 if HAVE_RE2
175 dnsdist_LDADD += $(RE2_LIBS)
176 endif
177
178 if HAVE_LIBCRYPTO
179 dnsdist_LDADD += $(LIBCRYPTO_LIBS)
180 dnsdist_SOURCES += ipcipher.cc ipcipher.hh
181 endif
182
183 if HAVE_DNS_OVER_TLS
184 if HAVE_GNUTLS
185 dnsdist_LDADD += -lgnutls
186 endif
187
188 if HAVE_LIBSSL
189 dnsdist_LDADD += $(LIBSSL_LIBS)
190 endif
191 endif
192
193 if !HAVE_LUA_HPP
194 BUILT_SOURCES += lua.hpp
195 nodist_dnsdist_SOURCES = lua.hpp
196 CLEANFILES += lua.hpp
197 endif
198
199 if HAVE_PROTOBUF
200 if HAVE_PROTOC
201 dnsmessage.pb.cc: dnsmessage.proto
202 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
203
204 dnstap.pb.cc: dnstap.proto
205 $(AM_V_GEN)$(PROTOC) -I$(srcdir) --cpp_out=./ $<
206
207 BUILT_SOURCES += dnsmessage.pb.cc dnstap.pb.cc
208
209 nodist_dnsdist_SOURCES = dnsmessage.pb.cc dnsmessage.pb.h dnstap.pb.cc dnstap.pb.h
210 dnsdist_LDADD += $(PROTOBUF_LIBS)
211
212 dnsdist.$(OBJEXT): dnsmessage.pb.cc dnstap.pb.cc
213 endif
214 endif
215
216 testrunner_SOURCES = \
217 base64.hh \
218 dns.hh \
219 test-base64_cc.cc \
220 test-delaypipe_hh.cc \
221 test-dnscrypt_cc.cc \
222 test-dnsdist_cc.cc \
223 test-dnsdistdynblocks_hh.cc \
224 test-dnsdistpacketcache_cc.cc \
225 test-dnsdistrings_cc.cc \
226 test-dnsdistrules_cc.cc \
227 test-dnsparser_cc.cc \
228 test-iputils_hh.cc \
229 test-mplexer.cc \
230 cachecleaner.hh \
231 dnsdist.hh \
232 dnsdist-cache.cc dnsdist-cache.hh \
233 dnsdist-ecs.cc dnsdist-ecs.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 qtype.cc qtype.hh \
251 sholder.hh \
252 sodcrypto.cc \
253 sstuff.hh \
254 statnode.cc statnode.hh \
255 threadname.hh threadname.cc \
256 testrunner.cc \
257 xpf.cc xpf.hh
258
259 if HAVE_FREEBSD
260 dnsdist_SOURCES += kqueuemplexer.cc
261 testrunner_SOURCES += kqueuemplexer.cc
262 endif
263
264 if HAVE_LINUX
265 dnsdist_SOURCES += epollmplexer.cc
266 testrunner_SOURCES += epollmplexer.cc
267 endif
268
269 if HAVE_SOLARIS
270 dnsdist_SOURCES += \
271 devpollmplexer.cc \
272 portsmplexer.cc
273 testrunner_SOURCES += \
274 devpollmplexer.cc \
275 portsmplexer.cc
276 endif
277
278 testrunner_LDFLAGS = \
279 $(AM_LDFLAGS) \
280 $(PROGRAM_LDFLAGS) \
281 $(BOOST_UNIT_TEST_FRAMEWORK_LDFLAGS) \
282 -pthread
283
284 testrunner_LDADD = \
285 $(BOOST_UNIT_TEST_FRAMEWORK_LIBS) \
286 $(LIBSODIUM_LIBS) \
287 $(FSTRM_LIBS) \
288 $(RT_LIBS) \
289 $(SANITIZER_FLAGS) \
290 $(LIBCAP_LIBS)
291
292 MANPAGES=dnsdist.1
293
294 dist_man_MANS=$(MANPAGES)
295
296 if HAVE_VIRTUALENV
297 if !HAVE_MANPAGES
298 $(MANPAGES): %: docs/manpages/%.rst .venv
299 $(AM_V_GEN).venv/bin/python -msphinx -b man docs . $<
300 endif # if !HAVE_MANPAGES
301
302 .venv: docs/requirements.txt
303 virtualenv .venv
304 .venv/bin/pip install -U pip setuptools setuptools-git
305 .venv/bin/pip install -r $<
306
307 latex/dnsdist.pdf: docs/** .venv
308 .venv/bin/python -msphinx -M latexpdf docs .
309
310 dnsdist.pdf: latex/dnsdist.pdf
311 mv $< $@
312
313 html-docs.tar.bz2: html-docs
314 tar cjf $@ $<
315
316 html-docs: docs/** .venv
317 .venv/bin/python -msphinx -b html docs html-docs
318
319 all-docs: html-docs html-docs.tar.bz2 dnsdist.pdf
320
321 upload-docs: all-docs
322 rsync -crv --delete --no-p --chmod=g=rwX --exclude '*~' ./html-docs/ web1.powerdns.com:/srv/www/dnsdist.org
323 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./html-docs.tar.bz2 web1.powerdns.com:/srv/www/dnsdist.org
324 rsync -crv --no-p --chmod=g=rwX --exclude '*~' ./dnsdist.pdf web1.powerdns.com:/srv/www/dnsdist.org
325
326 else # if HAVE_VIRTUALENV
327 $(MANPAGES):
328 @echo "You need virtualenv to generate the manpages"
329 exit 1
330
331 html-docs: %: docs/manpages/%.rst .venv
332 @echo "You need virtualenv to generate the HTML documentation"
333 exit 1
334
335 dnsdist.pdf:
336 @echo "You need virtualenv to generate the pdf documentation"
337 exit 1
338 endif
339
340 if HAVE_SYSTEMD
341 dnsdist.service: dnsdist.service.in
342 $(AM_V_GEN)sed -e 's![@]bindir[@]!$(bindir)!' < $< > $@
343 if !HAVE_SYSTEMD_LOCK_PERSONALITY
344 $(AM_V_GEN)perl -ni -e 'print unless /^LockPersonality/' $@
345 endif
346 if !HAVE_SYSTEMD_PRIVATE_DEVICES
347 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateDevices/' $@
348 endif
349 if !HAVE_SYSTEMD_PRIVATE_TMP
350 $(AM_V_GEN)perl -ni -e 'print unless /^PrivateTmp/' $@
351 endif
352 if !HAVE_SYSTEMD_PROTECT_CONTROL_GROUPS
353 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectControlGroups/' $@
354 endif
355 if !HAVE_SYSTEMD_PROTECT_HOME
356 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectHome/' $@
357 endif
358 if !HAVE_SYSTEMD_PROTECT_KERNEL_MODULES
359 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelModules/' $@
360 endif
361 if !HAVE_SYSTEMD_PROTECT_KERNEL_TUNABLES
362 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectKernelTunables/' $@
363 endif
364 if !HAVE_SYSTEMD_PROTECT_SYSTEM
365 $(AM_V_GEN)perl -ni -e 'print unless /^ProtectSystem/' $@
366 endif
367 if !HAVE_SYSTEMD_RESTRICT_ADDRESS_FAMILIES
368 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictAddressFamilies/' $@
369 endif
370 if !HAVE_SYSTEMD_RESTRICT_NAMESPACES
371 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictNamespaces/' $@
372 endif
373 if !HAVE_SYSTEMD_RESTRICT_REALTIME
374 $(AM_V_GEN)perl -ni -e 'print unless /^RestrictRealtime/' $@
375 endif
376 if !HAVE_SYSTEMD_SYSTEM_CALL_ARCHITECTURES
377 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallArchitectures/' $@
378 endif
379 if !HAVE_SYSTEMD_SYSTEM_CALL_FILTER
380 $(AM_V_GEN)perl -ni -e 'print unless /^SystemCallFilter/' $@
381 endif
382
383 dnsdist@.service: dnsdist.service
384 $(AM_V_GEN)sed -e 's!/dnsdist !&--config $(sysconfdir)/dnsdist-%i.conf !' < $< >$@
385
386 systemdsystemunitdir = $(SYSTEMD_DIR)
387
388 systemdsystemunit_DATA = \
389 dnsdist.service \
390 dnsdist@.service
391
392 CLEANFILES += \
393 dnsdist.service \
394 dnsdist@.service
395 endif
396
397 if !HAVE_LUA_HPP
398 include lua_hpp.mk
399 endif