aboutsummaryrefslogtreecommitdiff
path: root/net/quagga/Makefile
blob: ad20890eef837cbe2ab0ff2ea6abc6d2c253ba68 (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
PORTNAME=	quagga
PORTVERSION=	1.2.4
PORTREVISION=	13
CATEGORIES=	net
MASTER_SITES=	https://github.com/Quagga/quagga/releases/download/${DISTNAME}/ \
		http://www.grosbein.net/freebsd/distfiles/ \
		LOCAL/eugen

MAINTAINER=	eugen@FreeBSD.org
COMMENT=	Free RIPv1, RIPv2, OSPFv2, BGP4, IS-IS route software
WWW=		https://www.quagga.net/

LICENSE=	GPLv2+
LICENSE_FILE=	${WRKSRC}/COPYING

USES=		compiler:c11 cpe gmake libtool makeinfo \
		perl5 readline


GNU_CONFIGURE=	yes
GNU_CONFIGURE_MANPREFIX=	${PREFIX}/share
CONFIGURE_ENV+=	GAWK=${AWK}

CFLAGS+=	-fcommon
INSTALL_TARGET=	install-strip
USE_PERL5=	build

INFO=		quagga

OPTIONS_DEFINE=	LEGACY ISISD PIMD PAM RTADV SNMP TCPSOCKETS DLMALLOC \
		NO_BGP_ANNOUNCE OSPF_NEXTHOP ISIS_TOPOLOGY EXAMPLES
# IRDP needs something freebsd does not seem to have:
# configure: error: 'IRDP requires in_pktinfo at the moment!'
OPTIONS_DEFAULT=	LEGACY ISISD PIMD RTADV
OPTIONS_SUB=	yes

LEGACY_DESC=		Install to legacy paths (conflicts with FRR etc.)
PIMD_DESC=		PIM-SSM multicast routing
IRDP_DESC=		Enable IRDP server support
ISISD_DESC=		Enable ISIS daemon (beta)
ISIS_TOPOLOGY_DESC=	Enable IS-IS topology generator
PAM_DESC=		PAM authentication for vtysh
RTADV_DESC=		IPv6 Router Advertisements
TCPSOCKETS_DESC=	Use TCP/IP sockets for protocol daemons
DLMALLOC_DESC=		Use dlmalloc (makes bgpd much faster)
NO_BGP_ANNOUNCE_DESC=	Turn off BGP route announcement
OSPF_NEXTHOP_DESC=	Set ip next-hop in OSPF route maps

ENABLE_USER?=	quagga
ENABLE_GROUP?=	quagga

USERS=		${ENABLE_USER}
GROUPS=		${ENABLE_GROUP}

SYSCONF_DIR?=	${ETCDIR}
LOCALSTATE_DIR?=/var/run/quagga

CONFIGURE_ARGS=	--enable-user=${ENABLE_USER} \
		--enable-group=${ENABLE_GROUP} \
		--sysconfdir=${SYSCONF_DIR} \
		--localstatedir=${LOCALSTATE_DIR} \
		--enable-vtysh

.if defined(ENABLE_VTY_GROUP)
CONFIGURE_ARGS+=--enable-vty-group=${ENABLE_VTY_GROUP}
.endif

EXAMPLES_CONFIGURE_ON=	--enable-exampledir=${PREFIX}/share/examples/quagga
EXAMPLES_CONFIGURE_OFF=	--disable-exampledir

ISISD_CONFIGURE_ENABLE=	isisd
ISIS_TOPOLOGY_CONFIGURE_ENABLE=	isis-topology
PIMD_CONFIGURE_ENABLE=	pimd
IRDP_CONFIGURE_ENABLE=	irdp
PAM_CONFIGURE_WITH=	libpam
RTADV_CONFIGURE_ENABLE=	rtadv
SNMP_CONFIGURE_ENABLE=	snmp
SNMP_LIB_DEPENDS=	libnetsnmp.so:net-mgmt/net-snmp
TCPSOCKETS_CONFIGURE_ENABLE=	tcp-zebra
DLMALLOC_LIB_DEPENDS=	libdlmalloc.so:devel/libdlmalloc
DLMALLOC_LIBS=		-L${LOCALBASE}/lib -ldlmalloc
OSPF_NEXTHOP_EXTRA_PATCHES=	${PATCHDIR}/extra-patch-ospf-nexthop
# inverse option.
NO_BGP_ANNOUNCE_CONFIGURE_ON=	--disable-bgp-announce
NO_BGP_ANNOUNCE_CONFIGURE_OFF=	--enable-bgp-announce

USE_RC_SUBR=	quagga watchquagga

LEGACY_SUB_LIST=	VTYSH=vtysh  N=
LEGACY_SUB_LIST_OFF=	VTYSH=qvtysh N=${PORTNAME}/
LEGACY_PLIST_SUB=	VTYSH=vtysh  N=
LEGACY_PLIST_SUB_OFF=	VTYSH=qvtysh N=${PORTNAME}/

SUB_LIST+=	LOCALSTATE_DIR=${LOCALSTATE_DIR} \
		SYSCONF_DIR=${SYSCONF_DIR}

PLIST_SUB+=	LOCALSTATE_DIR=${LOCALSTATE_DIR} \
		SYSCONF_DIR=${SYSCONF_DIR} \
		ENABLE_USER=${ENABLE_USER} \
		ENABLE_GROUP=${ENABLE_GROUP}

pre-everything::
	@${ECHO} "============================================================="
	@${ECHO}
	@${ECHO} "You can build ${PORTNAME} with the following options:"
	@${ECHO}
	@${ECHO} "ENABLE_USER       Specify user to run Quagga suite as"
	@${ECHO} "ENABLE_GROUP      Specify group to run Quagga suite as"
	@${ECHO} "ENABLE_VTY_GROUP  Specify group for vty socket ownership"
	@${ECHO} "SYSCONF_DIR       Specify directory for Quagga configuration files"
	@${ECHO} "LOCALSTATE_DIR    Specify directory for Quagga runtime files"

post-install:
	${MKDIR} ${STAGEDIR}${LOCALSTATE_DIR} ${STAGEDIR}${SYSCONF_DIR}

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MLEGACY}
CONFLICTS=		frr* openbgpd pimd
USE_LDCONFIG=		yes
.else
PKGNAMESUFFIX=		-compat
QPREFIX=		${PREFIX}/${PORTNAME}
GNU_CONFIGURE_PREFIX=	${QPREFIX}
GNU_CONFIGURE_MANPREFIX=	${QPREFIX}/share
MANDIRS=		${QPREFIX}/share/man
USE_LDCONFIG=		${QPREFIX}/lib
CONFIGURE_ARGS+=	--datarootdir=${QPREFIX} \
			--bindir=${PREFIX}/bin \
			--includedir=${PREFIX}/include

post-install-LEGACY-off:
	${MV} ${STAGEDIR}${PREFIX}/bin/vtysh ${STAGEDIR}${PREFIX}/bin/qvtysh
	${MV} ${STAGEDIR}${QPREFIX}/${INFO_PATH}/${PORTNAME}* ${STAGEDIR}${PREFIX}/${INFO_PATH}/

.endif

.include <bsd.port.mk>