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
:=774585564dc00e67c4eb51521cb2a8e584031364916514860227af07b638a408
16 PKG_MAINTAINER
:=Lucian Cristian
<lucian.cristian@gmail.com
>
18 PKG_DAEMON_AVAILABLE
:= \
37 PKG_CONFIG_DEPENDS
:= \
41 CONFIG_PACKAGE_frr-libfrr \
42 CONFIG_PACKAGE_frr-vtysh \
43 CONFIG_PACKAGE_frr-watchfrr \
44 CONFIG_PACKAGE_frr-zebra \
45 $(patsubst %,CONFIG_PACKAGE_frr-
%,$(PKG_DAEMON_AVAILABLE
)) \
48 PKG_BUILD_DEPENDS
:=python3
/host
52 include $(INCLUDE_DIR
)/package.mk
53 include $(INCLUDE_DIR
)/host-build.mk
55 define Package
/frr-libfrr
/config
56 source
"$(SOURCE)/Config.in"
59 define Package
/frr
/Default
62 SUBMENU
:=Routing and Redirection
63 URL
:=https
://www.frrouting.org
/
68 $(call Package
/frr
/Default
)
70 TITLE
:=The FRRouting
(FRR
) Software Routing Suite
74 define Package
/frr
/description
75 FRRouting is free software that implements and manages various IPv4 and IPv6
78 Currently FRRouting supports BGP4
, BGP4
+, OSPFv2
, OSPFv3
, RIPv1
, RIPv2
, RIPng
,
79 IS-IS
, PIM-SM
/MSDP
, LDP
, VRRP and Babel
as well
as very early support for EIGRP and
83 define Package
/frr-libfrr
84 $(call Package
/frr
/Default
)
86 DEPENDS
+=+librt
+libjson-c
+libyang
+FRR_OPENSSL
:libopenssl
87 CONFLICTS
:=quagga-libzebra
90 define Package
/frr-vtysh
91 $(call Package
/frr
/Default
)
92 DEPENDS
+=+frr-libfrr
+libreadline
+libncurses
+more
93 TITLE
:=integrated
shell for frr routing software
94 CONFLICTS
:=quagga-vtysh
97 define Package
/frr-watchfrr
98 $(call Package
/frr
/Default
)
101 DEFAULT
:=y if PACKAGE_frr
104 define Package
/frr-zebra
105 $(call Package
/frr
/Default
)
108 DEFAULT
:=y if PACKAGE_frr
109 CONFLICTS
:=quagga-zebra
112 ##Migrate from quagga
113 ##should test file exists and link in frr folder
114 #define Package/frr/postinst
116 #if [ -f /etc/quagga/ospfd.conf ]; then
118 # sed enable ospfd daemon
124 define Package
/frr-
$(1)
125 $$(call Package
/frr
/Default
)
126 TITLE
:= $(1) routing engine
127 DEPENDS
+=frr-libfrr
$(2)
130 define Package
/frr-
$(1)/install
131 $(INSTALL_DIR
) $$(1)/usr
/sbin
132 if
[ "$(1)" != "fabricd" ]; then \
133 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/build
/$(1)/.libs
/$(1) $$(1)/usr
/sbin
/; \
135 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/build
/isisd
/.libs
/$(1) $$(1)/usr
/sbin
/; fi
136 if
[ "$(1)" == "nhrpd" ]; then \
137 $(INSTALL_DIR
) $$(1)/usr
/lib
; \
138 $(CP
) $(PKG_BUILD_DIR
)/build
/lib
/.libs
/libfrrcares.so
* $$(1)/usr
/lib
/; fi
141 $$(eval
$$(call BuildPackage
,frr-
$(1)))
144 define Package
/frr-libfrr
/conffiles
149 $(Build
/Prepare
/Default
)
150 mkdir
-p
$(PKG_BUILD_DIR
)/build
153 define Build
/Configure
154 ( cd
$(PKG_BUILD_DIR
)/build
/ ; \
156 --host
="$(GNU_TARGET_NAME)" \
157 --build
="$(GNU_HOST_NAME)" \
158 CFLAGS
="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
159 CXXFLAGS
="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
160 LDFLAGS
="$(TARGET_LDFLAGS) $(EXTRA_LDFLAGS)" \
161 HOST_CFLAGS
="$(HOST_CFLAGS)" \
162 HOST_LDFLAGS
="$(HOST_LDFLAGS)" \
163 BUILD_CPPFLAGS
="$(TARGET_CPPLAGS)" \
164 BUILD_CFLAGS
="$(TARGET_CFLAGS)" \
165 BUILD_LDFLAGS
="$(TARGET_LDFLAGS)" \
169 --enable-user
=network \
170 --enable-group
=network \
171 --enable-multipath
=16 \
172 --disable-capabilities \
173 --disable-ospfclient \
175 --disable-backtrace \
176 --localstatedir
=/var
/run
/frr \
177 --sysconfdir
=/etc
/frr
/ \
178 $(if
$(CONFIG_FRR_OPENSSL
),--with-crypto
=openssl
,) \
179 $(foreach m
,$(PKG_DAEMON_AVAILABLE
), \
180 $(call autoconf_bool
,CONFIG_PACKAGE_frr-
$(m
),$(m
)) ) \
181 $(call autoconf_bool
,CONFIG_PACKAGE_frr-vtysh
,vtysh
) \
182 $(call autoconf_bool
,CONFIG_PACKAGE_frr-libfrr
,zebra
) \
187 NUM_CORES ?
= $(shell grep
-c
"vendor_id" /proc
/cpuinfo
)
190 $(MAKE
) -C
$(PKG_BUILD_DIR
)/build
-j
$(NUM_CORES
)
193 define Package
/frr
/install
194 $(INSTALL_DIR
) $(1)/usr
/sbin
195 $(INSTALL_BIN
) .
/files
/frrcommon.sh
$(1)/usr
/sbin
/
196 $(INSTALL_DIR
) $(1)/etc
/init.d
197 $(INSTALL_BIN
) .
/files
/frr
$(1)/etc
/init.d
/
200 define Package
/frr-watchfrr
/install
201 $(INSTALL_DIR
) $(1)/usr
/sbin
202 $(INSTALL_BIN
) .
/files
/watchfrr.sh
$(1)/usr
/sbin
/
203 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/build
/watchfrr
/.libs
/watchfrr
$(1)/usr
/sbin
/
206 define Package
/frr-zebra
/install
207 $(INSTALL_DIR
) $(1)/usr
/sbin
208 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/build
/zebra
/.libs
/zebra
$(1)/usr
/sbin
/
211 define Package
/frr-libfrr
/install
212 $(INSTALL_DIR
) $(1)/usr
/lib
213 $(CP
) $(PKG_BUILD_DIR
)/build
/lib
/.libs
/libfrr.so
* $(1)/usr
/lib
/
214 $(INSTALL_DIR
) $(1)/etc
/frr
215 chmod
0750 $(1)/etc
/frr
216 $(INSTALL_CONF
) .
/files
/{frr.conf
,daemons
} $(1)/etc
/frr
/
219 define Package
/frr-vtysh
/install
220 $(INSTALL_DIR
) $(1)/usr
/bin
221 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/build
/vtysh
/.libs
/vtysh
$(1)/usr
/bin
/
224 $(eval
$(call HostBuild
))
225 $(eval
$(call BuildPackage
,frr
))
226 $(eval
$(call BuildPackage
,frr-libfrr
))
227 $(eval
$(call BuildPackage
,frr-watchfrr
))
228 $(eval
$(call BuildPackage
,frr-zebra
))
229 $(eval
$(call BuildPackage
,frr-vtysh
))
230 $(eval
$(call BuildDaemon
,babeld
,))
231 $(eval
$(call BuildDaemon
,bfdd
,))
232 $(eval
$(call BuildDaemon
,bgpd
,))
233 $(eval
$(call BuildDaemon
,eigrpd
,))
234 $(eval
$(call BuildDaemon
,fabricd
,))
235 $(eval
$(call BuildDaemon
,isisd
,))
236 $(eval
$(call BuildDaemon
,ldpd
,))
237 $(eval
$(call BuildDaemon
,nhrpd
,+libcares
))
238 $(eval
$(call BuildDaemon
,ospfd
,))
239 $(eval
$(call BuildDaemon
,ospf6d
,@IPV6
))
240 $(eval
$(call BuildDaemon
,pbrd
,))
241 $(eval
$(call BuildDaemon
,pimd
,))
242 $(eval
$(call BuildDaemon
,ripd
,))
243 $(eval
$(call BuildDaemon
,ripngd
,@IPV6
))
244 $(eval
$(call BuildDaemon
,staticd
,))
245 $(eval
$(call BuildDaemon
,vrrpd
,))