Merge pull request #12063 from mstorchak/tmux
[feed/packages.git] / net / frr / Makefile
1 #
2 # Copyright (C) 2019 Lucian Cristian <lucian.cristian@gmail.com>
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9 PKG_NAME:=frr
10 PKG_VERSION:=7.3
11 PKG_RELEASE:=3
12
13 PKG_SOURCE_URL:=https://github.com/FRRouting/frr/releases/download/$(PKG_NAME)-$(PKG_VERSION)/
14 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
15 PKG_HASH:=529e1bbc3a20d55e94c38a95513bcf971d4b403ecb00afdaf0c229e3f560b2b6
16 PKG_MAINTAINER:=Lucian Cristian <lucian.cristian@gmail.com>
17
18 PKG_LICENSE:=GPL-2.0-only LGPL-2.1-only
19
20 PKG_DAEMON_AVAILABLE:= \
21 babeld \
22 bfdd \
23 bgpd \
24 eigrpd \
25 fabricd \
26 isisd \
27 ldpd \
28 nhrpd \
29 ospfd \
30 ospf6d \
31 pbrd \
32 pimd \
33 ripd \
34 ripngd \
35 staticd \
36 vrrpd
37
38
39 PKG_CONFIG_DEPENDS:= \
40 CONFIG_IPV6 \
41 CONFIG_FRR_OPENSSL \
42 CONFIG_FRR_INTERNAL \
43 CONFIG_FRR_SNMP \
44 CONFIG_FRR_NO_SNMP \
45 CONFIG_PACKAGE_frr-libfrr \
46 CONFIG_PACKAGE_frr-vtysh \
47 CONFIG_PACKAGE_frr-watchfrr \
48 CONFIG_PACKAGE_frr-zebra \
49 $(patsubst %,CONFIG_PACKAGE_frr-%,$(PKG_DAEMON_AVAILABLE)) \
50
51 PKG_FIXUP:=autoreconf
52 PKG_BUILD_PARALLEL:=1
53 PKG_INSTALL:=1
54
55 PKG_BUILD_DEPENDS:=frr/host
56 HOST_BUILD_DEPENDS:=python3/host
57
58 include $(INCLUDE_DIR)/package.mk
59 include $(INCLUDE_DIR)/host-build.mk
60
61 define Package/frr-libfrr/config
62 source "$(SOURCE)/Config.in"
63 endef
64
65 define Package/frr/Default
66 SECTION:=net
67 CATEGORY:=Network
68 SUBMENU:=Routing and Redirection
69 URL:=https://www.frrouting.org/
70 DEPENDS:=frr
71 endef
72
73 define Package/frr
74 $(call Package/frr/Default)
75 DEPENDS:=+librt
76 TITLE:=The FRRouting (FRR) Software Routing Suite
77 MENU:=1
78 endef
79
80 define Package/frr/description
81 FRRouting is free software that implements and manages various IPv4 and IPv6
82 routing protocols.
83
84 Currently FRRouting supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, RIPng,
85 IS-IS, PIM-SM/MSDP, LDP, VRRP and Babel as well as very early support for EIGRP and
86 NHRP.
87 endef
88
89 define Package/frr-libfrr
90 $(call Package/frr/Default)
91 TITLE:=zebra library
92 DEPENDS+=+librt +libatomic +libcap +libjson-c +libyang +FRR_OPENSSL:libopenssl +FRR_SNMP:libnetsnmp
93 CONFLICTS:=quagga-libzebra
94 endef
95
96 define Package/frr-vtysh
97 $(call Package/frr/Default)
98 DEPENDS+=+frr-libfrr +libreadline +libncurses +more
99 TITLE:=integrated shell for frr routing software
100 CONFLICTS:=quagga-vtysh
101 endef
102
103 define Package/frr-watchfrr
104 $(call Package/frr/Default)
105 TITLE:=frr watchdog
106 DEPENDS+=+frr-libfrr
107 DEFAULT:=y if PACKAGE_frr
108 endef
109
110 define Package/frr-zebra
111 $(call Package/frr/Default)
112 TITLE:=Zebra daemon
113 DEPENDS+=+frr-libfrr
114 DEFAULT:=y if PACKAGE_frr
115 CONFLICTS:=quagga-zebra
116 endef
117
118 ##Migrate from quagga
119 ##should test file exists and link in frr folder
120 #define Package/frr/postinst
121 ##!/bin/sh
122 #if [ -f /etc/quagga/ospfd.conf ]; then
123 # ls to /etc/frr
124 # sed enable ospfd daemon
125 #fi
126 #exit 0
127 #endef
128
129 define BuildDaemon
130 define Package/frr-$(1)
131 $$(call Package/frr/Default)
132 TITLE:= $(1) routing engine
133 DEPENDS+=frr-libfrr $(2)
134 endef
135
136 define Package/frr-$(1)/install
137 $(INSTALL_DIR) $$(1)/usr/sbin
138 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/$(1) $$(1)/usr/sbin/; \
139 if [ "$(1)" == "nhrpd" ]; then \
140 $(INSTALL_DIR) $$(1)/usr/lib; \
141 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrcares.so* $$(1)/usr/lib/; fi
142 endef
143
144 $$(eval $$(call BuildPackage,frr-$(1)))
145 endef
146
147 define Package/frr-libfrr/conffiles
148 /etc/frr/daemons
149 /etc/frr/frr.conf
150 /etc/frr/vtysh.conf
151 endef
152
153 TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -latomic
154 TARGET_CFLAGS += -flto
155
156 define Host/Configure
157 $(Host/Configure/Default)
158 $(SED) 's/$$$$(MAKE) $$$$(AM_MAKEFLAGS) install-am/# $$$$(MAKE) $$$$(AM_MAKEFLAGS) install-am/' $(HOST_BUILD_DIR)/Makefile.in
159 endef
160
161 HOST_CONFIGURE_ARGS+= \
162 --enable-clippy-only
163
164 define Host/Install
165 $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin
166 $(INSTALL_BIN) $(HOST_BUILD_DIR)/lib/clippy $(STAGING_DIR_HOSTPKG)/bin/
167 endef
168
169 CONFIGURE_ARGS+= \
170 --with-clippy=$(STAGING_DIR_HOSTPKG)/bin/clippy \
171 --prefix=/usr \
172 --enable-shared \
173 --disable-static \
174 --enable-user=network \
175 --enable-group=network \
176 --disable-ospfclient \
177 --disable-doc \
178 --disable-backtrace \
179 --localstatedir=/var/run/frr \
180 --sysconfdir=/etc/frr/ \
181 $(if $(CONFIG_FRR_OPENSSL),--with-crypto=openssl,) \
182 $(if $(CONFIG_FRR_SNMP),--enable-snmp,) \
183 $(foreach m,$(PKG_DAEMON_AVAILABLE), \
184 $(call autoconf_bool,CONFIG_PACKAGE_frr-$(m),$(m)) ) \
185 $(call autoconf_bool,CONFIG_PACKAGE_frr-vtysh,vtysh) \
186 $(call autoconf_bool,CONFIG_PACKAGE_frr-libfrr,zebra)
187
188
189 define Package/frr/install
190 $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d
191 $(INSTALL_BIN) ./files/frrcommon.sh $(1)/usr/sbin/
192 $(INSTALL_BIN) ./files/frr $(1)/etc/init.d/
193 endef
194
195 define Package/frr-watchfrr/install
196 $(INSTALL_DIR) $(1)/usr/sbin
197 $(INSTALL_BIN) ./files/watchfrr.sh $(1)/usr/sbin/
198 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/watchfrr $(1)/usr/sbin/
199 endef
200
201 define Package/frr-zebra/install
202 $(INSTALL_DIR) $(1)/usr/sbin
203 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/zebra $(1)/usr/sbin/
204 endef
205
206 define Package/frr-libfrr/install
207 $(INSTALL_DIR) $(1)/usr/lib $(1)/etc/frr
208 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrr.so* $(1)/usr/lib/
209 $(if $(CONFIG_FRR_SNMP),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrsnmp.so* $(1)/usr/lib/,)
210 $(INSTALL_CONF) ./files/{frr.conf,daemons} $(1)/etc/frr/
211 endef
212
213 define Package/frr-vtysh/install
214 $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/frr
215 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/
216 $(INSTALL_CONF) ./files/vtysh.conf $(1)/etc/frr/
217 endef
218
219 $(eval $(call HostBuild))
220 $(eval $(call BuildPackage,frr))
221 $(eval $(call BuildPackage,frr-libfrr))
222 $(eval $(call BuildPackage,frr-watchfrr))
223 $(eval $(call BuildPackage,frr-zebra))
224 $(eval $(call BuildPackage,frr-vtysh))
225 $(eval $(call BuildDaemon,babeld,))
226 $(eval $(call BuildDaemon,bfdd,))
227 $(eval $(call BuildDaemon,bgpd,))
228 $(eval $(call BuildDaemon,eigrpd,))
229 $(eval $(call BuildDaemon,fabricd,))
230 $(eval $(call BuildDaemon,isisd,))
231 $(eval $(call BuildDaemon,ldpd,))
232 $(eval $(call BuildDaemon,nhrpd,+libcares))
233 $(eval $(call BuildDaemon,ospfd,))
234 $(eval $(call BuildDaemon,ospf6d,@IPV6))
235 $(eval $(call BuildDaemon,pbrd,))
236 $(eval $(call BuildDaemon,pimd,))
237 $(eval $(call BuildDaemon,ripd,))
238 $(eval $(call BuildDaemon,ripngd,@IPV6))
239 $(eval $(call BuildDaemon,staticd,))
240 $(eval $(call BuildDaemon,vrrpd,))