0d4a3a7c5d6ff9d26f7ffed86233ee3b6331ef7d
[openwrt/openwrt.git] / package / network / services / wireguard / Makefile
1 #
2 # Copyright (C) 2016-2017 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>
5 #
6 # This is free software, licensed under the GNU General Public License v2.
7 # See /LICENSE for more information.
8
9 include $(TOPDIR)/rules.mk
10 include $(INCLUDE_DIR)/kernel.mk
11
12 PKG_NAME:=wireguard
13
14 PKG_VERSION:=0.0.20180519
15 PKG_RELEASE:=1
16
17 PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
18 PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
19 PKG_HASH:=8846b3006c3f7e079bb38a4c985ccc2981e259f56c927b4cf47cbc1420e1c462
20
21 PKG_LICENSE:=GPL-2.0 Apache-2.0
22 PKG_LICENSE_FILES:=COPYING
23
24 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/WireGuard-$(PKG_VERSION)
25 PKG_BUILD_PARALLEL:=1
26 PKG_USE_MIPS16:=0
27
28 # WireGuard's makefile needs this to know where to build the kernel module
29 export KERNELDIR:=$(LINUX_DIR)
30
31 include $(INCLUDE_DIR)/package.mk
32
33 define Package/wireguard/Default
34 SECTION:=net
35 CATEGORY:=Network
36 SUBMENU:=VPN
37 URL:=https://www.wireguard.com
38 MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
39 Dan Luedtke <mail@danrl.com>, \
40 Jason A. Donenfeld <Jason@zx2c4.com>
41 endef
42
43 define Package/wireguard/Default/description
44 WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
45 state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
46 more useful than IPSec, while avoiding the massive headache. It intends to
47 be considerably more performant than OpenVPN. WireGuard is designed as a
48 general purpose VPN for running on embedded interfaces and super computers
49 alike, fit for many different circumstances. It uses UDP.
50 endef
51
52 define Package/wireguard
53 $(call Package/wireguard/Default)
54 TITLE:=WireGuard meta-package
55 DEPENDS:=+wireguard-tools +kmod-wireguard
56 endef
57
58 include $(INCLUDE_DIR)/kernel-defaults.mk
59 include $(INCLUDE_DIR)/package-defaults.mk
60
61 # Used by Build/Compile/Default
62 MAKE_PATH:=src/tools
63
64 define Build/Compile
65 $(MAKE) $(KERNEL_MAKEOPTS) M="$(PKG_BUILD_DIR)/src" modules
66 $(call Build/Compile/Default)
67 endef
68
69 define Package/wireguard/install
70 true
71 endef
72
73 define Package/wireguard/description
74 $(call Package/wireguard/Default/description)
75 endef
76
77 define Package/wireguard-tools
78 $(call Package/wireguard/Default)
79 TITLE:=WireGuard userspace control program (wg)
80 DEPENDS:=+libmnl +ip
81 endef
82
83 define Package/wireguard-tools/description
84 $(call Package/wireguard/Default/description)
85
86 This package provides the userspace control program for WireGuard,
87 `wg(8)`, and a netifd protocol helper.
88 endef
89
90 define Package/wireguard-tools/install
91 $(INSTALL_DIR) $(1)/usr/bin/
92 $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/tools/wg $(1)/usr/bin/
93 $(INSTALL_DIR) $(1)/lib/netifd/proto/
94 $(INSTALL_BIN) ./files/wireguard.sh $(1)/lib/netifd/proto/
95 endef
96
97 define KernelPackage/wireguard
98 SECTION:=kernel
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)
105 endef
106
107 define KernelPackage/wireguard/description
108 $(call Package/wireguard/Default/description)
109
110 This package provides the kernel module for WireGuard.
111 endef
112
113 $(eval $(call BuildPackage,wireguard))
114 $(eval $(call BuildPackage,wireguard-tools))
115 $(eval $(call KernelPackage,wireguard))