# # Copyright (C) 2016 Baptiste Jonglez # # 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.20161129 PKG_RELEASE:=1 PKG_SOURCE:=WireGuard-experimental-$(PKG_VERSION).tar.xz # This is actually SHA256, but OpenWRT/LEDE will figure it out based on the length PKG_MD5SUM:=7bdce3e56aaae91b195b8bbf7afc8d07f68632c997aa702c1ab84745c099d1b7 PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/ PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-experimental-$(PKG_VERSION) PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:=COPYING PKG_USE_MIPS16:=0 PKG_BUILD_PARALLEL:=1 # 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 URL:=https://www.wireguard.io MAINTAINER:=Baptiste Jonglez 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 runs over 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/description $(call Package/wireguard/Default/description) endef define Package/wireguard-tools $(call Package/wireguard/Default) TITLE:=Wireguard userspace control program (wg) DEPENDS:=+libmnl +resolveip endef define Package/wireguard-tools/description $(call Package/wireguard/Default/description) This package provides the userspace control program for wireguard, `wg`, 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-udptunnel4 +kmod-udptunnel6 +kmod-ipt-hashlimit FILES:= $(PKG_BUILD_DIR)/src/wireguard.$(LINUX_KMOD_SUFFIX) AUTOLOAD:=$(call AutoLoad,33,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))