Makefile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #
  2. # Copyright (C) 2016-2018 Jason A. Donenfeld <[email protected]>
  3. # Copyright (C) 2016 Baptiste Jonglez <[email protected]>
  4. # Copyright (C) 2016-2017 Dan Luedtke <[email protected]>
  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.20180625
  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:=d9bedeb22b1f83d48581608a6521fea1d429fbeb8809419d08703ef2ec570020
  16. PKG_LICENSE:=GPL-2.0 Apache-2.0
  17. PKG_LICENSE_FILES:=COPYING
  18. PKG_BUILD_DIR:=$(KERNEL_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. SUBMENU:=VPN
  28. URL:=https://www.wireguard.com
  29. MAINTAINER:=Jason A. Donenfeld <[email protected]> \
  30. Kevin Darbyshire-Bryant <[email protected]>
  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. It uses UDP.
  39. endef
  40. define Package/wireguard
  41. $(call Package/wireguard/Default)
  42. TITLE:=WireGuard meta-package
  43. DEPENDS:=+wireguard-tools +kmod-wireguard
  44. endef
  45. include $(INCLUDE_DIR)/kernel-defaults.mk
  46. include $(INCLUDE_DIR)/package-defaults.mk
  47. # Used by Build/Compile/Default
  48. MAKE_PATH:=src/tools
  49. MAKE_VARS += PLATFORM=linux
  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/install
  55. true
  56. endef
  57. define Package/wireguard/description
  58. $(call Package/wireguard/Default/description)
  59. endef
  60. define Package/wireguard-tools
  61. $(call Package/wireguard/Default)
  62. TITLE:=WireGuard userspace control program (wg)
  63. DEPENDS:=+libmnl +ip
  64. endef
  65. define Package/wireguard-tools/description
  66. $(call Package/wireguard/Default/description)
  67. This package provides the userspace control program for WireGuard,
  68. `wg(8)`, and a netifd protocol helper.
  69. endef
  70. define Package/wireguard-tools/install
  71. $(INSTALL_DIR) $(1)/usr/bin/
  72. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
  73. $(INSTALL_DIR) $(1)/lib/netifd/proto/
  74. $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
  75. endef
  76. define KernelPackage/wireguard
  77. SECTION:=kernel
  78. CATEGORY:=Kernel modules
  79. SUBMENU:=Network Support
  80. TITLE:=WireGuard kernel module
  81. DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4
  82. FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
  83. AUTOLOAD:=$(call AutoProbe,wireguard)
  84. endef
  85. define KernelPackage/wireguard/description
  86. $(call Package/wireguard/Default/description)
  87. This package provides the kernel module for WireGuard.
  88. endef
  89. $(eval $(call BuildPackage,wireguard))
  90. $(eval $(call BuildPackage,wireguard-tools))
  91. $(eval $(call KernelPackage,wireguard))