Merge pull request #4458 from fededim/master
[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 OpenWrt.org
4 #
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
7 #
8 # $Id: Makefile $
9
10 include $(TOPDIR)/rules.mk
11 include $(INCLUDE_DIR)/kernel.mk
12
13 PKG_NAME:=openvswitch
14
15 PKG_RELEASE:=2
16 PKG_VERSION:=2.7.0
17 PKG_RELEASE=$(PKG_SOURCE_VERSION)
18 PKG_LICENSE:=Apache-2.0
19 PKG_LICENSE_FILES:=COPYING
20 PKG_USE_MIPS16:=0
21
22 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
23 PKG_SOURCE_URL:=http://openvswitch.org/releases/
24 PKG_HASH:=e492cf08a929b4a2178b7f9b01dc4ff562f44138b547b4e942078187b2445d2e
25
26 PKG_BUILD_DEPENDS:=python-six/host
27
28 PKG_BUILD_PARALLEL:=1
29 PKG_FIXUP:=autoreconf
30 PKG_INSTALL:=1
31
32 SUPPORTED_KERNELS:=LINUX_3_18||LINUX_4_1||LINUX_4_3||LINUX_4_4||LINUX_4_9
33
34 include $(INCLUDE_DIR)/package.mk
35 $(call include_mk, python-package.mk)
36
37 define Package/openvswitch/Default
38 SECTION:=net
39 SUBMENU:=Open vSwitch
40 CATEGORY:=Network
41 URL:=http://openvswitch.org/
42 MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
43 endef
44
45 define Package/openvswitch/Default/description
46 Open vSwitch is a production quality, multilayer, software-based, Ethernet
47 virtual switch. It is designed to enable massive network automation through
48 programmatic extension, while still supporting standard management interfaces
49 and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In
50 addition, it is designed to support distribution across multiple physical
51 servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus
52 1000V.
53 endef
54
55 define Package/openvswitch-base
56 $(call Package/openvswitch/Default)
57 TITLE:=Open vSwitch Userspace Package (base)
58 DEPENDS:=+libpcap +libopenssl +librt +kmod-openvswitch @($(SUPPORTED_KERNELS))
59 endef
60
61 define Package/openvswitch-base/description
62 Provides the main userspace components required for Open vSwitch to function.
63 The main OVS tools (ovs-vsctl, ovs-ofctl, etc) are packaged separately
64 to conserve some room and allow more configurability.
65 endef
66
67 define Package/openvswitch-python
68 $(call Package/openvswitch/Default)
69 TITLE:=Open vSwitch Python Support
70 DEPENDS:=+openvswitch +python +python-six
71 endef
72
73 define Package/openvswitch-python/description
74 Provides bindings and libraries for using Python to manipulate/work with Open vSwitch.
75 endef
76
77 OVS_BIN_TOOLS:=ovs-appctl ovs-ofctl ovs-dpctl ovs-vsctl ovsdb-client
78 define Package/openvswitch
79 $(call Package/openvswitch/Default)
80 TITLE:=Open vSwitch Userspace Package
81 DEPENDS:=+openvswitch-base $(foreach t,$(OVS_BIN_TOOLS),+openvswitch-$(t))
82 endef
83
84 define Package/openvswitch/description
85 Provides the main userspace components required for Open vSwitch to function.
86 Includes also the main OVS utilities (ovs-appctl, ovs-vsctl, etc).
87 endef
88
89 define KernelPackage/openvswitch
90 SECTION:=kernel
91 CATEGORY:=Kernel modules
92 SUBMENU:=Network Support
93 TITLE:=Open vSwitch Kernel Package
94 KCONFIG:= \
95 CONFIG_BRIDGE \
96 CONFIG_OPENVSWITCH \
97 CONFIG_OPENVSWITCH_GRE=n \
98 CONFIG_OPENVSWITCH_VXLAN=n \
99 CONFIG_OPENVSWITCH_GENEVE=n
100 DEPENDS:= \
101 @IPV6 +kmod-gre +kmod-lib-crc32c +kmod-mpls \
102 +kmod-vxlan +kmod-nf-nat +kmod-nf-nat6 \
103 @($(SUPPORTED_KERNELS))
104 FILES:= $(LINUX_DIR)/net/openvswitch/openvswitch.ko
105 AUTOLOAD:=$(call AutoLoad,21,openvswitch)
106 endef
107
108 define KernelPackage/openvswitch/description
109 This package contains the Open vSwitch kernel moodule and bridge compat
110 module. Furthermore, it supports OpenFlow.
111 endef
112
113 CONFIGURE_ARGS += --with-linux=$(LINUX_DIR) --with-rundir=/var/run
114 CONFIGURE_ARGS += --enable-ndebug
115 CONFIGURE_ARGS += --disable-ssl
116 CONFIGURE_ARGS += --enable-shared
117
118 TARGET_CFLAGS += -flto -std=gnu99
119
120 CONFIGURE_VARS += KARCH=$(LINUX_KARCH)
121 MAKE_FLAGS += ARCH="$(LINUX_KARCH)"
122
123 define OvsBinUtility
124 define Package/openvswitch-$(1)
125 $(call Package/openvswitch/Default)
126 TITLE:=$(2)
127 DEPENDS:=+openvswitch-base
128 endef
129
130 define Package/openvswitch-$(1)/description
131 $(2)
132 endef
133
134 define Package/openvswitch-$(1)/install
135 $(INSTALL_DIR) $$(1)/usr/bin/ ;\
136 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/
137 endef
138 endef
139
140 define Package/openvswitch-base/install
141 $(INSTALL_DIR) $(1)/etc/openvswitch
142
143 $(INSTALL_DIR) $(1)/etc/init.d
144 $(INSTALL_BIN) ./files/etc/init.d/openvswitch.init $(1)/etc/init.d/openvswitch
145
146 $(INSTALL_DIR) $(1)/usr/lib/
147 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libofproto*.so* $(1)/usr/lib/
148 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopenvswitch*.so* $(1)/usr/lib/
149 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libovsdb*.so* $(1)/usr/lib/
150 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsflow*.so* $(1)/usr/lib/
151
152 $(INSTALL_DIR) $(1)/usr/bin/
153 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovsdb-tool $(1)/usr/bin/
154
155 $(INSTALL_DIR) $(1)/usr/sbin/
156 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ovs-vswitchd $(1)/usr/sbin/
157 $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/ovsdb-server $(1)/usr/sbin/
158
159 $(INSTALL_DIR) $(1)/usr/share/openvswitch/
160 $(INSTALL_CONF) $(PKG_INSTALL_DIR)/usr/share/openvswitch/vswitch.ovsschema $(1)/usr/share/openvswitch/
161 endef
162
163 define Package/openvswitch-python/install
164 $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/ovs
165 $(CP) $(PKG_INSTALL_DIR)/usr/share/openvswitch/python/ovs/* $(1)/usr/lib/python$(PYTHON_VERSION)/ovs
166 endef
167
168 define Package/openvswitch/install
169 :
170 endef
171
172 $(eval $(call OvsBinUtility,ovs-appctl,Open vSwitch app control utility))
173 $(eval $(call OvsBinUtility,ovs-ofctl,Open vSwitch OpenFlow control utility))
174 $(eval $(call OvsBinUtility,ovs-dpctl,Open vSwitch datapath management utility))
175 $(eval $(call OvsBinUtility,ovs-vsctl,Open vSwitch ovs-vswitchd management utility))
176 $(eval $(call OvsBinUtility,ovsdb-client,Open vSwitch database JSON-RPC client))
177
178 $(foreach t,$(OVS_BIN_TOOLS),$(eval $(call BuildPackage,openvswitch-$(t))))
179
180 $(eval $(call BuildPackage,openvswitch-base))
181 $(eval $(call BuildPackage,openvswitch-python))
182 $(eval $(call BuildPackage,openvswitch))
183 $(eval $(call KernelPackage,openvswitch))
184