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