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