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
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
:=85571b63d2774329b7e97871e4761f852066a17e99a8daae9972c6bd7a533e05
16 PKG_MAINTAINER
:=Lucian Cristian
<lucian.cristian@gmail.com
>
18 PKG_LICENSE
:=GPL-2.0
-only LGPL-2.1
-only
20 PKG_DAEMON_AVAILABLE
:= \
39 PKG_CONFIG_DEPENDS
:= \
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
)) \
55 PKG_BUILD_DEPENDS
:=frr
/host
56 HOST_BUILD_DEPENDS
:=python3
/host
58 include $(INCLUDE_DIR
)/package.mk
59 include $(INCLUDE_DIR
)/host-build.mk
61 define Package
/frr-libfrr
/config
62 source
"$(SOURCE)/Config.in"
65 define Package
/frr
/Default
68 SUBMENU
:=Routing and Redirection
69 URL
:=https
://www.frrouting.org
/
74 $(call Package
/frr
/Default
)
76 TITLE
:=The FRRouting
(FRR
) Software Routing Suite
80 define Package
/frr
/description
81 FRRouting is free software that implements and manages various IPv4 and IPv6
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
89 define Package
/frr-libfrr
90 $(call Package
/frr
/Default
)
92 DEPENDS
+=+librt
+libatomic
+libcap
+libjson-c
+libyang
+FRR_OPENSSL
:libopenssl
+FRR_SNMP
:libnetsnmp
93 CONFLICTS
:=quagga-libzebra
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
103 define Package
/frr-watchfrr
104 $(call Package
/frr
/Default
)
107 DEFAULT
:=y if PACKAGE_frr
110 define Package
/frr-zebra
111 $(call Package
/frr
/Default
)
114 DEFAULT
:=y if PACKAGE_frr
115 CONFLICTS
:=quagga-zebra
118 ##Migrate from quagga
119 ##should test file exists and link in frr folder
120 #define Package/frr/postinst
122 #if [ -f /etc/quagga/ospfd.conf ]; then
124 # sed enable ospfd daemon
130 define Package
/frr-
$(1)
131 $$(call Package
/frr
/Default
)
132 TITLE
:= $(1) routing engine
133 DEPENDS
+=frr-libfrr
$(2)
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
144 $$(eval
$$(call BuildPackage
,frr-
$(1)))
147 define Package
/frr-libfrr
/conffiles
153 TARGET_LDFLAGS
+= -Wl
,--gc-sections
,--as-needed
-latomic
154 TARGET_CFLAGS
+= -flto
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
161 HOST_CONFIGURE_ARGS
+= \
165 $(INSTALL_DIR
) $(STAGING_DIR_HOSTPKG
)/bin
166 $(INSTALL_BIN
) $(HOST_BUILD_DIR
)/lib
/clippy
$(STAGING_DIR_HOSTPKG
)/bin
/
170 --with-clippy
=$(STAGING_DIR_HOSTPKG
)/bin
/clippy \
174 --enable-user
=network \
175 --enable-group
=network \
176 --disable-ospfclient \
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
)
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
/
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
/
201 define Package
/frr-zebra
/install
202 $(INSTALL_DIR
) $(1)/usr
/sbin
203 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/sbin
/zebra
$(1)/usr
/sbin
/
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
/
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
/
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
,))