summaryrefslogtreecommitdiff
path: root/dns/unbound/Makefile
blob: b3ba87493a1e342c7d3370a80d0b2f3b1d1b3c4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
PORTNAME=	unbound
DISTVERSION=	1.18.0
PORTREVISION=	1
CATEGORIES=	dns
MASTER_SITES=	https://www.nlnetlabs.nl/downloads/unbound/

MAINTAINER=	jaap@NLnetLabs.nl
COMMENT=	Validating, recursive, and caching DNS resolver
WWW=		https://www.nlnetlabs.nl/projects/unbound

LICENSE=	BSD3CLAUSE
LICENSE_FILE=	${WRKSRC}/LICENSE

LIB_DEPENDS=	libexpat.so:textproc/expat2

USES=		autoreconf cpe libtool pkgconfig ssl
CPE_VENDOR=	nlnetlabs
USE_LDCONFIG=	yes
USE_RC_SUBR=	unbound

GNU_CONFIGURE=	yes
CONFIGURE_ARGS=	--with-libexpat=${LOCALBASE} \
		--with-ssl=${OPENSSLBASE}
TEST_TARGET=	test

USERS=		${PORTNAME}
GROUPS=		${PORTNAME}

PORTDOCS=	CNAME-basedRedirectionDesignNotes.pdf CREDITS Changelog \
		FEATURES IP-BasedActions.pdf LICENSE README README.DNS64 \
		README.ipset.md README.svn README.tests TODO \
		control_proto_spec.txt example.conf ietf67-design-02.odp \
		ietf67-design-02.pdf requirements.txt

OPTIONS_DEFINE=		DEP-RSA1024 DNSCRYPT DNSTAP DOCS DOH ECDSA EVAPI \
			DYNLIB FILTER_AAAA GOST HIREDIS LIBEVENT MUNIN_PLUGIN \
			PYTHON SUBNET TFOCL TFOSE THREADS
OPTIONS_DEFAULT=	DNSCRYPT DOH DYNLIB ECDSA GOST LIBEVENT THREADS
OPTIONS_SUB=		yes

DEP-RSA1024_DESC=	Deprecate the use of RSA 1024 keys
DNSCRYPT_DESC=		Enable dnscrypt support
DNSTAP_DESC=		Enable dnstap logging support
DOH_DESC=		Enable DNS-over-HTTPS support
DYNLIB_DESC=		Enable support for dynamic (shared) 3rd-party libraries
ECDSA_DESC=		Enable ECDSA (elliptic curve) support (OpenSSL >= 1.0)
EVAPI_DESC=		(Experimental) pluggable event based libunbound API support
FILTER_AAAA_DESC=	Build with AAAA filter functionality (contrib)
GOST_DESC=		Enable GOST support (requires OpenSSL >= 1.0)
HIREDIS_DESC=		Enable hiredis support for the cachedb module
LIBEVENT_DESC=		Build against libevent
MUNIN_PLUGIN_DESC=	Install Munin plugin
SUBNET_DESC=		Enable client subnet support
TFOCL_DESC=		Enable TCP Fast Open for client mode
TFOSE_DESC=		Enable TCP Fast Open for server mode

STRIP_FILES=	.libs/libunbound.so unbound-checkconf unbound unbound-control \
		.libs/unbound-host .libs/unbound-anchor

DEP-RSA1024_CONFIGURE_ON=	--with-deprecate-rsa-1024
DNSCRYPT_LIB_DEPENDS=		libsodium.so:security/libsodium
DNSCRYPT_CONFIGURE_ENABLE=	dnscrypt
DNSTAP_LIB_DEPENDS=		libfstrm.so:devel/fstrm \
				libprotobuf-c.so:devel/protobuf-c
DNSTAP_CONFIGURE_ENABLE=	dnstap
DOH_LIB_DEPENDS=		libnghttp2.so:www/libnghttp2
DOH_CONFIGURE_ON=		--with-libnghttp2
DYNLIB_CONFIGURE_ON=		--with-dynlibmodule
ECDSA_CONFIGURE_ENABLE=		ecdsa
ECDSA_VARS=			DEPENDS_ARGS+=WITH_ECDSA=yes
EVAPI_CONFIGURE_ENABLE=		event-api
GOST_CONFIGURE_ENABLE=		gost
GOST_VARS=			DEPENDS_ARGS+=WITH_GOST=yes
HIREDIS_LIB_DEPENDS=		libhiredis.so:databases/hiredis
HIREDIS_CONFIGURE_ON=		--enable-cachedb \
				--with-libhiredis
LIBEVENT_LIB_DEPENDS=		libevent.so:devel/libevent
LIBEVENT_CONFIGURE_WITH=	libevent
LIBEVENT_CPPFLAGS+=		$$(pkg-config libevent --cflags-only-I)
LIBEVENT_LDFLAGS+=		$$(pkg-config libevent --libs-only-L)
MUNIN_PLUGIN_SUB_FILES=		pkg-message
PYTHON_BUILD_DEPENDS=		swig:devel/swig
PYTHON_USES=			python
PYTHON_CONFIGURE_ON=		--with-pythonmodule=yes \
				--with-pyunbound=yes \
				ac_cv_path_SWIG=${LOCALBASE}/bin/swig \
				LDFLAGS="-L${LOCALBASE}/lib"
PYTHON_VARS=			STRIP_FILES+=.libs/_unbound.so
SUBNET_CONFIGURE_ENABLE=	subnet
TFOCL_CONFIGURE_ENABLE=		tfo-client
TFOSE_CONFIGURE_ENABLE=		tfo-server
THREADS_CONFIGURE_WITH=		pthreads

post-patch:
	@${RM} ${WRKSRC}/util/configlexer.c
	@${REINPLACE_CMD} -e 's|if test ! -e "$$(DESTDIR)$$(configfile)"; then || ; \
		s|$$(configfile)"; fi|$$(configfile).sample"|' \
		${WRKSRC}/Makefile.in

post-patch-FILTER_AAAA-on:
	 ${CAT} ${WRKSRC}/contrib/aaaa-filter-iterator.patch | ${PATCH} -d ${WRKSRC} -p1 -s

post-build:
	@for s in ${STRIP_FILES}; do ${STRIP_CMD} ${WRKSRC}/$$s; done

post-install-DOCS-on:
	${MKDIR} ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/doc/|} ${STAGEDIR}${DOCSDIR}

post-install-MUNIN_PLUGIN-on:
	@${MKDIR} ${STAGEDIR}${PREFIX}/share/munin/plugins
	${INSTALL_SCRIPT} ${WRKDIR}/unbound-${DISTVERSION}/contrib/unbound_munin_ \
		${STAGEDIR}${PREFIX}/share/munin/plugins/
	@${ECHO_MSG}
	@${ECHO_MSG} "============================================================="
	@${CAT} ${WRKDIR}/pkg-message
	@${ECHO_MSG} "============================================================="

post-install-PYTHON-on:
	@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/_unbound.so

.include <bsd.port.mk>