summaryrefslogtreecommitdiff
path: root/package/network/services/wireguard/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/wireguard/Makefile')
-rw-r--r--package/network/services/wireguard/Makefile116
1 files changed, 116 insertions, 0 deletions
diff --git a/package/network/services/wireguard/Makefile b/package/network/services/wireguard/Makefile
new file mode 100644
index 0000000..90d74ad
--- /dev/null
+++ b/package/network/services/wireguard/Makefile
@@ -0,0 +1,116 @@
+#
+# Copyright (C) 2016-2017 Jason A. Donenfeld <Jason@zx2c4.com>
+# Copyright (C) 2016 Baptiste Jonglez <openwrt@bitsofnetworks.org>
+# Copyright (C) 2016-2017 Dan Luedtke <mail@danrl.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=wireguard
+
+PKG_VERSION:=0.0.20171011
+PKG_RELEASE:=1
+
+PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
+PKG_HASH:=e2e44ff658743507bca0f6b443c2f85aacc48d507ba2dcd4812717145df10b96
+
+PKG_LICENSE:=GPL-2.0 Apache-2.0
+PKG_LICENSE_FILES:=COPYING
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-$(PKG_VERSION)
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+
+# WireGuard's makefile needs this to know where to build the kernel module
+export KERNELDIR:=$(LINUX_DIR)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/wireguard/Default
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=VPN
+ URL:=https://www.wireguard.com
+ MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
+ Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>, \
+ Dan Luedtke <mail@danrl.com>, \
+ Jason A. Donenfeld <Jason@zx2c4.com>
+endef
+
+define Package/wireguard/Default/description
+ WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
+ state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
+ more useful than IPSec, while avoiding the massive headache. It intends to
+ be considerably more performant than OpenVPN. WireGuard is designed as a
+ general purpose VPN for running on embedded interfaces and super computers
+ alike, fit for many different circumstances. It uses UDP.
+endef
+
+define Package/wireguard
+ $(call Package/wireguard/Default)
+ TITLE:=WireGuard meta-package
+ DEPENDS:=+wireguard-tools +kmod-wireguard
+endef
+
+include $(INCLUDE_DIR)/kernel-defaults.mk
+include $(INCLUDE_DIR)/package-defaults.mk
+
+# Used by Build/Compile/Default
+MAKE_PATH:=src/tools
+
+define Build/Compile
+ $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
+ $(call Build/Compile/Default)
+endef
+
+define Package/wireguard/install
+ true
+endef
+
+define Package/wireguard/description
+ $(call Package/wireguard/Default/description)
+endef
+
+define Package/wireguard-tools
+ $(call Package/wireguard/Default)
+ TITLE:=WireGuard userspace control program (wg)
+ DEPENDS:=+libmnl +ip
+endef
+
+define Package/wireguard-tools/description
+ $(call Package/wireguard/Default/description)
+
+ This package provides the userspace control program for WireGuard,
+ `wg(8)`, and a netifd protocol helper.
+endef
+
+define Package/wireguard-tools/install
+ $(INSTALL_DIR) $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/lib/netifd/proto/
+ $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
+endef
+
+define KernelPackage/wireguard
+ SECTION:=kernel
+ CATEGORY:=Kernel modules
+ SUBMENU:=Network Support
+ TITLE:=WireGuard kernel module
+ DEPENDS:=+IPV6:kmod-udptunnel6 +kmod-udptunnel4
+ FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX)
+ AUTOLOAD:=$(call AutoProbe,wireguard)
+endef
+
+define KernelPackage/wireguard/description
+ $(call Package/wireguard/Default/description)
+
+ This package provides the kernel module for WireGuard.
+endef
+
+$(eval $(call BuildPackage,wireguard))
+$(eval $(call BuildPackage,wireguard-tools))
+$(eval $(call KernelPackage,wireguard))