Merge pull request #11071 from EricLuehrsen/ldns_171
[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.2.1
11 PKG_RELEASE:=1
12
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>
17
18 PKG_DAEMON_AVAILABLE:= \
19 babeld \
20 bfdd \
21 bgpd \
22 eigrpd \
23 fabricd \
24 isisd \
25 ldpd \
26 nhrpd \
27 ospfd \
28 ospf6d \
29 pbrd \
30 pimd \
31 ripd \
32 ripngd \
33 staticd \
34 vrrpd
35
36
37 PKG_CONFIG_DEPENDS:= \
38 CONFIG_IPV6 \
39 CONFIG_FRR_OPENSSL \
40 CONFIG_FRR_INTERNAL \
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)) \
46
47 PKG_BUILD_PARALLEL:=1
48 PKG_BUILD_DEPENDS:=python3/host
49 PKG_FIXUP:=autoreconf
50 PKG_LICENSE:=GPL-2.0
51
52 include $(INCLUDE_DIR)/package.mk
53 include $(INCLUDE_DIR)/host-build.mk
54
55 define Package/frr-libfrr/config
56 source "$(SOURCE)/Config.in"
57 endef
58
59 define Package/frr/Default
60 SECTION:=net
61 CATEGORY:=Network
62 SUBMENU:=Routing and Redirection
63 URL:=https://www.frrouting.org/
64 DEPENDS:=frr
65 endef
66
67 define Package/frr
68 $(call Package/frr/Default)
69 DEPENDS:=+librt
70 TITLE:=The FRRouting (FRR) Software Routing Suite
71 MENU:=1
72 endef
73
74 define Package/frr/description
75 FRRouting is free software that implements and manages various IPv4 and IPv6
76 routing protocols.
77
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
80 NHRP.
81 endef
82
83 define Package/frr-libfrr
84 $(call Package/frr/Default)
85 TITLE:=zebra library
86 DEPENDS+=+librt +libjson-c +libyang +FRR_OPENSSL:libopenssl
87 CONFLICTS:=quagga-libzebra
88 endef
89
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
95 endef
96
97 define Package/frr-watchfrr
98 $(call Package/frr/Default)
99 TITLE:=frr watchdog
100 DEPENDS+=+frr-libfrr
101 DEFAULT:=y if PACKAGE_frr
102 endef
103
104 define Package/frr-zebra
105 $(call Package/frr/Default)
106 TITLE:=Zebra daemon
107 DEPENDS+=+frr-libfrr
108 DEFAULT:=y if PACKAGE_frr
109 CONFLICTS:=quagga-zebra
110 endef
111
112 ##Migrate from quagga
113 ##should test file exists and link in frr folder
114 #define Package/frr/postinst
115 ##!/bin/sh
116 #if [ -f /etc/quagga/ospfd.conf ]; then
117 # ls to /etc/frr
118 # sed enable ospfd daemon
119 #fi
120 #exit 0
121 #endef
122
123 define BuildDaemon
124 define Package/frr-$(1)
125 $$(call Package/frr/Default)
126 TITLE:= $(1) routing engine
127 DEPENDS+=frr-libfrr $(2)
128 endef
129
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/; \
134 else \
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
139 endef
140
141 $$(eval $$(call BuildPackage,frr-$(1)))
142 endef
143
144 define Package/frr-libfrr/conffiles
145 /etc/frr/
146 endef
147
148 define Build/Prepare
149 $(Build/Prepare/Default)
150 mkdir -p $(PKG_BUILD_DIR)/build
151 endef
152
153 define Build/Configure
154 ( cd $(PKG_BUILD_DIR)/build/ ; \
155 ../configure \
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)" \
166 --prefix=/usr \
167 --enable-shared \
168 --disable-static \
169 --enable-user=network \
170 --enable-group=network \
171 --enable-multipath=16 \
172 --disable-capabilities \
173 --disable-ospfclient \
174 --disable-doc \
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) \
183 )
184 endef
185
186 # just speed it up
187 NUM_CORES ?= $(shell grep -c "vendor_id" /proc/cpuinfo)
188
189 define Build/Compile
190 $(MAKE) -C $(PKG_BUILD_DIR)/build -j$(NUM_CORES)
191 endef
192
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/
198 endef
199
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/
204 endef
205
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/
209 endef
210
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/
217 endef
218
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/
222 endef
223
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,))