2 # Copyright (C) 2016-2018 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>
6 # This is free software, licensed under the GNU General Public License v2.
7 # See /LICENSE for more information.
9 include $(TOPDIR)/rules.mk
10 include $(INCLUDE_DIR)/kernel.mk
14 PKG_VERSION:=0.0.20191219
17 PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
18 PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
19 PKG_HASH:=5aba6f0c38e97faa0b155623ba594bb0e4bd5e29deacd8d5ed8bda8d8283b0e7
21 PKG_LICENSE:=GPL-2.0 Apache-2.0
22 PKG_LICENSE_FILES:=COPYING
24 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/WireGuard-$(PKG_VERSION)
28 # WireGuard's makefile needs this to know where to build the kernel module
29 export KERNELDIR:=$(LINUX_DIR)
31 include $(INCLUDE_DIR)/package.mk
33 define Package/wireguard/Default
37 URL:=https://www.wireguard.com
38 MAINTAINER:=Jason A. Donenfeld <Jason@zx2c4.com>
41 define Package/wireguard/Default/description
42 WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
43 state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
44 more useful than IPSec, while avoiding the massive headache. It intends to
45 be considerably more performant than OpenVPN. WireGuard is designed as a
46 general purpose VPN for running on embedded interfaces and super computers
47 alike, fit for many different circumstances. It uses UDP.
50 define Package/wireguard
51 $(call Package/wireguard/Default)
52 TITLE:=WireGuard meta-package
53 DEPENDS:=+wireguard-tools +kmod-wireguard
56 include $(INCLUDE_DIR)/kernel-defaults.mk
57 include $(INCLUDE_DIR)/package-defaults.mk
59 # Used by Build/Compile/Default
61 MAKE_VARS += PLATFORM=linux
64 $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
65 $(call Build/Compile/Default)
68 define Package/wireguard/install
72 define Package/wireguard/description
73 $(call Package/wireguard/Default/description)
76 define Package/wireguard-tools
77 $(call Package/wireguard/Default)
78 TITLE:=WireGuard userspace control program (wg)
82 define Package/wireguard-tools/description
83 $(call Package/wireguard/Default/description)
85 This package provides the userspace control program for WireGuard,
86 `wg(8)`, a netifd protocol helper, and a re-resolve watchdog script.
89 define Package/wireguard-tools/install
90 $(INSTALL_DIR) $(1)/usr/bin/
91 $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
92 $(INSTALL_BIN) ./files/wireguard_watchdog $(1)/usr/bin/
93 $(INSTALL_DIR) $(1)/lib/netifd/proto/
94 $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
97 define KernelPackage/wireguard
99 CATEGORY:=Kernel modules
100 SUBMENU:=Network Support
101 TITLE:=WireGuard kernel module
102 DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4
103 FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
104 AUTOLOAD:=$(call AutoProbe,wireguard)
107 define KernelPackage/wireguard/description
108 $(call Package/wireguard/Default/description)
110 This package provides the kernel module for WireGuard.
113 $(eval $(call BuildPackage,wireguard))
114 $(eval $(call BuildPackage,wireguard-tools))
115 $(eval $(call KernelPackage,wireguard))