# # Copyright (C) 2016-2018 Jason A. Donenfeld # Copyright (C) 2016 Baptiste Jonglez # Copyright (C) 2016-2017 Dan Luedtke # # 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.20180925 PKG_RELEASE:=1 PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/ PKG_HASH:=4a0488a07e40ec17e798f3e40a85cedf55f0560b1c3a8fd95806c7d4266cb0e8 PKG_LICENSE:=GPL-2.0 Apache-2.0 PKG_LICENSE_FILES:=COPYING PKG_BUILD_DIR:=$(KERNEL_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:=Jason A. Donenfeld \ Kevin Darbyshire-Bryant 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 MAKE_VARS += PLATFORM=linux 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)`, a netifd protocol helper, and a re-resolve watchdog script. endef define Package/wireguard-tools/install $(INSTALL_DIR) $(1)/usr/bin/ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/ $(INSTALL_BIN) ./files/wireguard_watchdog $(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))