]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/unbound/Makefile.in
MFH (r266114, r266138): upgrade to latest ldns and unbound
[FreeBSD/stable/10.git] / contrib / unbound / Makefile.in
1 # Copyright 2007 NLnet Labs
2 # See the file LICENSE for the license
3
4 SHELL=@SHELL@
5 VERSION=@PACKAGE_VERSION@
6 srcdir=@srcdir@
7 prefix=@prefix@
8 exec_prefix=@exec_prefix@
9 bindir=@bindir@
10 sbindir=@sbindir@
11 mandir=@mandir@
12 libdir=@libdir@
13 # datarootdir is here to please some checkers, use datadir.
14 datarootdir=@datarootdir@
15 datadir=@datadir@
16 includedir=@includedir@
17 doxygen=@doxygen@
18 libtool=@libtool@
19 staticexe=@staticexe@
20 EXEEXT=@EXEEXT@
21 configfile=@ub_conf_file@
22 UNBOUND_RUN_DIR=@UNBOUND_RUN_DIR@
23 CHECKLOCK_SRC=testcode/checklocks.c
24 CHECKLOCK_OBJ=@CHECKLOCK_OBJ@
25 WITH_PYTHONMODULE=@WITH_PYTHONMODULE@
26 WITH_PYUNBOUND=@WITH_PYUNBOUND@
27 PYTHON_SITE_PKG=@PYTHON_SITE_PKG@
28 PYTHONMOD_INSTALL=@PYTHONMOD_INSTALL@
29 PYTHONMOD_UNINSTALL=@PYTHONMOD_UNINSTALL@
30 PYUNBOUND_INSTALL=@PYUNBOUND_INSTALL@
31 PYUNBOUND_UNINSTALL=@PYUNBOUND_UNINSTALL@
32 UNBOUND_EVENT_INSTALL=@UNBOUND_EVENT_INSTALL@
33 UNBOUND_EVENT_UNINSTALL=@UNBOUND_EVENT_UNINSTALL@
34 UNBOUND_VERSION_MAJOR=@UNBOUND_VERSION_MAJOR@
35 UNBOUND_VERSION_MINOR=@UNBOUND_VERSION_MINOR@
36 UNBOUND_VERSION_MICRO=@UNBOUND_VERSION_MICRO@
37 ALLTARGET=@ALLTARGET@
38 INSTALLTARGET=@INSTALLTARGET@
39
40 # _unbound.la if pyunbound enabled.
41 PYUNBOUND_TARGET=@PYUNBOUND_TARGET@
42
43 # override $U variable which is used by autotools for deansification (for
44 # K&R C compilers), but causes problems if $U is defined in the env).
45 U=
46
47 SWIG=@SWIG@
48 YACC=@YACC@
49 LEX=@LEX@
50 STRIP=@STRIP@
51 CC=@CC@
52 CPPFLAGS=-I. @CPPFLAGS@
53 CFLAGS=@CFLAGS@
54 LDFLAGS=@LDFLAGS@
55 LIBS=@LIBS@
56 LIBOBJS=@LIBOBJS@
57 # filter out ctime_r from compat obj.
58 LIBOBJ_WITHOUT_CTIME=@LIBOBJ_WITHOUT_CTIME@
59 RUNTIME_PATH=@RUNTIME_PATH@
60 DEPFLAG=@DEPFLAG@
61 DATE=@CONFIG_DATE@
62 LIBTOOL=$(libtool)
63 BUILD=build/
64 UBSYMS=@UBSYMS@
65 EXTRALINK=@EXTRALINK@
66
67 WINDRES=@WINDRES@
68 LINT=splint
69 LINTFLAGS=+quiet -weak -warnposix -unrecog -Din_addr_t=uint32_t -Du_int=unsigned -Du_char=uint8_t -preproc -Drlimit=rlimit64 -D__gnuc_va_list=va_list -formatcode
70 #-Dglob64=glob -Dglobfree64=globfree
71 # compat with openssl linux edition.
72 LINTFLAGS+="-DBN_ULONG=unsigned long" -Dkrb5_int32=int "-Dkrb5_ui_4=unsigned int" -DPQ_64BIT=uint64_t -DRC4_INT=unsigned -fixedformalarray -D"ENGINE=unsigned" -D"RSA=unsigned" -D"DSA=unsigned" -D"EVP_PKEY=unsigned" -D"EVP_MD=unsigned" -D"SSL=unsigned" -D"SSL_CTX=unsigned" -D"X509=unsigned" -D"RC4_KEY=unsigned" -D"EVP_MD_CTX=unsigned" -D"ECDSA_SIG=DSA_SIG"
73 # compat with NetBSD
74 LINTFLAGS+=@NETBSD_LINTFLAGS@
75 # compat with OpenBSD
76 LINTFLAGS+="-Dsigset_t=long"
77 # FreeBSD
78 LINTFLAGS+="-D__uint16_t=uint16_t" "-DEVP_PKEY_ASN1_METHOD=int"
79
80 INSTALL=$(srcdir)/install-sh
81
82 #pythonmod.c is not here, it is mentioned by itself in its own rules,
83 #makedepend fails on missing interface.h otherwise.
84 PYTHONMOD_SRC=pythonmod/pythonmod_utils.c
85 # pythonmod.lo pythonmod_utils.lo if python mod enabled.
86 PYTHONMOD_OBJ=@PYTHONMOD_OBJ@
87 PYTHONMOD_HEADER=@PYTHONMOD_HEADER@
88 # libunbound/python/libunbound_wrap.c is dealt with by its own rules.
89 PYUNBOUND_SRC=
90 # libunbound_wrap.lo if python libunbound wrapper enabled.
91 PYUNBOUND_OBJ=@PYUNBOUND_OBJ@
92 COMMON_SRC=services/cache/dns.c services/cache/infra.c services/cache/rrset.c \
93 util/data/dname.c util/data/msgencode.c util/data/msgparse.c \
94 util/data/msgreply.c util/data/packed_rrset.c iterator/iterator.c \
95 iterator/iter_delegpt.c iterator/iter_donotq.c iterator/iter_fwd.c \
96 iterator/iter_hints.c iterator/iter_priv.c iterator/iter_resptype.c \
97 iterator/iter_scrub.c iterator/iter_utils.c services/listen_dnsport.c \
98 services/localzone.c services/mesh.c services/modstack.c \
99 services/outbound_list.c services/outside_network.c util/alloc.c \
100 util/config_file.c util/configlexer.c util/configparser.c \
101 util/fptr_wlist.c util/locks.c util/log.c util/mini_event.c util/module.c \
102 util/netevent.c util/net_help.c util/random.c util/rbtree.c util/regional.c \
103 util/rtt.c util/storage/dnstree.c util/storage/lookup3.c \
104 util/storage/lruhash.c util/storage/slabhash.c util/timehist.c util/tube.c \
105 util/winsock_event.c validator/autotrust.c validator/val_anchor.c \
106 validator/validator.c validator/val_kcache.c validator/val_kentry.c \
107 validator/val_neg.c validator/val_nsec3.c validator/val_nsec.c \
108 validator/val_secalgo.c validator/val_sigcrypt.c \
109 validator/val_utils.c $(CHECKLOCK_SRC)
110 COMMON_OBJ_WITHOUT_NETCALL=dns.lo infra.lo rrset.lo dname.lo msgencode.lo \
111 msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \
112 iter_donotq.lo iter_fwd.lo iter_hints.lo iter_priv.lo iter_resptype.lo \
113 iter_scrub.lo iter_utils.lo localzone.lo mesh.lo modstack.lo \
114 outbound_list.lo alloc.lo config_file.lo configlexer.lo configparser.lo \
115 fptr_wlist.lo locks.lo log.lo mini_event.lo module.lo net_help.lo \
116 random.lo rbtree.lo regional.lo rtt.lo dnstree.lo lookup3.lo lruhash.lo \
117 slabhash.lo timehist.lo tube.lo winsock_event.lo autotrust.lo val_anchor.lo \
118 validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \
119 val_secalgo.lo val_sigcrypt.lo val_utils.lo $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ)
120 COMMON_OBJ=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \
121 outside_network.lo
122 # set to $COMMON_OBJ or to "" if --enableallsymbols
123 COMMON_OBJ_ALL_SYMBOLS=@COMMON_OBJ_ALL_SYMBOLS@
124 COMPAT_SRC=compat/ctime_r.c compat/fake-rfc2553.c compat/gmtime_r.c \
125 compat/inet_aton.c compat/inet_ntop.c compat/inet_pton.c compat/malloc.c \
126 compat/memcmp.c compat/memmove.c compat/snprintf.c compat/strlcat.c \
127 compat/strlcpy.c compat/strptime.c
128 COMPAT_OBJ=$(LIBOBJS:.o=.lo)
129 COMPAT_OBJ_WITHOUT_CTIME=$(LIBOBJ_WITHOUT_CTIME:.o=.lo)
130 SLDNS_SRC=ldns/keyraw.c ldns/sbuffer.c ldns/wire2str.c ldns/parse.c \
131 ldns/parseutil.c ldns/rrdef.c ldns/str2wire.c
132 SLDNS_OBJ=keyraw.lo sbuffer.lo wire2str.lo parse.lo parseutil.lo rrdef.lo \
133 str2wire.lo
134 UNITTEST_SRC=testcode/unitanchor.c testcode/unitdname.c \
135 testcode/unitlruhash.c testcode/unitmain.c testcode/unitmsgparse.c \
136 testcode/unitneg.c testcode/unitregional.c testcode/unitslabhash.c \
137 testcode/unitverify.c testcode/readhex.c testcode/testpkts.c testcode/unitldns.c
138 UNITTEST_OBJ=unitanchor.lo unitdname.lo unitlruhash.lo unitmain.lo \
139 unitmsgparse.lo unitneg.lo unitregional.lo unitslabhash.lo unitverify.lo \
140 readhex.lo testpkts.lo unitldns.lo
141 UNITTEST_OBJ_LINK=$(UNITTEST_OBJ) worker_cb.lo $(COMMON_OBJ) $(SLDNS_OBJ) \
142 $(COMPAT_OBJ)
143 DAEMON_SRC=daemon/acl_list.c daemon/cachedump.c daemon/daemon.c \
144 daemon/remote.c daemon/stats.c daemon/unbound.c daemon/worker.c @WIN_DAEMON_SRC@
145 DAEMON_OBJ=acl_list.lo cachedump.lo daemon.lo remote.lo stats.lo unbound.lo \
146 worker.lo @WIN_DAEMON_OBJ@
147 DAEMON_OBJ_LINK=$(DAEMON_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \
148 $(COMPAT_OBJ) @WIN_DAEMON_OBJ_LINK@
149 CHECKCONF_SRC=smallapp/unbound-checkconf.c smallapp/worker_cb.c
150 CHECKCONF_OBJ=unbound-checkconf.lo worker_cb.lo
151 CHECKCONF_OBJ_LINK=$(CHECKCONF_OBJ) $(COMMON_OBJ_ALL_SYMBOLS) $(SLDNS_OBJ) \
152 $(COMPAT_OBJ) @WIN_CHECKCONF_OBJ_LINK@
153 CONTROL_SRC=smallapp/unbound-control.c
154 CONTROL_OBJ=unbound-control.lo 
155 CONTROL_OBJ_LINK=$(CONTROL_OBJ) worker_cb.lo $(COMMON_OBJ_ALL_SYMBOLS) \
156 $(SLDNS_OBJ) $(COMPAT_OBJ) @WIN_CONTROL_OBJ_LINK@
157 HOST_SRC=smallapp/unbound-host.c
158 HOST_OBJ=unbound-host.lo
159 HOST_OBJ_LINK=$(HOST_OBJ) $(SLDNS_OBJ) $(COMPAT_OBJ_WITHOUT_CTIME) @WIN_HOST_OBJ_LINK@
160 UBANCHOR_SRC=smallapp/unbound-anchor.c
161 UBANCHOR_OBJ=unbound-anchor.lo
162 UBANCHOR_OBJ_LINK=$(UBANCHOR_OBJ) \
163 $(COMPAT_OBJ_WITHOUT_CTIME) @WIN_UBANCHOR_OBJ_LINK@
164 TESTBOUND_SRC=testcode/testbound.c testcode/testpkts.c \
165 daemon/worker.c daemon/acl_list.c daemon/daemon.c daemon/stats.c \
166 testcode/replay.c testcode/fake_event.c
167 TESTBOUND_OBJ=testbound.lo replay.lo fake_event.lo
168 TESTBOUND_OBJ_LINK=$(TESTBOUND_OBJ) testpkts.lo worker.lo acl_list.lo \
169 daemon.lo stats.lo $(COMMON_OBJ_WITHOUT_NETCALL) $(SLDNS_OBJ) $(COMPAT_OBJ)
170 LOCKVERIFY_SRC=testcode/lock_verify.c
171 LOCKVERIFY_OBJ=lock_verify.lo
172 LOCKVERIFY_OBJ_LINK=$(LOCKVERIFY_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \
173 $(SLDNS_OBJ)
174 PETAL_SRC=testcode/petal.c
175 PETAL_OBJ=petal.lo
176 PETAL_OBJ_LINK=$(PETAL_OBJ) $(COMPAT_OBJ_WITHOUT_CTIME)
177 PKTVIEW_SRC=testcode/pktview.c testcode/readhex.c
178 PKTVIEW_OBJ=pktview.lo
179 PKTVIEW_OBJ_LINK=$(PKTVIEW_OBJ) worker_cb.lo readhex.lo $(COMMON_OBJ) \
180 $(COMPAT_OBJ) $(SLDNS_OBJ)
181 MEMSTATS_SRC=testcode/memstats.c
182 MEMSTATS_OBJ=memstats.lo
183 MEMSTATS_OBJ_LINK=$(MEMSTATS_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \
184 $(SLDNS_OBJ)
185 ASYNCLOOK_SRC=testcode/asynclook.c
186 ASYNCLOOK_OBJ=asynclook.lo
187 ASYNCLOOK_OBJ_LINK=$(ASYNCLOOK_OBJ) log.lo locks.lo $(COMPAT_OBJ)
188 STREAMTCP_SRC=testcode/streamtcp.c
189 STREAMTCP_OBJ=streamtcp.lo
190 STREAMTCP_OBJ_LINK=$(STREAMTCP_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \
191 $(SLDNS_OBJ)
192 PERF_SRC=testcode/perf.c
193 PERF_OBJ=perf.lo
194 PERF_OBJ_LINK=$(PERF_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) $(SLDNS_OBJ)
195 DELAYER_SRC=testcode/delayer.c
196 DELAYER_OBJ=delayer.lo
197 DELAYER_OBJ_LINK=$(DELAYER_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \
198 $(SLDNS_OBJ)
199 LIBUNBOUND_SRC=libunbound/context.c libunbound/libunbound.c \
200 libunbound/libworker.c
201 LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo
202 LIBUNBOUND_OBJ_LINK=$(LIBUNBOUND_OBJ) $(COMMON_OBJ) $(SLDNS_OBJ) $(COMPAT_OBJ)
203
204 # win apps or "" if not on windows
205 WINAPPS=@WINAPPS@
206 WIN_DAEMON_THE_SRC=winrc/win_svc.c winrc/w_inst.c
207 SVCINST_SRC=winrc/unbound-service-install.c
208 SVCINST_OBJ=unbound-service-install.lo
209 SVCINST_OBJ_LINK=$(SVCINST_OBJ) w_inst.lo rsrc_svcinst.o $(COMPAT_OBJ_WITHOUT_CTIME)
210 SVCUNINST_SRC=winrc/unbound-service-remove.c
211 SVCUNINST_OBJ=unbound-service-remove.lo
212 SVCUNINST_OBJ_LINK=$(SVCUNINST_OBJ) w_inst.lo rsrc_svcuninst.o \
213 $(COMPAT_OBJ_WITHOUT_CTIME)
214 ANCHORUPD_SRC=winrc/anchor-update.c
215 ANCHORUPD_OBJ=anchor-update.lo
216 ANCHORUPD_OBJ_LINK=$(ANCHORUPD_OBJ) rsrc_anchorupd.o $(COMPAT_OBJ_WITHOUT_CTIME)
217 RSRC_OBJ=rsrc_svcinst.o rsrc_svcuninst.o rsrc_anchorupd.o rsrc_unbound.o \
218         rsrc_unbound_host.o rsrc_unbound_anchor.o rsrc_unbound_control.o \
219         rsrc_unbound_checkconf.o
220
221 ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) \
222         $(TESTBOUND_SRC) $(LOCKVERIFY_SRC) $(PKTVIEW_SRC) \
223         $(MEMSTATS_SRC) $(CHECKCONF_SRC) $(LIBUNBOUND_SRC) $(HOST_SRC) \
224         $(ASYNCLOOK_SRC) $(STREAMTCP_SRC) $(PERF_SRC) $(DELAYER_SRC) \
225         $(CONTROL_SRC) $(UBANCHOR_SRC) $(PETAL_SRC) \
226         $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC)\
227         $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC)
228 ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \
229         $(TESTBOUND_OBJ) $(LOCKVERIFY_OBJ) $(PKTVIEW_OBJ) \
230         $(MEMSTATS_OBJ) $(CHECKCONF_OBJ) $(LIBUNBOUND_OBJ) $(HOST_OBJ) \
231         $(ASYNCLOOK_OBJ) $(STREAMTCP_OBJ) $(PERF_OBJ) $(DELAYER_OBJ) \
232         $(CONTROL_OBJ) $(UBANCHOR_OBJ) $(PETAL_OBJ) \
233         $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \
234         $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ)
235
236 COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS)
237 LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
238 LINK_LIB=$(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(staticexe) -version-info @LIBUNBOUND_CURRENT@:@LIBUNBOUND_REVISION@:@LIBUNBOUND_AGE@ -no-undefined
239
240 .PHONY: clean realclean doc lint all install uninstall tests test strip lib longtest longcheck check alltargets
241
242 all:    $(COMMON_OBJ) $(ALLTARGET)
243
244 alltargets:     unbound$(EXEEXT) unbound-checkconf$(EXEEXT) lib unbound-host$(EXEEXT) unbound-control$(EXEEXT) unbound-anchor$(EXEEXT) unbound-control-setup $(WINAPPS) $(PYUNBOUND_TARGET)
245
246 # compat with BSD make, register suffix, and an implicit rule to actualise it.
247 .SUFFIXES: .lo
248 .c.lo:
249         $(COMPILE) -o $@ -c $<
250
251 $(ALL_OBJ):
252         @@SOURCEDETERMINE@
253         $(COMPILE) -o $@ -c @SOURCEFILE@
254
255 $(RSRC_OBJ):
256         @@SOURCEDETERMINE@
257         $(WINDRES) $(CPPFLAGS) @SOURCEFILE@ $@
258
259 rsrc_svcinst.o: $(srcdir)/winrc/rsrc_svcinst.rc config.h
260 rsrc_svcuninst.o:       $(srcdir)/winrc/rsrc_svcuninst.rc config.h
261 rsrc_anchorupd.o:       $(srcdir)/winrc/rsrc_anchorupd.rc config.h
262 rsrc_unbound.o: $(srcdir)/winrc/rsrc_unbound.rc config.h
263 rsrc_unbound_host.o:    $(srcdir)/winrc/rsrc_unbound_host.rc config.h
264 rsrc_unbound_anchor.o:  $(srcdir)/winrc/rsrc_unbound_anchor.rc config.h
265 rsrc_unbound_control.o: $(srcdir)/winrc/rsrc_unbound_control.rc config.h
266 rsrc_unbound_checkconf.o:       $(srcdir)/winrc/rsrc_unbound_checkconf.rc config.h
267
268 TEST_BIN=asynclook$(EXEEXT) delayer$(EXEEXT) \
269         lock-verify$(EXEEXT) memstats$(EXEEXT) perf$(EXEEXT) \
270         petal$(EXEEXT) pktview$(EXEEXT) streamtcp$(EXEEXT) \
271         testbound$(EXEEXT) unittest$(EXEEXT)
272 tests:  all $(TEST_BIN)
273
274 check: test
275 longcheck: longtest
276
277 test:   unittest$(EXEEXT) testbound$(EXEEXT)
278         ./unittest$(EXEEXT)
279         ./testbound$(EXEEXT) -s
280         for x in testdata/*.rpl; do echo -n "$$x "; if ./testbound$(EXEEXT) -p $$x >/dev/null 2>&1; then echo OK; else echo failed; exit 1; fi done
281         @echo test OK
282
283 longtest:       tests
284         if test -x "`which bash`"; then bash testcode/do-tests.sh; else sh testcode/do-tests.sh; fi
285
286 lib:    libunbound.la unbound.h
287
288 libunbound.la:  $(LIBUNBOUND_OBJ_LINK)
289         $(LINK_LIB) $(UBSYMS) -o $@ $(LIBUNBOUND_OBJ_LINK) -rpath $(libdir) -lssl $(LIBS)
290
291 unbound$(EXEEXT):       $(DAEMON_OBJ_LINK) libunbound.la
292         $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS)
293
294 unbound-checkconf$(EXEEXT):     $(CHECKCONF_OBJ_LINK) libunbound.la
295         $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS)
296
297 unbound-control$(EXEEXT):       $(CONTROL_OBJ_LINK) libunbound.la
298         $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) -lssl $(LIBS)
299
300 unbound-host$(EXEEXT):  $(HOST_OBJ_LINK) libunbound.la
301         $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(LIBS)
302
303 unbound-anchor$(EXEEXT):        $(UBANCHOR_OBJ_LINK) libunbound.la
304         $(LINK) -o $@ $(UBANCHOR_OBJ_LINK) -L. -L.libs -lunbound -lexpat -lssl $(LIBS)
305
306 unbound-service-install$(EXEEXT):       $(SVCINST_OBJ_LINK)
307         $(LINK) -o $@ $(SVCINST_OBJ_LINK) $(LIBS)
308
309 unbound-service-remove$(EXEEXT):        $(SVCUNINST_OBJ_LINK)
310         $(LINK) -o $@ $(SVCUNINST_OBJ_LINK) $(LIBS)
311
312 anchor-update$(EXEEXT):  $(ANCHORUPD_OBJ_LINK) libunbound.la
313         $(LINK) -o $@ $(ANCHORUPD_OBJ_LINK) -L. -L.libs -lunbound $(LIBS)
314
315 unittest$(EXEEXT):      $(UNITTEST_OBJ_LINK)
316         $(LINK) -o $@ $(UNITTEST_OBJ_LINK) -lssl $(LIBS)
317
318 testbound$(EXEEXT):     $(TESTBOUND_OBJ_LINK)
319         $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) -lssl $(LIBS)
320
321 lock-verify$(EXEEXT):   $(LOCKVERIFY_OBJ_LINK)
322         $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) -lssl $(LIBS)
323
324 petal$(EXEEXT): $(PETAL_OBJ_LINK)
325         $(LINK) -o $@ $(PETAL_OBJ_LINK) -lssl $(LIBS)
326
327 pktview$(EXEEXT):       $(PKTVIEW_OBJ_LINK)
328         $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) -lssl $(LIBS)
329
330 memstats$(EXEEXT):      $(MEMSTATS_OBJ_LINK)
331         $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) -lssl $(LIBS)
332
333 asynclook$(EXEEXT):     $(ASYNCLOOK_OBJ_LINK) libunbound.la
334         $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) $(LIBS) -L. -L.libs -lunbound
335
336 streamtcp$(EXEEXT):     $(STREAMTCP_OBJ_LINK)
337         $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) -lssl $(LIBS)
338
339 perf$(EXEEXT):  $(PERF_OBJ_LINK)
340         $(LINK) -o $@ $(PERF_OBJ_LINK) -lssl $(LIBS)
341
342 delayer$(EXEEXT):       $(DELAYER_OBJ_LINK)
343         $(LINK) -o $@ $(DELAYER_OBJ_LINK) -lssl $(LIBS)
344
345 signit$(EXEEXT):        testcode/signit.c
346         $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ testcode/signit.c $(LDFLAGS) -lldns -lssl $(LIBS)
347
348 unbound.h:      $(srcdir)/libunbound/unbound.h
349         sed -e 's/@''UNBOUND_VERSION_MAJOR@/$(UNBOUND_VERSION_MAJOR)/' -e 's/@''UNBOUND_VERSION_MINOR@/$(UNBOUND_VERSION_MINOR)/' -e 's/@''UNBOUND_VERSION_MICRO@/$(UNBOUND_VERSION_MICRO)/' < $(srcdir)/libunbound/unbound.h > $@
350
351 unbound-control-setup:  $(srcdir)/smallapp/unbound-control-setup.sh
352         sed -e 's:^DESTDIR=.*$$:DESTDIR=$(UNBOUND_RUN_DIR):' < $(srcdir)/smallapp/unbound-control-setup.sh > $@
353         -chmod +x $@
354
355 # Python Module
356 pythonmod.lo pythonmod.o: $(srcdir)/pythonmod/pythonmod.c config.h \
357         pythonmod/interface.h \
358         $(srcdir)/pythonmod/pythonmod.h $(srcdir)/util/module.h \
359         $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
360         $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \
361         $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
362         $(srcdir)/services/outbound_list.h $(srcdir)/util/config_file.h \
363         $(srcdir)/pythonmod/pythonmod_utils.h $(srcdir)/util/netevent.h \
364         $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h \
365         $(srcdir)/services/cache/dns.h $(srcdir)/services/mesh.h \
366         $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h
367
368 pythonmod/interface.h:  $(srcdir)/pythonmod/interface.i config.h
369         @-if test ! -d pythonmod; then $(INSTALL) -d pythonmod; fi
370         $(SWIG) $(CPPFLAGS) -o $@ -python $(srcdir)/pythonmod/interface.i
371
372 libunbound_wrap.lo libunbound_wrap.o: libunbound/python/libunbound_wrap.c \
373         unbound.h
374 libunbound/python/libunbound_wrap.c:    $(srcdir)/libunbound/python/libunbound.i unbound.h
375         @-if test ! -d libunbound/python; then $(INSTALL) -d libunbound/python; fi
376         $(SWIG) -python -o $@ $(CPPFLAGS) $(srcdir)/libunbound/python/libunbound.i
377
378 # Pyunbound python unbound wrapper
379 _unbound.la:    libunbound_wrap.lo libunbound.la
380         $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -version-info @LIBUNBOUND_CURRENT@:@LIBUNBOUND_REVISION@:@LIBUNBOUND_AGE@ -no-undefined -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) L. -L.libs -lunbound $(LIBS)
381
382 util/config_file.c:     util/configparser.h
383 util/configlexer.c:  $(srcdir)/util/configlexer.lex util/configparser.h
384         @-if test ! -d util; then $(INSTALL) -d util; fi
385         if test "$(LEX)" != ":"; then \
386                 echo "#include \"config.h\"" > $@ ;\
387                 echo "#include \"util/configyyrename.h\"" >> $@ ;\
388                 $(LEX) -t $(srcdir)/util/configlexer.lex >> $@ ;\
389         fi
390
391 util/configparser.c util/configparser.h:  $(srcdir)/util/configparser.y
392         @-if test ! -d util; then $(INSTALL) -d util; fi
393         $(YACC) -d -o util/configparser.c $(srcdir)/util/configparser.y
394
395 clean:
396         rm -f *.o *.d *.lo *~ tags
397         rm -f unbound$(EXEEXT) unbound-checkconf$(EXEEXT) unbound-host$(EXEEXT) unbound-control$(EXEEXT) unbound-anchor$(EXEEXT) unbound-control-setup libunbound.la unbound.h
398         rm -f $(ALL_SRC:.c=.lint)
399         rm -f _unbound.la libunbound/python/libunbound_wrap.c libunbound/python/unbound.py pythonmod/interface.h pythonmod/unboundmodule.py
400         rm -rf autom4te.cache .libs build doc/html doc/xml
401
402 realclean: clean
403         rm -f config.status config.log config.h.in config.h
404         rm -f configure config.sub config.guess ltmain.sh aclocal.m4 libtool
405         rm -f util/configlexer.c util/configparser.c util/configparser.h
406         rm -f doc/example.conf doc/libunbound.3 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound-control.8 doc/unbound.8 doc/unbound.conf.5
407         rm -f $(TEST_BIN)
408         rm -f Makefile 
409
410 .SUFFIXES: .lint
411 .c.lint:
412         $(LINT) $(LINTFLAGS) -I. -I$(srcdir) $<
413         touch $@
414
415 util/configparser.lint util/configlexer.lint pythonmod/pythonmod.lint libunbound/python/libunbound_wrap.lint:
416         # skip lint for generated code
417         touch $@
418
419 winrc/win_svc.lint winrc/w_inst.lint winrc/unbound-service-install.lint winrc/unbound-service-remove.lint:
420         # skip lint for windows types
421         touch $@
422
423 lint:   $(ALL_SRC:.c=.lint)
424
425 tags:   $(srcdir)/*.[ch] $(srcdir)/*/*.[ch]
426         ctags  -f $(srcdir)/tags $(srcdir)/*.[ch] $(srcdir)/*/*.[ch]
427
428 doc:
429         if test -n "$(doxygen)"; then \
430                 $(doxygen) $(srcdir)/doc/unbound.doxygen; fi
431         if test "$(WITH_PYUNBOUND)" = "yes" -o "$(WITH_PYTHONMODULE)" = "yes"; \
432             then if test -x "`which sphinx-build 2>&1`"; then \
433                 sphinx-build -b html pythonmod/doc doc/html/pythonmod; \
434                 sphinx-build -b html libunbound/python/doc doc/html/pyunbound;\
435             fi ;\
436         fi
437
438 strip:
439         $(STRIP) unbound$(EXEEXT)
440         $(STRIP) unbound-checkconf$(EXEEXT)
441         $(STRIP) unbound-control$(EXEEXT)
442         $(STRIP) unbound-host$(EXEEXT)
443         $(STRIP) unbound-anchor$(EXEEXT)
444
445 pythonmod-install:
446         $(INSTALL) -m 755 -d $(DESTDIR)$(PYTHON_SITE_PKG)
447         $(INSTALL) -c -m 644 pythonmod/unboundmodule.py $(DESTDIR)$(PYTHON_SITE_PKG)/unboundmodule.py
448
449 pyunbound-install:
450         $(INSTALL) -m 755 -d $(DESTDIR)$(PYTHON_SITE_PKG)
451         $(INSTALL) -c -m 644 $(srcdir)/libunbound/python/unbound.py $(DESTDIR)$(PYTHON_SITE_PKG)/unbound.py
452         $(LIBTOOL) --mode=install cp _unbound.la $(DESTDIR)$(PYTHON_SITE_PKG)
453         $(LIBTOOL) --mode=finish $(DESTDIR)$(PYTHON_SITE_PKG)
454
455 unbound-event-install:
456         $(INSTALL) -m 755 -d $(DESTDIR)$(includedir)
457         $(LIBTOOL) --mode=install cp $(srcdir)/libunbound/unbound-event.h $(DESTDIR)$(includedir)/unbound-event.h
458
459 install:        $(INSTALLTARGET)
460
461 install-lib:    lib $(UNBOUND_EVENT_INSTALL)
462         $(INSTALL) -m 755 -d $(DESTDIR)$(libdir)
463         $(INSTALL) -m 755 -d $(DESTDIR)$(includedir)
464         $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)
465         $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man3
466         $(INSTALL) -c -m 644 doc/libunbound.3 $(DESTDIR)$(mandir)/man3
467         for mpage in ub_ctx ub_result ub_ctx_create ub_ctx_delete \
468                 ub_ctx_set_option ub_ctx_get_option ub_ctx_config ub_ctx_set_fwd \
469                 ub_ctx_resolvconf ub_ctx_hosts ub_ctx_add_ta ub_ctx_add_ta_file \
470                 ub_ctx_trustedkeys ub_ctx_debugout ub_ctx_debuglevel ub_ctx_async \
471                 ub_poll ub_wait ub_fd ub_process ub_resolve ub_resolve_async ub_cancel \
472                 ub_resolve_free ub_strerror ub_ctx_print_local_zones ub_ctx_zone_add \
473                 ub_ctx_zone_remove ub_ctx_data_add ub_ctx_data_remove; \
474         do \
475                 echo ".so man3/libunbound.3" > $(DESTDIR)$(mandir)/man3/$$mpage.3 ; \
476         done
477         $(LIBTOOL) --mode=install cp unbound.h $(DESTDIR)$(includedir)/unbound.h
478         $(LIBTOOL) --mode=install cp libunbound.la $(DESTDIR)$(libdir)
479         $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir)
480
481 install-all:    all $(PYTHONMOD_INSTALL) $(PYUNBOUND_INSTALL) $(UNBOUND_EVENT_INSTALL) install-lib
482         $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir)
483         $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)
484         $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man8
485         $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man5
486         $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1
487         $(LIBTOOL) --mode=install cp unbound$(EXEEXT) $(DESTDIR)$(sbindir)/unbound$(EXEEXT)
488         $(LIBTOOL) --mode=install cp unbound-checkconf$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-checkconf$(EXEEXT)
489         $(LIBTOOL) --mode=install cp unbound-control$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control$(EXEEXT)
490         $(LIBTOOL) --mode=install cp unbound-host$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-host$(EXEEXT)
491         $(LIBTOOL) --mode=install cp unbound-anchor$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-anchor$(EXEEXT)
492         $(INSTALL) -c -m 644 doc/unbound.8 $(DESTDIR)$(mandir)/man8
493         $(INSTALL) -c -m 644 doc/unbound-checkconf.8 $(DESTDIR)$(mandir)/man8
494         $(INSTALL) -c -m 644 doc/unbound-control.8 $(DESTDIR)$(mandir)/man8
495         $(INSTALL) -c -m 644 doc/unbound-control.8 $(DESTDIR)$(mandir)/man8/unbound-control-setup.8
496         $(INSTALL) -c -m 644 doc/unbound-anchor.8 $(DESTDIR)$(mandir)/man8
497         $(INSTALL) -c -m 644 doc/unbound.conf.5 $(DESTDIR)$(mandir)/man5
498         $(INSTALL) -c -m 644 $(srcdir)/doc/unbound-host.1 $(DESTDIR)$(mandir)/man1
499         $(INSTALL) -c -m 755 unbound-control-setup $(DESTDIR)$(sbindir)/unbound-control-setup
500         if test ! -e $(DESTDIR)$(configfile); then $(INSTALL) -d `dirname $(DESTDIR)$(configfile)`; $(INSTALL) -c -m 644 doc/example.conf $(DESTDIR)$(configfile); fi
501
502 pythonmod-uninstall:
503         rm -f -- $(DESTDIR)$(PYTHON_SITE_PKG)/unboundmodule.py
504
505 pyunbound-uninstall:
506         rm -f -- $(DESTDIR)$(PYTHON_SITE_PKG)/unbound.py
507         $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(PYTHON_SITE_PKG)/_unbound.la
508
509 unbound-event-uninstall:
510         rm -f -- $(DESTDIR)$(includedir)/unbound-event.h
511
512 uninstall:      $(PYTHONMOD_UNINSTALL) $(PYUNBOUND_UNINSTALL) $(UNBOUND_EVENT_UNINSTALL)
513         rm -f -- $(DESTDIR)$(sbindir)/unbound$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-checkconf$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-host$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-anchor$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control-setup
514         rm -f -- $(DESTDIR)$(mandir)/man8/unbound.8 $(DESTDIR)$(mandir)/man8/unbound-checkconf.8 $(DESTDIR)$(mandir)/man5/unbound.conf.5 $(DESTDIR)$(mandir)/man8/unbound-control.8 $(DESTDIR)$(mandir)/man8/unbound-anchor.8 $(DESTDIR)$(mandir)/man8/unbound-control-setup.8
515         rm -f -- $(DESTDIR)$(mandir)/man1/unbound-host.1 $(DESTDIR)$(mandir)/man3/libunbound.3
516         for mpage in ub_ctx ub_result ub_ctx_create ub_ctx_delete \
517                 ub_ctx_set_option ub_ctx_get_option ub_ctx_config ub_ctx_set_fwd \
518                 ub_ctx_resolvconf ub_ctx_hosts ub_ctx_add_ta ub_ctx_add_ta_file \
519                 ub_ctx_trustedkeys ub_ctx_debugout ub_ctx_debuglevel ub_ctx_async \
520                 ub_poll ub_wait ub_fd ub_process ub_resolve ub_resolve_async ub_cancel \
521                 ub_resolve_free ub_strerror ub_ctx_print_local_zones ub_ctx_zone_add \
522                 ub_ctx_zone_remove ub_ctx_data_add ub_ctx_data_remove; \
523         do \
524                 rm -f -- $(DESTDIR)$(mandir)/man3/$$mpage.3 ; \
525         done
526         rm -f -- $(DESTDIR)$(includedir)/unbound.h
527         $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/libunbound.la
528         @echo
529         @echo "You still need to remove "`dirname $(DESTDIR)$(configfile)`" , $(DESTDIR)$(configfile) by hand"
530
531 iana_update:
532         curl -o port-numbers.tmp http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml --compressed
533         if file port-numbers.tmp | grep 'gzip' >/dev/null; then zcat port-numbers.tmp; else cat port-numbers.tmp; fi | awk '/<record>/ {p=0;} /<protocol>udp/ {p=1;} /<protocol>[^u]/ {p=0;} /Decomissioned|Decommissioned|Removed|De-registered|unassigned|Unassigned|Reserved/ {u=1;} /<number>/ { if(u==1) {u=0;} else { if(p==1) { match($$0,/[0-9]+/); print substr($$0, RSTART, RLENGTH) ","}}}' | sort -nu > util/iana_ports.inc  
534         rm -f port-numbers.tmp
535
536 # dependency generation
537 DEPEND_TMP=depend1073.tmp
538 DEPEND_TMP2=depend1074.tmp
539 DEPEND_TARGET=Makefile
540 DEPEND_TARGET2=Makefile.in
541 # actions: generate deplines from gcc,
542 # then, filter out home/xx, /usr/xx and /opt/xx lines (some cc already do this)
543 # then, remove empty " \" lines
544 # then, add srcdir before .c and .h in deps.
545 # then, remove srcdir from the (generated) parser and lexer.
546 # and mention the .lo
547 depend:
548         (cd $(srcdir) ; $(CC) $(DEPFLAG) $(CPPFLAGS) $(CFLAGS) $(ALL_SRC) $(COMPAT_SRC)) | \
549                 sed -e 's!'$$HOME'[^ ]* !!g' -e 's!'$$HOME'[^ ]*$$!!g' \
550                         -e 's!/usr[^ ]* !!g' -e 's!/usr[^ ]*$$!!g' \
551                         -e 's!/opt[^ ]* !!g' -e 's!/opt[^ ]*$$!!g' | \
552                 sed -e '/^ \\$$/d' | \
553                 sed -e 's? *\([^ ]*\.[ch]\)? $$(srcdir)/\1?g' | \
554                 sed -e 's? *\([^ ]*\.inc\)? $$(srcdir)/\1?g' | \
555                 sed -e 's?$$(srcdir)/config.h?config.h?g' \
556                         -e 's?$$(srcdir)/util/configlexer.c?util/configlexer.c?g' \
557                         -e 's?$$(srcdir)/util/configparser.c?util/configparser.c?g' \
558                         -e 's?$$(srcdir)/util/configparser.h?util/configparser.h?g' \
559                         -e 's?$$(srcdir)/pythonmod/pythonmod.h?$$(PYTHONMOD_HEADER)?g' \
560                         -e 's!\(.*\)\.o[ :]*!\1.lo \1.o: !g' \
561                         > $(DEPEND_TMP)
562         cp $(DEPEND_TARGET) $(DEPEND_TMP2)
563         head -`egrep -n "# Dependencies" $(DEPEND_TARGET) | tail -1 | sed -e 's/:.*$$//'` $(DEPEND_TMP2) > $(DEPEND_TARGET)
564         cat $(DEPEND_TMP) >> $(DEPEND_TARGET)
565         @if diff $(DEPEND_TARGET) $(DEPEND_TMP2); then echo "   $(DEPEND_TARGET) unchanged"; else echo "        Updated $(DEPEND_TARGET))"; fi
566         @if test -f $(DEPEND_TARGET2); then \
567                 cp $(DEPEND_TARGET2) $(DEPEND_TMP2); \
568                 head -`egrep -n "# Dependencies" $(DEPEND_TARGET2) | tail -1 | sed -e 's/:.*$$//'` $(DEPEND_TMP2) > $(DEPEND_TARGET2); \
569                 cat $(DEPEND_TMP) >> $(DEPEND_TARGET2); \
570                 if diff $(DEPEND_TARGET2) $(DEPEND_TMP2); then echo "   $(DEPEND_TARGET2) unchanged"; else echo "       Updated $(DEPEND_TARGET2))"; fi; \
571         fi
572         rm -f $(DEPEND_TMP) $(DEPEND_TMP2)
573
574 # Dependencies