aboutsummaryrefslogtreecommitdiff
path: root/dns/powerdns/Makefile
blob: e3da9a1722895d827ef1c87fb12ba404688c7b1c (plain) (blame)
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
PORTNAME=	powerdns
DISTVERSION=	4.5.0
CATEGORIES=	dns
MASTER_SITES=	https://downloads.powerdns.com/releases/
DISTNAME=	pdns-${DISTVERSION}

MAINTAINER=	tremere@cainites.net
COMMENT=	Advanced DNS server with multiple backends including SQL

LICENSE=	GPLv2

BROKEN_sparc64=	Does not compile: error: to_string is not a member of std
NOT_FOR_ARCHS=	i386
NOT_FOR_ARCHS_REASON=	archs with 32-bits time_t are no longer supported by upstream

LIB_DEPENDS=	libboost_serialization.so:devel/boost-libs \
		libcurl.so:ftp/curl

USES=		autoreconf compiler:c++11-lib cpe gmake libtool \
		localbase:ldflags pathfix pkgconfig ssl tar:bzip2

USE_RC_SUBR=	pdns
USE_SUBMAKE=	YES

GNU_CONFIGURE=	YES
CONFIGURE_ARGS=	--disable-static \
		--docdir="${PREFIX}/share/doc/powerdns" \
		--sysconfdir="${PREFIX}/etc/pdns" \
		--with-boost="${LOCALBASE}" \
		--with-dynmodules="pipe bind ${MODULES}" \
		--with-modules=""

SCRIPTS_ENV=	CURDIR2="${.CURDIR}" \
		DISTNAME="${DISTNAME}" \
		MKDIR="${MKDIR}" \
		POWERDNS_OPTIONS="${POWERDNS_OPTIONS}" \
		WRKDIRPREFIX="${WRKDIRPREFIX}"
INSTALL_TARGET=	install-strip
SUB_FILES=	pkg-message

USERS=		pdns
GROUPS=		pdns

OPTIONS_DEFINE=			DOCS EXAMPLES GEOIP IXFRDIST LMDB LUABACKEND \
				MYSQL OPENLDAP PGSQL REMOTE SQLITE3 TINYDNS \
				TOOLS UNIXODBC
OPTIONS_DEFAULT=		LMDB LUA MYSQL PGSQL SQLITE3
OPTIONS_GROUP=			GEOIPOPT REMOTEOPT
OPTIONS_GROUP_REMOTEOPT=	ZEROMQ
OPTIONS_SINGLE=			EXTLUA
OPTIONS_SINGLE_EXTLUA=		LUA LUAJIT LUAJITOR

OPTIONS_SUB=	yes

GEOIPOPT_DESC=		GeoIP DB options
GEOIP_DESC=		GeoIP backend (GeoIP2 DB)
IXFRDIST_DESC=		Build ixfrdist
LMDB_DESC=		LMDB backend
LUABACKEND_DESC=	Lua2 backend
LUAJITOR_DESC=		Use lang/luajit-openresty
LUAJIT_DESC=		Use lang/luajit
LUA_DESC=		Use lang/lua
MYSQL_DESC=		MySQL backend
OPENLDAP_DESC=		OpenLDAP backend
PGSQL_DESC=		PostgreSQL backend
REMOTEOPT_DESC=		Remote backend connectors
REMOTE_DESC=		Remote backend
SQLITE3_DESC=		SQLite 3 backend
TINYDNS_DESC=		TinyDNS backend
TOOLS_DESC=		Build extra tools
ZEROMQ_DESC=		Enable ZeroMQ connector (Implies REMOTE enabled)

GEOIP_LIB_DEPENDS=	libmaxminddb.so:net/libmaxminddb \
			libyaml-cpp.so:devel/yaml-cpp
GEOIP_VARS=		MODULES+=geoip

IXFRDIST_LIB_DEPENDS=		libyaml-cpp.so:devel/yaml-cpp
IXFRDIST_CONFIGURE_ENABLE=	ixfrdist

LMDB_LIB_DEPENDS=	liblmdb.so:databases/lmdb
LMDB_CONFIGURE_ON=	--with-lmdb=${LOCALBASE}
LMDB_CONFIGURE_OFF=	--without-lmdb
LMDB_VARS=		MODULES+=lmdb

LUABACKEND_VARS=	MODULES+=lua2

LUAJITOR_LIB_DEPENDS=	libluajit-5.1.so.2:lang/luajit-openresty
LUAJITOR_CONFIGURE_ON=	--with-lua=luajit

LUAJIT_LIB_DEPENDS=	libluajit-5.1.so.2:lang/luajit
LUAJIT_CONFIGURE_ON=	--with-lua=luajit

LUA_USES=	lua

MYSQL_USES=		mysql
MYSQL_CONFIGURE_ON=	--with-mysql=${LOCALBASE}
MYSQL_CONFIGURE_OFF=	--without-mysql
MYSQL_VARS=		MODULES+=gmysql

OPENLDAP_USE=		OPENLDAP=YES
OPENLDAP_CXXFLAGS=	-DLDAP_DEPRECATED=1
OPENLDAP_VARS=		MODULES+=ldap

PGSQL_USES=		pgsql
PGSQL_CONFIGURE_ON=	--with-pg-config=${LOCALBASE}/bin/pg_config
PGSQL_VARS=		MODULES+=gpgsql

REMOTE_VARS=	MODULES+=remote

SQLITE3_USES=	sqlite:3
SQLITE3_VARS=	MODULES+=gsqlite3

TINYDNS_LIB_DEPENDS=	libcdb.so:databases/tinycdb
TINYDNS_CONFIGURE_ON=	CDB_CFLAGS="-I${LOCALBASE}/include" \
			CDB_LIBS="-L${LOCALBASE}/lib -lcdb"
TINYDNS_VARS=		MODULES+=tinydns

TOOLS_CONFIGURE_ENABLE=	tools

UNIXODBC_LIB_DEPENDS=	libodbc.so:databases/unixODBC
UNIXODBC_VARS=		MODULES+=godbc

ZEROMQ_IMPLIES=		REMOTE
ZEROMQ_LIB_DEPENDS=	libzmq.so:net/libzmq4
ZEROMQ_CONFIGURE_ON=	--enable-remotebackend-zeromq

.include <bsd.port.pre.mk>

.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1200085 && ${SSL_DEFAULT} != openssl
CONFIGURE_ARGS+=	--with-libdecaf \
			--with-libsodium
LIB_DEPENDS+=		libdecaf.so:security/libdecaf \
			libsodium.so:security/libsodium
.else
CONFIGURE_ARGS+=	--with-libsodium=no
.endif

post-install::
	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR} ${STAGEDIR}/var/run/pdns
	@${STAGEDIR}${PREFIX}/sbin/pdns_server --module-dir=${STAGEDIR}${PREFIX}/lib/pdns --launch="pipe bind ${MODULES}" --config > ${STAGEDIR}${EXAMPLESDIR}/pdns.conf
	@${REINPLACE_CMD} -e 's;${STAGEDIR};;' -i '' ${STAGEDIR}${EXAMPLESDIR}/pdns.conf

.include <bsd.port.post.mk>