# SPDX-License-Identifier: GPL-2.0-only # # Copyright (C) 2023 ImmortalWrt.org include $(TOPDIR)/rules.mk PKG_NAME:=dae PKG_VERSION:=2026.07.13 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_PROTO:=git PKG_SOURCE_VERSION:=f303e94cebeda73de63a5ab00652009a12f2384e PKG_SOURCE_URL:=https://github.com/olicesx/dae.git PKG_MIRROR_HASH:=skip PKG_LICENSE:=AGPL-3.0-only PKG_LICENSE_FILE:=LICENSE PKG_MAINTAINER:=Tianling Shen PKG_BUILD_DEPENDS:=golang/host bpf-headers PKG_BUILD_PARALLEL:=1 PKG_BUILD_FLAGS:=no-mips16 GO_PKG:=github.com/daeuniverse/dae GO_PKG_EXCLUDES:=control/kern/tests GO_PKG_LDFLAGS:= \ -s -w -buildid= \ -linkmode external -extldflags '-static -Wl,-s' GO_PKG_LDFLAGS_X:= \ $(GO_PKG)/cmd.Version=$(PKG_VERSION) \ $(GO_PKG)/common/consts.MaxMatchSetLen_=1024 GO_PKG_TAGS:=trace PGO_PROFILE:=$(CURDIR)/pprof/default.pgo include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/bpf.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk GO_PKG_BUILD_VARS+= \ GOFLAGS="-trimpath -buildvcs=false -pgo=auto" GO_PKG_TARGET_VARS+= \ CGO_LDFLAGS="$(TARGET_LDFLAGS) -static -Wl,-s" \ GOEXPERIMENT=newinliner,simd define Package/dae SECTION:=net CATEGORY:=Network SUBMENU:=Web Servers/Proxies TITLE:=A lightweight and high-performance transparent proxy solution DEPENDS:=$(GO_ARCH_DEPENDS) \ +ca-bundle +kmod-sched-core +kmod-sched-bpf \ +kmod-veth +v2ray-geoip +v2ray-geosite \ +@KERNEL_XDP_SOCKETS \ +DAE_USE_VMLINUX_BTF:vmlinux-btf endef define Package/dae/config choice prompt "BTF source for CO-RE" default DAE_USE_KERNEL_BTF depends on PACKAGE_dae config DAE_USE_KERNEL_BTF bool "Use kernel BTF (integrated)" depends on KERNEL_DEBUG_INFO_BTF config DAE_USE_VMLINUX_BTF bool "Use vmlinux-btf package" endchoice endef define Package/dae/conffiles /etc/dae/ /etc/config/dae endef DAE_CFLAGS:= \ -O2 -Wall -Werror \ -DMAX_MATCH_SET_LEN=1024 \ -I$(BPF_HEADERS_DIR)/tools/lib \ -I$(BPF_HEADERS_DIR)/arch/$(BPF_KARCH)/include/asm/mach-generic define Build/Prepare $(call Build/Prepare/Default) [ -f "$(PGO_PROFILE)" ] && $(CP) "$(PGO_PROFILE)" "$(PKG_BUILD_DIR)/default.pgo" || true endef define Build/Compile ( \ pushd $(PKG_BUILD_DIR) ; \ go get -u=patch ; \ go mod tidy ; \ export \ $(GO_GENERAL_BUILD_CONFIG_VARS) \ $(GO_PKG_BUILD_CONFIG_VARS) \ $(GO_PKG_BUILD_VARS) \ BPF_CLANG="$(CLANG)" \ BPF_STRIP_FLAG="-strip=$(LLVM_STRIP)" \ BPF_CFLAGS="$(DAE_CFLAGS)" \ BPF_TARGET="bpfel,bpfeb" \ BPF_TRACE_TARGET="$(GO_ARCH)" ; \ go generate ./control/control.go ; \ go generate ./trace/trace.go ; \ popd ; \ ) $(call GoPackage/Build/Compile) endef define Package/dae/install $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) $(INSTALL_DIR) $(1)/usr/bin/ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dae $(1)/usr/bin/dae $(INSTALL_DIR) $(1)/etc/dae/ $(INSTALL_CONF) $(PKG_BUILD_DIR)/example.dae $(1)/etc/dae/ $(INSTALL_CONF) $(CURDIR)/files/config.dae $(1)/etc/dae/config.dae $(INSTALL_DIR) $(1)/etc/dae/config.d/ $(INSTALL_CONF) $(CURDIR)/files/config.d/dns.dae $(1)/etc/dae/config.d/dns.dae $(INSTALL_CONF) $(CURDIR)/files/config.d/node.dae $(1)/etc/dae/config.d/node.dae $(INSTALL_CONF) $(CURDIR)/files/config.d/route.dae $(1)/etc/dae/config.d/route.dae $(INSTALL_DIR) $(1)/etc/config $(INSTALL_CONF) $(CURDIR)/files/dae.config $(1)/etc/config/dae $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) $(CURDIR)/files/dae.init $(1)/etc/init.d/dae endef $(eval $(call GoBinPackage,dae)) $(eval $(call BuildPackage,dae))