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.

111 lines
3.3 KiB

  1. #
  2. # Copyright (C) 2016-2017 Jason A. Donenfeld <Jason@zx2c4.com>
  3. # Copyright (C) 2016 Baptiste Jonglez <openwrt@bitsofnetworks.org>
  4. # Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
  5. #
  6. # This is free software, licensed under the GNU General Public License v2.
  7. # See /LICENSE for more information.
  8. include $(TOPDIR)/rules.mk
  9. include $(INCLUDE_DIR)/kernel.mk
  10. PKG_NAME:=wireguard
  11. PKG_VERSION:=0.0.20170214
  12. PKG_RELEASE:=1
  13. PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
  14. PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
  15. PKG_HASH:=1e4ee213d2a5ac672c952c59e9c64d6d7d5dc3e21c003aee30d75208237e8bf5
  16. PKG_LICENSE:=GPL-2.0
  17. PKG_LICENSE_FILES:=COPYING
  18. PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-$(PKG_VERSION)
  19. PKG_BUILD_PARALLEL:=1
  20. PKG_USE_MIPS16:=0
  21. # Wireguard's makefile needs this to know where to build the kernel module
  22. export KERNELDIR:=$(LINUX_DIR)
  23. include $(INCLUDE_DIR)/package.mk
  24. define Package/wireguard/Default
  25. SECTION:=net
  26. CATEGORY:=Network
  27. URL:=https://www.wireguard.io
  28. MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
  29. Dan Luedtke <mail@danrl.com>, \
  30. Jason A. Donenfeld <Jason@zx2c4.com>
  31. endef
  32. define Package/wireguard/Default/description
  33. WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
  34. state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
  35. more useful than IPSec, while avoiding the massive headache. It intends to
  36. be considerably more performant than OpenVPN. WireGuard is designed as a
  37. general purpose VPN for running on embedded interfaces and super computers
  38. alike, fit for many different circumstances.
  39. It runs over UDP.
  40. endef
  41. define Package/wireguard
  42. $(call Package/wireguard/Default)
  43. TITLE:=Wireguard meta-package
  44. DEPENDS:=+wireguard-tools +kmod-wireguard
  45. endef
  46. include $(INCLUDE_DIR)/kernel-defaults.mk
  47. include $(INCLUDE_DIR)/package-defaults.mk
  48. # Used by Build/Compile/Default
  49. MAKE_PATH:=src/tools
  50. define Build/Compile
  51. $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
  52. $(call Build/Compile/Default)
  53. endef
  54. define Package/wireguard/description
  55. $(call Package/wireguard/Default/description)
  56. endef
  57. define Package/wireguard-tools
  58. $(call Package/wireguard/Default)
  59. TITLE:=Wireguard userspace control program (wg)
  60. DEPENDS:=+libmnl
  61. endef
  62. define Package/wireguard-tools/description
  63. $(call Package/wireguard/Default/description)
  64. This package provides the userspace control program for wireguard, `wg`,
  65. and a netifd protocol helper.
  66. endef
  67. define Package/wireguard-tools/install
  68. $(INSTALL_DIR) $(1)/usr/bin/
  69. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
  70. $(INSTALL_DIR) $(1)/lib/netifd/proto/
  71. $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
  72. endef
  73. define KernelPackage/wireguard
  74. SECTION:=kernel
  75. CATEGORY:=Kernel modules
  76. SUBMENU:=Network Support
  77. TITLE:=Wireguard kernel module
  78. DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4 +kmod-ipt-hashlimit
  79. FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
  80. AUTOLOAD:=$(call AutoProbe,wireguard)
  81. endef
  82. define KernelPackage/wireguard/description
  83. $(call Package/wireguard/Default/description)
  84. This package provides the kernel module for wireguard.
  85. endef
  86. $(eval $(call BuildPackage,wireguard))
  87. $(eval $(call BuildPackage,wireguard-tools))
  88. $(eval $(call KernelPackage,wireguard))