You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
5.7 KiB

  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. include $(TOPDIR)/rules.mk
  10. PKG_NAME:=openvswitch
  11. PKG_RELEASE:=2
  12. PKG_VERSION:=2.4.0
  13. PKG_RELEASE=$(PKG_SOURCE_VERSION)
  14. PKG_LICENSE:=Apache-2.0
  15. PKG_LICENSE_FILES:=COPYING
  16. PKG_USE_MIPS16:=0
  17. PKG_SOURCE_PROTO:=git
  18. PKG_SOURCE_URL:=https://github.com/openvswitch/ovs
  19. PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
  20. PKG_SOURCE_VERSION:=b979c282ef040a20d09b8d6885648b09352f05db
  21. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
  22. PKG_BUILD_PARALLEL:=1
  23. PKG_FIXUP:=autoreconf
  24. PKG_INSTALL:=1
  25. SUPPORTED_KERNELS:=LINUX_3_8||LINUX_3_10||LINUX_3_13||LINUX_3_14||LINUX_3_18||LINUX_4_0||LINUX_4_1
  26. include $(INCLUDE_DIR)/package.mk
  27. include $(INCLUDE_DIR)/kernel.mk
  28. $(call include_mk, python-package.mk)
  29. define Package/openvswitch/Default
  30. SECTION:=net
  31. CATEGORY:=Network
  32. URL:=http://openvswitch.org/
  33. MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
  34. endef
  35. define Package/openvswitch/Default/description
  36. Open vSwitch is a production quality, multilayer, software-based, Ethernet
  37. virtual switch. It is designed to enable massive network automation through
  38. programmatic extension, while still supporting standard management interfaces
  39. and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In
  40. addition, it is designed to support distribution across multiple physical
  41. servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus
  42. 1000V.
  43. endef
  44. define Package/openvswitch
  45. $(call Package/openvswitch/Default)
  46. TITLE:=Open vSwitch Userspace Package
  47. DEPENDS:=+libpcap +libopenssl +librt +kmod-openvswitch @($(SUPPORTED_KERNELS))
  48. endef
  49. define Package/openvswitch/description
  50. Provides the main userspace components required for Open vSwitch to function.
  51. endef
  52. define Package/openvswitch-python
  53. $(call Package/openvswitch/Default)
  54. TITLE:=Open vSwitch Python Support
  55. DEPENDS:=@PACKAGE_openvswitch +PACKAGE_openvswitch:openvswitch +python
  56. endef
  57. define Package/openvswitch-python/description
  58. Provides bindings and libraries for using Python to manipulate/work with Open vSwitch.
  59. endef
  60. define Package/openvswitch-ipsec
  61. $(call Package/openvswitch/Default)
  62. TITLE:=Open vSwitch Userspace Package
  63. DEPENDS:=@PACKAGE_openvswitch +PACKAGE_openvswitch:openvswitch-python
  64. endef
  65. define Package/openvswitch-ipsec/description
  66. The ovs-monitor-ipsec script provides support for encrypting GRE tunnels with
  67. IPsec.
  68. endef
  69. define Package/openvswitch-benchmark
  70. $(call Package/openvswitch/Default)
  71. TITLE:=Open vSwitch Userspace Package
  72. DEPENDS:=@PACKAGE_openvswitch +PACKAGE_openvswitch:openvswitch
  73. endef
  74. define Package/openvswitch-benchmark/description
  75. Utility for running OpenVSwitch benchmarking
  76. endef
  77. define KernelPackage/openvswitch
  78. SECTION:=kernel
  79. CATEGORY:=Kernel modules
  80. SUBMENU:=Network Support
  81. TITLE:=Open vSwitch Kernel Package
  82. KCONFIG:=CONFIG_BRIDGE
  83. DEPENDS:=+kmod-stp @IPV6 +kmod-gre +kmod-lib-crc32c +kmod-vxlan @($(SUPPORTED_KERNELS))
  84. FILES:= \
  85. $(PKG_BUILD_DIR)/datapath/linux/openvswitch.$(LINUX_KMOD_SUFFIX)
  86. AUTOLOAD:=$(call AutoLoad,21,openvswitch)
  87. endef
  88. define KernelPackage/openvswitch/description
  89. This package contains the Open vSwitch kernel moodule and bridge compat
  90. module. Furthermore, it supports OpenFlow.
  91. endef
  92. CONFIGURE_ARGS += --with-linux=$(LINUX_DIR) --with-rundir=/var/run
  93. CONFIGURE_ARGS += --enable-ndebug
  94. CONFIGURE_ARGS += --disable-ssl
  95. CONFIGURE_ARGS += --enable-shared
  96. TARGET_CFLAGS += -flto -std=gnu99
  97. CONFIGURE_VARS += KARCH=$(LINUX_KARCH)
  98. MAKE_FLAGS += ARCH="$(LINUX_KARCH)"
  99. define Package/openvswitch/install
  100. $(INSTALL_DIR) $(1)/etc/openvswitch
  101. $(INSTALL_DIR) $(1)/etc/init.d
  102. $(INSTALL_BIN) ./files/etc/init.d/openvswitch.init $(1)/etc/init.d/openvswitch
  103. $(INSTALL_DIR) $(1)/usr/lib/
  104. $(CP) $(PKG_BUILD_DIR)/lib/.libs/libsflow.so* $(1)/usr/lib/
  105. $(CP) $(PKG_BUILD_DIR)/lib/.libs/libopenvswitch.so* $(1)/usr/lib/
  106. $(CP) $(PKG_BUILD_DIR)/ofproto/.libs/libofproto.so* $(1)/usr/lib/
  107. $(CP) $(PKG_BUILD_DIR)/ovsdb/.libs/libovsdb.so* $(1)/usr/lib/
  108. $(INSTALL_DIR) $(1)/usr/bin/
  109. $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-appctl $(1)/usr/bin/
  110. $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-ofctl $(1)/usr/bin/
  111. $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-client $(1)/usr/bin/
  112. $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-dpctl $(1)/usr/bin/
  113. $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-vsctl $(1)/usr/bin/
  114. $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-tool $(1)/usr/bin/
  115. $(INSTALL_DIR) $(1)/usr/sbin/
  116. $(INSTALL_BIN) $(PKG_BUILD_DIR)/vswitchd/.libs/ovs-vswitchd $(1)/usr/sbin/
  117. $(INSTALL_BIN) $(PKG_BUILD_DIR)/ovsdb/.libs/ovsdb-server $(1)/usr/sbin/
  118. $(INSTALL_DIR) $(1)/usr/share/openvswitch/
  119. $(INSTALL_CONF) $(PKG_BUILD_DIR)/vswitchd/vswitch.ovsschema $(1)/usr/share/openvswitch/
  120. endef
  121. define Package/openvswitch-python/install
  122. $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
  123. $(CP) $(PKG_BUILD_DIR)/python/ovs/ $(1)/usr/lib/python$(PYTHON_VERSION)/
  124. endef
  125. define Package/openvswitch-ipsec/install
  126. $(INSTALL_DIR) $(1)/usr/sbin/
  127. $(INSTALL_BIN) $(PKG_BUILD_DIR)/debian/ovs-monitor-ipsec $(1)/usr/sbin/
  128. endef
  129. define Package/openvswitch-benchmark/install
  130. $(INSTALL_DIR) $(1)/usr/bin/
  131. $(INSTALL_BIN) $(PKG_BUILD_DIR)/utilities/.libs/ovs-benchmark $(1)/usr/bin/
  132. endef
  133. define Package/openvswitch/postinst
  134. #!/bin/sh
  135. [ -n "$${IPKG_INSTROOT}" ] || /etc/init.d/openvswitch enable || true
  136. endef
  137. $(eval $(call BuildPackage,openvswitch))
  138. $(eval $(call BuildPackage,openvswitch-python))
  139. $(eval $(call BuildPackage,openvswitch-ipsec))
  140. $(eval $(call BuildPackage,openvswitch-benchmark))
  141. $(eval $(call KernelPackage,openvswitch))