bluez-tools: Add package bluezetools
[feed/packages.git] / net / openvswitch / Makefile
1 #
2 # Copyright (C) 2013 Julius Schulz-Zander <julius@net.t-labs.tu-berlin.de>
3 # Copyright (C) 2014-2017 OpenWrt.org
4 # Copyright (C) 2018-2020 Yousong Zhou <yszhou4tech@gmail.com>
5 #
6 # This is free software, licensed under the GNU General Public License v2.
7 # See /LICENSE for more information.
8 #
9 include $(TOPDIR)/rules.mk
10 include $(INCLUDE_DIR)/kernel.mk
11 include ./openvswitch.mk
12
13 # Checklist on version bump
14 #
15 # - Check acinclude.m4 for range of supported kernel versions: "but version newer than .* is not supported"
16 # - Check and update kmod dependencies when necessary (runtime module load check in the least)
17 #
18 PKG_NAME:=openvswitch
19 PKG_VERSION:=$(ovs_version)
20 PKG_RELEASE:=10
21 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
22 PKG_SOURCE_URL:=https://www.openvswitch.org/releases/
23 PKG_HASH:=7d5797f2bf2449c6a266149e88f72123540f7fe7f31ad52902057ae8d8f88c38
24
25 PKG_LICENSE:=Apache-2.0
26 PKG_LICENSE_FILES:=LICENSE
27 PKG_CPE_ID:=cpe:/a:openvswitch:openvswitch
28
29 PKG_BUILD_DIR:=$(ovs_builddir)
30 PKG_BUILD_DEPENDS+=python3/host
31 PKG_USE_MIPS16:=0
32 PKG_BUILD_PARALLEL:=1
33 PKG_FIXUP:=autoreconf
34 PKG_INSTALL:=1
35 PYTHON3_PKG_BUILD:=0
36
37 PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
38
39 include $(INCLUDE_DIR)/package.mk
40 include ../../lang/python/python3-host.mk
41 include ../../lang/python/python3-package.mk
42
43 define Package/openvswitch/config
44 source "$(SOURCE)/Config.in"
45 endef
46
47 ovs_kmod_packages:=
48 ovs_kmod_intree_kernel_patchver_min:=3.10
49 ovs_kmod_intree_kernel_patchver_max:=5.5
50 ovs_kmod_intree_not_supported:=$(strip $(call kernel_patchver_lt,$(ovs_kmod_intree_kernel_patchver_min))$(call kernel_patchver_gt,$(ovs_kmod_intree_kernel_patchver_max)))
51 ovs_kmod_intree_dir:=$(PKG_BUILD_DIR)/datapath/linux
52 ovs_kmod_upstream_dir:=$(LINUX_DIR)/net/openvswitch
53 ovs_kmod_package_name=$(if $(filter openvswitch,$(1)),openvswitch,$(1))
54 ovs_kmod_is_intree=$(filter %-intree,$(1))
55 ovs_kmod_upstream_name=kmod-$(call ovs_kmod_package_name,$(patsubst %-intree,%,$(1)))
56 ovs_kmod_package_provides=$(call ovs_kmod_upstream_name,$(1))
57 define OvsKmodPackageTemplate
58 ifeq ($(if $(call ovs_kmod_is_intree,$(1)),$(ovs_kmod_intree_not_supported)),)
59 define KernelPackage/$(call ovs_kmod_package_name,$(1))
60 SECTION:=kernel
61 CATEGORY:=Kernel modules
62 SUBMENU:=Network Support
63 TITLE:=$(ovs_kmod_$(1)_title)
64 DEPENDS:=$(ovs_kmod_$(1)_depends) $(if $(call ovs_kmod_is_intree,$(1)),@IPV6 @DEVEL)
65 PROVIDES:=$(call ovs_kmod_package_provides,$(1))
66 KCONFIG:=$(ovs_kmod_$(1)_kconfig)
67 FILES:=$(ovs_kmod_$(1)_files)
68 AUTOLOAD:=$(call AutoProbe,$(foreach m,$(ovs_kmod_$(1)_files),$(notdir $(patsubst %.ko,%,$(basename $(m))))))
69 endef
70
71 ovs_kmod_packages+=$(call ovs_kmod_package_name,$(1))
72 endif
73 endef
74
75 ovs_kmod_openvswitch_title:=Open vSwitch kernel datapath (upstream)
76 ovs_kmod_openvswitch_kconfig:=CONFIG_OPENVSWITCH
77 ovs_kmod_openvswitch_depends:=\
78 +kmod-lib-crc32c \
79 +kmod-nf-nat \
80 +IPV6:kmod-nf-nat6 \
81 +kmod-nf-conntrack \
82 +IPV6:kmod-nf-conntrack6 \
83 +kmod-nsh \
84 +kmod-ipt-conntrack-extra \
85
86 ovs_kmod_openvswitch_files:=$(ovs_kmod_upstream_dir)/openvswitch.ko
87 $(eval $(call OvsKmodPackageTemplate,openvswitch))
88
89 ovs_kmod_openvswitch-gre_title:=Open vSwitch GRE tunneling support (upstream)
90 ovs_kmod_openvswitch-gre_kconfig:= CONFIG_OPENVSWITCH_GRE
91 ovs_kmod_openvswitch-gre_depends:= +kmod-openvswitch +kmod-gre
92 ovs_kmod_openvswitch-gre_files:= $(ovs_kmod_upstream_dir)/vport-gre.ko
93 $(eval $(call OvsKmodPackageTemplate,openvswitch-gre))
94
95 ovs_kmod_openvswitch-vxlan_title:=Open vSwitch VXLAN tunneling support (upstream)
96 ovs_kmod_openvswitch-vxlan_kconfig:= CONFIG_OPENVSWITCH_VXLAN
97 ovs_kmod_openvswitch-vxlan_depends:= +kmod-openvswitch +kmod-vxlan
98 ovs_kmod_openvswitch-vxlan_files:= $(ovs_kmod_upstream_dir)/vport-vxlan.ko
99 $(eval $(call OvsKmodPackageTemplate,openvswitch-vxlan))
100
101 ovs_kmod_openvswitch-geneve_title:=Open vSwitch Geneve tunneling support (upstream)
102 ovs_kmod_openvswitch-geneve_kconfig:= CONFIG_OPENVSWITCH_GENEVE
103 ovs_kmod_openvswitch-geneve_depends:= +kmod-openvswitch +kmod-geneve
104 ovs_kmod_openvswitch-geneve_files:= $(ovs_kmod_upstream_dir)/vport-geneve.ko
105 $(eval $(call OvsKmodPackageTemplate,openvswitch-geneve))
106
107 # NOTE depends
108 #
109 # - kmod-ipt-conntrack-extra: required for nf_conncount.ko
110 #
111 ovs_kmod_openvswitch-intree_title:=Open vSwitch kernel datapath (in tree)
112 ovs_kmod_openvswitch-intree_depends:=\
113 +kmod-lib-crc32c \
114 +kmod-nf-nat \
115 +IPV6:kmod-nf-nat6 \
116 +kmod-nf-conntrack \
117 +kmod-udptunnel4 \
118 +kmod-ipt-conntrack-extra \
119
120 ovs_kmod_openvswitch-intree_files:= $(ovs_kmod_intree_dir)/openvswitch.ko
121 $(eval $(call OvsKmodPackageTemplate,openvswitch-intree))
122
123 ovs_kmod_openvswitch-gre-intree_title:=Open vSwitch GRE tunneling support (in tree)
124 ovs_kmod_openvswitch-gre-intree_depends:= +kmod-openvswitch-intree +kmod-gre
125 ovs_kmod_openvswitch-gre-intree_files:= $(ovs_kmod_intree_dir)/vport-gre.ko
126 $(eval $(call OvsKmodPackageTemplate,openvswitch-gre-intree))
127
128 ovs_kmod_openvswitch-vxlan-intree_title:=Open vSwitch VXLAN tunneling support (in tree)
129 ovs_kmod_openvswitch-vxlan-intree_depends:= +kmod-openvswitch-intree +kmod-vxlan
130 ovs_kmod_openvswitch-vxlan-intree_files:= $(ovs_kmod_intree_dir)/vport-vxlan.ko
131 $(eval $(call OvsKmodPackageTemplate,openvswitch-vxlan-intree))
132
133 ovs_kmod_openvswitch-geneve-intree_title:=Open vSwitch Geneve tunneling support (in tree)
134 ovs_kmod_openvswitch-geneve-intree_depends:= +kmod-openvswitch-intree +kmod-geneve
135 ovs_kmod_openvswitch-geneve-intree_files:= $(ovs_kmod_intree_dir)/vport-geneve.ko
136 $(eval $(call OvsKmodPackageTemplate,openvswitch-geneve-intree))
137
138 ovs_kmod_openvswitch-stt-intree_title:=Open vSwitch STT tunneling support (in tree)
139 ovs_kmod_openvswitch-stt-intree_depends:= +kmod-openvswitch-intree
140 ovs_kmod_openvswitch-stt-intree_files:= $(ovs_kmod_intree_dir)/vport-stt.ko
141 $(eval $(call OvsKmodPackageTemplate,openvswitch-stt-intree))
142
143 ovs_kmod_openvswitch-lisp-intree_title:=Open vSwitch LISP tunneling support (in tree)
144 ovs_kmod_openvswitch-lisp-intree_depends:= +kmod-openvswitch-intree
145 ovs_kmod_openvswitch-lisp-intree_files:= $(ovs_kmod_intree_dir)/vport-lisp.ko
146 $(eval $(call OvsKmodPackageTemplate,openvswitch-lisp-intree))
147
148 # Dependency review
149 #
150 # for f in sbin/*; do echo $f; readelf -d $f | grep -i shared; done
151 # for f in bin/*; do echo $f; readelf -d $f | grep -i shared; done
152 # for f in lib/*.so; do echo $f; readelf -d $f | grep -i shared; done
153 #
154 ovs_libopenvswitch_title:=Open vSwitch (libopenvswitch.so)
155 ovs_libopenvswitch_hidden:=1
156 ovs_libopenvswitch_depends:=+libopenssl +!(arc||arceb):libunwind
157 ovs_libopenvswitch_depends+=+libatomic
158 ifeq ($(CONFIG_OPENVSWITCH_WITH_LIBUNBOUND),y)
159 ovs_libopenvswitch_depends+=+libunbound
160 endif
161 ovs_libopenvswitch_files:=usr/lib/libopenvswitch*.so*
162 $(eval $(call OvsPackageTemplate,libopenvswitch))
163
164
165 ovs_libofproto_title:=Open vSwitch (libofproto.so libsflow.so)
166 ovs_libofproto_hidden:=1
167 ovs_libofproto_depends+=+libatomic
168 ovs_libofproto_files:=usr/lib/libofproto*.so* usr/lib/libsflow*.so*
169 $(eval $(call OvsPackageTemplate,libofproto))
170
171
172 ovs_libovsdb_title:=Open vSwitch (libovsdb.so)
173 ovs_libovsdb_hidden:=1
174 ovs_libovsdb_depends+=+libatomic
175 ovs_libovsdb_files:=usr/lib/libovsdb*.so*
176 $(eval $(call OvsPackageTemplate,libovsdb))
177
178
179 ovs_vswitchd_title:=Open vSwitch (ovs-vswitchd)
180 ovs_vswitchd_hidden:=1
181 ovs_vswitchd_depends:=+openvswitch-libopenvswitch +openvswitch-libofproto
182 ovs_vswitchd_depends+=+libatomic
183 ovs_vswitchd_files:=usr/sbin/ovs-vswitchd
184 $(eval $(call OvsPackageTemplate,vswitchd))
185
186
187 ovs_ovsdb_title:=Open vSwitch (ovsdb-server)
188 ovs_ovsdb_hidden:=1
189 ovs_ovsdb_depends:=+openvswitch-libopenvswitch +openvswitch-libovsdb
190 ovs_ovsdb_depends+=+libatomic
191 ovs_ovsdb_files:=usr/sbin/ovsdb-server
192 $(eval $(call OvsPackageTemplate,ovsdb))
193
194
195 ovs_common_title:=Open vSwitch (common files)
196 ovs_common_hidden:=1
197 ovs_common_depends:=+openvswitch-libopenvswitch +openvswitch-libofproto +openvswitch-libovsdb
198 ovs_common_depends+=+libatomic
199 ovs_common_files:= \
200 usr/share/openvswitch/scripts/ovs-lib \
201 usr/share/openvswitch/scripts/ovs-ctl \
202 usr/share/openvswitch/scripts/ovs-kmod-ctl \
203 usr/share/openvswitch/scripts/ovs-save \
204 $(foreach b,ovs-appctl ovs-dpctl ovs-ofctl ovs-vsctl ovsdb-client ovsdb-tool,usr/bin/$(b))
205 define ovs_common_install
206 $$(INSTALL_DIR) $$(1)/etc/openvswitch
207 $$(INSTALL_DIR) $$(1)/etc/init.d
208 $$(INSTALL_BIN) ./files/openvswitch.init $$(1)/etc/init.d/openvswitch
209 $$(INSTALL_DIR) $$(1)/etc/config
210 $$(INSTALL_DATA) ./files/openvswitch.config $$(1)/etc/config/openvswitch
211 $$(INSTALL_DIR) $$(1)/usr/share/openvswitch/scripts
212 $$(INSTALL_BIN) ./files/ovs-ctl-wrapper $$(1)/usr/share/openvswitch/scripts/
213 $$(LN) /usr/share/openvswitch/scripts/ovs-ctl-wrapper $$(1)/usr/bin/ovs-ctl
214 $$(LN) /usr/share/openvswitch/scripts/ovs-ctl-wrapper $$(1)/usr/bin/ovs-kmod-ctl
215 endef
216 define Package/openvswitch-common/conffiles
217 /etc/config/openvswitch
218 /etc/openvswitch
219 endef
220 $(eval $(call OvsPackageTemplate,common))
221
222
223 # coreutils-sleep is required by ovs-lib for sleeping a fraction of second
224 #
225 # uuidgen is required for generating system-id
226 ovs_openvswitch_title:=Open vSwitch
227 ovs_openvswitch_hidden:=
228 ovs_openvswitch_depends:=+coreutils +coreutils-sleep +uuidgen \
229 +openvswitch-common +openvswitch-vswitchd +openvswitch-ovsdb +kmod-openvswitch
230 ovs_openvswitch_depends+=+libatomic
231 ovs_openvswitch_files:= usr/share/openvswitch/vswitch.ovsschema
232 $(eval $(call OvsPackageTemplate,openvswitch))
233
234
235 ovs_python3_title:=Open vSwitch (Python3 library)
236 ovs_python3_hidden:=
237 ovs_python3_depends:=+PACKAGE_openvswitch-python3:python3
238 define ovs_python3_install
239 $$(INSTALL_DIR) $$(1)$$(PYTHON3_PKG_DIR)
240 $$(CP) $$(PKG_INSTALL_DIR)/usr/share/openvswitch/python/ovs $$(1)$$(PYTHON3_PKG_DIR)
241 endef
242 $(eval $(call OvsPackageTemplate,python3))
243
244
245 CONFIGURE_ARGS+= \
246 --enable-ndebug \
247 --enable-shared \
248 --disable-libcapng \
249 --disable-silent-rules \
250
251 CONFIGURE_VARS += \
252 $(if $(CONFIG_OPENVSWITCH_WITH_LIBUNBOUND),,ac_cv_lib_unbound_ub_ctx_create=no) \
253 ovs_cv_flake8=no \
254 ovs_cv_python3=$(PYTHON3) \
255 ovs_cv_python3_host=$(HOST_PYTHON3_BIN) \
256 SPHINXBUILD=none \
257 KARCH=$(LINUX_KARCH) \
258
259 ovs_intree_kmod_configs:=CONFIG_PACKAGE_kmod-openvswitch-intree
260 ovs_intree_kmod_enabled:=$(strip $(foreach c,$(ovs_intree_kmod_configs),$($(c))))
261 PKG_CONFIG_DEPENDS+=$(ovs_intree_kmod_configs)
262 ifneq ($(ovs_intree_kmod_enabled),)
263 ifeq ($(ovs_kmod_intree_not_supported),)
264 CONFIGURE_ARGS += --with-linux=$(LINUX_DIR)
265 else
266 $(warning XXX: openvswitch: intree kmods selected but not supported)
267 endif
268 endif
269
270 TARGET_CFLAGS += -flto -std=gnu99
271 MAKE_VARS += PYTHONPATH="$(HOST_PYTHON3PATH)"
272
273 export OVS_KERNEL_MAKE_FLAGS=$(KERNEL_MAKE_FLAGS)
274
275 override CONFIG_AUTOREMOVE=
276
277 $(foreach p,$(ovs_kmod_packages),\
278 $(eval $(call KernelPackage,$(p)))\
279 )
280 $(foreach p,$(ovs_packages),\
281 $(eval $(call BuildPackage,$(p)))\
282 )