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
:=2021-03-25
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
)?
19 PKG_HASH
:=a2e21ea5f5c73afda521280c7b1bab3e6734f78517e7cf1b86cbbc0e5f9856cc
20 PKG_MAINTAINER
:=Lucian Cristian
<lucian.cristian@gmail.com
>
22 PKG_BUILD_DIR
:=$(BUILD_DIR
)/$(PKG_NAME
)-$(PKG_SOURCE_VERSION
)
23 HOST_BUILD_DIR
:=$(BUILD_DIR_HOST
)/$(PKG_NAME
)-$(PKG_SOURCE_VERSION
)
25 PKG_LICENSE
:=GPL-2.0
-only LGPL-2.1
-only
27 PKG_DAEMON_AVAILABLE
:= \
45 PKG_CONFIG_DEPENDS
:= \
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
)) \
61 PKG_BUILD_DEPENDS
:=frr
/host
62 HOST_BUILD_DEPENDS
:=python3
/host
64 include $(INCLUDE_DIR
)/package.mk
65 include $(INCLUDE_DIR
)/host-build.mk
67 define Package
/frr-libfrr
/config
68 source
"$(SOURCE)/Config.in"
71 define Package
/frr
/Default
74 SUBMENU
:=Routing and Redirection
75 URL
:=https
://www.frrouting.org
/
80 $(call Package
/frr
/Default
)
82 TITLE
:=The FRRouting
(FRR
) Software Routing Suite
86 define Package
/frr
/description
87 FRRouting is free software that implements and manages various IPv4 and IPv6
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
95 define Package
/frr-libfrr
96 $(call Package
/frr
/Default
)
98 DEPENDS
+=+librt
+libatomic
+libcap
+libjson-c
+libyang
+FRR_OPENSSL
:libopenssl
+FRR_SNMP
:libnetsnmp
99 CONFLICTS
:=quagga-libzebra
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
109 define Package
/frr-watchfrr
110 $(call Package
/frr
/Default
)
113 DEFAULT
:=y if PACKAGE_frr
116 define Package
/frr-zebra
117 $(call Package
/frr
/Default
)
120 DEFAULT
:=y if PACKAGE_frr
121 CONFLICTS
:=quagga-zebra
124 ##Migrate from quagga
125 ##should test file exists and link in frr folder
126 #define Package/frr/postinst
128 #if [ -f /etc/quagga/ospfd.conf ]; then
130 # sed enable ospfd daemon
136 define Package
/frr-
$(1)
137 $$(call Package
/frr
/Default
)
138 TITLE
:= $(1) routing engine
139 DEPENDS
+=frr-libfrr
$(2)
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
150 $$(eval
$$(call BuildPackage
,frr-
$(1)))
153 define Package
/frr-libfrr
/conffiles
159 TARGET_LDFLAGS
+= -Wl
,--gc-sections
,--as-needed
-latomic
160 TARGET_CFLAGS
+= -flto
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
167 #HOST_CPPFLAGS += -I$(STAGING_DIR_HOST)/include/libelf
168 HOST_CONFIGURE_ARGS
+= \
172 $(INSTALL_DIR
) $(STAGING_DIR_HOSTPKG
)/bin
173 $(INSTALL_BIN
) $(HOST_BUILD_DIR
)/lib
/clippy
$(STAGING_DIR_HOSTPKG
)/bin
/
177 --with-clippy
=$(STAGING_DIR_HOSTPKG
)/bin
/clippy \
182 --enable-user
=network \
183 --enable-group
=network \
184 --disable-ospfclient \
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
)
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
/
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
/
209 define Package
/frr-zebra
/install
210 $(INSTALL_DIR
) $(1)/usr
/sbin
211 $(INSTALL_BIN
) $(PKG_INSTALL_DIR
)/usr
/sbin
/zebra
$(1)/usr
/sbin
/
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
/
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
/
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
,))