aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/unetd/Makefile
blob: d2cd4a618357fd90dc88dd68fdf6a6ef041cfa16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#
# Copyright (C) 2022 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=unetd
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/unetd.git
PKG_SOURCE_DATE:=2022-09-16.1
PKG_SOURCE_VERSION:=6c888f897862b152e2cfae735faafc9cdcb07336
PKG_MIRROR_HASH:=35df8c822c671495146c3d5d1c193c1d1a44721c274aee2035943eb5e8c04768

PKG_LICENSE:=GPL-2.0
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>

PKG_BUILD_DEPENDS:=HAS_BPF_TOOLCHAIN:bpf-headers

PKG_BUILD_PARALLEL:=1

PKG_CONFIG_DEPENDS += CONFIG_UNETD_VXLAN_SUPPORT

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
include $(INCLUDE_DIR)/bpf.mk
include $(INCLUDE_DIR)/nls.mk

define Package/unetd
  SECTION:=net
  CATEGORY:=Network
  TITLE:=WireGuard based VPN connection manager for OpenWrt
  DEPENDS:=+libubox +libubus +libblobmsg-json +libnl-tiny +kmod-wireguard +UNETD_VXLAN_SUPPORT:libbpf
endef

define Package/unetd/config
	config UNETD_VXLAN_SUPPORT
		bool "VXLAN support"
		depends on PACKAGE_unetd
		depends on HAS_BPF_TOOLCHAIN
		default y

endef

define Package/unet-dht
  SECTION:=net
  CATEGORY:=Network
  DEPENDS:=unetd
  TITLE:=unetd DHT discovery support
endef

define Package/unet-cli
  SECTION:=net
  CATEGORY:=Network
  DEPENDS:=+unetd +ucode +ucode-mod-fs
  TITLE:=unetd administration command line utility
endef

TARGET_CFLAGS += \
	-I$(STAGING_DIR)/usr/include/libnl-tiny \
	-I$(STAGING_DIR)/usr/include

CMAKE_OPTIONS += \
	-DLIBNL_LIBS=-lnl-tiny \
	-DVXLAN_SUPPORT=$(if $(CONFIG_UNETD_VXLAN_SUPPORT),ON,OFF)

ifdef CONFIG_UNETD_VXLAN_SUPPORT
  define Build/Compile
	$(call CompileBPF,$(PKG_BUILD_DIR)/mss-bpf.c)
	$(call Build/Compile/Default,)
  endef
endif

define Package/unetd/conffiles
/etc/unetd
endef

define Package/unetd/install
	$(INSTALL_DIR) \
		$(1)/etc/unetd \
		$(1)/lib/bpf \
		$(1)/etc/init.d \
		$(1)/lib/netifd/proto \
		$(1)/usr/sbin \
		$(1)/usr/lib
	$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libunet.so* $(1)/usr/lib/
	$(INSTALL_BIN) \
		$(PKG_INSTALL_DIR)/usr/sbin/unetd \
		$(PKG_INSTALL_DIR)/usr/sbin/unet-tool \
		$(1)/usr/sbin/
	$(if $(CONFIG_UNETD_VXLAN_SUPPORT),$(INSTALL_DATA) $(PKG_BUILD_DIR)/mss-bpf.o $(1)/lib/bpf/mss.o)
	$(INSTALL_BIN) ./files/unetd.init $(1)/etc/init.d/unetd
	$(INSTALL_BIN) ./files/unetd.sh $(1)/lib/netifd/proto
endef

define Package/unet-dht/install
	$(INSTALL_DIR) \
		$(1)/etc/init.d \
		$(1)/usr/sbin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/unet-dht $(1)/usr/sbin
	$(INSTALL_BIN) ./files/unet-dht.init $(1)/etc/init.d/unet-dht
endef

define Package/unet-cli/install
	$(INSTALL_DIR) $(1)/usr/sbin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/unet-cli $(1)/usr/sbin
endef

$(eval $(call BuildPackage,unetd))
$(eval $(call BuildPackage,unet-dht))
$(eval $(call BuildPackage,unet-cli))