9725af52ec1fbb19ae67e1ffed2b4eca71af8b8c
[openwrt/openwrt.git] / package / network / services / unetd / Makefile
1 #
2 # Copyright (C) 2022 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9
10 PKG_NAME:=unetd
11 PKG_SOURCE_PROTO:=git
12 PKG_SOURCE_URL=$(PROJECT_GIT)/project/unetd.git
13 PKG_SOURCE_DATE:=2025-10-03
14 PKG_SOURCE_VERSION:=2f67f6faa08aa4b20663d4cbaf063a79041947c1
15 PKG_MIRROR_HASH:=df9b2500f5475775ae312ac2860435d7a56a713dab0a30c56d7292ad9ab20ae4
16
17 PKG_LICENSE:=GPL-2.0
18 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
19
20 PKG_BUILD_DEPENDS:=HAS_BPF_TOOLCHAIN:bpf-headers
21
22 PKG_BUILD_PARALLEL:=1
23
24 PKG_CONFIG_DEPENDS += CONFIG_UNETD_VXLAN_SUPPORT
25
26 include $(INCLUDE_DIR)/package.mk
27 include $(INCLUDE_DIR)/cmake.mk
28 include $(INCLUDE_DIR)/bpf.mk
29 include $(INCLUDE_DIR)/nls.mk
30
31 define Package/unetd
32 SECTION:=net
33 CATEGORY:=Network
34 TITLE:=WireGuard based VPN connection manager for OpenWrt
35 DEPENDS:=+libubox +libubus +libudebug +libblobmsg-json +libnl-tiny +kmod-wireguard +UNETD_VXLAN_SUPPORT:libbpf
36 endef
37
38 define Package/unetd/config
39 config UNETD_VXLAN_SUPPORT
40 bool "VXLAN support"
41 depends on PACKAGE_unetd
42 depends on HAS_BPF_TOOLCHAIN
43 select NEED_BPF_TOOLCHAIN
44 default y
45
46 endef
47
48 define Package/unet-dht
49 SECTION:=net
50 CATEGORY:=Network
51 DEPENDS:=unetd
52 TITLE:=unetd DHT discovery support
53 endef
54
55 define Package/unet-cli
56 SECTION:=net
57 CATEGORY:=Network
58 DEPENDS:=+unetd +ucode +ucode-mod-fs
59 TITLE:=unetd administration command line utility
60 endef
61
62 TARGET_CFLAGS += \
63 -I$(STAGING_DIR)/usr/include/libnl-tiny \
64 -I$(STAGING_DIR)/usr/include
65
66 CMAKE_OPTIONS += \
67 -DLIBNL_LIBS=-lnl-tiny \
68 -DVXLAN_SUPPORT=$(if $(CONFIG_UNETD_VXLAN_SUPPORT),ON,OFF)
69
70 ifdef CONFIG_UNETD_VXLAN_SUPPORT
71 define Build/Compile
72 $(call CompileBPF,$(PKG_BUILD_DIR)/mss-bpf.c)
73 $(call Build/Compile/Default,)
74 endef
75 endif
76
77 define Package/unetd/conffiles
78 /etc/unetd
79 endef
80
81 define Package/unetd/install
82 $(INSTALL_DIR) \
83 $(1)/usr/share/ucode/cli/modules \
84 $(1)/etc/unetd \
85 $(1)/lib/bpf \
86 $(1)/etc/init.d \
87 $(1)/lib/netifd/proto \
88 $(1)/usr/sbin \
89 $(1)/usr/lib
90 $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libunet.so* $(1)/usr/lib/
91 $(INSTALL_BIN) \
92 $(PKG_INSTALL_DIR)/usr/sbin/unetd \
93 $(PKG_INSTALL_DIR)/usr/sbin/unet-tool \
94 $(1)/usr/sbin/
95 $(if $(CONFIG_UNETD_VXLAN_SUPPORT),$(INSTALL_DATA) $(PKG_BUILD_DIR)/mss-bpf.o $(1)/lib/bpf/mss.o)
96 $(INSTALL_DATA) ./files/unet.uc $(1)/usr/share/ucode/cli/modules
97 $(INSTALL_BIN) ./files/unetd.init $(1)/etc/init.d/unetd
98 $(INSTALL_BIN) ./files/unetd.sh $(1)/lib/netifd/proto
99 endef
100
101 define Package/unet-dht/install
102 $(INSTALL_DIR) \
103 $(1)/etc/init.d \
104 $(1)/usr/sbin
105 $(INSTALL_BIN) $(PKG_BUILD_DIR)/unet-dht $(1)/usr/sbin
106 $(INSTALL_BIN) ./files/unet-dht.init $(1)/etc/init.d/unet-dht
107 endef
108
109 define Package/unet-cli/install
110 $(INSTALL_DIR) $(1)/usr/sbin
111 $(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/unet-cli $(1)/usr/sbin
112 endef
113
114 $(eval $(call BuildPackage,unetd))
115 $(eval $(call BuildPackage,unet-dht))
116 $(eval $(call BuildPackage,unet-cli))