2 # Copyright (C) 2019 Lucian Cristian <lucian.cristian@gmail.com>
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 include $(TOPDIR
)/rules.mk
12 PKG_SOURCE_DATE
:=2023-08-12
14 PKG_SOURCE
:=$(PKG_NAME
)-$(PKG_SOURCE_DATE
).
tar.gz
15 PKG_SOURCE_VERSION
:=9852228d1e87bdbad13e0fed8313203f00bf26af
16 PKG_SOURCE_URL
:=https
://codeload.github.com
/FRRouting
/frr
/tar.gz
/$(PKG_SOURCE_VERSION
)?
18 PKG_HASH
:=6e611cd86ae9787a4b8d71411fdc38ad1fe843a839756c9c386848ffde81f6cf
19 PKG_MAINTAINER
:=Lucian Cristian
<lucian.cristian@gmail.com
>
21 PKG_BUILD_DIR
:=$(BUILD_DIR
)/$(PKG_NAME
)-$(PKG_SOURCE_VERSION
)
22 HOST_BUILD_DIR
:=$(BUILD_DIR_HOST
)/$(PKG_NAME
)-$(PKG_SOURCE_VERSION
)
24 PKG_LICENSE
:=GPL-2.0
-only LGPL-2.1
-only
25 PKG_CPE_ID
:=cpe
:/a
:ffrouting
:ffrouting
27 PKG_DAEMON_AVAILABLE
:= \
46 PKG_CONFIG_DEPENDS
:= \
52 CONFIG_PACKAGE_frr-libfrr \
53 CONFIG_PACKAGE_frr-vtysh \
54 CONFIG_PACKAGE_frr-watchfrr \
55 CONFIG_PACKAGE_frr-zebra \
56 $(patsubst %,CONFIG_PACKAGE_frr-
%,$(PKG_DAEMON_AVAILABLE
)) \
63 PKG_BUILD_DEPENDS
:=frr
/host protobuf-c
/host
64 HOST_BUILD_DEPENDS
:=python3
/host
66 include $(INCLUDE_DIR
)/package.mk
67 include $(INCLUDE_DIR
)/host-build.mk
69 define Package
/frr-libfrr
/config
70 source
"$(SOURCE)/Config.in"
73 define Package
/frr
/Default
76 SUBMENU
:=Routing and Redirection
77 URL
:=https
://www.frrouting.org
/
82 $(call Package
/frr
/Default
)
84 TITLE
:=The FRRouting
(FRR
) Software Routing Suite
88 define Package
/frr
/description
89 FRRouting is free software that implements and manages various IPv4 and IPv6
92 Currently FRRouting supports BGP4
, BGP4
+, OSPFv2
, OSPFv3
, RIPv1
, RIPv2
, RIPng
,
93 IS-IS
, PIM-SM
/MSDP
, LDP
, VRRP and Babel
as well
as very early support for EIGRP and
97 define Package
/frr-libfrr
98 $(call Package
/frr
/Default
)
100 DEPENDS
+=+librt
+libatomic
+libcap
+libjson-c
+libyang
+libprotobuf-c
+FRR_OPENSSL
:libopenssl
+FRR_SNMP
:libnetsnmp
101 CONFLICTS
:=quagga-libzebra
104 define Package
/frr-vtysh
105 $(call Package
/frr
/Default
)
106 DEPENDS
+=+frr-libfrr
+libreadline
+libncurses
+more
107 TITLE
:=integrated
shell for frr routing software
108 CONFLICTS
:=quagga-vtysh
111 define Package
/frr-watchfrr
112 $(call Package
/frr
/Default
)
115 DEFAULT
:=y if PACKAGE_frr
118 define Package
/frr-zebra
119 $(call Package
/frr
/Default
)
122 DEFAULT
:=y if PACKAGE_frr
123 CONFLICTS
:=quagga-zebra
126 define Package
/frr-pythontools
127 $(call Package
/frr
/Default
)
128 TITLE
:=Python reload tool
129 DEPENDS
+=+frr-libfrr
+python3-base
+python3-light
+python3-logging
132 ##Migrate from quagga
133 ##should test file exists and link in frr folder
134 #define Package/frr/postinst
136 #if [ -f /etc/quagga/ospfd.conf ]; then
138 # sed enable ospfd daemon
144 define Package
/frr-
$(1)
145 $$(call Package
/frr
/Default
)
146 TITLE
:= $(1) routing engine
147 DEPENDS
+=frr-libfrr
$(2)
149 # if [ "$(1)" == "bfdd" ]; then \
150 # export HAVE_BFDD == 1 ; fi
152 define Package
/frr-
$(1)/install
153 $(INSTALL_DIR
) $$(1)/usr
/sbin
154 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/sbin
/$(1) $$(1)/usr
/sbin
/; \
155 if
[ "$(1)" == "nhrpd" ]; then \
156 $(INSTALL_DIR
) $$(1)/usr
/lib
; \
157 $(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/libfrrcares.so
* $$(1)/usr
/lib
/; fi
160 $$(eval
$$(call BuildPackage
,frr-
$(1)))
163 define Package
/frr-libfrr
/conffiles
169 TARGET_LDFLAGS
+= -Wl
,--gc-sections
,--as-needed
-latomic
171 define Host
/Configure
172 $(Host
/Configure
/Default
)
173 $(SED
) 's/$$$$(MAKE) $$$$(AM_MAKEFLAGS) install-am/# $$$$(MAKE) $$$$(AM_MAKEFLAGS) install-am/' $(HOST_BUILD_DIR
)/Makefile.in
176 HOST_CPPFLAGS
+= -I
$(STAGING_DIR_HOST
)/include/libelf
177 HOST_CONFIGURE_ARGS
+= \
181 $(INSTALL_DIR
) $(STAGING_DIR_HOSTPKG
)/bin
182 $(INSTALL_BIN
) $(HOST_BUILD_DIR
)/lib
/clippy
$(STAGING_DIR_HOSTPKG
)/bin
/
186 --with-clippy
=$(STAGING_DIR_HOSTPKG
)/bin
/clippy \
190 --enable-user
=network \
191 --enable-group
=network \
192 --disable-ospfclient \
194 --disable-backtrace \
195 --localstatedir
=/var
/run
/frr \
196 --sysconfdir
=/etc
/frr
/ \
197 $(if
$(CONFIG_FRR_OPENSSL
),--with-crypto
=openssl
,) \
198 $(if
$(CONFIG_FRR_SNMP
),--enable-snmp
,) \
199 $(foreach m
,$(PKG_DAEMON_AVAILABLE
), \
200 $(call autoconf_bool
,CONFIG_PACKAGE_frr-
$(m
),$(m
)) ) \
201 $(call autoconf_bool
,CONFIG_PACKAGE_frr-vtysh
,vtysh
) \
202 $(call autoconf_bool
,CONFIG_PACKAGE_frr-libfrr
,zebra
)
205 define Package
/frr
/install
206 $(INSTALL_DIR
) $(1)/usr
/sbin
$(1)/etc
/init.d
207 $(INSTALL_BIN
) .
/files
/frrcommon.sh
$(1)/usr
/sbin
/
208 $(INSTALL_BIN
) .
/files
/frr
$(1)/etc
/init.d
/
211 define Package
/frr-watchfrr
/install
212 $(INSTALL_DIR
) $(1)/usr
/sbin
213 $(INSTALL_BIN
) .
/files
/watchfrr.sh
$(1)/usr
/sbin
/
214 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/sbin
/watchfrr
$(1)/usr
/sbin
/
217 define Package
/frr-zebra
/install
218 $(INSTALL_DIR
) $(1)/usr
/sbin
219 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/sbin
/zebra
$(1)/usr
/sbin
/
222 define Package
/frr-libfrr
/install
223 $(INSTALL_DIR
) $(1)/usr
/lib
$(1)/etc
/frr
224 $(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/libfrr.so
* $(1)/usr
/lib
/
225 $(if
$(CONFIG_FRR_SNMP
),$(CP
) $(PKG_INSTALL_DIR
)/usr
/lib
/libfrrsnmp.so
* $(1)/usr
/lib
/,)
226 $(INSTALL_CONF
) .
/files
/{frr.conf
,daemons
} $(1)/etc
/frr
/
230 define Package
/frr-pythontools
/install
231 $(INSTALL_DIR
) $(1)/usr
/lib
/frr
$(1)/usr
/sbin
$(1)/etc
/frr
232 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/sbin
/*.py
$(1)/usr
/lib
/frr
/
233 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/sbin
/frr-reload
$(1)/usr
/sbin
/
234 $(INSTALL_CONF
) $(PKG_BUILD_DIR
)/tools
/etc
/frr
/support_bundle_commands.conf
$(1)/etc
/frr
/
237 define Package
/frr-vtysh
/install
238 $(INSTALL_DIR
) $(1)/usr
/bin
$(1)/etc
/frr
239 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/bin
/vtysh
$(1)/usr
/bin
/
240 $(INSTALL_CONF
) .
/files
/vtysh.conf
$(1)/etc
/frr
/
243 $(eval
$(call HostBuild
))
244 $(eval
$(call BuildPackage
,frr
))
245 $(eval
$(call BuildPackage
,frr-libfrr
))
246 $(eval
$(call BuildPackage
,frr-pythontools
))
247 $(eval
$(call BuildPackage
,frr-watchfrr
))
248 $(eval
$(call BuildPackage
,frr-zebra
))
249 $(eval
$(call BuildPackage
,frr-vtysh
))
250 $(eval
$(call BuildDaemon
,babeld
,))
251 $(eval
$(call BuildDaemon
,bfdd
,))
252 $(eval
$(call BuildDaemon
,bgpd
,))
253 $(eval
$(call BuildDaemon
,eigrpd
,))
254 $(eval
$(call BuildDaemon
,fabricd
,))
255 $(eval
$(call BuildDaemon
,isisd
,))
256 $(eval
$(call BuildDaemon
,ldpd
,))
257 $(eval
$(call BuildDaemon
,nhrpd
,+libcares
))
258 $(eval
$(call BuildDaemon
,ospfd
,))
259 $(eval
$(call BuildDaemon
,ospf6d
,@IPV6
))
260 $(eval
$(call BuildDaemon
,pathd
,))
261 $(eval
$(call BuildDaemon
,pbrd
,))
262 $(eval
$(call BuildDaemon
,pimd
,))
263 $(eval
$(call BuildDaemon
,ripd
,))
264 $(eval
$(call BuildDaemon
,ripngd
,@IPV6
))
265 $(eval
$(call BuildDaemon
,staticd
,))
266 $(eval
$(call BuildDaemon
,vrrpd
,))