liburcu: Update to 0.8.6
[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
12 PKG_NAME:=openvswitch
13
14 PKG_RELEASE:=1
15 PKG_VERSION:=2.3.0
16 PKG_RELEASE=$(PKG_SOURCE_VERSION)
17 PKG_LICENSE:=Apache-2.0
18 PKG_LICENSE_FILE:=COPYING
19 PKG_USE_MIPS16:=0
20
21 PKG_SOURCE_PROTO:=git
22 PKG_SOURCE_URL:=https://github.com/openvswitch/ovs
23 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
24 PKG_SOURCE_VERSION:=2b70c4b929d18d1f36dcdeb71ea5c383cbb662e9
25 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
26
27 include $(INCLUDE_DIR)/package.mk
28 include $(INCLUDE_DIR)/kernel.mk
29
30 PKG_FIXUP=libtool
31
32 define Package/openvswitch/Default
33 SECTION:=net
34 CATEGORY:=Network
35 URL:=http://openvswitch.org/
36 MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
37 endef
38
39 define Package/openvswitch/Default/description
40 Open vSwitch is a production quality, multilayer, software-based, Ethernet
41 virtual switch. It is designed to enable massive network automation through
42 programmatic extension, while still supporting standard management interfaces
43 and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In
44 addition, it is designed to support distribution across multiple physical
45 servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus
46 1000V.
47 endef
48
49 define Package/openvswitch
50 $(call Package/openvswitch/Default)
51 TITLE:=Open vSwitch Userspace Package
52 DEPENDS:=+libpcap +libopenssl +librt +libatomic +kmod-openvswitch
53 endef
54
55 define Package/openvswitch/description
56 Provides the main userspace components required for Open vSwitch to function.
57 endef
58
59 define Package/openvswitch-benchmark
60 $(call Package/openvswitch/Default)
61 TITLE:=Open vSwitch Userspace Package
62 DEPENDS:=@PACKAGE_openvswitch +PACKAGE_openvswitch:openvswitch
63 endef
64
65 define Package/openvswitch-benchmark/description
66 Utility for running OpenVSwitch benchmarking
67 endef
68
69 define KernelPackage/openvswitch
70 SECTION:=kernel
71 CATEGORY:=Kernel modules
72 SUBMENU:=Network Support
73 TITLE:=Open vSwitch Kernel Package
74 KCONFIG:=CONFIG_BRIDGE
75 DEPENDS:=+kmod-stp +kmod-ipv6 +kmod-gre +kmod-lib-crc32c
76 FILES:= \
77 $(PKG_BUILD_DIR)/datapath/linux/openvswitch.$(LINUX_KMOD_SUFFIX)
78 AUTOLOAD:=$(call AutoLoad,21,openvswitch)
79 endef
80
81 define KernelPackage/openvswitch/description
82 This package contains the Open vSwitch kernel moodule and bridge compat
83 module. Furthermore, it supports OpenFlow.
84 endef
85
86 CONFIGURE_ARGS += --with-linux=$(LINUX_DIR) --with-rundir=/var/run
87 CONFIGURE_ARGS += --enable-ndebug
88 CONFIGURE_ARGS += --disable-ssl
89 CONFIGURE_ARGS += --enable-shared
90
91 TARGET_CFLAGS += -flto
92
93 define Build/Configure
94 (cd $(PKG_BUILD_DIR); \
95 autoreconf -v --install --force || exit 1 \
96 );
97 $(call Build/Configure/Default,$(CONFIGURE_ARGS))
98 endef
99
100 define Build/Compile
101 $(MAKE) -C $(PKG_BUILD_DIR) \
102 $(TARGET_CONFIGURE_OPTS) \
103 CFLAGS="-I$(PKG_BUILD_DIR)/lib $(TARGET_CFLAGS) -std=gnu99" \
104 LDFLAGS="-L$(PKG_BUILD_DIR)/lib $(TARGET_LDFLAGS)" \
105 LDFLAGS_MODULES="$(TARGET_LDFLAGS) -L$(PKG_BUILD_DIR)/lib" \
106 STAGING_DIR="$(STAGING_DIR)" \
107 DESTDIR="$(PKG_INSTALL_DIR)/usr" \
108 CROSS_COMPILE="$(TARGET_CROSS)" \
109 ARCH="$(LINUX_KARCH)" \
110 SUBDIRS="$(PKG_BUILD_DIR)/datapath/linux" \
111 PATH="$(TARGET_PATH)" \
112 KCC="$(KERNEL_CC)"
113 endef
114
115 define Package/openvswitch/install
116 $(INSTALL_DIR) $(1)/etc/openvswitch
117
118 $(INSTALL_DIR) $(1)/etc/init.d
119 $(INSTALL_BIN) ./files/etc/init.d/openvswitch.init $(1)/etc/init.d/openvswitch
120
121 $(INSTALL_DIR) $(1)/usr/lib/
122 $(CP) $(PKG_BUILD_DIR)/lib/.libs/libsflow-$(PKG_VERSION).so $(1)/usr/lib/
123 $(CP) $(PKG_BUILD_DIR)/lib/.libs/libopenvswitch-$(PKG_VERSION).so $(1)/usr/lib/
124 $(CP) $(PKG_BUILD_DIR)/ofproto/.libs/libofproto-$(PKG_VERSION).so $(1)/usr/lib/
125 $(CP) $(PKG_BUILD_DIR)/ovsdb/.libs/libovsdb-$(PKG_VERSION).so $(1)/usr/lib/
126
127 $(INSTALL_DIR) $(1)/usr/bin/
128 $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-appctl $(1)/usr/bin/
129 $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-ofctl $(1)/usr/bin/
130 $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-client $(1)/usr/bin/
131
132 $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-dpctl $(1)/usr/bin/
133 $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-vsctl $(1)/usr/bin/
134 $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-tool $(1)/usr/bin/
135
136 $(INSTALL_DIR) $(1)/usr/sbin/
137 $(INSTALL_BIN) $(PKG_BUILD_DIR)/vswitchd/.libs/ovs-vswitchd $(1)/usr/sbin/
138 $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-server $(1)/usr/sbin/
139
140 $(INSTALL_DIR) $(1)/usr/share/openvswitch/
141 $(INSTALL_CONF) $(PKG_BUILD_DIR)/vswitchd/vswitch.ovsschema $(1)/usr/share/openvswitch/
142 endef
143
144 define Package/openvswitch-benchmark/install
145 $(INSTALL_DIR) $(1)/usr/bin/
146 $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-benchmark $(1)/usr/bin/
147 endef
148
149 define Package/openvswitch/postinst
150 #!/bin/sh
151 [ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/openvswitch enable || true
152 endef
153
154 $(eval $(call BuildPackage,openvswitch))
155 $(eval $(call BuildPackage,openvswitch-benchmark))
156 $(eval $(call KernelPackage,openvswitch))
157